2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
6 * ================================================================================
7 * Licensed under the Apache License, Version 2.0 (the "License");
8 * you may not use this file except in compliance with the License.
9 * You may obtain a copy of the License at
11 * http://www.apache.org/licenses/LICENSE-2.0
13 * Unless required by applicable law or agreed to in writing, software
14 * distributed under the License is distributed on an "AS IS" BASIS,
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 * See the License for the specific language governing permissions and
17 * limitations under the License.
18 * ============LICENSE_END=========================================================
21 package org.openecomp.sdc.exception;
23 import org.openecomp.sdc.common.log.wrappers.Logger;
25 import java.util.Arrays;
26 import java.util.Formatter;
27 import java.util.regex.Matcher;
28 import java.util.regex.Pattern;
30 public abstract class AbstractSdncException {
32 private String messageId;
36 private String[] variables;
38 private static Logger log = Logger.getLogger(AbstractSdncException.class.getName());
40 private final static Pattern ERROR_PARAM_PATTERN = Pattern.compile("%\\d");
42 public AbstractSdncException() {
45 public AbstractSdncException(String messageId, String text, String[] variables) {
47 this.messageId = messageId;
49 this.variables = validateParameters(messageId, text, variables);
52 private String[] validateParameters(String messageId, String text, String[] variables) {
54 Matcher m = ERROR_PARAM_PATTERN.matcher(text);
55 int expectedParamsNum = 0;
57 expectedParamsNum += 1;
59 int actualParamsNum = (variables != null) ? variables.length : 0;
60 if (actualParamsNum < expectedParamsNum) {
62 "Received less parameters than expected for error with messageId {}, expected: {}, actual: {}. Missing parameters are padded with null values.",
63 messageId, expectedParamsNum, actualParamsNum);
64 } else if (actualParamsNum > expectedParamsNum) {
66 "Received more parameters than expected for error with messageId {}, expected: {}, actual: {}. Extra parameters are ignored.",
67 messageId, expectedParamsNum, actualParamsNum);
69 if (variables != null) {
70 res = Arrays.copyOf(variables, expectedParamsNum);
76 public String getMessageId() {
77 return this.messageId;
80 public String getText() {
84 public String[] getVariables() {
88 public void setMessageId(String messageId) {
89 this.messageId = messageId;
92 public void setText(String text) {
96 public void setVariables(String[] variables) {
97 this.variables = variables;
100 public String getFormattedErrorMessage() {
102 if (variables != null && variables.length > 0) {
103 Formatter formatter = new Formatter();
105 res = formatter.format(this.text.replaceAll("%\\d", "%s"), (Object[]) this.variables).toString();