diff options
Diffstat (limited to 'common-app-api/src/main/java/org/openecomp/sdc/exception/AbstractSdncException.java')
-rw-r--r-- | common-app-api/src/main/java/org/openecomp/sdc/exception/AbstractSdncException.java | 172 |
1 files changed, 90 insertions, 82 deletions
diff --git a/common-app-api/src/main/java/org/openecomp/sdc/exception/AbstractSdncException.java b/common-app-api/src/main/java/org/openecomp/sdc/exception/AbstractSdncException.java index 7fac9f33fa..75315a06cc 100644 --- a/common-app-api/src/main/java/org/openecomp/sdc/exception/AbstractSdncException.java +++ b/common-app-api/src/main/java/org/openecomp/sdc/exception/AbstractSdncException.java @@ -22,6 +22,7 @@ package org.openecomp.sdc.exception; import org.openecomp.sdc.common.log.enums.EcompLoggerErrorCode; import org.openecomp.sdc.common.log.wrappers.Logger; +import org.openecomp.sdc.common.util.GeneralUtility; import java.util.Arrays; import java.util.Formatter; @@ -30,87 +31,94 @@ import java.util.regex.Pattern; public abstract class AbstractSdncException { - private String messageId; - - private String text; - - private String[] variables; - - private static Logger log = Logger.getLogger(AbstractSdncException.class.getName()); - - private static final Pattern ERROR_PARAM_PATTERN = Pattern.compile("%\\d"); - - public AbstractSdncException() { - } - - public AbstractSdncException(String messageId, String text, String[] variables) { - super(); - this.messageId = messageId; - this.text = text; - this.variables = validateParameters(messageId, text, variables); - } - - private String[] validateParameters(String messageId, String text, String[] variables) { - String[] res = null; - Matcher m = ERROR_PARAM_PATTERN.matcher(text); - int expectedParamsNum = 0; - while (m.find()) { - expectedParamsNum += 1; - } - int actualParamsNum = (variables != null) ? variables.length : 0; - if (actualParamsNum < expectedParamsNum) { - log.warn(EcompLoggerErrorCode.UNKNOWN_ERROR, "", "", - "Received less parameters than expected for error with messageId {}, expected: {}, actual: {}. Missing parameters are padded with null values.", - messageId, expectedParamsNum, actualParamsNum); - } else if (actualParamsNum > expectedParamsNum) { - log.warn(EcompLoggerErrorCode.UNKNOWN_ERROR, "", "", "", - "Received more parameters than expected for error with messageId {}, expected: {}, actual: {}. Extra parameters are ignored.", - messageId, expectedParamsNum, actualParamsNum); - } - if (variables != null) { - res = Arrays.copyOf(variables, expectedParamsNum); - } - - return res; - } - - public String getMessageId() { - return this.messageId; - } - - public String getText() { - return text; - } - - public String[] getVariables() { - return variables; - } - - public void setMessageId(String messageId) { - this.messageId = messageId; - } - - public void setText(String text) { - this.text = text; - } - - public void setVariables(String[] variables) { - this.variables = variables; - } - - public String getFormattedErrorMessage() { - String res; - if (variables != null && variables.length > 0) { - Formatter formatter = new Formatter(); - try { - res = formatter.format(this.text.replaceAll("%\\d", "%s"), (Object[]) this.variables).toString(); - } finally { - formatter.close(); - } - } else { - res = this.text; - } - return res; - } + private String messageId; + + private String text; + + private final String ecompRequestId; + + private String[] variables; + + private static Logger log = Logger.getLogger(AbstractSdncException.class.getName()); + + private final static Pattern ERROR_PARAM_PATTERN = Pattern.compile("%\\d"); + + public AbstractSdncException() { + this.ecompRequestId = GeneralUtility.getEcompRequestId(); + } + + public AbstractSdncException(String messageId, String text, String[] variables) { + this(); + this.messageId = messageId; + this.text = text; + this.variables = validateParameters(messageId, text, variables); + } + + private String[] validateParameters(String messageId, String text, String[] variables) { + String[] res = null; + Matcher m = ERROR_PARAM_PATTERN.matcher(text); + int expectedParamsNum = 0; + while (m.find()) { + expectedParamsNum += 1; + } + int actualParamsNum = (variables != null) ? variables.length : 0; + if (actualParamsNum < expectedParamsNum) { + log.warn(EcompLoggerErrorCode.UNKNOWN_ERROR,"","", + "Received less parameters than expected for error with messageId {}, expected: {}, actual: {}. Missing parameters are padded with null values.", + messageId, expectedParamsNum, actualParamsNum); + } else if (actualParamsNum > expectedParamsNum) { + log.warn(EcompLoggerErrorCode.UNKNOWN_ERROR,"","","", + "Received more parameters than expected for error with messageId {}, expected: {}, actual: {}. Extra parameters are ignored.", + messageId, expectedParamsNum, actualParamsNum); + } + if (variables != null) { + res = Arrays.copyOf(variables, expectedParamsNum); + } + + return res; + } + + public String getMessageId() { + return messageId; + } + + public String getText() { + return text; + } + + public String getEcompRequestId() { + return ecompRequestId; + } + + public String[] getVariables() { + return variables; + } + + public void setMessageId(String messageId) { + this.messageId = messageId; + } + + public void setText(String text) { + this.text = text; + } + + public void setVariables(String[] variables) { + this.variables = variables; + } + + public String getFormattedErrorMessage() { + String res; + if (variables != null && variables.length > 0) { + Formatter formatter = new Formatter(); + try { + res = formatter.format(this.text.replaceAll("%\\d", "%s"), (Object[]) this.variables).toString(); + } finally { + formatter.close(); + } + } else { + res = this.text; + } + return res; + } } |