diff options
Diffstat (limited to 'bpmn/MSOCoreBPMN/src/main/java/org')
37 files changed, 3761 insertions, 3615 deletions
diff --git a/bpmn/MSOCoreBPMN/src/main/java/org/onap/so/bpmn/core/BadInjectedFieldException.java b/bpmn/MSOCoreBPMN/src/main/java/org/onap/so/bpmn/core/BadInjectedFieldException.java index 3002d0e70a..7bf1a108a0 100644 --- a/bpmn/MSOCoreBPMN/src/main/java/org/onap/so/bpmn/core/BadInjectedFieldException.java +++ b/bpmn/MSOCoreBPMN/src/main/java/org/onap/so/bpmn/core/BadInjectedFieldException.java @@ -22,31 +22,28 @@ package org.onap.so.bpmn.core; public class BadInjectedFieldException extends RuntimeException { - private static final long serialVersionUID = 1L; + private static final long serialVersionUID = 1L; - /** - * Constructor. - * - * @param fieldName the field name - * @param taskName the task name - * @param info additional information, e.g. the field value - */ - public BadInjectedFieldException(String fieldName, String taskName, - Object info) { - super(taskName + " injected field '" + fieldName + "' is bad: " + info); - } + /** + * Constructor. + * + * @param fieldName the field name + * @param taskName the task name + * @param info additional information, e.g. the field value + */ + public BadInjectedFieldException(String fieldName, String taskName, Object info) { + super(taskName + " injected field '" + fieldName + "' is bad: " + info); + } - /** - * Constructor. - * - * @param fieldName the field name - * @param taskName the task name - * @param info additional information, e.g. the field value - * @param cause the cause - */ - public BadInjectedFieldException(String fieldName, - String taskName, Object info, Throwable cause) { - super(taskName + " injected field '" + fieldName + "' is bad: " - + info, cause); - } + /** + * Constructor. + * + * @param fieldName the field name + * @param taskName the task name + * @param info additional information, e.g. the field value + * @param cause the cause + */ + public BadInjectedFieldException(String fieldName, String taskName, Object info, Throwable cause) { + super(taskName + " injected field '" + fieldName + "' is bad: " + info, cause); + } } diff --git a/bpmn/MSOCoreBPMN/src/main/java/org/onap/so/bpmn/core/BaseTask.java b/bpmn/MSOCoreBPMN/src/main/java/org/onap/so/bpmn/core/BaseTask.java index 99157410d5..2e66493a25 100644 --- a/bpmn/MSOCoreBPMN/src/main/java/org/onap/so/bpmn/core/BaseTask.java +++ b/bpmn/MSOCoreBPMN/src/main/java/org/onap/so/bpmn/core/BaseTask.java @@ -31,31 +31,25 @@ import org.onap.so.bpmn.core.internal.VariableNameExtractor; public class BaseTask implements JavaDelegate { /** - * Get the value of a required field. This method throws - * MissingInjectedFieldException if the expression is null, and - * BadInjectedFieldException if the expression evaluates to a null - * value. + * Get the value of a required field. This method throws MissingInjectedFieldException if the expression is null, + * and BadInjectedFieldException if the expression evaluates to a null value. * * @param expression the expression * @param execution the execution * @param fieldName the field name (for logging and exceptions) * @return the field value */ - protected Object getField(Expression expression, - DelegateExecution execution, String fieldName) { + protected Object getField(Expression expression, DelegateExecution execution, String fieldName) { return getFieldImpl(expression, execution, fieldName, false); } /** - * Gets the value of an optional field. There are three conditions - * in which this method returns null: + * Gets the value of an optional field. There are three conditions in which this method returns null: * <p> * <ol> - * <li> The expression itself is null (i.e. the field is missing - * altogether.</li> + * <li>The expression itself is null (i.e. the field is missing altogether.</li> * <li>The expression evaluates to a null value.</li> - * <li>The expression references a single variable which has not - * been set.</li> + * <li>The expression references a single variable which has not been set.</li> * </ol> * <p> * Examples:<br> @@ -68,77 +62,65 @@ public class BaseTask implements JavaDelegate { * @param fieldName the field name (for logging and exceptions) * @return the field value, possibly null */ - protected Object getOptionalField(Expression expression, - DelegateExecution execution, String fieldName) { + protected Object getOptionalField(Expression expression, DelegateExecution execution, String fieldName) { return getFieldImpl(expression, execution, fieldName, true); } /** - * Get the value of a required output variable field. This method - * throws MissingInjectedFieldException if the expression is null, and - * BadInjectedFieldException if the expression produces a null or - * illegal variable name. Legal variable names contain only letters, - * numbers, and the underscore character ('_'). + * Get the value of a required output variable field. This method throws MissingInjectedFieldException if the + * expression is null, and BadInjectedFieldException if the expression produces a null or illegal variable name. + * Legal variable names contain only letters, numbers, and the underscore character ('_'). * * @param expression the expression * @param execution the execution * @param fieldName the field name (for logging and exceptions) * @return the output variable name */ - protected String getOutputField(Expression expression, - DelegateExecution execution, String fieldName) { + protected String getOutputField(Expression expression, DelegateExecution execution, String fieldName) { Object o = getFieldImpl(expression, execution, fieldName, false); if (o instanceof String) { String variable = (String) o; if (!isLegalVariable(variable)) { - throw new BadInjectedFieldException( - fieldName, getTaskName(), "'" + variable - + "' is not a legal variable name"); + throw new BadInjectedFieldException(fieldName, getTaskName(), + "'" + variable + "' is not a legal variable name"); } return variable; } else { - throw new BadInjectedFieldException( - fieldName, getTaskName(), "expected a variable name string" - + ", got object of type " + o.getClass().getName()); + throw new BadInjectedFieldException(fieldName, getTaskName(), + "expected a variable name string" + ", got object of type " + o.getClass().getName()); } } /** - * Get the value of an optional output variable field. This method - * throws BadInjectedFieldException if the expression produces an illegal - * variable name. Legal variable names contain only letters, numbers, - * and the underscore character ('_'). + * Get the value of an optional output variable field. This method throws BadInjectedFieldException if the + * expression produces an illegal variable name. Legal variable names contain only letters, numbers, and the + * underscore character ('_'). * * @param expression the expression * @param execution the execution * @param fieldName the field name (for logging and exceptions) * @return the output variable name, possibly null */ - protected String getOptionalOutputField(Expression expression, - DelegateExecution execution, String fieldName) { + protected String getOptionalOutputField(Expression expression, DelegateExecution execution, String fieldName) { Object o = getFieldImpl(expression, execution, fieldName, true); if (o instanceof String) { String variable = (String) o; if (!isLegalVariable(variable)) { - throw new BadInjectedFieldException( - fieldName, getTaskName(), "'" + variable - + "' is not a legal variable name"); + throw new BadInjectedFieldException(fieldName, getTaskName(), + "'" + variable + "' is not a legal variable name"); } return variable; } else if (o == null) { return null; } else { - throw new BadInjectedFieldException( - fieldName, getTaskName(), "expected a variable name string" - + ", got object of type " + o.getClass().getName()); + throw new BadInjectedFieldException(fieldName, getTaskName(), + "expected a variable name string" + ", got object of type " + o.getClass().getName()); } } /** - * Get the value of a required string field. This method throws - * MissingInjectedFieldException if the expression is null, and - * BadInjectedFieldException if the expression evaluates to a null - * value. + * Get the value of a required string field. This method throws MissingInjectedFieldException if the expression is + * null, and BadInjectedFieldException if the expression evaluates to a null value. * <p> * Note: the result is coerced to a string value, if necessary. * @@ -147,28 +129,23 @@ public class BaseTask implements JavaDelegate { * @param fieldName the field name (for logging and exceptions) * @return the field value */ - protected String getStringField(Expression expression, - DelegateExecution execution, String fieldName) { + protected String getStringField(Expression expression, DelegateExecution execution, String fieldName) { Object o = getFieldImpl(expression, execution, fieldName, false); if (o instanceof String) { return (String) o; } else { - throw new BadInjectedFieldException( - fieldName, getTaskName(), "cannot convert '" + o.toString() - + "' to Integer"); + throw new BadInjectedFieldException(fieldName, getTaskName(), + "cannot convert '" + o.toString() + "' to Integer"); } } /** - * Gets the value of an optional string field. There are three conditions - * in which this method returns null: + * Gets the value of an optional string field. There are three conditions in which this method returns null: * <p> * <ol> - * <li> The expression itself is null (i.e. the field is missing - * altogether.</li> + * <li>The expression itself is null (i.e. the field is missing altogether.</li> * <li>The expression evaluates to a null value.</li> - * <li>The expression references a single variable which has not - * been set.</li> + * <li>The expression references a single variable which has not been set.</li> * </ol> * <p> * Examples:<br> @@ -183,8 +160,7 @@ public class BaseTask implements JavaDelegate { * @param fieldName the field name (for logging and exceptions) * @return the field value, possibly null */ - protected String getOptionalStringField(Expression expression, - DelegateExecution execution, String fieldName) { + protected String getOptionalStringField(Expression expression, DelegateExecution execution, String fieldName) { Object o = getFieldImpl(expression, execution, fieldName, true); if (o instanceof String) { return (String) o; @@ -196,18 +172,16 @@ public class BaseTask implements JavaDelegate { } /** - * Get the value of a required integer field. This method throws - * MissingInjectedFieldException if the expression is null, and - * BadInjectedFieldException if the expression evaluates to a null - * value or a value that cannot be coerced to an integer. + * Get the value of a required integer field. This method throws MissingInjectedFieldException if the expression is + * null, and BadInjectedFieldException if the expression evaluates to a null value or a value that cannot be coerced + * to an integer. * * @param expression the expression * @param execution the execution * @param fieldName the field name (for logging and exceptions) * @return the field value */ - protected Integer getIntegerField(Expression expression, - DelegateExecution execution, String fieldName) { + protected Integer getIntegerField(Expression expression, DelegateExecution execution, String fieldName) { Object o = getFieldImpl(expression, execution, fieldName, false); if (o instanceof Integer) { return (Integer) o; @@ -215,23 +189,19 @@ public class BaseTask implements JavaDelegate { try { return Integer.parseInt(o.toString()); } catch (NumberFormatException e) { - throw new BadInjectedFieldException( - fieldName, getTaskName(), "cannot convert '" + o.toString() - + "' to Integer"); + throw new BadInjectedFieldException(fieldName, getTaskName(), + "cannot convert '" + o.toString() + "' to Integer"); } } } /** - * Gets the value of an optional integer field. There are three conditions - * in which this method returns null: + * Gets the value of an optional integer field. There are three conditions in which this method returns null: * <p> * <ol> - * <li> The expression itself is null (i.e. the field is missing - * altogether.</li> + * <li>The expression itself is null (i.e. the field is missing altogether.</li> * <li>The expression evaluates to a null value.</li> - * <li>The expression references a single variable which has not - * been set.</li> + * <li>The expression references a single variable which has not been set.</li> * </ol> * <p> * Examples:<br> @@ -239,17 +209,15 @@ public class BaseTask implements JavaDelegate { * Expression ${x} when x is unset: return null<br> * Expression ${x+y} when x and/or y are unset: exception<br> * <p> - * Note: the result is coerced to an integer value, if necessary. This - * method throws BadInjectedFieldException if the result cannot be coerced - * to an integer. + * Note: the result is coerced to an integer value, if necessary. This method throws BadInjectedFieldException if + * the result cannot be coerced to an integer. * * @param expression the expression * @param execution the execution * @param fieldName the field name (for logging and exceptions) * @return the field value, possibly null */ - protected Integer getOptionalIntegerField(Expression expression, - DelegateExecution execution, String fieldName) { + protected Integer getOptionalIntegerField(Expression expression, DelegateExecution execution, String fieldName) { Object o = getFieldImpl(expression, execution, fieldName, true); if (o instanceof Integer) { return (Integer) o; @@ -259,23 +227,19 @@ public class BaseTask implements JavaDelegate { try { return Integer.parseInt(o.toString()); } catch (NumberFormatException e) { - throw new BadInjectedFieldException( - fieldName, getTaskName(), "cannot convert '" + o.toString() - + "' to Integer"); + throw new BadInjectedFieldException(fieldName, getTaskName(), + "cannot convert '" + o.toString() + "' to Integer"); } } } /** - * Gets the value of an optional long field. There are three conditions - * in which this method returns null: + * Gets the value of an optional long field. There are three conditions in which this method returns null: * <p> * <ol> - * <li> The expression itself is null (i.e. the field is missing - * altogether.</li> + * <li>The expression itself is null (i.e. the field is missing altogether.</li> * <li>The expression evaluates to a null value.</li> - * <li>The expression references a single variable which has not - * been set.</li> + * <li>The expression references a single variable which has not been set.</li> * </ol> * <p> * Examples:<br> @@ -283,17 +247,15 @@ public class BaseTask implements JavaDelegate { * Expression ${x} when x is unset: return null<br> * Expression ${x+y} when x and/or y are unset: exception<br> * <p> - * Note: the result is coerced to a long value, if necessary. This - * method throws BadInjectedFieldException if the result cannot be coerced - * to a long. + * Note: the result is coerced to a long value, if necessary. This method throws BadInjectedFieldException if the + * result cannot be coerced to a long. * * @param expression the expression * @param execution the execution * @param fieldName the field name (for logging and exceptions) * @return the field value, possibly null */ - protected Long getOptionalLongField(Expression expression, - DelegateExecution execution, String fieldName) { + protected Long getOptionalLongField(Expression expression, DelegateExecution execution, String fieldName) { Object o = getFieldImpl(expression, execution, fieldName, true); if (o instanceof Long) { return (Long) o; @@ -303,26 +265,23 @@ public class BaseTask implements JavaDelegate { try { return Long.parseLong(o.toString()); } catch (NumberFormatException e) { - throw new BadInjectedFieldException( - fieldName, getTaskName(), "cannot convert '" + o.toString() - + "' to Long"); + throw new BadInjectedFieldException(fieldName, getTaskName(), + "cannot convert '" + o.toString() + "' to Long"); } } } /** - * Get the value of a required long field. This method throws - * MissingInjectedFieldException if the expression is null, and - * BadInjectedFieldException if the expression evaluates to a null - * value or a value that cannot be coerced to a long. + * Get the value of a required long field. This method throws MissingInjectedFieldException if the expression is + * null, and BadInjectedFieldException if the expression evaluates to a null value or a value that cannot be coerced + * to a long. * * @param expression the expression * @param execution the execution * @param fieldName the field name (for logging and exceptions) * @return the field value */ - protected Long getLongField(Expression expression, - DelegateExecution execution, String fieldName) { + protected Long getLongField(Expression expression, DelegateExecution execution, String fieldName) { Object o = getFieldImpl(expression, execution, fieldName, false); if (o instanceof Long) { return (Long) o; @@ -330,9 +289,8 @@ public class BaseTask implements JavaDelegate { try { return Long.parseLong(o.toString()); } catch (NumberFormatException e) { - throw new BadInjectedFieldException( - fieldName, getTaskName(), "cannot convert '" + o.toString() - + "' to Long"); + throw new BadInjectedFieldException(fieldName, getTaskName(), + "cannot convert '" + o.toString() + "' to Long"); } } } @@ -346,12 +304,11 @@ public class BaseTask implements JavaDelegate { * @param optional true if the field is optional * @return the field value, possibly null */ - private Object getFieldImpl(Expression expression, - DelegateExecution execution, String fieldName, boolean optional) { + private Object getFieldImpl(Expression expression, DelegateExecution execution, String fieldName, + boolean optional) { if (expression == null) { if (!optional) { - throw new MissingInjectedFieldException( - fieldName, getTaskName()); + throw new MissingInjectedFieldException(fieldName, getTaskName()); } return null; } @@ -362,8 +319,7 @@ public class BaseTask implements JavaDelegate { value = expression.getValue(execution); } catch (Exception e) { if (!optional) { - throw new BadInjectedFieldException( - fieldName, getTaskName(), e.getClass().getSimpleName(), e); + throw new BadInjectedFieldException(fieldName, getTaskName(), e.getClass().getSimpleName(), e); } // At this point, we have an exception that occurred while @@ -373,7 +329,7 @@ public class BaseTask implements JavaDelegate { // ${x}. The normal activiti behavior is to throw an exception, // but we don't like that, so we have the following workaround, // which parses the expression text to see if it is a "simple" - // variable reference, and if so, returns null. If the + // variable reference, and if so, returns null. If the // expression is anything other than a single variable // reference, then an exception is thrown, as it would have // been without this workaround. @@ -382,15 +338,13 @@ public class BaseTask implements JavaDelegate { String s = expression.getExpressionText(); new VariableNameExtractor(s).extract().ifPresent(name -> { if (execution.hasVariable(name)) { - throw new BadInjectedFieldException( - fieldName, getTaskName(), e.getClass().getSimpleName(), e); + throw new BadInjectedFieldException(fieldName, getTaskName(), e.getClass().getSimpleName(), e); } }); } if (value == null && !optional) { - throw new BadInjectedFieldException( - fieldName, getTaskName(), "required field has null value"); + throw new BadInjectedFieldException(fieldName, getTaskName(), "required field has null value"); } return value; @@ -449,6 +403,5 @@ public class BaseTask implements JavaDelegate { } @Override - public void execute(DelegateExecution execution) throws Exception { - } + public void execute(DelegateExecution execution) throws Exception {} } diff --git a/bpmn/MSOCoreBPMN/src/main/java/org/onap/so/bpmn/core/MissingInjectedFieldException.java b/bpmn/MSOCoreBPMN/src/main/java/org/onap/so/bpmn/core/MissingInjectedFieldException.java index 17a78d37b8..f0b56364af 100644 --- a/bpmn/MSOCoreBPMN/src/main/java/org/onap/so/bpmn/core/MissingInjectedFieldException.java +++ b/bpmn/MSOCoreBPMN/src/main/java/org/onap/so/bpmn/core/MissingInjectedFieldException.java @@ -25,15 +25,15 @@ package org.onap.so.bpmn.core; */ public class MissingInjectedFieldException extends BadInjectedFieldException { - private static final long serialVersionUID = 1L; + private static final long serialVersionUID = 1L; - /** - * Constructor. - * - * @param fieldName the field name - * @param taskName the task name - */ - public MissingInjectedFieldException(String fieldName, String taskName) { - super(fieldName, taskName, "missing required field"); - } + /** + * Constructor. + * + * @param fieldName the field name + * @param taskName the task name + */ + public MissingInjectedFieldException(String fieldName, String taskName) { + super(fieldName, taskName, "missing required field"); + } } diff --git a/bpmn/MSOCoreBPMN/src/main/java/org/onap/so/bpmn/core/ResponseBuilder.java b/bpmn/MSOCoreBPMN/src/main/java/org/onap/so/bpmn/core/ResponseBuilder.java index fb794e251d..a3f5253765 100644 --- a/bpmn/MSOCoreBPMN/src/main/java/org/onap/so/bpmn/core/ResponseBuilder.java +++ b/bpmn/MSOCoreBPMN/src/main/java/org/onap/so/bpmn/core/ResponseBuilder.java @@ -27,11 +27,11 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** - * Used in the output variable mapping configuration of subflow call activity - * tasks to normalize subflow responses. The output mapping is normally set up - * as follows. Note that the order of these mappings is important! + * Used in the output variable mapping configuration of subflow call activity tasks to normalize subflow responses. The + * output mapping is normally set up as follows. Note that the order of these mappings is important! * <p> * OUTPUT MAPPING + * * <pre> * SOURCE EXPRESSION TARGET * ${ResponseBuilder.buildWorkflowException(execution)} WorkflowException @@ -39,254 +39,254 @@ import org.slf4j.LoggerFactory; * </pre> */ public class ResponseBuilder implements java.io.Serializable { - private static final long serialVersionUID = 1L; - private static final Logger logger = LoggerFactory.getLogger(ResponseBuilder.class); - - /** - * Creates a WorkflowException using data from the execution variables. - * If the variables do not indicate that there was an error, null - * is returned. - * @param execution the execution - */ - public WorkflowException buildWorkflowException(DelegateExecution execution) { - - String method = getClass().getSimpleName() + ".buildWorkflowException(" + - "execution=" + execution.getId() + - ")"; - - logger.debug("Entered " + method); - - String prefix = (String) execution.getVariable("prefix"); - String processKey = getProcessKey(execution); - - logger.debug("processKey=" + processKey); - - // See if there"s already a WorkflowException object in the execution. - WorkflowException theException = (WorkflowException) execution.getVariable("WorkflowException"); - - if (theException != null) { - logger.debug("Exited " + method + " - propagated " + theException); - return theException; - } - - // Look in the legacy variables: ErrorResponse and ResponseCode - - String errorResponse = trimString(execution.getVariable(prefix + "ErrorResponse"), null); - String responseCode = trimString(execution.getVariable(prefix + "ResponseCode"), null); - logger.debug("errorResponse=" + errorResponse); - logger.debug("responseCode=" + responseCode); - if (errorResponse != null || !isOneOf(responseCode, null, "0", "200", "201", "202", "204")) { - // This is an error condition. We need to return a WorkflowExcpetion - - if (errorResponse == null) { - // No errorResponse string. See if there"s something in the Response variable - String response = trimString(execution.getVariable(processKey + "Response"), null); - if (response == null) { - errorResponse = "Received response code " + responseCode + " from " + processKey; - } else { - errorResponse = response; - } - } - - // Some subflows may try to return a WorkflowException as XML in the - // errorResponse. If provided, use the errorCode and errorMessage - // from the XML - - String maybeXML = removeXMLNamespaces(errorResponse); - - String xmlErrorMessage = trimString(getXMLTextElement(maybeXML, "ErrorMessage"), null); - String xmlErrorCode = trimString(getXMLTextElement(maybeXML, "ErrorCode"), null); - - if (xmlErrorMessage != null || xmlErrorCode != null) { - logger.debug("xmlErrorMessage=" + xmlErrorMessage); - logger.debug("xmlErrorCode=" + xmlErrorCode); - - if (xmlErrorMessage == null) { - errorResponse = "Received error code " + xmlErrorCode + " from " + processKey; - } else { - errorResponse = xmlErrorMessage; - } - - if (xmlErrorCode != null) { - responseCode = xmlErrorCode; - } - } - - // Convert the responseCode to an integer - - int intResponseCode; - - try { - intResponseCode = Integer.valueOf(responseCode); - } catch (NumberFormatException e) { - // Internal Error - intResponseCode = 2000; - } - - // Convert 3-digit HTTP response codes (we should not be using them here) - // to appropriate 4-digit response codes - - if (intResponseCode < 1000) { - if (intResponseCode >= 400 && intResponseCode <= 499) { - // Invalid Message - intResponseCode = 1002; - } else { - // Internal Error - intResponseCode = 2000; - } - } - - // Create a new WorkflowException object - - theException = new WorkflowException(processKey, intResponseCode, errorResponse); - execution.setVariable("WorkflowException", theException); - logger.debug("Exited " + method + " - created " + theException); - return theException; - } - - logger.debug("Exited " + method + " - no WorkflowException"); - return null; - } - - /** - * Returns the "Response" variable, unless the execution variables - * indicate there was an error. In that case, null is returned. - * @param execution the execution - */ - public Object buildWorkflowResponse(DelegateExecution execution) { - - String method = getClass().getSimpleName() + ".buildWorkflowResponse(" + - "execution=" + execution.getId() + - ")"; - logger.debug("Entered " + method); - - String prefix = (String) execution.getVariable("prefix"); - String processKey = getProcessKey(execution); - - Object theResponse = null; - - WorkflowException theException = (WorkflowException) execution.getVariable("WorkflowException"); - String errorResponse = trimString(execution.getVariable(prefix + "ErrorResponse"), null); - String responseCode = trimString(execution.getVariable(prefix + "ResponseCode"), null); - - if (theException == null && errorResponse == null && - isOneOf(responseCode, null, "0", "200", "201", "202", "204")) { - - theResponse = execution.getVariable("WorkflowResponse"); - - if (theResponse == null) { - theResponse = execution.getVariable(processKey + "Response"); - } - } - - logger.debug("Exited " + method); - return theResponse; - } - - /** - * Checks if the specified item is one of the specified values. - * @param item the item - * @param values the list of values - * @return true if the item is in the list of values - */ - private boolean isOneOf(Object item, Object ... values) { - if (values == null) { - return item == null; - } - - for (Object value : values) { - if (value == null) { - if (item == null) { - return true; - } - } else { - if (value.equals(item)) { - return true; - } - } - } - - return false; - } - - /** - * Creates a string value of the specified object, trimming whitespace in - * the process. If the result is null or empty, the specified empty string - * value is returned. Otherwise the trimmed value is returned. This method - * helps ensure consistent treatment of empty and null strings. - * @param object the object to convert (possibly null) - * @param emptyStringValue the desired value for empty results - */ - private String trimString(Object object, String emptyStringValue) { - if (object == null) { - return emptyStringValue; - } - - String s = String.valueOf(object).trim(); - return s.equals("") ? emptyStringValue : s; - } - - /** - * Returns the process definition key (i.e. the process name) from the - * execution. - * @param execution the execution - */ - private String getProcessKey(DelegateExecution execution) { - Object testKey = execution.getVariable("testProcessKey"); - - if (testKey instanceof String) { - return (String) testKey; - } - - return execution.getProcessEngineServices().getRepositoryService() - .getProcessDefinition(execution.getProcessDefinitionId()).getKey(); - } - - /** - * Removes namespace definitions and prefixes from XML, if any. - */ - private String removeXMLNamespaces(String xml) { - // remove xmlns declaration - xml = xml.replaceAll("xmlns.*?(\"|\').*?(\"|\')", ""); - - // remove opening tag prefix - xml = xml.replaceAll("(<)(\\w+:)(.*?>)", "$1$3"); - - // remove closing tags prefix - xml = xml.replaceAll("(</)(\\w+:)(.*?>)", "$1$3"); - - // remove extra spaces left when xmlns declarations are removed - xml = xml.replaceAll("\\s+>", ">"); - - return xml; - } - - /** - * Extracts text from an XML element. This method is not namespace aware - * (namespaces are ignored). The first matching element is selected. - * @param xml the XML document or fragment - * @param tag the desired element, e.g. "<name>" - * @return the element text, or null if the element was not found - */ - private String getXMLTextElement(String xml, String tag) { - xml = removeXMLNamespaces(xml); - - if (!tag.startsWith("<")) { - tag = "<" + tag + ">"; - } - - int start = xml.indexOf(tag); - - if (start == -1) { - return null; - } - - int end = xml.indexOf('<', start + tag.length()); - - if (end == -1) { - return null; - } - - return xml.substring(start + tag.length(), end); - } + private static final long serialVersionUID = 1L; + private static final Logger logger = LoggerFactory.getLogger(ResponseBuilder.class); + + /** + * Creates a WorkflowException using data from the execution variables. If the variables do not indicate that there + * was an error, null is returned. + * + * @param execution the execution + */ + public WorkflowException buildWorkflowException(DelegateExecution execution) { + + String method = + getClass().getSimpleName() + ".buildWorkflowException(" + "execution=" + execution.getId() + ")"; + + logger.debug("Entered " + method); + + String prefix = (String) execution.getVariable("prefix"); + String processKey = getProcessKey(execution); + + logger.debug("processKey=" + processKey); + + // See if there"s already a WorkflowException object in the execution. + WorkflowException theException = (WorkflowException) execution.getVariable("WorkflowException"); + + if (theException != null) { + logger.debug("Exited " + method + " - propagated " + theException); + return theException; + } + + // Look in the legacy variables: ErrorResponse and ResponseCode + + String errorResponse = trimString(execution.getVariable(prefix + "ErrorResponse"), null); + String responseCode = trimString(execution.getVariable(prefix + "ResponseCode"), null); + logger.debug("errorResponse=" + errorResponse); + logger.debug("responseCode=" + responseCode); + if (errorResponse != null || !isOneOf(responseCode, null, "0", "200", "201", "202", "204")) { + // This is an error condition. We need to return a WorkflowExcpetion + + if (errorResponse == null) { + // No errorResponse string. See if there"s something in the Response variable + String response = trimString(execution.getVariable(processKey + "Response"), null); + if (response == null) { + errorResponse = "Received response code " + responseCode + " from " + processKey; + } else { + errorResponse = response; + } + } + + // Some subflows may try to return a WorkflowException as XML in the + // errorResponse. If provided, use the errorCode and errorMessage + // from the XML + + String maybeXML = removeXMLNamespaces(errorResponse); + + String xmlErrorMessage = trimString(getXMLTextElement(maybeXML, "ErrorMessage"), null); + String xmlErrorCode = trimString(getXMLTextElement(maybeXML, "ErrorCode"), null); + + if (xmlErrorMessage != null || xmlErrorCode != null) { + logger.debug("xmlErrorMessage=" + xmlErrorMessage); + logger.debug("xmlErrorCode=" + xmlErrorCode); + + if (xmlErrorMessage == null) { + errorResponse = "Received error code " + xmlErrorCode + " from " + processKey; + } else { + errorResponse = xmlErrorMessage; + } + + if (xmlErrorCode != null) { + responseCode = xmlErrorCode; + } + } + + // Convert the responseCode to an integer + + int intResponseCode; + + try { + intResponseCode = Integer.valueOf(responseCode); + } catch (NumberFormatException e) { + // Internal Error + intResponseCode = 2000; + } + + // Convert 3-digit HTTP response codes (we should not be using them here) + // to appropriate 4-digit response codes + + if (intResponseCode < 1000) { + if (intResponseCode >= 400 && intResponseCode <= 499) { + // Invalid Message + intResponseCode = 1002; + } else { + // Internal Error + intResponseCode = 2000; + } + } + + // Create a new WorkflowException object + + theException = new WorkflowException(processKey, intResponseCode, errorResponse); + execution.setVariable("WorkflowException", theException); + logger.debug("Exited " + method + " - created " + theException); + return theException; + } + + logger.debug("Exited " + method + " - no WorkflowException"); + return null; + } + + /** + * Returns the "Response" variable, unless the execution variables indicate there was an error. In that case, null + * is returned. + * + * @param execution the execution + */ + public Object buildWorkflowResponse(DelegateExecution execution) { + + String method = getClass().getSimpleName() + ".buildWorkflowResponse(" + "execution=" + execution.getId() + ")"; + logger.debug("Entered " + method); + + String prefix = (String) execution.getVariable("prefix"); + String processKey = getProcessKey(execution); + + Object theResponse = null; + + WorkflowException theException = (WorkflowException) execution.getVariable("WorkflowException"); + String errorResponse = trimString(execution.getVariable(prefix + "ErrorResponse"), null); + String responseCode = trimString(execution.getVariable(prefix + "ResponseCode"), null); + + if (theException == null && errorResponse == null + && isOneOf(responseCode, null, "0", "200", "201", "202", "204")) { + + theResponse = execution.getVariable("WorkflowResponse"); + + if (theResponse == null) { + theResponse = execution.getVariable(processKey + "Response"); + } + } + + logger.debug("Exited " + method); + return theResponse; + } + + /** + * Checks if the specified item is one of the specified values. + * + * @param item the item + * @param values the list of values + * @return true if the item is in the list of values + */ + private boolean isOneOf(Object item, Object... values) { + if (values == null) { + return item == null; + } + + for (Object value : values) { + if (value == null) { + if (item == null) { + return true; + } + } else { + if (value.equals(item)) { + return true; + } + } + } + + return false; + } + + /** + * Creates a string value of the specified object, trimming whitespace in the process. If the result is null or + * empty, the specified empty string value is returned. Otherwise the trimmed value is returned. This method helps + * ensure consistent treatment of empty and null strings. + * + * @param object the object to convert (possibly null) + * @param emptyStringValue the desired value for empty results + */ + private String trimString(Object object, String emptyStringValue) { + if (object == null) { + return emptyStringValue; + } + + String s = String.valueOf(object).trim(); + return s.equals("") ? emptyStringValue : s; + } + + /** + * Returns the process definition key (i.e. the process name) from the execution. + * + * @param execution the execution + */ + private String getProcessKey(DelegateExecution execution) { + Object testKey = execution.getVariable("testProcessKey"); + + if (testKey instanceof String) { + return (String) testKey; + } + + return execution.getProcessEngineServices().getRepositoryService() + .getProcessDefinition(execution.getProcessDefinitionId()).getKey(); + } + + /** + * Removes namespace definitions and prefixes from XML, if any. + */ + private String removeXMLNamespaces(String xml) { + // remove xmlns declaration + xml = xml.replaceAll("xmlns.*?(\"|\').*?(\"|\')", ""); + + // remove opening tag prefix + xml = xml.replaceAll("(<)(\\w+:)(.*?>)", "$1$3"); + + // remove closing tags prefix + xml = xml.replaceAll("(</)(\\w+:)(.*?>)", "$1$3"); + + // remove extra spaces left when xmlns declarations are removed + xml = xml.replaceAll("\\s+>", ">"); + + return xml; + } + + /** + * Extracts text from an XML element. This method is not namespace aware (namespaces are ignored). The first + * matching element is selected. + * + * @param xml the XML document or fragment + * @param tag the desired element, e.g. "<name>" + * @return the element text, or null if the element was not found + */ + private String getXMLTextElement(String xml, String tag) { + xml = removeXMLNamespaces(xml); + + if (!tag.startsWith("<")) { + tag = "<" + tag + ">"; + } + + int start = xml.indexOf(tag); + + if (start == -1) { + return null; + } + + int end = xml.indexOf('<', start + tag.length()); + + if (end == -1) { + return null; + } + + return xml.substring(start + tag.length(), end); + } } diff --git a/bpmn/MSOCoreBPMN/src/main/java/org/onap/so/bpmn/core/RollbackData.java b/bpmn/MSOCoreBPMN/src/main/java/org/onap/so/bpmn/core/RollbackData.java index 52207f2156..68ce85f7df 100644 --- a/bpmn/MSOCoreBPMN/src/main/java/org/onap/so/bpmn/core/RollbackData.java +++ b/bpmn/MSOCoreBPMN/src/main/java/org/onap/so/bpmn/core/RollbackData.java @@ -24,13 +24,11 @@ import java.io.Serializable; import java.util.HashMap; import java.util.Map; import java.util.stream.Collectors; - import com.fasterxml.jackson.annotation.JsonProperty; /** - * An object that stores data for rollbacks. Data is organized by type. A type is simply a string - * identifier. Multiple types of data may be stored in the same object for separate rollback - * operations. + * An object that stores data for rollbacks. Data is organized by type. A type is simply a string identifier. Multiple + * types of data may be stored in the same object for separate rollback operations. */ public class RollbackData implements Serializable { diff --git a/bpmn/MSOCoreBPMN/src/main/java/org/onap/so/bpmn/core/UrnPropertiesReader.java b/bpmn/MSOCoreBPMN/src/main/java/org/onap/so/bpmn/core/UrnPropertiesReader.java index 0c88e3ed88..78a73c5a10 100644 --- a/bpmn/MSOCoreBPMN/src/main/java/org/onap/so/bpmn/core/UrnPropertiesReader.java +++ b/bpmn/MSOCoreBPMN/src/main/java/org/onap/so/bpmn/core/UrnPropertiesReader.java @@ -23,7 +23,6 @@ package org.onap.so.bpmn.core; import java.util.Optional; - import org.camunda.bpm.engine.delegate.DelegateExecution; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -43,31 +42,30 @@ public class UrnPropertiesReader { private static Environment environment; @Autowired - public void setEnvironment(Environment environment) { - this.environment = environment; - } - /** - * Return the URN property value - * if property is present in the execution object, return the same - * else search in the environment object. If found, add it to the execution object and return the value - * otherwise return null + public void setEnvironment(Environment environment) { + this.environment = environment; + } + + /** + * Return the URN property value if property is present in the execution object, return the same else search in the + * environment object. If found, add it to the execution object and return the value otherwise return null * * @param variableName URN property name - * @param execution The flow's execution instance. + * @param execution The flow's execution instance. * @return URN property value */ public static String getVariable(String variableName, DelegateExecution execution) { Object value = execution.getVariable(variableName); if (value != null) { logger.trace("Retrieved value for the URN variable, {}, from the execution object: {}", variableName, - String.valueOf(value)); + String.valueOf(value)); return String.valueOf(value); } String variableValue = null; if (environment != null && environment.getProperty(variableName) != null) { variableValue = environment.getProperty(variableName); logger.trace("Retrieved value for the URN variable, {}, from the environment variable: {}", variableName, - variableValue); + variableValue); execution.setVariable(variableName, variableValue); return variableValue; } @@ -80,33 +78,35 @@ public class UrnPropertiesReader { /** * Return the URN property value from the environment object + * * @param variableName URN property name * @return URN property value */ - public static String getVariable(String variableName){ + public static String getVariable(String variableName) { if (environment != null) { return environment.getProperty(variableName); } else { return null; } } - + /** * Return the String array URN property value from the environment object + * * @param variableName URN property name * @return URN property value */ - public static String[] getVariablesArray(String variableName){ + public static String[] getVariablesArray(String variableName) { if (environment != null) { return environment.getProperty(variableName, String[].class); } else { return null; } } - + public static String getVariable(String variableName, String defaultValue) { - return Optional.ofNullable(getVariable(variableName)).orElse(defaultValue); + return Optional.ofNullable(getVariable(variableName)).orElse(defaultValue); } } diff --git a/bpmn/MSOCoreBPMN/src/main/java/org/onap/so/bpmn/core/WorkflowException.java b/bpmn/MSOCoreBPMN/src/main/java/org/onap/so/bpmn/core/WorkflowException.java index 8551007795..1692045d33 100644 --- a/bpmn/MSOCoreBPMN/src/main/java/org/onap/so/bpmn/core/WorkflowException.java +++ b/bpmn/MSOCoreBPMN/src/main/java/org/onap/so/bpmn/core/WorkflowException.java @@ -26,69 +26,68 @@ import java.io.Serializable; * An object that represents a workflow exception. */ public class WorkflowException implements Serializable { - private static final long serialVersionUID = 1L; + private static final long serialVersionUID = 1L; - private final String processKey; - private final int errorCode; - private final String errorMessage; - private final String workStep; + private final String processKey; + private final int errorCode; + private final String errorMessage; + private final String workStep; - /** - * Constructor - * @param processKey the process key for the process that generated the exception - * @param errorCode the numeric error code (normally 1xxx or greater) - * @param errorMessage a short error message - */ - public WorkflowException(String processKey, int errorCode, - String errorMessage) { - this.processKey = processKey; - this.errorCode = errorCode; - this.errorMessage = errorMessage; - workStep = "*"; - } - - public WorkflowException(String processKey, int errorCode, - String errorMessage, String workStep) { - this.processKey = processKey; - this.errorCode = errorCode; - this.errorMessage = errorMessage; - this.workStep = workStep; - } + /** + * Constructor + * + * @param processKey the process key for the process that generated the exception + * @param errorCode the numeric error code (normally 1xxx or greater) + * @param errorMessage a short error message + */ + public WorkflowException(String processKey, int errorCode, String errorMessage) { + this.processKey = processKey; + this.errorCode = errorCode; + this.errorMessage = errorMessage; + workStep = "*"; + } - /** - * Returns the process key. - */ - public String getProcessKey() { - return processKey; - } + public WorkflowException(String processKey, int errorCode, String errorMessage, String workStep) { + this.processKey = processKey; + this.errorCode = errorCode; + this.errorMessage = errorMessage; + this.workStep = workStep; + } - /** - * Returns the error code. - */ - public int getErrorCode() { - return errorCode; - } + /** + * Returns the process key. + */ + public String getProcessKey() { + return processKey; + } - /** - * Returns the error message. - */ - public String getErrorMessage() { - return errorMessage; - } - - /** - * Returns the error message. - */ - public String getWorkStep() { - return workStep; - } + /** + * Returns the error code. + */ + public int getErrorCode() { + return errorCode; + } - /** - * Returns a string representation of this object. - */ + /** + * Returns the error message. + */ + public String getErrorMessage() { + return errorMessage; + } + + /** + * Returns the error message. + */ + public String getWorkStep() { + return workStep; + } + + /** + * Returns a string representation of this object. + */ @Override - public String toString() { - return getClass().getSimpleName() + "[processKey=" + getProcessKey() + ",errorCode=" + getErrorCode() - + ",errorMessage=" + getErrorMessage() + ",workStep=" + getWorkStep() + "]"; - } + public String toString() { + return getClass().getSimpleName() + "[processKey=" + getProcessKey() + ",errorCode=" + getErrorCode() + + ",errorMessage=" + getErrorMessage() + ",workStep=" + getWorkStep() + "]"; + } } diff --git a/bpmn/MSOCoreBPMN/src/main/java/org/onap/so/bpmn/core/domain/AllottedResource.java b/bpmn/MSOCoreBPMN/src/main/java/org/onap/so/bpmn/core/domain/AllottedResource.java index c7c7bba20c..841eaee675 100644 --- a/bpmn/MSOCoreBPMN/src/main/java/org/onap/so/bpmn/core/domain/AllottedResource.java +++ b/bpmn/MSOCoreBPMN/src/main/java/org/onap/so/bpmn/core/domain/AllottedResource.java @@ -21,7 +21,6 @@ package org.onap.so.bpmn.core.domain; import java.util.UUID; - import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import com.fasterxml.jackson.annotation.JsonRootName; @@ -33,104 +32,122 @@ import com.fasterxml.jackson.annotation.JsonRootName; @JsonRootName("allottedResource") public class AllottedResource extends Resource { - private static final long serialVersionUID = 1L; - - /* - * set resourceType for this object - */ - public AllottedResource(){ - resourceType = ResourceType.ALLOTTED_RESOURCE; - setResourceId(UUID.randomUUID().toString()); - } - - /* - * fields specific to Allotted Resource resource type - */ - private String allottedResourceType; - private String allottedResourceRole; - private String providingServiceModelName; - private String providingServiceModelInvariantUuid; - private String providingServiceModelUuid; - private String nfFunction; - private String nfType; - private String nfRole; - private String nfNamingCode; - private String orchestrationStatus; - - @JsonIgnore - private String resourceInput; - - /* - * GET and SET - */ - public String getAllottedResourceType() { - return allottedResourceType; - } - public void setAllottedResourceType(String allottedResourceType) { - this.allottedResourceType = allottedResourceType; - } - public String getAllottedResourceRole() { - return allottedResourceRole; - } - public void setAllottedResourceRole(String allottedResourceRole) { - this.allottedResourceRole = allottedResourceRole; - } - public String getProvidingServiceModelName() { - return providingServiceModelName; - } - public void setProvidingServiceModelName(String providingServiceModelName) { - this.providingServiceModelName = providingServiceModelName; - } - public String getProvidingServiceModelInvariantUuid() { - return providingServiceModelInvariantUuid; - } - public void setProvidingServiceModelInvariantUuid( - String providingServiceModelInvariantUuid) { - this.providingServiceModelInvariantUuid = providingServiceModelInvariantUuid; - } - public String getProvidingServiceModelUuid() { - return providingServiceModelUuid; - } - public void setProvidingServiceModelUuid(String providingServiceModelUuid) { - this.providingServiceModelUuid = providingServiceModelUuid; - } - public String getNfFunction() { - return nfFunction; - } - public void setNfFunction(String nfFunction) { - this.nfFunction = nfFunction; - } - public String getNfType() { - return nfType; - } - public void setNfType(String nfType) { - this.nfType = nfType; - } - public String getNfRole() { - return nfRole; - } - public void setNfRole(String nfRole) { - this.nfRole = nfRole; - } - public String getNfNamingCode() { - return nfNamingCode; - } - public void setNfNamingCode(String nfNamingCode) { - this.nfNamingCode = nfNamingCode; - } - public String getOrchestrationStatus() { - return orchestrationStatus; - } - public void setOrchestrationStatus(String orchestrationStatus) { - this.orchestrationStatus = orchestrationStatus; - } - - - public String getResourceInput() { - return resourceInput; - } - - public void setResourceInput(String resourceInput) { - this.resourceInput = resourceInput; - } -}
\ No newline at end of file + private static final long serialVersionUID = 1L; + + /* + * set resourceType for this object + */ + public AllottedResource() { + resourceType = ResourceType.ALLOTTED_RESOURCE; + setResourceId(UUID.randomUUID().toString()); + } + + /* + * fields specific to Allotted Resource resource type + */ + private String allottedResourceType; + private String allottedResourceRole; + private String providingServiceModelName; + private String providingServiceModelInvariantUuid; + private String providingServiceModelUuid; + private String nfFunction; + private String nfType; + private String nfRole; + private String nfNamingCode; + private String orchestrationStatus; + + @JsonIgnore + private String resourceInput; + + /* + * GET and SET + */ + public String getAllottedResourceType() { + return allottedResourceType; + } + + public void setAllottedResourceType(String allottedResourceType) { + this.allottedResourceType = allottedResourceType; + } + + public String getAllottedResourceRole() { + return allottedResourceRole; + } + + public void setAllottedResourceRole(String allottedResourceRole) { + this.allottedResourceRole = allottedResourceRole; + } + + public String getProvidingServiceModelName() { + return providingServiceModelName; + } + + public void setProvidingServiceModelName(String providingServiceModelName) { + this.providingServiceModelName = providingServiceModelName; + } + + public String getProvidingServiceModelInvariantUuid() { + return providingServiceModelInvariantUuid; + } + + public void setProvidingServiceModelInvariantUuid(String providingServiceModelInvariantUuid) { + this.providingServiceModelInvariantUuid = providingServiceModelInvariantUuid; + } + + public String getProvidingServiceModelUuid() { + return providingServiceModelUuid; + } + + public void setProvidingServiceModelUuid(String providingServiceModelUuid) { + this.providingServiceModelUuid = providingServiceModelUuid; + } + + public String getNfFunction() { + return nfFunction; + } + + public void setNfFunction(String nfFunction) { + this.nfFunction = nfFunction; + } + + public String getNfType() { + return nfType; + } + + public void setNfType(String nfType) { + this.nfType = nfType; + } + + public String getNfRole() { + return nfRole; + } + + public void setNfRole(String nfRole) { + this.nfRole = nfRole; + } + + public String getNfNamingCode() { + return nfNamingCode; + } + + public void setNfNamingCode(String nfNamingCode) { + this.nfNamingCode = nfNamingCode; + } + + public String getOrchestrationStatus() { + return orchestrationStatus; + } + + public void setOrchestrationStatus(String orchestrationStatus) { + this.orchestrationStatus = orchestrationStatus; + } + + + public String getResourceInput() { + return resourceInput; + } + + public void setResourceInput(String resourceInput) { + this.resourceInput = resourceInput; + } +} diff --git a/bpmn/MSOCoreBPMN/src/main/java/org/onap/so/bpmn/core/domain/CompareModelsResult.java b/bpmn/MSOCoreBPMN/src/main/java/org/onap/so/bpmn/core/domain/CompareModelsResult.java index d021394731..7afd864062 100644 --- a/bpmn/MSOCoreBPMN/src/main/java/org/onap/so/bpmn/core/domain/CompareModelsResult.java +++ b/bpmn/MSOCoreBPMN/src/main/java/org/onap/so/bpmn/core/domain/CompareModelsResult.java @@ -23,31 +23,35 @@ package org.onap.so.bpmn.core.domain; import java.io.Serializable; import java.util.List; -public class CompareModelsResult extends JsonWrapper implements Serializable -{ - private static final long serialVersionUID = 1L; - - private List<ResourceModelInfo> addedResourceList; - private List<ResourceModelInfo> deletedResourceList; - private List<String> requestInputs; - - public List<ResourceModelInfo> getAddedResourceList() { - return addedResourceList; - } - public void setAddedResourceList(List<ResourceModelInfo> addedResourceList) { - this.addedResourceList = addedResourceList; - } - public List<ResourceModelInfo> getDeletedResourceList() { - return deletedResourceList; - } - public void setDeletedResourceList(List<ResourceModelInfo> deletedResourceList) { - this.deletedResourceList = deletedResourceList; - } - public List<String> getRequestInputs() { - return requestInputs; - } - public void setRequestInputs(List<String> requestInputs) { - this.requestInputs = requestInputs; - } +public class CompareModelsResult extends JsonWrapper implements Serializable { + private static final long serialVersionUID = 1L; + + private List<ResourceModelInfo> addedResourceList; + private List<ResourceModelInfo> deletedResourceList; + private List<String> requestInputs; + + public List<ResourceModelInfo> getAddedResourceList() { + return addedResourceList; + } + + public void setAddedResourceList(List<ResourceModelInfo> addedResourceList) { + this.addedResourceList = addedResourceList; + } + + public List<ResourceModelInfo> getDeletedResourceList() { + return deletedResourceList; + } + + public void setDeletedResourceList(List<ResourceModelInfo> deletedResourceList) { + this.deletedResourceList = deletedResourceList; + } + + public List<String> getRequestInputs() { + return requestInputs; + } + + public void setRequestInputs(List<String> requestInputs) { + this.requestInputs = requestInputs; + } } diff --git a/bpmn/MSOCoreBPMN/src/main/java/org/onap/so/bpmn/core/domain/ConfigResource.java b/bpmn/MSOCoreBPMN/src/main/java/org/onap/so/bpmn/core/domain/ConfigResource.java index 1a8a1d83d9..95a82772db 100644 --- a/bpmn/MSOCoreBPMN/src/main/java/org/onap/so/bpmn/core/domain/ConfigResource.java +++ b/bpmn/MSOCoreBPMN/src/main/java/org/onap/so/bpmn/core/domain/ConfigResource.java @@ -21,25 +21,24 @@ package org.onap.so.bpmn.core.domain; import java.util.UUID; - import com.fasterxml.jackson.annotation.JsonRootName; @JsonRootName("configResource") public class ConfigResource extends Resource { - private static final long serialVersionUID = 1L; + private static final long serialVersionUID = 1L; - /* - * set resourceType for this object - */ - public ConfigResource(){ - resourceType = ResourceType.CONFIGURATION; - setResourceId(UUID.randomUUID().toString()); - } + /* + * set resourceType for this object + */ + public ConfigResource() { + resourceType = ResourceType.CONFIGURATION; + setResourceId(UUID.randomUUID().toString()); + } - /* - * fields specific to Config Resource resource type - */ + /* + * fields specific to Config Resource resource type + */ } diff --git a/bpmn/MSOCoreBPMN/src/main/java/org/onap/so/bpmn/core/domain/Configuration.java b/bpmn/MSOCoreBPMN/src/main/java/org/onap/so/bpmn/core/domain/Configuration.java index 815d85692e..baf7d198a1 100644 --- a/bpmn/MSOCoreBPMN/src/main/java/org/onap/so/bpmn/core/domain/Configuration.java +++ b/bpmn/MSOCoreBPMN/src/main/java/org/onap/so/bpmn/core/domain/Configuration.java @@ -21,68 +21,80 @@ package org.onap.so.bpmn.core.domain; import java.io.Serializable; - import com.fasterxml.jackson.annotation.JsonRootName; /** - * Stores configuration information and modeled off - * of the AAI configuration object + * Stores configuration information and modeled off of the AAI configuration object * */ @JsonRootName("configuration") -public class Configuration extends JsonWrapper implements Serializable{ - - private static final long serialVersionUID = 1L; - - private String id; - private String name; - private String type; - private String orchestrationStatus; - private String tunnelBandwidth; - private String vendorAllowedMaxBandwidth; - private String resourceVersion; - public String getId() { - return id; - } - public void setId(String id) { - this.id = id; - } - public String getName() { - return name; - } - public void setName(String name) { - this.name = name; - } - public String getType() { - return type; - } - public void setType(String type) { - this.type = type; - } - public String getOrchestrationStatus() { - return orchestrationStatus; - } - public void setOrchestrationStatus(String orchestrationStatus) { - this.orchestrationStatus = orchestrationStatus; - } - public String getTunnelBandwidth() { - return tunnelBandwidth; - } - public void setTunnelBandwidth(String tunnelBandwidth) { - this.tunnelBandwidth = tunnelBandwidth; - } - public String getVendorAllowedMaxBandwidth() { - return vendorAllowedMaxBandwidth; - } - public void setVendorAllowedMaxBandwidth(String vendorAllowedMaxBandwidth) { - this.vendorAllowedMaxBandwidth = vendorAllowedMaxBandwidth; - } - public String getResourceVersion() { - return resourceVersion; - } - public void setResourceVersion(String resourceVersion) { - this.resourceVersion = resourceVersion; - } +public class Configuration extends JsonWrapper implements Serializable { + + private static final long serialVersionUID = 1L; + + private String id; + private String name; + private String type; + private String orchestrationStatus; + private String tunnelBandwidth; + private String vendorAllowedMaxBandwidth; + private String resourceVersion; + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + public String getOrchestrationStatus() { + return orchestrationStatus; + } + + public void setOrchestrationStatus(String orchestrationStatus) { + this.orchestrationStatus = orchestrationStatus; + } + + public String getTunnelBandwidth() { + return tunnelBandwidth; + } + + public void setTunnelBandwidth(String tunnelBandwidth) { + this.tunnelBandwidth = tunnelBandwidth; + } + + public String getVendorAllowedMaxBandwidth() { + return vendorAllowedMaxBandwidth; + } + + public void setVendorAllowedMaxBandwidth(String vendorAllowedMaxBandwidth) { + this.vendorAllowedMaxBandwidth = vendorAllowedMaxBandwidth; + } + + public String getResourceVersion() { + return resourceVersion; + } + + public void setResourceVersion(String resourceVersion) { + this.resourceVersion = resourceVersion; + } } diff --git a/bpmn/MSOCoreBPMN/src/main/java/org/onap/so/bpmn/core/domain/Customer.java b/bpmn/MSOCoreBPMN/src/main/java/org/onap/so/bpmn/core/domain/Customer.java index ca6d35cf46..f76ed9497c 100644 --- a/bpmn/MSOCoreBPMN/src/main/java/org/onap/so/bpmn/core/domain/Customer.java +++ b/bpmn/MSOCoreBPMN/src/main/java/org/onap/so/bpmn/core/domain/Customer.java @@ -21,9 +21,9 @@ package org.onap.so.bpmn.core.domain; import java.io.Serializable; + /** - * This class is used to store customer - * data of services aka ServiceDecomposition + * This class is used to store customer data of services aka ServiceDecomposition * * @author bb3476 * @@ -31,22 +31,25 @@ import java.io.Serializable; public class Customer extends JsonWrapper implements Serializable { - private static final long serialVersionUID = 1L; - private String subscriptionServiceType; - private String globalSubscriberId; - - - public String getSubscriptionServiceType() { - return subscriptionServiceType; - } - public void setSubscriptionServiceType(String subscriptionServiceType) { - this.subscriptionServiceType = subscriptionServiceType; - } - public String getGlobalSubscriberId() { - return globalSubscriberId; - } - public void setGlobalSubscriberId(String globalSubscriberId) { - this.globalSubscriberId = globalSubscriberId; - } - + private static final long serialVersionUID = 1L; + private String subscriptionServiceType; + private String globalSubscriberId; + + + public String getSubscriptionServiceType() { + return subscriptionServiceType; + } + + public void setSubscriptionServiceType(String subscriptionServiceType) { + this.subscriptionServiceType = subscriptionServiceType; + } + + public String getGlobalSubscriberId() { + return globalSubscriberId; + } + + public void setGlobalSubscriberId(String globalSubscriberId) { + this.globalSubscriberId = globalSubscriberId; + } + } diff --git a/bpmn/MSOCoreBPMN/src/main/java/org/onap/so/bpmn/core/domain/HomingSolution.java b/bpmn/MSOCoreBPMN/src/main/java/org/onap/so/bpmn/core/domain/HomingSolution.java index e4eb01e7fb..897cbe3573 100644 --- a/bpmn/MSOCoreBPMN/src/main/java/org/onap/so/bpmn/core/domain/HomingSolution.java +++ b/bpmn/MSOCoreBPMN/src/main/java/org/onap/so/bpmn/core/domain/HomingSolution.java @@ -22,7 +22,6 @@ package org.onap.so.bpmn.core.domain; import java.io.Serializable; import java.util.List; - import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonRootName; @@ -32,124 +31,127 @@ import com.fasterxml.jackson.annotation.JsonRootName; */ @JsonRootName("homingSolution") @JsonInclude(JsonInclude.Include.NON_NULL) -public class HomingSolution extends JsonWrapper implements Serializable { - - private static final long serialVersionUID = 1L; - - private InventoryType inventoryType; - private boolean isRehome; - private String serviceInstanceId; //TODO should start using si object instead - private String cloudOwner; - private String cloudRegionId; - private String aicClli; - private String aicVersion; - private String tenant; - private VnfResource vnf; - private String oofDirectives; - private License license = new License(); - - - /** - * @return the inventoryType which indicates the solution type - */ - public InventoryType getInventoryType() { - return inventoryType; - } - - public void setInventoryType(InventoryType inventoryType) { - this.inventoryType = inventoryType; - } - public boolean isRehome() { - return isRehome; - } - public void setRehome(boolean isRehome) { - this.isRehome = isRehome; - } - - public String getServiceInstanceId() { - return serviceInstanceId; - } - - public void setServiceInstanceId(String serviceInstanceId) { - this.serviceInstanceId = serviceInstanceId; - } - - public String getCloudOwner() { - return cloudOwner; - } - - public void setCloudOwner(String cloudOwner) { - this.cloudOwner = cloudOwner; - } - - public String getCloudRegionId() { - return cloudRegionId; - } - - public void setCloudRegionId(String cloudRegionId) { - this.cloudRegionId = cloudRegionId; - } - /** - * @return the aicClli (aka aic site, physical location id) - */ - public String getAicClli() { - return aicClli; - } - - public void setAicClli(String aicClli) { - this.aicClli = aicClli; - } - - public String getAicVersion() { - return aicVersion; - } - - public void setAicVersion(String aicVersion) { - this.aicVersion = aicVersion; - } - - public String getTenant() { - return tenant; - } - - public void setTenant(String tenant) { - this.tenant = tenant; - } - - /** - * @return the vnf that the resource was homed too. - */ - public VnfResource getVnf() { - return vnf; - } - - public void setVnf(VnfResource vnf) { - this.vnf = vnf; - } - - /** - * @return a map<string, string> key is label name, value is any flavor - */ - public String getOofDirectives() { - return oofDirectives; - } - - public void setOofDirectives(String oofDirectives) { - this.oofDirectives = oofDirectives; - } - - public License getLicense() { - return license; - } - - public void setLicense(License license) { - this.license = license; - } - - - public static long getSerialversionuid() { - return serialVersionUID; - } - - -}
\ No newline at end of file +public class HomingSolution extends JsonWrapper implements Serializable { + + private static final long serialVersionUID = 1L; + + private InventoryType inventoryType; + private boolean isRehome; + private String serviceInstanceId; // TODO should start using si object instead + private String cloudOwner; + private String cloudRegionId; + private String aicClli; + private String aicVersion; + private String tenant; + private VnfResource vnf; + private String oofDirectives; + private License license = new License(); + + + /** + * @return the inventoryType which indicates the solution type + */ + public InventoryType getInventoryType() { + return inventoryType; + } + + public void setInventoryType(InventoryType inventoryType) { + this.inventoryType = inventoryType; + } + + public boolean isRehome() { + return isRehome; + } + + public void setRehome(boolean isRehome) { + this.isRehome = isRehome; + } + + public String getServiceInstanceId() { + return serviceInstanceId; + } + + public void setServiceInstanceId(String serviceInstanceId) { + this.serviceInstanceId = serviceInstanceId; + } + + public String getCloudOwner() { + return cloudOwner; + } + + public void setCloudOwner(String cloudOwner) { + this.cloudOwner = cloudOwner; + } + + public String getCloudRegionId() { + return cloudRegionId; + } + + public void setCloudRegionId(String cloudRegionId) { + this.cloudRegionId = cloudRegionId; + } + + /** + * @return the aicClli (aka aic site, physical location id) + */ + public String getAicClli() { + return aicClli; + } + + public void setAicClli(String aicClli) { + this.aicClli = aicClli; + } + + public String getAicVersion() { + return aicVersion; + } + + public void setAicVersion(String aicVersion) { + this.aicVersion = aicVersion; + } + + public String getTenant() { + return tenant; + } + + public void setTenant(String tenant) { + this.tenant = tenant; + } + + /** + * @return the vnf that the resource was homed too. + */ + public VnfResource getVnf() { + return vnf; + } + + public void setVnf(VnfResource vnf) { + this.vnf = vnf; + } + + /** + * @return a map<string, string> key is label name, value is any flavor + */ + public String getOofDirectives() { + return oofDirectives; + } + + public void setOofDirectives(String oofDirectives) { + this.oofDirectives = oofDirectives; + } + + public License getLicense() { + return license; + } + + public void setLicense(License license) { + this.license = license; + } + + + public static long getSerialversionuid() { + return serialVersionUID; + } + + +} diff --git a/bpmn/MSOCoreBPMN/src/main/java/org/onap/so/bpmn/core/domain/InventoryType.java b/bpmn/MSOCoreBPMN/src/main/java/org/onap/so/bpmn/core/domain/InventoryType.java index e56ca76b2b..494eb2a61d 100644 --- a/bpmn/MSOCoreBPMN/src/main/java/org/onap/so/bpmn/core/domain/InventoryType.java +++ b/bpmn/MSOCoreBPMN/src/main/java/org/onap/so/bpmn/core/domain/InventoryType.java @@ -20,18 +20,17 @@ package org.onap.so.bpmn.core.domain; -public enum InventoryType{ +public enum InventoryType { - cloud("CLOUD"), - service("SERVICE"); + cloud("CLOUD"), service("SERVICE"); - private String type; + private String type; - InventoryType(String type){ - this.type = type; - } + InventoryType(String type) { + this.type = type; + } - public String type(){ - return type; - } -}
\ No newline at end of file + public String type() { + return type; + } +} diff --git a/bpmn/MSOCoreBPMN/src/main/java/org/onap/so/bpmn/core/domain/JsonWrapper.java b/bpmn/MSOCoreBPMN/src/main/java/org/onap/so/bpmn/core/domain/JsonWrapper.java index c3eefcd3cd..602172f8a4 100644 --- a/bpmn/MSOCoreBPMN/src/main/java/org/onap/so/bpmn/core/domain/JsonWrapper.java +++ b/bpmn/MSOCoreBPMN/src/main/java/org/onap/so/bpmn/core/domain/JsonWrapper.java @@ -25,10 +25,8 @@ package org.onap.so.bpmn.core.domain; import java.io.IOException; import java.io.Serializable; import java.util.List; - import org.json.JSONException; import org.json.JSONObject; - import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonInclude.Include; import com.fasterxml.jackson.core.JsonGenerationException; @@ -36,100 +34,99 @@ import com.fasterxml.jackson.databind.JsonMappingException; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.ObjectWriter; import com.fasterxml.jackson.databind.SerializationFeature; - import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** - * Wrapper encapsulates needed JSON functionality - * to be extended by MSO service decomposition objects - * providing ways to convert to and from JSON + * Wrapper encapsulates needed JSON functionality to be extended by MSO service decomposition objects providing ways to + * convert to and from JSON * */ @JsonInclude(Include.NON_NULL) -public abstract class JsonWrapper implements Serializable { - - private static final Logger logger = LoggerFactory.getLogger(JsonWrapper.class); - @JsonInclude(Include.NON_NULL) - public String toJsonString(){ - - String jsonString = ""; - //convert with Jackson - ObjectMapper mapper = new ObjectMapper(); - mapper.configure(SerializationFeature.WRAP_ROOT_VALUE, true); - - mapper.setSerializationInclusion(Include.NON_NULL); - - ObjectWriter ow = mapper.writer().withDefaultPrettyPrinter(); - try { - jsonString = ow.writeValueAsString(this); - } catch (Exception e){ - - logger.debug("Exception :",e); - } - return jsonString; - } - - @JsonInclude(Include.NON_NULL) - public JSONObject toJsonObject(){ - - ObjectMapper mapper = new ObjectMapper(); - mapper.configure(SerializationFeature.WRAP_ROOT_VALUE, true); - JSONObject json = new JSONObject(); - try { - json = new JSONObject(mapper.writeValueAsString(this)); - } catch (JsonGenerationException e) { - logger.debug("Exception :",e); - } catch (JsonMappingException e) { - logger.debug("Exception :",e); - } catch (JSONException e) { - logger.debug("Exception :",e); - } catch (IOException e) { - logger.debug("Exception :",e); - } - return json; - } - - public String listToJson(List list) { - ObjectMapper mapper = new ObjectMapper(); - mapper.configure(SerializationFeature.WRAP_ROOT_VALUE, true); - - String jsonString = ""; - try { - jsonString = mapper.writeValueAsString(list); - } catch (JsonGenerationException e) { - logger.debug("Exception :",e); - } catch (JsonMappingException e) { - logger.debug("Exception :",e); - } catch (IOException e) { - logger.debug("Exception :",e); - } - return jsonString; - } - - @JsonInclude(Include.NON_NULL) - public String toJsonStringNoRootName(){ - - String jsonString = ""; - //convert with Jackson - ObjectMapper mapper = new ObjectMapper(); - mapper.setSerializationInclusion(Include.NON_NULL); - - ObjectWriter ow = mapper.writer().withDefaultPrettyPrinter(); - try { - jsonString = ow.writeValueAsString(this); - } catch (Exception e){ - - logger.debug("Exception :",e); - } - return jsonString; - } - - /** - * Returns a string representation of this object. - */ - public String toString() { - return this.toJsonString(); - } +public abstract class JsonWrapper implements Serializable { + + private static final Logger logger = LoggerFactory.getLogger(JsonWrapper.class); + + @JsonInclude(Include.NON_NULL) + public String toJsonString() { + + String jsonString = ""; + // convert with Jackson + ObjectMapper mapper = new ObjectMapper(); + mapper.configure(SerializationFeature.WRAP_ROOT_VALUE, true); + + mapper.setSerializationInclusion(Include.NON_NULL); + + ObjectWriter ow = mapper.writer().withDefaultPrettyPrinter(); + try { + jsonString = ow.writeValueAsString(this); + } catch (Exception e) { + + logger.debug("Exception :", e); + } + return jsonString; + } + + @JsonInclude(Include.NON_NULL) + public JSONObject toJsonObject() { + + ObjectMapper mapper = new ObjectMapper(); + mapper.configure(SerializationFeature.WRAP_ROOT_VALUE, true); + JSONObject json = new JSONObject(); + try { + json = new JSONObject(mapper.writeValueAsString(this)); + } catch (JsonGenerationException e) { + logger.debug("Exception :", e); + } catch (JsonMappingException e) { + logger.debug("Exception :", e); + } catch (JSONException e) { + logger.debug("Exception :", e); + } catch (IOException e) { + logger.debug("Exception :", e); + } + return json; + } + + public String listToJson(List list) { + ObjectMapper mapper = new ObjectMapper(); + mapper.configure(SerializationFeature.WRAP_ROOT_VALUE, true); + + String jsonString = ""; + try { + jsonString = mapper.writeValueAsString(list); + } catch (JsonGenerationException e) { + logger.debug("Exception :", e); + } catch (JsonMappingException e) { + logger.debug("Exception :", e); + } catch (IOException e) { + logger.debug("Exception :", e); + } + return jsonString; + } + + @JsonInclude(Include.NON_NULL) + public String toJsonStringNoRootName() { + + String jsonString = ""; + // convert with Jackson + ObjectMapper mapper = new ObjectMapper(); + mapper.setSerializationInclusion(Include.NON_NULL); + + ObjectWriter ow = mapper.writer().withDefaultPrettyPrinter(); + try { + jsonString = ow.writeValueAsString(this); + } catch (Exception e) { + + logger.debug("Exception :", e); + } + return jsonString; + } + + /** + * Returns a string representation of this object. + */ + public String toString() { + return this.toJsonString(); + } } diff --git a/bpmn/MSOCoreBPMN/src/main/java/org/onap/so/bpmn/core/domain/License.java b/bpmn/MSOCoreBPMN/src/main/java/org/onap/so/bpmn/core/domain/License.java index 93dfd4f1f1..1db360f391 100644 --- a/bpmn/MSOCoreBPMN/src/main/java/org/onap/so/bpmn/core/domain/License.java +++ b/bpmn/MSOCoreBPMN/src/main/java/org/onap/so/bpmn/core/domain/License.java @@ -24,95 +24,88 @@ import java.io.Serializable; import java.util.ArrayList; import java.util.Arrays; import java.util.List; - import org.json.JSONArray; - import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonRootName; /** - * Stores licensing information and is an attribute - * of a <class>HomingSolution</class> + * Stores licensing information and is an attribute of a <class>HomingSolution</class> * */ @JsonRootName("license") @JsonInclude(JsonInclude.Include.NON_EMPTY) -public class License extends JsonWrapper implements Serializable { - - private static final long serialVersionUID = 1L; - - @JsonInclude(JsonInclude.Include.NON_EMPTY) - private List<String> entitlementPoolList = new ArrayList<String>(); - @JsonInclude(JsonInclude.Include.NON_EMPTY) - private List<String> licenseKeyGroupList = new ArrayList<String>(); - - - public List<String> getEntitlementPoolList() { - return entitlementPoolList; - } - - public void setEntitlementPoolList(List<String> entitlementPoolList) { - this.entitlementPoolList = entitlementPoolList; - } - - public List<String> getLicenseKeyGroupList() { - return licenseKeyGroupList; - } - - public void setLicenseKeyGroupList(List<String> licenseKeyGroupList) { - this.licenseKeyGroupList = licenseKeyGroupList; - } - - /** - * This method adds a Entitlement Pool Uuid - * to the EntitlementPoolList - * - * @param the EntitlementPoolUuid - */ - public void addEntitlementPool(String entitlementPoolUuid) { - entitlementPoolList.add(entitlementPoolUuid); - } - - /** - * This method adds a License Key Group Uuid - * to the LicenseKeyGroupList - * - * @param the licenseKeyGroupUuid - */ - public void addLicenseKeyGroup(String licenseKeyGroupUuid) { - licenseKeyGroupList.add(licenseKeyGroupUuid); - } - - /** - * This method returns the licenseKeyGroupList - * as a json array - * - * @return the strList - */ - @JsonIgnore - public JSONArray getLicenseKeyGroupListAsString() { +public class License extends JsonWrapper implements Serializable { + + private static final long serialVersionUID = 1L; + + @JsonInclude(JsonInclude.Include.NON_EMPTY) + private List<String> entitlementPoolList = new ArrayList<String>(); + @JsonInclude(JsonInclude.Include.NON_EMPTY) + private List<String> licenseKeyGroupList = new ArrayList<String>(); + + + public List<String> getEntitlementPoolList() { + return entitlementPoolList; + } + + public void setEntitlementPoolList(List<String> entitlementPoolList) { + this.entitlementPoolList = entitlementPoolList; + } + + public List<String> getLicenseKeyGroupList() { + return licenseKeyGroupList; + } + + public void setLicenseKeyGroupList(List<String> licenseKeyGroupList) { + this.licenseKeyGroupList = licenseKeyGroupList; + } + + /** + * This method adds a Entitlement Pool Uuid to the EntitlementPoolList + * + * @param the EntitlementPoolUuid + */ + public void addEntitlementPool(String entitlementPoolUuid) { + entitlementPoolList.add(entitlementPoolUuid); + } + + /** + * This method adds a License Key Group Uuid to the LicenseKeyGroupList + * + * @param the licenseKeyGroupUuid + */ + public void addLicenseKeyGroup(String licenseKeyGroupUuid) { + licenseKeyGroupList.add(licenseKeyGroupUuid); + } + + /** + * This method returns the licenseKeyGroupList as a json array + * + * @return the strList + */ + @JsonIgnore + public JSONArray getLicenseKeyGroupListAsString() { JSONArray array = new JSONArray(licenseKeyGroupList); - return array; - } - - /** - * This method returns the entitlementPoolList - * as a json array - * - * @return the strList - */ - @JsonIgnore - public JSONArray getEntitlementPoolListAsString() { + return array; + } + + /** + * This method returns the entitlementPoolList as a json array + * + * @return the strList + */ + @JsonIgnore + public JSONArray getEntitlementPoolListAsString() { JSONArray array = new JSONArray(entitlementPoolList); - return array; - } - - /** - * @return the serialversionuid - */ - public static long getSerialversionuid() { - return serialVersionUID; - } + return array; + } + + /** + * @return the serialversionuid + */ + public static long getSerialversionuid() { + return serialVersionUID; + } } diff --git a/bpmn/MSOCoreBPMN/src/main/java/org/onap/so/bpmn/core/domain/ModelInfo.java b/bpmn/MSOCoreBPMN/src/main/java/org/onap/so/bpmn/core/domain/ModelInfo.java index 983fe50d88..4c8401335d 100644 --- a/bpmn/MSOCoreBPMN/src/main/java/org/onap/so/bpmn/core/domain/ModelInfo.java +++ b/bpmn/MSOCoreBPMN/src/main/java/org/onap/so/bpmn/core/domain/ModelInfo.java @@ -21,77 +21,90 @@ package org.onap.so.bpmn.core.domain; import java.io.Serializable; - import com.fasterxml.jackson.annotation.JsonRootName; @JsonRootName("modelInfo") -public class ModelInfo extends JsonWrapper implements Serializable { - - /** - * This is domain object defining structure for MODEL INFO - * It will be valid for each Resource type object - */ - private static final long serialVersionUID = 1L; - - private String modelName = ""; - private String modelUuid = ""; - private String modelInvariantUuid = ""; - private String modelVersion = ""; - //additionally on resource level - private String modelCustomizationUuid = ""; - private String modelCustomizationName = ""; - private String modelInstanceName = ""; - private String modelType = ""; - - //GET and SET methods - - public String getModelName() { - return modelName; - } - public void setModelName(String modelName) { - this.modelName = modelName; - } - public String getModelUuid() { - return modelUuid; - } - public void setModelUuid(String modelUuid) { - this.modelUuid = modelUuid; - } - public String getModelInvariantUuid() { - return modelInvariantUuid; - } - public void setModelInvariantUuid(String modelInvariantUuid) { - this.modelInvariantUuid = modelInvariantUuid; - } - public String getModelVersion() { - return modelVersion; - } - public void setModelVersion(String modelVersion) { - this.modelVersion = modelVersion; - } - public String getModelCustomizationUuid() { - return modelCustomizationUuid; - } - public void setModelCustomizationUuid(String modelCustomizationUuid) { - this.modelCustomizationUuid = modelCustomizationUuid; - } - public String getModelCustomizationName() { - return modelCustomizationName; - } - public void setModelCustomizationName(String modelCustomizationName) { - this.modelCustomizationName = modelCustomizationName; - } - public String getModelInstanceName() { - return modelInstanceName; - } - public void setModelInstanceName(String modelInstanceName) { - this.modelInstanceName = modelInstanceName; - } - public String getModelType() { - return modelType; - } - public void setModelType(String modelType) { - this.modelType = modelType; - } - -}
\ No newline at end of file +public class ModelInfo extends JsonWrapper implements Serializable { + + /** + * This is domain object defining structure for MODEL INFO It will be valid for each Resource type object + */ + private static final long serialVersionUID = 1L; + + private String modelName = ""; + private String modelUuid = ""; + private String modelInvariantUuid = ""; + private String modelVersion = ""; + // additionally on resource level + private String modelCustomizationUuid = ""; + private String modelCustomizationName = ""; + private String modelInstanceName = ""; + private String modelType = ""; + + // GET and SET methods + + public String getModelName() { + return modelName; + } + + public void setModelName(String modelName) { + this.modelName = modelName; + } + + public String getModelUuid() { + return modelUuid; + } + + public void setModelUuid(String modelUuid) { + this.modelUuid = modelUuid; + } + + public String getModelInvariantUuid() { + return modelInvariantUuid; + } + + public void setModelInvariantUuid(String modelInvariantUuid) { + this.modelInvariantUuid = modelInvariantUuid; + } + + public String getModelVersion() { + return modelVersion; + } + + public void setModelVersion(String modelVersion) { + this.modelVersion = modelVersion; + } + + public String getModelCustomizationUuid() { + return modelCustomizationUuid; + } + + public void setModelCustomizationUuid(String modelCustomizationUuid) { + this.modelCustomizationUuid = modelCustomizationUuid; + } + + public String getModelCustomizationName() { + return modelCustomizationName; + } + + public void setModelCustomizationName(String modelCustomizationName) { + this.modelCustomizationName = modelCustomizationName; + } + + public String getModelInstanceName() { + return modelInstanceName; + } + + public void setModelInstanceName(String modelInstanceName) { + this.modelInstanceName = modelInstanceName; + } + + public String getModelType() { + return modelType; + } + + public void setModelType(String modelType) { + this.modelType = modelType; + } + +} diff --git a/bpmn/MSOCoreBPMN/src/main/java/org/onap/so/bpmn/core/domain/ModuleResource.java b/bpmn/MSOCoreBPMN/src/main/java/org/onap/so/bpmn/core/domain/ModuleResource.java index 459d203325..a67149b71f 100644 --- a/bpmn/MSOCoreBPMN/src/main/java/org/onap/so/bpmn/core/domain/ModuleResource.java +++ b/bpmn/MSOCoreBPMN/src/main/java/org/onap/so/bpmn/core/domain/ModuleResource.java @@ -23,72 +23,85 @@ package org.onap.so.bpmn.core.domain; import com.fasterxml.jackson.annotation.JsonRootName; @JsonRootName("vfModule") -public class ModuleResource extends Resource { - - private static final long serialVersionUID = 1L; - - /* - * set resourceType for this object - */ - public ModuleResource(){ - resourceType = ResourceType.MODULE; - } - - /* - * fields specific to VF Module resource type - */ - private String vfModuleName; - private String vfModuleType; - private String heatStackId; - private boolean hasVolumeGroup; - private boolean isBase; - private String vfModuleLabel; - private int initialCount; - - /* - * GET && SET - */ - public String getVfModuleName() { - return vfModuleName; - } - public void setVfModuleName(String vfModuleName) { - this.vfModuleName = vfModuleName; - } - public String getHeatStackId() { - return heatStackId; - } - public void setHeatStackId(String heatStackId) { - this.heatStackId = heatStackId; - } - public boolean getIsBase() { - return isBase; - } - public void setIsBase(boolean isBase) { - this.isBase = isBase; - } - public String getVfModuleLabel() { - return vfModuleLabel; - } - public void setVfModuleLabel(String vfModuleLabel) { - this.vfModuleLabel = vfModuleLabel; - } - public int getInitialCount() { - return initialCount; - } - public void setInitialCount(int initialCount) { - this.initialCount = initialCount; - } - public String getVfModuleType() { - return vfModuleType; - } - public void setVfModuleType(String vfModuleType) { - this.vfModuleType = vfModuleType; - } - public boolean isHasVolumeGroup() { - return hasVolumeGroup; - } - public void setHasVolumeGroup(boolean hasVolumeGroup) { - this.hasVolumeGroup = hasVolumeGroup; - } - -}
\ No newline at end of file +public class ModuleResource extends Resource { + + private static final long serialVersionUID = 1L; + + /* + * set resourceType for this object + */ + public ModuleResource() { + resourceType = ResourceType.MODULE; + } + + /* + * fields specific to VF Module resource type + */ + private String vfModuleName; + private String vfModuleType; + private String heatStackId; + private boolean hasVolumeGroup; + private boolean isBase; + private String vfModuleLabel; + private int initialCount; + + /* + * GET && SET + */ + public String getVfModuleName() { + return vfModuleName; + } + + public void setVfModuleName(String vfModuleName) { + this.vfModuleName = vfModuleName; + } + + public String getHeatStackId() { + return heatStackId; + } + + public void setHeatStackId(String heatStackId) { + this.heatStackId = heatStackId; + } + + public boolean getIsBase() { + return isBase; + } + + public void setIsBase(boolean isBase) { + this.isBase = isBase; + } + + public String getVfModuleLabel() { + return vfModuleLabel; + } + + public void setVfModuleLabel(String vfModuleLabel) { + this.vfModuleLabel = vfModuleLabel; + } + + public int getInitialCount() { + return initialCount; + } + + public void setInitialCount(int initialCount) { + this.initialCount = initialCount; + } + + public String getVfModuleType() { + return vfModuleType; + } + + public void setVfModuleType(String vfModuleType) { + this.vfModuleType = vfModuleType; + } + + public boolean isHasVolumeGroup() { + return hasVolumeGroup; + } + + public void setHasVolumeGroup(boolean hasVolumeGroup) { + this.hasVolumeGroup = hasVolumeGroup; + } + +} diff --git a/bpmn/MSOCoreBPMN/src/main/java/org/onap/so/bpmn/core/domain/NetworkResource.java b/bpmn/MSOCoreBPMN/src/main/java/org/onap/so/bpmn/core/domain/NetworkResource.java index f0e97f15ef..7523c378e9 100644 --- a/bpmn/MSOCoreBPMN/src/main/java/org/onap/so/bpmn/core/domain/NetworkResource.java +++ b/bpmn/MSOCoreBPMN/src/main/java/org/onap/so/bpmn/core/domain/NetworkResource.java @@ -21,7 +21,6 @@ package org.onap.so.bpmn.core.domain; import java.util.UUID; - import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import com.fasterxml.jackson.annotation.JsonRootName; @@ -34,58 +33,67 @@ import com.fasterxml.jackson.annotation.JsonRootName; @JsonRootName("networkResource") public class NetworkResource extends Resource { - private static final long serialVersionUID = 1L; - /* - * set resourceType for this object - */ - public NetworkResource(){ - resourceType = ResourceType.NETWORK; - setResourceId(UUID.randomUUID().toString()); - } - /* - * fields specific to Network resource type - */ - private String networkType; - private String networkRole; - private String networkTechnology; - private String networkScope; - - @JsonIgnore - private String resourceInput; - - /* - * GET and SET - */ - public String getNetworkType() { - return networkType; - } - public void setNetworkType(String networkType) { - this.networkType = networkType; - } - public String getNetworkRole() { - return networkRole; - } - public void setNetworkRole(String networkRole) { - this.networkRole = networkRole; - } - public String getNetworkTechnology() { - return networkTechnology; - } - public void setNetworkTechnology(String networkTechnology) { - this.networkTechnology = networkTechnology; - } - public String getNetworkScope() { - return networkScope; - } - public void setNetworkScope(String networkScope) { - this.networkScope = networkScope; - } - - public String getResourceInput() { - return resourceInput; - } - - public void setResourceInput(String resourceInput) { - this.resourceInput = resourceInput; - } -}
\ No newline at end of file + private static final long serialVersionUID = 1L; + + /* + * set resourceType for this object + */ + public NetworkResource() { + resourceType = ResourceType.NETWORK; + setResourceId(UUID.randomUUID().toString()); + } + + /* + * fields specific to Network resource type + */ + private String networkType; + private String networkRole; + private String networkTechnology; + private String networkScope; + + @JsonIgnore + private String resourceInput; + + /* + * GET and SET + */ + public String getNetworkType() { + return networkType; + } + + public void setNetworkType(String networkType) { + this.networkType = networkType; + } + + public String getNetworkRole() { + return networkRole; + } + + public void setNetworkRole(String networkRole) { + this.networkRole = networkRole; + } + + public String getNetworkTechnology() { + return networkTechnology; + } + + public void setNetworkTechnology(String networkTechnology) { + this.networkTechnology = networkTechnology; + } + + public String getNetworkScope() { + return networkScope; + } + + public void setNetworkScope(String networkScope) { + this.networkScope = networkScope; + } + + public String getResourceInput() { + return resourceInput; + } + + public void setResourceInput(String resourceInput) { + this.resourceInput = resourceInput; + } +} diff --git a/bpmn/MSOCoreBPMN/src/main/java/org/onap/so/bpmn/core/domain/OwningEntity.java b/bpmn/MSOCoreBPMN/src/main/java/org/onap/so/bpmn/core/domain/OwningEntity.java index 903b84ac8a..de637fdcc6 100644 --- a/bpmn/MSOCoreBPMN/src/main/java/org/onap/so/bpmn/core/domain/OwningEntity.java +++ b/bpmn/MSOCoreBPMN/src/main/java/org/onap/so/bpmn/core/domain/OwningEntity.java @@ -21,12 +21,10 @@ package org.onap.so.bpmn.core.domain; import java.io.Serializable; - import com.fasterxml.jackson.annotation.JsonRootName; /** - * This class is used to store instance - * data of owningEntity for ServiceDecomposition + * This class is used to store instance data of owningEntity for ServiceDecomposition * * @author bb3476 * @@ -34,20 +32,24 @@ import com.fasterxml.jackson.annotation.JsonRootName; @JsonRootName("owningEntity") public class OwningEntity extends JsonWrapper implements Serializable { - private static final long serialVersionUID = 1L; - private String owningEntityId; - private String owningEntityName; - public String getOwningEntityId() { - return owningEntityId; - } - public void setOwningEntityId(String owningEntityId) { - this.owningEntityId = owningEntityId; - } - public String getOwningEntityName() { - return owningEntityName; - } - public void setOwningEntityName(String owningEntityName) { - this.owningEntityName = owningEntityName; - } - + private static final long serialVersionUID = 1L; + private String owningEntityId; + private String owningEntityName; + + public String getOwningEntityId() { + return owningEntityId; + } + + public void setOwningEntityId(String owningEntityId) { + this.owningEntityId = owningEntityId; + } + + public String getOwningEntityName() { + return owningEntityName; + } + + public void setOwningEntityName(String owningEntityName) { + this.owningEntityName = owningEntityName; + } + } diff --git a/bpmn/MSOCoreBPMN/src/main/java/org/onap/so/bpmn/core/domain/Project.java b/bpmn/MSOCoreBPMN/src/main/java/org/onap/so/bpmn/core/domain/Project.java index 337626ec61..e05035a92d 100644 --- a/bpmn/MSOCoreBPMN/src/main/java/org/onap/so/bpmn/core/domain/Project.java +++ b/bpmn/MSOCoreBPMN/src/main/java/org/onap/so/bpmn/core/domain/Project.java @@ -21,12 +21,10 @@ package org.onap.so.bpmn.core.domain; import java.io.Serializable; - import com.fasterxml.jackson.annotation.JsonRootName; /** - * This class is used to store instance - * data of projects for ServiceDecomposition + * This class is used to store instance data of projects for ServiceDecomposition * * @author bb3476 * @@ -34,14 +32,15 @@ import com.fasterxml.jackson.annotation.JsonRootName; @JsonRootName("project") public class Project extends JsonWrapper implements Serializable { - private static final long serialVersionUID = 1L; - private String projectName; + private static final long serialVersionUID = 1L; + private String projectName; + + public String getProjectName() { + return projectName; + } + + public void setProjectName(String projectName) { + this.projectName = projectName; + } - public String getProjectName() { - return projectName; - } - public void setProjectName(String projectName) { - this.projectName = projectName; - } - } diff --git a/bpmn/MSOCoreBPMN/src/main/java/org/onap/so/bpmn/core/domain/Request.java b/bpmn/MSOCoreBPMN/src/main/java/org/onap/so/bpmn/core/domain/Request.java index dac7336013..6c33d37cfe 100644 --- a/bpmn/MSOCoreBPMN/src/main/java/org/onap/so/bpmn/core/domain/Request.java +++ b/bpmn/MSOCoreBPMN/src/main/java/org/onap/so/bpmn/core/domain/Request.java @@ -21,12 +21,10 @@ package org.onap.so.bpmn.core.domain; import java.io.Serializable; - import com.fasterxml.jackson.annotation.JsonRootName; /** - * This class is used to store instance - * data of services aka ServiceDecomposition + * This class is used to store instance data of services aka ServiceDecomposition * * @author bb3476 * @@ -34,63 +32,78 @@ import com.fasterxml.jackson.annotation.JsonRootName; public class Request extends JsonWrapper implements Serializable { - private static final long serialVersionUID = 1L; - private String sdncRequestId; - private String requestId; - private ModelInfo modelInfo; - private String productFamilyId; - private String callbackUrl; - private String serviceId; - private String tenantId; - private String cloudRegion; - - public String getSdncRequestId() { - return sdncRequestId; - } - public void setSdncRequestId(String sdncRequestId) { - this.sdncRequestId = sdncRequestId; - } - public String getRequestId() { - return requestId; - } - public void setRequestId(String requestId) { - this.requestId = requestId; - } - public ModelInfo getModelInfo() { - return modelInfo; - } - public void setModelInfo(ModelInfo modelInfo) { - this.modelInfo = modelInfo; - } - public String getProductFamilyId() { - return productFamilyId; - } - public void setProductFamilyId(String productFamilyId) { - this.productFamilyId = productFamilyId; - } - public String getCallbackUrl() { - return callbackUrl; - } - public void setCallbackUrl(String callbackUrl) { - this.callbackUrl = callbackUrl; - } - public String getServiceId() { - return serviceId; - } - public void setServiceId(String serviceId) { - this.serviceId = serviceId; - } - public String getCloudRegion() { - return cloudRegion; - } - public void setCloudRegion(String cloudRegion) { - this.cloudRegion = cloudRegion; - } - public String getTenantId() { - return tenantId; - } - public void setTenantId(String tenantId) { - this.tenantId = tenantId; - } - + private static final long serialVersionUID = 1L; + private String sdncRequestId; + private String requestId; + private ModelInfo modelInfo; + private String productFamilyId; + private String callbackUrl; + private String serviceId; + private String tenantId; + private String cloudRegion; + + public String getSdncRequestId() { + return sdncRequestId; + } + + public void setSdncRequestId(String sdncRequestId) { + this.sdncRequestId = sdncRequestId; + } + + public String getRequestId() { + return requestId; + } + + public void setRequestId(String requestId) { + this.requestId = requestId; + } + + public ModelInfo getModelInfo() { + return modelInfo; + } + + public void setModelInfo(ModelInfo modelInfo) { + this.modelInfo = modelInfo; + } + + public String getProductFamilyId() { + return productFamilyId; + } + + public void setProductFamilyId(String productFamilyId) { + this.productFamilyId = productFamilyId; + } + + public String getCallbackUrl() { + return callbackUrl; + } + + public void setCallbackUrl(String callbackUrl) { + this.callbackUrl = callbackUrl; + } + + public String getServiceId() { + return serviceId; + } + + public void setServiceId(String serviceId) { + this.serviceId = serviceId; + } + + public String getCloudRegion() { + return cloudRegion; + } + + public void setCloudRegion(String cloudRegion) { + this.cloudRegion = cloudRegion; + } + + public String getTenantId() { + return tenantId; + } + + public void setTenantId(String tenantId) { + this.tenantId = tenantId; + } + } diff --git a/bpmn/MSOCoreBPMN/src/main/java/org/onap/so/bpmn/core/domain/Resource.java b/bpmn/MSOCoreBPMN/src/main/java/org/onap/so/bpmn/core/domain/Resource.java index 00fdbec305..62a2e9370e 100644 --- a/bpmn/MSOCoreBPMN/src/main/java/org/onap/so/bpmn/core/domain/Resource.java +++ b/bpmn/MSOCoreBPMN/src/main/java/org/onap/so/bpmn/core/domain/Resource.java @@ -21,114 +21,126 @@ package org.onap.so.bpmn.core.domain; import java.io.Serializable; - import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonInclude; -public abstract class Resource extends JsonWrapper implements Serializable { - - private static final long serialVersionUID = 1L; - private String resourceId; // TODO name this field just id instead, should be the id of the object as it is in aai - protected ResourceType resourceType; // Enum of vnf or network or allotted resource - protected ModelInfo modelInfo; - private long concurrencyCounter = 1L; - - //private List modules; - private ResourceInstance resourceInstance = new ResourceInstance(); // TODO possibly remove - private HomingSolution homingSolution = new HomingSolution(); - @JsonInclude(JsonInclude.Include.NON_NULL) - private HomingSolution currentHomingSolution; - - //common parameters for all Resources - private String toscaNodeType; - - // GET and SET - public String getResourceId() { - return resourceId; - } - public void setResourceId(String resourceId) { - this.resourceId = resourceId; - } - public ModelInfo getModelInfo() { - return modelInfo; - } - public void setModelInfo(ModelInfo modelInfo) { - this.modelInfo = modelInfo; - } - - public ResourceInstance getResourceInstance() { - return resourceInstance; - } - public void setResourceInstance(ResourceInstance resourceInstance) { - this.resourceInstance = resourceInstance; - } - public HomingSolution getHomingSolution(){ - return homingSolution; - } - - public void setHomingSolution(HomingSolution homingSolution){ - this.homingSolution = homingSolution; - } - public HomingSolution getCurrentHomingSolution() { - return currentHomingSolution; - } - public void setCurrentHomingSolution(HomingSolution currentHomingSolution) { - this.currentHomingSolution = currentHomingSolution; - } - public void setResourceType(ResourceType resourceType) { - this.resourceType = resourceType; - } - - public ResourceType getResourceType(){ - return resourceType; - } - - public String getToscaNodeType() { - return toscaNodeType; - } - public void setToscaNodeType(String toscaNodeType) { - this.toscaNodeType = toscaNodeType; - } - - //Utility methods - - public String getResourceInstanceId() { - return this.getResourceInstance().getInstanceId(); - } - public String getResourceInstanceName() { - return this.getResourceInstance().getInstanceName(); - } - //TODO -// @JsonIgnore -// public String getResourceHomingSolution() { -// } - - public void setResourceInstanceId(String newInstanceId){ - this.getResourceInstance().setInstanceId(newInstanceId); - } - public void setResourceInstanceName(String newInstanceName){ - this.getResourceInstance().setInstanceName(newInstanceName); - } - - //TODO -// @JsonIgnore -// public String setResourceHomingSolution() { -// } - /** - * To be used by macro flow to increment concurrency counter after update to it's structure was completed - */ - public void incrementConcurrencyCounter(){ - this.concurrencyCounter ++; - } - /** - * Method to get concurrency counter data - * @return long value for the counter - */ - @JsonIgnore - public long getConcurrencyCounter(){ - return concurrencyCounter; - } - -}
\ No newline at end of file +public abstract class Resource extends JsonWrapper implements Serializable { + + private static final long serialVersionUID = 1L; + private String resourceId; // TODO name this field just id instead, should be the id of the object as it is in aai + protected ResourceType resourceType; // Enum of vnf or network or allotted resource + protected ModelInfo modelInfo; + private long concurrencyCounter = 1L; + + // private List modules; + private ResourceInstance resourceInstance = new ResourceInstance(); // TODO possibly remove + private HomingSolution homingSolution = new HomingSolution(); + @JsonInclude(JsonInclude.Include.NON_NULL) + private HomingSolution currentHomingSolution; + + // common parameters for all Resources + private String toscaNodeType; + + // GET and SET + public String getResourceId() { + return resourceId; + } + + public void setResourceId(String resourceId) { + this.resourceId = resourceId; + } + + public ModelInfo getModelInfo() { + return modelInfo; + } + + public void setModelInfo(ModelInfo modelInfo) { + this.modelInfo = modelInfo; + } + + public ResourceInstance getResourceInstance() { + return resourceInstance; + } + + public void setResourceInstance(ResourceInstance resourceInstance) { + this.resourceInstance = resourceInstance; + } + + public HomingSolution getHomingSolution() { + return homingSolution; + } + + public void setHomingSolution(HomingSolution homingSolution) { + this.homingSolution = homingSolution; + } + + public HomingSolution getCurrentHomingSolution() { + return currentHomingSolution; + } + + public void setCurrentHomingSolution(HomingSolution currentHomingSolution) { + this.currentHomingSolution = currentHomingSolution; + } + + public void setResourceType(ResourceType resourceType) { + this.resourceType = resourceType; + } + + public ResourceType getResourceType() { + return resourceType; + } + + public String getToscaNodeType() { + return toscaNodeType; + } + + public void setToscaNodeType(String toscaNodeType) { + this.toscaNodeType = toscaNodeType; + } + + // Utility methods + + public String getResourceInstanceId() { + return this.getResourceInstance().getInstanceId(); + } + + public String getResourceInstanceName() { + return this.getResourceInstance().getInstanceName(); + } + // TODO + // @JsonIgnore + // public String getResourceHomingSolution() { + // } + + public void setResourceInstanceId(String newInstanceId) { + this.getResourceInstance().setInstanceId(newInstanceId); + } + + public void setResourceInstanceName(String newInstanceName) { + this.getResourceInstance().setInstanceName(newInstanceName); + } + + // TODO + // @JsonIgnore + // public String setResourceHomingSolution() { + // } + /** + * To be used by macro flow to increment concurrency counter after update to it's structure was completed + */ + public void incrementConcurrencyCounter() { + this.concurrencyCounter++; + } + + /** + * Method to get concurrency counter data + * + * @return long value for the counter + */ + @JsonIgnore + public long getConcurrencyCounter() { + return concurrencyCounter; + } + +} diff --git a/bpmn/MSOCoreBPMN/src/main/java/org/onap/so/bpmn/core/domain/ResourceDecomposition.java b/bpmn/MSOCoreBPMN/src/main/java/org/onap/so/bpmn/core/domain/ResourceDecomposition.java index 7cbd565c77..b291765252 100644 --- a/bpmn/MSOCoreBPMN/src/main/java/org/onap/so/bpmn/core/domain/ResourceDecomposition.java +++ b/bpmn/MSOCoreBPMN/src/main/java/org/onap/so/bpmn/core/domain/ResourceDecomposition.java @@ -21,66 +21,71 @@ package org.onap.so.bpmn.core.domain; import java.io.Serializable; - import com.fasterxml.jackson.annotation.JsonIgnore; /** * Abstract superclass for all individual decomposition resources * */ -//@JsonIgnoreProperties -public abstract class ResourceDecomposition extends JsonWrapper implements Serializable { - - private static final long serialVersionUID = 1L; - - protected String resourceType; // Enum of vnf or network or allotted resource - private ModelInfo modelInfo; - - //private List modules; - private ResourceInstance instanceData = new ResourceInstance(); - - // GET and SET - public ModelInfo getModelInfo() { - return modelInfo; - } - public void setModelInfo(ModelInfo modelInfo) { - this.modelInfo = modelInfo; - } - - public ResourceInstance getInstanceData() { - return instanceData; - } - public void setInstanceData(ResourceInstance instanceData) { - this.instanceData = instanceData; - } - public void setResourceType(String resourceType) { - this.resourceType = resourceType; - } - - //Utility methods - @JsonIgnore - public ModelInfo getResourceModel() { - return modelInfo; - } - @JsonIgnore - public String getResourceInstanceId() { - return this.getInstanceData().getInstanceId(); - } - @JsonIgnore - public String getResourceInstanceName() { - return this.getInstanceData().getInstanceName(); - } -// @JsonIgnore -// public String getResourceHomingSolution() { -// } - - public void setResourceInstanceId(String newInstanceId){ - this.getInstanceData().setInstanceId(newInstanceId); - } - public void setResourceInstanceName(String newInstanceName){ - this.getInstanceData().setInstanceName(newInstanceName); - } -// @JsonIgnore -// public String setResourceHomingSolution() { -// } +// @JsonIgnoreProperties +public abstract class ResourceDecomposition extends JsonWrapper implements Serializable { + + private static final long serialVersionUID = 1L; + + protected String resourceType; // Enum of vnf or network or allotted resource + private ModelInfo modelInfo; + + // private List modules; + private ResourceInstance instanceData = new ResourceInstance(); + + // GET and SET + public ModelInfo getModelInfo() { + return modelInfo; + } + + public void setModelInfo(ModelInfo modelInfo) { + this.modelInfo = modelInfo; + } + + public ResourceInstance getInstanceData() { + return instanceData; + } + + public void setInstanceData(ResourceInstance instanceData) { + this.instanceData = instanceData; + } + + public void setResourceType(String resourceType) { + this.resourceType = resourceType; + } + + // Utility methods + @JsonIgnore + public ModelInfo getResourceModel() { + return modelInfo; + } + + @JsonIgnore + public String getResourceInstanceId() { + return this.getInstanceData().getInstanceId(); + } + + @JsonIgnore + public String getResourceInstanceName() { + return this.getInstanceData().getInstanceName(); + } + // @JsonIgnore + // public String getResourceHomingSolution() { + // } + + public void setResourceInstanceId(String newInstanceId) { + this.getInstanceData().setInstanceId(newInstanceId); + } + + public void setResourceInstanceName(String newInstanceName) { + this.getInstanceData().setInstanceName(newInstanceName); + } + // @JsonIgnore + // public String setResourceHomingSolution() { + // } } diff --git a/bpmn/MSOCoreBPMN/src/main/java/org/onap/so/bpmn/core/domain/ResourceInstance.java b/bpmn/MSOCoreBPMN/src/main/java/org/onap/so/bpmn/core/domain/ResourceInstance.java index 085e278e11..2c29ff882d 100644 --- a/bpmn/MSOCoreBPMN/src/main/java/org/onap/so/bpmn/core/domain/ResourceInstance.java +++ b/bpmn/MSOCoreBPMN/src/main/java/org/onap/so/bpmn/core/domain/ResourceInstance.java @@ -21,7 +21,6 @@ package org.onap.so.bpmn.core.domain; import java.io.Serializable; - import com.fasterxml.jackson.annotation.JsonIgnoreProperties; /** @@ -30,36 +29,37 @@ import com.fasterxml.jackson.annotation.JsonIgnoreProperties; * @author cb645j * */ -//@JsonIgnoreProperties -//TODO update any existing references then remove this pointless class +// @JsonIgnoreProperties +// TODO update any existing references then remove this pointless class @Deprecated -public class ResourceInstance extends JsonWrapper implements Serializable { +public class ResourceInstance extends JsonWrapper implements Serializable { + + private static final long serialVersionUID = 1L; + + private String instanceId; + private String instanceName; - private static final long serialVersionUID = 1L; - private String instanceId; - private String instanceName; + public String getInstanceId() { + return instanceId; + } + /** + * This class and method is deprecated so use resourceId field in resource class instead + * + * @author cb645j + * + */ + public void setInstanceId(String instanceId) { + this.instanceId = instanceId; + } - public String getInstanceId() { - return instanceId; - } + public String getInstanceName() { + return instanceName; + } - /** - * This class and method is deprecated so use - * resourceId field in resource class instead - * - * @author cb645j - * - */ - public void setInstanceId(String instanceId) { - this.instanceId = instanceId; - } - public String getInstanceName() { - return instanceName; - } - public void setInstanceName(String instanceName) { - this.instanceName = instanceName; - } + public void setInstanceName(String instanceName) { + this.instanceName = instanceName; + } -}
\ No newline at end of file +} diff --git a/bpmn/MSOCoreBPMN/src/main/java/org/onap/so/bpmn/core/domain/ResourceModelInfo.java b/bpmn/MSOCoreBPMN/src/main/java/org/onap/so/bpmn/core/domain/ResourceModelInfo.java index af36fa01df..95ecd7ee85 100644 --- a/bpmn/MSOCoreBPMN/src/main/java/org/onap/so/bpmn/core/domain/ResourceModelInfo.java +++ b/bpmn/MSOCoreBPMN/src/main/java/org/onap/so/bpmn/core/domain/ResourceModelInfo.java @@ -22,37 +22,44 @@ package org.onap.so.bpmn.core.domain; import java.io.Serializable; -public class ResourceModelInfo extends JsonWrapper implements Serializable{ - - private static final long serialVersionUID = 1L; - String resourceName; - String resourceInvariantUuid; - String resourceUuid; - String resourceCustomizationUuid; - - public String getResourceName() { - return resourceName; - } - public void setResourceName(String resourceName) { - this.resourceName = resourceName; - } - public String getResourceInvariantUuid() { - return resourceInvariantUuid; - } - public void setResourceInvariantUuid(String resourceInvariantUuid) { - this.resourceInvariantUuid = resourceInvariantUuid; - } - public String getResourceUuid() { - return resourceUuid; - } - public void setResourceUuid(String resourceUuid) { - this.resourceUuid = resourceUuid; - } - public String getResourceCustomizationUuid() { - return resourceCustomizationUuid; - } - public void setResourceCustomizationUuid(String resourceCustomizationUuid) { - this.resourceCustomizationUuid = resourceCustomizationUuid; - } +public class ResourceModelInfo extends JsonWrapper implements Serializable { + + private static final long serialVersionUID = 1L; + String resourceName; + String resourceInvariantUuid; + String resourceUuid; + String resourceCustomizationUuid; + + public String getResourceName() { + return resourceName; + } + + public void setResourceName(String resourceName) { + this.resourceName = resourceName; + } + + public String getResourceInvariantUuid() { + return resourceInvariantUuid; + } + + public void setResourceInvariantUuid(String resourceInvariantUuid) { + this.resourceInvariantUuid = resourceInvariantUuid; + } + + public String getResourceUuid() { + return resourceUuid; + } + + public void setResourceUuid(String resourceUuid) { + this.resourceUuid = resourceUuid; + } + + public String getResourceCustomizationUuid() { + return resourceCustomizationUuid; + } + + public void setResourceCustomizationUuid(String resourceCustomizationUuid) { + this.resourceCustomizationUuid = resourceCustomizationUuid; + } } diff --git a/bpmn/MSOCoreBPMN/src/main/java/org/onap/so/bpmn/core/domain/ResourceType.java b/bpmn/MSOCoreBPMN/src/main/java/org/onap/so/bpmn/core/domain/ResourceType.java index 6147822d31..a30d0df825 100644 --- a/bpmn/MSOCoreBPMN/src/main/java/org/onap/so/bpmn/core/domain/ResourceType.java +++ b/bpmn/MSOCoreBPMN/src/main/java/org/onap/so/bpmn/core/domain/ResourceType.java @@ -22,5 +22,5 @@ package org.onap.so.bpmn.core.domain; public enum ResourceType { - VNF, NETWORK, MODULE, ALLOTTED_RESOURCE, CONFIGURATION // etc. -}
\ No newline at end of file + VNF, NETWORK, MODULE, ALLOTTED_RESOURCE, CONFIGURATION // etc. +} diff --git a/bpmn/MSOCoreBPMN/src/main/java/org/onap/so/bpmn/core/domain/RollbackData.java b/bpmn/MSOCoreBPMN/src/main/java/org/onap/so/bpmn/core/domain/RollbackData.java index 5be0fb4f59..633736a25a 100644 --- a/bpmn/MSOCoreBPMN/src/main/java/org/onap/so/bpmn/core/domain/RollbackData.java +++ b/bpmn/MSOCoreBPMN/src/main/java/org/onap/so/bpmn/core/domain/RollbackData.java @@ -24,24 +24,24 @@ import java.io.Serializable; import java.util.HashMap; import java.util.Map; -public class RollbackData implements Serializable{ +public class RollbackData implements Serializable { - private static final long serialVersionUID = -4811571658272937718L; + private static final long serialVersionUID = -4811571658272937718L; - private String requestId; - private Map<String, String> additionalData = new HashMap<String, String>(); + private String requestId; + private Map<String, String> additionalData = new HashMap<String, String>(); - public String getRequestId(){ - return requestId; - } + public String getRequestId() { + return requestId; + } - public void setRequestId(String requestId){ - this.requestId = requestId; - } + public void setRequestId(String requestId) { + this.requestId = requestId; + } - public Map<String, String> getAdditionalData(){ - return additionalData; - } + public Map<String, String> getAdditionalData() { + return additionalData; + } } diff --git a/bpmn/MSOCoreBPMN/src/main/java/org/onap/so/bpmn/core/domain/ServiceDecomposition.java b/bpmn/MSOCoreBPMN/src/main/java/org/onap/so/bpmn/core/domain/ServiceDecomposition.java index 5e7a4796c4..0e03989e64 100644 --- a/bpmn/MSOCoreBPMN/src/main/java/org/onap/so/bpmn/core/domain/ServiceDecomposition.java +++ b/bpmn/MSOCoreBPMN/src/main/java/org/onap/so/bpmn/core/domain/ServiceDecomposition.java @@ -26,7 +26,6 @@ import java.util.ArrayList; import java.util.Collections; import java.util.Iterator; import java.util.List; - import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonRootName; @@ -36,509 +35,556 @@ import org.onap.so.bpmn.core.json.JsonDecomposingException; - /** - * Service Decomposition Structure - * This Java object contains service information: - * - Service model info - * - Service type and role - * - list of VNF resource's decompositon - * - list of network resource's decompositon - * - list of allotted resource's decompositon + * Service Decomposition Structure This Java object contains service information: - Service model info - Service type + * and role - list of VNF resource's decompositon - list of network resource's decompositon - list of allotted + * resource's decompositon */ @JsonRootName(value = "serviceResources") -//@JsonTypeInfo(include=As.WRAPPER_OBJECT, use=Id.NAME) +// @JsonTypeInfo(include=As.WRAPPER_OBJECT, use=Id.NAME) public class ServiceDecomposition extends JsonWrapper implements Serializable { - private static final long serialVersionUID = 1L; - - @JsonProperty("modelInfo") - private ModelInfo modelInfo; - @JsonProperty("serviceType") - private String serviceType; - @JsonProperty("serviceRole") - private String serviceRole; - private ServiceInstance serviceInstance; - private Request request; - private Customer customer; - private String callbackURN; - private String sdncVersion; - @JsonProperty("project") - private Project project; - @JsonProperty("owningEntity") - private OwningEntity owningEntity; - @JsonProperty("serviceVnfs") - private List <VnfResource> vnfResources; - @JsonProperty("serviceNetworks") - private List <NetworkResource> networkResources; - @JsonProperty("serviceAllottedResources") - private List <AllottedResource> allottedResources; - @JsonProperty("configResource") - private List <ConfigResource> configResources; - - public ServiceDecomposition () { - super(); - } - - public ServiceDecomposition (String catalogRestOutput) throws JsonDecomposingException { - ServiceDecomposition serviceDecomposition = DecomposeJsonUtil.jsonToServiceDecomposition(catalogRestOutput); - this.modelInfo = serviceDecomposition.getModelInfo(); - this.vnfResources = serviceDecomposition.getVnfResources(); - this.allottedResources = serviceDecomposition.getAllottedResources(); - this.networkResources = serviceDecomposition.getNetworkResources(); - this.serviceRole = serviceDecomposition.getServiceRole(); - this.serviceType = serviceDecomposition.getServiceType(); - this.configResources = serviceDecomposition.getConfigResources(); - } - - /** - * Constructor taking Catalog DB Adapter REST output (serviceResources model) + service Instance ID - * - * @param catalogRestOutput - * @param serviceInstanceId - */ - public ServiceDecomposition (String catalogRestOutput, String serviceInstanceId) throws JsonDecomposingException { - ServiceDecomposition serviceDecomposition = DecomposeJsonUtil.jsonToServiceDecomposition(catalogRestOutput); - this.modelInfo = serviceDecomposition.getModelInfo(); - this.vnfResources = serviceDecomposition.getVnfResources(); - this.allottedResources = serviceDecomposition.getAllottedResources(); - this.configResources = serviceDecomposition.getConfigResources(); - this.networkResources = serviceDecomposition.getNetworkResources(); - - this.serviceRole = serviceDecomposition.getServiceRole(); - this.serviceType = serviceDecomposition.getServiceType(); - - this.serviceInstance = new ServiceInstance(); - this.serviceInstance.setInstanceId(serviceInstanceId); - - this.project = serviceDecomposition.getProject(); - this.owningEntity = serviceDecomposition.getOwningEntity(); - } - - /** - * Constructor taking a Service Decomposition JSON serialization - * @param catalogRestOutput - * @param serviceInstanceId - */ - public ServiceDecomposition (JSONObject jsonServiceDecomposition, String serviceInstanceId) { - //TODO provide constructor implementation - - } - - //***** - //GET and SET section - /** - * Return just the service model portion of the Service Decomposition as a Java object. - * The service model object should support retrieval as JSON string that is formatted correctly for sending serviceModelInfo to Building Blocks. - * @return - */ - public ModelInfo getModelInfo() { - return modelInfo; - } - public void setModelInfo(ModelInfo modelInfo) { - this.modelInfo = modelInfo; - } - public ServiceInstance getServiceInstance() { - return serviceInstance; - } - public void setServiceInstance(ServiceInstance serviceInstance) { - this.serviceInstance = serviceInstance; - } - public Project getProject() { - return project; - } - public OwningEntity getOwningEntity() { - return owningEntity; - } - public void setProject(Project project) { - this.project = project; - } - public void setOwningEntity(OwningEntity owningEntity) { - this.owningEntity = owningEntity; - } - public List<VnfResource> getVnfResources() { - return vnfResources; - } - public void setVnfResources(List<VnfResource> vnfResources) { - this.vnfResources = vnfResources; - } - public void setConfigResources(List<ConfigResource> configResources) { - this.configResources = configResources; - } - public List<ConfigResource> getConfigResources() { - return configResources; - } - public void setNetworkResources(List<NetworkResource> networkResources) { - this.networkResources = networkResources; - } - public List<NetworkResource> getNetworkResources() { - return networkResources; - } - public List<AllottedResource> getAllottedResources() { - return allottedResources; - } - public void setAllottedResources(List<AllottedResource> allottedResources) { - this.allottedResources = allottedResources; - } - public String getServiceType() { - return serviceType; - } - - public void setServiceType(String serviceType) { - this.serviceType = serviceType; - } - - public String getServiceRole() { - return serviceRole; - } - - public void setServiceRole(String serviceRole) { - this.serviceRole = serviceRole; - } - public Request getRequest() { - return request; - } - - public void setRequest(Request request) { - this.request = request; - } - public Customer getCustomer() { - return customer; - } - public void setCustomer(Customer customer) { - this.customer = customer; - } - public String getCallbackURN() { - return callbackURN; - } - - public void setCallbackURN(String callbackURN) { - this.callbackURN = callbackURN; - } - public String getSdncVersion() { - return sdncVersion; - } - - public void setSdncVersion(String sdncVersion) { - this.sdncVersion = sdncVersion; - } - - //***** - - //***** - //Access methods - - - /** - * This method returns one combined list of Resources of All Types - * @return - */ - @JsonIgnore - public List<Resource> getServiceResources(){ - ArrayList serviceResources = new ArrayList(); - if(this.getAllottedResources() != null){ - serviceResources.addAll(this.getAllottedResources()); - } - if(this.getNetworkResources() != null){ - serviceResources.addAll(this.getNetworkResources()); - } - if(this.getVnfResources() != null){ - serviceResources.addAll(this.getVnfResources()); - } - if(this.getConfigResources() != null){ - serviceResources.addAll(this.getConfigResources()); - } - return serviceResources; - } - - /** - * This method returns String representation of one combined list of Resources of All Types - */ - @JsonIgnore - public String getServiceResourcesJsonString() { - return getServiceNetworksJson() + - getServiceVnfsJson() + - getServiceAllottedResourcesJson() + - getServiceConfigResourcesJson(); - } - - /** - * Returns a JSON list of all Network Resource structures (i.e. the serialized NetworkDecomposition objects). - * @return - */ - @JsonIgnore - public String getServiceNetworksJson(){ - return listToJson(this.getNetworkResources()); - } - /** - * Returns a JSON list of all VnfResource structures (i.e. the serialized VnfResource objects). - * @return - */ - @JsonIgnore - public String getServiceVnfsJson(){ - return listToJson(this.getVnfResources()); - } - /** - * Returns a JSON list of all Allotted Resource structures (i.e. the serialized AllottedResource objects). - * @return - */ - @JsonIgnore - public String getServiceAllottedResourcesJson(){ - return listToJson(this.getAllottedResources()); - } - /** - * Returns a JSON list of all Config Resource structures (i.e. the serialized ConfigResource objects). - * @return - */ - @JsonIgnore - public String getServiceConfigResourcesJson(){ - return listToJson(this.getConfigResources()); - } - - //TODO - define Resource Object ID - @JsonIgnore - public String getVnfResource(String resourceObjectId) { + private static final long serialVersionUID = 1L; + + @JsonProperty("modelInfo") + private ModelInfo modelInfo; + @JsonProperty("serviceType") + private String serviceType; + @JsonProperty("serviceRole") + private String serviceRole; + private ServiceInstance serviceInstance; + private Request request; + private Customer customer; + private String callbackURN; + private String sdncVersion; + @JsonProperty("project") + private Project project; + @JsonProperty("owningEntity") + private OwningEntity owningEntity; + @JsonProperty("serviceVnfs") + private List<VnfResource> vnfResources; + @JsonProperty("serviceNetworks") + private List<NetworkResource> networkResources; + @JsonProperty("serviceAllottedResources") + private List<AllottedResource> allottedResources; + @JsonProperty("configResource") + private List<ConfigResource> configResources; + + public ServiceDecomposition() { + super(); + } + + public ServiceDecomposition(String catalogRestOutput) throws JsonDecomposingException { + ServiceDecomposition serviceDecomposition = DecomposeJsonUtil.jsonToServiceDecomposition(catalogRestOutput); + this.modelInfo = serviceDecomposition.getModelInfo(); + this.vnfResources = serviceDecomposition.getVnfResources(); + this.allottedResources = serviceDecomposition.getAllottedResources(); + this.networkResources = serviceDecomposition.getNetworkResources(); + this.serviceRole = serviceDecomposition.getServiceRole(); + this.serviceType = serviceDecomposition.getServiceType(); + this.configResources = serviceDecomposition.getConfigResources(); + } + + /** + * Constructor taking Catalog DB Adapter REST output (serviceResources model) + service Instance ID + * + * @param catalogRestOutput + * @param serviceInstanceId + */ + public ServiceDecomposition(String catalogRestOutput, String serviceInstanceId) throws JsonDecomposingException { + ServiceDecomposition serviceDecomposition = DecomposeJsonUtil.jsonToServiceDecomposition(catalogRestOutput); + this.modelInfo = serviceDecomposition.getModelInfo(); + this.vnfResources = serviceDecomposition.getVnfResources(); + this.allottedResources = serviceDecomposition.getAllottedResources(); + this.configResources = serviceDecomposition.getConfigResources(); + this.networkResources = serviceDecomposition.getNetworkResources(); + + this.serviceRole = serviceDecomposition.getServiceRole(); + this.serviceType = serviceDecomposition.getServiceType(); + + this.serviceInstance = new ServiceInstance(); + this.serviceInstance.setInstanceId(serviceInstanceId); + + this.project = serviceDecomposition.getProject(); + this.owningEntity = serviceDecomposition.getOwningEntity(); + } + + /** + * Constructor taking a Service Decomposition JSON serialization + * + * @param catalogRestOutput + * @param serviceInstanceId + */ + public ServiceDecomposition(JSONObject jsonServiceDecomposition, String serviceInstanceId) { + // TODO provide constructor implementation + + } + + // ***** + // GET and SET section + /** + * Return just the service model portion of the Service Decomposition as a Java object. The service model object + * should support retrieval as JSON string that is formatted correctly for sending serviceModelInfo to Building + * Blocks. + * + * @return + */ + public ModelInfo getModelInfo() { + return modelInfo; + } + + public void setModelInfo(ModelInfo modelInfo) { + this.modelInfo = modelInfo; + } + + public ServiceInstance getServiceInstance() { + return serviceInstance; + } + + public void setServiceInstance(ServiceInstance serviceInstance) { + this.serviceInstance = serviceInstance; + } + + public Project getProject() { + return project; + } + + public OwningEntity getOwningEntity() { + return owningEntity; + } + + public void setProject(Project project) { + this.project = project; + } + + public void setOwningEntity(OwningEntity owningEntity) { + this.owningEntity = owningEntity; + } + + public List<VnfResource> getVnfResources() { + return vnfResources; + } + + public void setVnfResources(List<VnfResource> vnfResources) { + this.vnfResources = vnfResources; + } + + public void setConfigResources(List<ConfigResource> configResources) { + this.configResources = configResources; + } + + public List<ConfigResource> getConfigResources() { + return configResources; + } + + public void setNetworkResources(List<NetworkResource> networkResources) { + this.networkResources = networkResources; + } + + public List<NetworkResource> getNetworkResources() { + return networkResources; + } + + public List<AllottedResource> getAllottedResources() { + return allottedResources; + } + + public void setAllottedResources(List<AllottedResource> allottedResources) { + this.allottedResources = allottedResources; + } + + public String getServiceType() { + return serviceType; + } + + public void setServiceType(String serviceType) { + this.serviceType = serviceType; + } + + public String getServiceRole() { + return serviceRole; + } + + public void setServiceRole(String serviceRole) { + this.serviceRole = serviceRole; + } + + public Request getRequest() { + return request; + } + + public void setRequest(Request request) { + this.request = request; + } + + public Customer getCustomer() { + return customer; + } + + public void setCustomer(Customer customer) { + this.customer = customer; + } + + public String getCallbackURN() { + return callbackURN; + } + + public void setCallbackURN(String callbackURN) { + this.callbackURN = callbackURN; + } + + public String getSdncVersion() { + return sdncVersion; + } + + public void setSdncVersion(String sdncVersion) { + this.sdncVersion = sdncVersion; + } + + // ***** + + // ***** + // Access methods + + + /** + * This method returns one combined list of Resources of All Types + * + * @return + */ + @JsonIgnore + public List<Resource> getServiceResources() { + ArrayList serviceResources = new ArrayList(); + if (this.getAllottedResources() != null) { + serviceResources.addAll(this.getAllottedResources()); + } + if (this.getNetworkResources() != null) { + serviceResources.addAll(this.getNetworkResources()); + } + if (this.getVnfResources() != null) { + serviceResources.addAll(this.getVnfResources()); + } + if (this.getConfigResources() != null) { + serviceResources.addAll(this.getConfigResources()); + } + return serviceResources; + } + + /** + * This method returns String representation of one combined list of Resources of All Types + */ + @JsonIgnore + public String getServiceResourcesJsonString() { + return getServiceNetworksJson() + getServiceVnfsJson() + getServiceAllottedResourcesJson() + + getServiceConfigResourcesJson(); + } + + /** + * Returns a JSON list of all Network Resource structures (i.e. the serialized NetworkDecomposition objects). + * + * @return + */ + @JsonIgnore + public String getServiceNetworksJson() { + return listToJson(this.getNetworkResources()); + } + + /** + * Returns a JSON list of all VnfResource structures (i.e. the serialized VnfResource objects). + * + * @return + */ + @JsonIgnore + public String getServiceVnfsJson() { + return listToJson(this.getVnfResources()); + } + + /** + * Returns a JSON list of all Allotted Resource structures (i.e. the serialized AllottedResource objects). + * + * @return + */ + @JsonIgnore + public String getServiceAllottedResourcesJson() { + return listToJson(this.getAllottedResources()); + } + + /** + * Returns a JSON list of all Config Resource structures (i.e. the serialized ConfigResource objects). + * + * @return + */ + @JsonIgnore + public String getServiceConfigResourcesJson() { + return listToJson(this.getConfigResources()); + } + + // TODO - define Resource Object ID + @JsonIgnore + public String getVnfResource(String resourceObjectId) { for (Resource resource : getServiceResources()) { - //resource.getModelInfo().getModelInvariantId(); + // resource.getModelInfo().getModelInvariantId(); if ("extracted information".equals(resourceObjectId)) { return resource.toJsonString(); } } - return ""; - } - - //Methods to add Resource to the list - /** - * Add VNF resource to the list - * @param vnfResource - */ - public void addVnfResource(Resource vnfResource) { - if (vnfResources == null){ - vnfResources = new ArrayList<>(); - } - this.vnfResources.add((VnfResource)vnfResource); - } - /** - * Add Network resource to the list - * @param networkResource - */ - public void addNetworkResource(Resource networkResource) { - if (networkResources == null){ - networkResources = new ArrayList<>(); - } - this.networkResources.add((NetworkResource)networkResource); - } - /** - * Add Allotted resource to the list - * @param allottedResource - */ - public void addAllottedResource(Resource allottedResource) { - if (allottedResources == null){ - allottedResources = new ArrayList<>(); - } - this.allottedResources.add((AllottedResource)allottedResource); - } - /** - * Add Config resource to the list - * @param allottedResource - */ - public void addConfigResource(Resource configResource) { - if (configResources == null){ - configResources = new ArrayList<>(); - } - this.configResources.add((ConfigResource)configResource); - } - /** - * Add resource to the list - * Given a ResourceDecomposition (subclass) object, add it to the Service Decomposition (in the appropriate category, e.g. as a VNF, Network, or Allotted Resource). - * As dependencies are not currently supported, add it to the end of any ordered lists. - * @param resource - */ - public void addResource(Resource resource) { - //create resource based upon type - switch (resource.resourceType) { - case VNF: - this.addVnfResource(resource); - break; - case NETWORK: - this.addNetworkResource(resource); - break; - case ALLOTTED_RESOURCE: - this.addAllottedResource(resource); - break; - case CONFIGURATION: - this.addConfigResource(resource); - break; - default: - throw new IllegalArgumentException("Invalid resource type: " + resource.resourceType); - } - } - - /** - * Add resource to the list - * @param jsonResource - */ - public void addVnfResource(String jsonResource) throws JsonDecomposingException { - VnfResource vnfResource = null; - vnfResource = DecomposeJsonUtil.jsonToVnfResource(jsonResource); - this.addVnfResource(vnfResource); - } - /** - * Add resource to the list - * @param jsonResource - */ - public void addNetworkResource(String jsonResource) throws JsonDecomposingException { - NetworkResource networkResource = null; - networkResource = DecomposeJsonUtil.jsonToNetworkResource(jsonResource); - this.addNetworkResource(networkResource); - } - /** - * Add resource to the list - * @param Resource - */ - public void addAllottedResource(String jsonResource) throws JsonDecomposingException { - AllottedResource allottedResource = null; - allottedResource = DecomposeJsonUtil.jsonToAllottedResource(jsonResource); - this.addAllottedResource(allottedResource); - } - /** - * Add resource to the list - * @param Resource - */ - public void addConfigResource(String jsonResource) throws JsonDecomposingException { - ConfigResource configResource = null; - configResource = DecomposeJsonUtil.jsonToConfigResource(jsonResource); - this.addConfigResource(configResource); - } - /** - * Given a ResourceDecomposition (subclass) object, locate it in the Service Decomposition by its unique ID, and replace the current version with the new one. - * This method should support concurrency control via an auto-incrementing field in the ResourceDecomposition class. - * @param newResource - * @return TRUE if replacement was a success - */ - public boolean replaceResource(Resource newResource){ - List resources = getResourceList(newResource); - - boolean result = false; - for (Resource resource : (Iterable<Resource>) resources) { - System.out.println("resource found"); - if (resource.resourceType == newResource.resourceType) { - System.out.println("resource type matches"); - if (resource.getResourceId().equalsIgnoreCase(newResource.getResourceId())) { - System.out.println("resource id matches"); - //returns TRUE if replacement is a success - result = Collections.replaceAll(resources, resource, newResource); - } - } - } - return result; - } - - /** - * Given a ResourceDecomposition as a JSON string, locate it in the Service Decomposition by its unique ID, - * and replace the current version with the new one. - * @param jsonString - * @return - */ - public boolean replaceResource(String jsonString){ - //TODO: define unique ID for the Resource! - return false; - } - - /** - * Given a resource object ID, locate it in the Service Decomposition by its unique ID, and delete it. - * @param resource - * @return TRUE if delete was a success - */ - public boolean deleteResource(Resource resource){ - List serviceResourceList = getResourceList(resource); - for (Resource item : (Iterable<Resource>) serviceResourceList) { - if (item.resourceType == resource.resourceType) { - if (item.getResourceId().equalsIgnoreCase(resource.getResourceId())) { - //returns TRUE if replacement is a success - return serviceResourceList.remove(resource); - } - } - } - - return false; - } - - /** - * Generic method to get List of Resource objects based on input resource's resourceType - * @param resource - * @return List matching the resourceType of resource - */ - public List getResourceList(Resource resource) { - List resourceList; - switch(resource.getResourceType()) { - case VNF: - resourceList = getVnfResources(); - break; - case NETWORK: - resourceList = getNetworkResources(); - break; - case ALLOTTED_RESOURCE: - resourceList = getAllottedResources(); - break; - case CONFIGURATION: - resourceList = getConfigResources(); - break; - default: - resourceList = new ArrayList<>(); - } - return resourceList; - } - - /** - * Generic method to set List of ResourceDecomposition objects - * @param resources - * @return - */ - public boolean setResourceList(List<Resource> resources){ - if(resources != null && !resources.isEmpty()) { - //create resource based upon type - switch (resources.get(0).resourceType) { - case VNF: - this.setVnfResources((List<VnfResource>)(List<?>)resources); - break; - case NETWORK: - this.setNetworkResources((List<NetworkResource>)(List<?>)resources); - break; - case ALLOTTED_RESOURCE: - this.setAllottedResources((List<AllottedResource>)(List<?>)resources); - break; - case CONFIGURATION: - this.setConfigResources((List<ConfigResource>)(List<?>)resources); - break; - default: - throw new IllegalArgumentException("Invalid resource type: " + resources.get(0).resourceType); - } - } - - return false; - } - - /** - * - * This method locates and returns a resource in a given - * Service Decomposition object by its unique resource id. - * Returns null if resource doesn't exist. - * - * @param resourceId - id of the resource - * @return resource - */ - @JsonIgnore - public Resource getServiceResource(String resourceId){ - List<Resource> resources = getServiceResources(); - for (Resource resource : resources) { - if (resource.getResourceId().equalsIgnoreCase(resourceId)) { - //match - return resource; - } - } - return null; - } + return ""; + } + + // Methods to add Resource to the list + /** + * Add VNF resource to the list + * + * @param vnfResource + */ + public void addVnfResource(Resource vnfResource) { + if (vnfResources == null) { + vnfResources = new ArrayList<>(); + } + this.vnfResources.add((VnfResource) vnfResource); + } + + /** + * Add Network resource to the list + * + * @param networkResource + */ + public void addNetworkResource(Resource networkResource) { + if (networkResources == null) { + networkResources = new ArrayList<>(); + } + this.networkResources.add((NetworkResource) networkResource); + } + + /** + * Add Allotted resource to the list + * + * @param allottedResource + */ + public void addAllottedResource(Resource allottedResource) { + if (allottedResources == null) { + allottedResources = new ArrayList<>(); + } + this.allottedResources.add((AllottedResource) allottedResource); + } + + /** + * Add Config resource to the list + * + * @param allottedResource + */ + public void addConfigResource(Resource configResource) { + if (configResources == null) { + configResources = new ArrayList<>(); + } + this.configResources.add((ConfigResource) configResource); + } + + /** + * Add resource to the list Given a ResourceDecomposition (subclass) object, add it to the Service Decomposition (in + * the appropriate category, e.g. as a VNF, Network, or Allotted Resource). As dependencies are not currently + * supported, add it to the end of any ordered lists. + * + * @param resource + */ + public void addResource(Resource resource) { + // create resource based upon type + switch (resource.resourceType) { + case VNF: + this.addVnfResource(resource); + break; + case NETWORK: + this.addNetworkResource(resource); + break; + case ALLOTTED_RESOURCE: + this.addAllottedResource(resource); + break; + case CONFIGURATION: + this.addConfigResource(resource); + break; + default: + throw new IllegalArgumentException("Invalid resource type: " + resource.resourceType); + } + } + + /** + * Add resource to the list + * + * @param jsonResource + */ + public void addVnfResource(String jsonResource) throws JsonDecomposingException { + VnfResource vnfResource = null; + vnfResource = DecomposeJsonUtil.jsonToVnfResource(jsonResource); + this.addVnfResource(vnfResource); + } + + /** + * Add resource to the list + * + * @param jsonResource + */ + public void addNetworkResource(String jsonResource) throws JsonDecomposingException { + NetworkResource networkResource = null; + networkResource = DecomposeJsonUtil.jsonToNetworkResource(jsonResource); + this.addNetworkResource(networkResource); + } + + /** + * Add resource to the list + * + * @param Resource + */ + public void addAllottedResource(String jsonResource) throws JsonDecomposingException { + AllottedResource allottedResource = null; + allottedResource = DecomposeJsonUtil.jsonToAllottedResource(jsonResource); + this.addAllottedResource(allottedResource); + } + + /** + * Add resource to the list + * + * @param Resource + */ + public void addConfigResource(String jsonResource) throws JsonDecomposingException { + ConfigResource configResource = null; + configResource = DecomposeJsonUtil.jsonToConfigResource(jsonResource); + this.addConfigResource(configResource); + } + + /** + * Given a ResourceDecomposition (subclass) object, locate it in the Service Decomposition by its unique ID, and + * replace the current version with the new one. This method should support concurrency control via an + * auto-incrementing field in the ResourceDecomposition class. + * + * @param newResource + * @return TRUE if replacement was a success + */ + public boolean replaceResource(Resource newResource) { + List resources = getResourceList(newResource); + + boolean result = false; + for (Resource resource : (Iterable<Resource>) resources) { + System.out.println("resource found"); + if (resource.resourceType == newResource.resourceType) { + System.out.println("resource type matches"); + if (resource.getResourceId().equalsIgnoreCase(newResource.getResourceId())) { + System.out.println("resource id matches"); + // returns TRUE if replacement is a success + result = Collections.replaceAll(resources, resource, newResource); + } + } + } + return result; + } + + /** + * Given a ResourceDecomposition as a JSON string, locate it in the Service Decomposition by its unique ID, and + * replace the current version with the new one. + * + * @param jsonString + * @return + */ + public boolean replaceResource(String jsonString) { + // TODO: define unique ID for the Resource! + return false; + } + + /** + * Given a resource object ID, locate it in the Service Decomposition by its unique ID, and delete it. + * + * @param resource + * @return TRUE if delete was a success + */ + public boolean deleteResource(Resource resource) { + List serviceResourceList = getResourceList(resource); + for (Resource item : (Iterable<Resource>) serviceResourceList) { + if (item.resourceType == resource.resourceType) { + if (item.getResourceId().equalsIgnoreCase(resource.getResourceId())) { + // returns TRUE if replacement is a success + return serviceResourceList.remove(resource); + } + } + } + + return false; + } + + /** + * Generic method to get List of Resource objects based on input resource's resourceType + * + * @param resource + * @return List matching the resourceType of resource + */ + public List getResourceList(Resource resource) { + List resourceList; + switch (resource.getResourceType()) { + case VNF: + resourceList = getVnfResources(); + break; + case NETWORK: + resourceList = getNetworkResources(); + break; + case ALLOTTED_RESOURCE: + resourceList = getAllottedResources(); + break; + case CONFIGURATION: + resourceList = getConfigResources(); + break; + default: + resourceList = new ArrayList<>(); + } + return resourceList; + } + + /** + * Generic method to set List of ResourceDecomposition objects + * + * @param resources + * @return + */ + public boolean setResourceList(List<Resource> resources) { + if (resources != null && !resources.isEmpty()) { + // create resource based upon type + switch (resources.get(0).resourceType) { + case VNF: + this.setVnfResources((List<VnfResource>) (List<?>) resources); + break; + case NETWORK: + this.setNetworkResources((List<NetworkResource>) (List<?>) resources); + break; + case ALLOTTED_RESOURCE: + this.setAllottedResources((List<AllottedResource>) (List<?>) resources); + break; + case CONFIGURATION: + this.setConfigResources((List<ConfigResource>) (List<?>) resources); + break; + default: + throw new IllegalArgumentException("Invalid resource type: " + resources.get(0).resourceType); + } + } + + return false; + } + + /** + * + * This method locates and returns a resource in a given Service Decomposition object by its unique resource id. + * Returns null if resource doesn't exist. + * + * @param resourceId - id of the resource + * @return resource + */ + @JsonIgnore + public Resource getServiceResource(String resourceId) { + List<Resource> resources = getServiceResources(); + for (Resource resource : resources) { + if (resource.getResourceId().equalsIgnoreCase(resourceId)) { + // match + return resource; + } + } + return null; + } } diff --git a/bpmn/MSOCoreBPMN/src/main/java/org/onap/so/bpmn/core/domain/ServiceInstance.java b/bpmn/MSOCoreBPMN/src/main/java/org/onap/so/bpmn/core/domain/ServiceInstance.java index 5cdbbcb7c9..b0b837b3b9 100644 --- a/bpmn/MSOCoreBPMN/src/main/java/org/onap/so/bpmn/core/domain/ServiceInstance.java +++ b/bpmn/MSOCoreBPMN/src/main/java/org/onap/so/bpmn/core/domain/ServiceInstance.java @@ -22,14 +22,12 @@ package org.onap.so.bpmn.core.domain; import java.io.Serializable; import java.util.Map; - import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import com.fasterxml.jackson.annotation.JsonRootName; /** - * This class is used to store instance - * data of services aka ServiceDecomposition + * This class is used to store instance data of services aka ServiceDecomposition * * @author cb645j * @@ -37,96 +35,118 @@ import com.fasterxml.jackson.annotation.JsonRootName; @JsonIgnoreProperties(ignoreUnknown = true) public class ServiceInstance extends JsonWrapper implements Serializable { - private static final long serialVersionUID = 1L; - private String instanceId; - private String instanceName; - private String orchestrationStatus; - private Configuration configuration; - private String serviceType; - private String serviceRole; - private String serviceId; - private ModelInfo modelInfo; - private String environmentContext; - private String workloadContext; - private Map serviceParams; - private Customer customer = new Customer(); - private String e2eVpnKey; - - public String getServiceType() { - return serviceType; - } - public void setServiceType(String serviceType) { - this.serviceType = serviceType; - } - public String getServiceId() { - return serviceId; - } - public void setServiceId(String serviceId) { - this.serviceId = serviceId; - } - public Map getServiceParams() { - return serviceParams; - } - public void setServiceParams(Map serviceParams) { - this.serviceParams = serviceParams; - } - public String getInstanceId() { - return instanceId; - } - public void setInstanceId(String instanceId) { - this.instanceId = instanceId; - } - public String getInstanceName() { - return instanceName; - } - public void setInstanceName(String instanceName) { - this.instanceName = instanceName; - } - public String getOrchestrationStatus() { - return orchestrationStatus; - } - public void setOrchestrationStatus(String orchestrationStatus) { - this.orchestrationStatus = orchestrationStatus; - } - public Configuration getConfiguration() { - return configuration; - } - public void setConfiguration(Configuration configuration) { - this.configuration = configuration; - } - public ModelInfo getModelInfo() { - return modelInfo; - } - public void setModelInfo(ModelInfo modelInfo) { - this.modelInfo = modelInfo; - } - public String getEnvironmentContext() { - return environmentContext; - } - public void setEnvironmentContext(String environmentContext) { - this.environmentContext = environmentContext; - } - public String getWorkloadContext() { - return workloadContext; - } - public void setWorkloadContext(String workloadContext) { - this.workloadContext = workloadContext; - } - public String getServiceRole() { - return serviceRole; - } - public void setServiceRole(String serviceRole) { - this.serviceRole = serviceRole; - } - public Customer getCustomer(){ - return customer; - } - - public String getE2eVpnKey(){ - return e2eVpnKey; - } - - public void setE2eVpnKey(String e2eVpnKey){ - this.e2eVpnKey = e2eVpnKey; - } + private static final long serialVersionUID = 1L; + private String instanceId; + private String instanceName; + private String orchestrationStatus; + private Configuration configuration; + private String serviceType; + private String serviceRole; + private String serviceId; + private ModelInfo modelInfo; + private String environmentContext; + private String workloadContext; + private Map serviceParams; + private Customer customer = new Customer(); + private String e2eVpnKey; + + public String getServiceType() { + return serviceType; + } + + public void setServiceType(String serviceType) { + this.serviceType = serviceType; + } + + public String getServiceId() { + return serviceId; + } + + public void setServiceId(String serviceId) { + this.serviceId = serviceId; + } + + public Map getServiceParams() { + return serviceParams; + } + + public void setServiceParams(Map serviceParams) { + this.serviceParams = serviceParams; + } + + public String getInstanceId() { + return instanceId; + } + + public void setInstanceId(String instanceId) { + this.instanceId = instanceId; + } + + public String getInstanceName() { + return instanceName; + } + + public void setInstanceName(String instanceName) { + this.instanceName = instanceName; + } + + public String getOrchestrationStatus() { + return orchestrationStatus; + } + + public void setOrchestrationStatus(String orchestrationStatus) { + this.orchestrationStatus = orchestrationStatus; + } + + public Configuration getConfiguration() { + return configuration; + } + + public void setConfiguration(Configuration configuration) { + this.configuration = configuration; + } + + public ModelInfo getModelInfo() { + return modelInfo; + } + + public void setModelInfo(ModelInfo modelInfo) { + this.modelInfo = modelInfo; + } + + public String getEnvironmentContext() { + return environmentContext; + } + + public void setEnvironmentContext(String environmentContext) { + this.environmentContext = environmentContext; + } + + public String getWorkloadContext() { + return workloadContext; + } + + public void setWorkloadContext(String workloadContext) { + this.workloadContext = workloadContext; + } + + public String getServiceRole() { + return serviceRole; + } + + public void setServiceRole(String serviceRole) { + this.serviceRole = serviceRole; + } + + public Customer getCustomer() { + return customer; + } + + public String getE2eVpnKey() { + return e2eVpnKey; + } + + public void setE2eVpnKey(String e2eVpnKey) { + this.e2eVpnKey = e2eVpnKey; + } } diff --git a/bpmn/MSOCoreBPMN/src/main/java/org/onap/so/bpmn/core/domain/Subscriber.java b/bpmn/MSOCoreBPMN/src/main/java/org/onap/so/bpmn/core/domain/Subscriber.java index e9028ded17..620d8311e7 100644 --- a/bpmn/MSOCoreBPMN/src/main/java/org/onap/so/bpmn/core/domain/Subscriber.java +++ b/bpmn/MSOCoreBPMN/src/main/java/org/onap/so/bpmn/core/domain/Subscriber.java @@ -24,46 +24,46 @@ import java.io.Serializable; public class Subscriber implements Serializable { - private static final long serialVersionUID = -2416018315129127022L; - private String globalId; - private String name; - private String commonSiteId; + private static final long serialVersionUID = -2416018315129127022L; + private String globalId; + private String name; + private String commonSiteId; - public Subscriber(String globalId, String name, String commonSiteId){ - super(); - this.globalId = globalId; - this.name = name; - this.commonSiteId = commonSiteId; - } + public Subscriber(String globalId, String name, String commonSiteId) { + super(); + this.globalId = globalId; + this.name = name; + this.commonSiteId = commonSiteId; + } - public String getGlobalId(){ - return globalId; - } + public String getGlobalId() { + return globalId; + } - public void setGlobalId(String globalId){ - this.globalId = globalId; - } + public void setGlobalId(String globalId) { + this.globalId = globalId; + } - public String getName(){ - return name; - } + public String getName() { + return name; + } - public void setName(String name){ - this.name = name; - } + public void setName(String name) { + this.name = name; + } - public String getCommonSiteId(){ - return commonSiteId; - } + public String getCommonSiteId() { + return commonSiteId; + } - public void setCommonSiteId(String commonSiteId){ - this.commonSiteId = commonSiteId; - } + public void setCommonSiteId(String commonSiteId) { + this.commonSiteId = commonSiteId; + } -}
\ No newline at end of file +} diff --git a/bpmn/MSOCoreBPMN/src/main/java/org/onap/so/bpmn/core/domain/Vnf.java b/bpmn/MSOCoreBPMN/src/main/java/org/onap/so/bpmn/core/domain/Vnf.java index 83043b3ec5..293378f969 100644 --- a/bpmn/MSOCoreBPMN/src/main/java/org/onap/so/bpmn/core/domain/Vnf.java +++ b/bpmn/MSOCoreBPMN/src/main/java/org/onap/so/bpmn/core/domain/Vnf.java @@ -21,12 +21,10 @@ package org.onap.so.bpmn.core.domain; import java.io.Serializable; - import com.fasterxml.jackson.annotation.JsonRootName; /** - * This class is used to store instance - * data of Vnf for ServiceDecomposition + * This class is used to store instance data of Vnf for ServiceDecomposition * * @author bb3476 * @@ -34,106 +32,133 @@ import com.fasterxml.jackson.annotation.JsonRootName; @JsonRootName("vnf") public class Vnf extends JsonWrapper implements Serializable { - private static final long serialVersionUID = 1L; - private String vnfId; - private String vnfName; - private String serviceId; - private String vnfType; - private String orchStatus; - private String modelInvariantId; - private String modelVersionId; - private String modelCustomizationId; - private String nfType; - private String nfRole; - private String nfFunction; - private String nfNamingCode; - private String tenantId; - private String cloudSiteId; - - - public String getVnfName() { - return vnfName; - } - public void setVnfName(String vnfName) { - this.vnfName = vnfName; - } - public String getServiceId() { - return serviceId; - } - public void setServiceId(String serviceId) { - this.serviceId = serviceId; - } - public String getVnfType() { - return vnfType; - } - public void setVnfType(String vnfType) { - this.vnfType = vnfType; - } - public String getOrchStatus() { - return orchStatus; - } - public void setOrchStatus(String orchStatus) { - this.orchStatus = orchStatus; - } - public String getModelInvariantId() { - return modelInvariantId; - } - public void setModelInvariantId(String modelInvariantId) { - this.modelInvariantId = modelInvariantId; - } - public String getModelVersionId() { - return modelVersionId; - } - public void setModelVersionId(String modelVersionId) { - this.modelVersionId = modelVersionId; - } - public String getModelCustomizationId() { - return modelCustomizationId; - } - public void setModelCustomizationId(String modelCustomizationId) { - this.modelCustomizationId = modelCustomizationId; - } - public String getNfType() { - return nfType; - } - public void setNfType(String nfType) { - this.nfType = nfType; - } - public String getNfRole() { - return nfRole; - } - public void setNfRole(String nfRole) { - this.nfRole = nfRole; - } - public String getNfFunction() { - return nfFunction; - } - public void setNfFunction(String nfFunction) { - this.nfFunction = nfFunction; - } - public String getNfNamingCode() { - return nfNamingCode; - } - public void setNfNamingCode(String nfNamingCode) { - this.nfNamingCode = nfNamingCode; - } - public String getVnfId() { - return vnfId; - } - public void setVnfId(String vnfId) { - this.vnfId = vnfId; - } - public String getTenantId() { - return tenantId; - } - public void setTenantId(String tenantId) { - this.tenantId = tenantId; - } - public String getCloudSiteId() { - return cloudSiteId; - } - public void setCloudSiteId(String cloudSiteId) { - this.cloudSiteId = cloudSiteId; - } - + private static final long serialVersionUID = 1L; + private String vnfId; + private String vnfName; + private String serviceId; + private String vnfType; + private String orchStatus; + private String modelInvariantId; + private String modelVersionId; + private String modelCustomizationId; + private String nfType; + private String nfRole; + private String nfFunction; + private String nfNamingCode; + private String tenantId; + private String cloudSiteId; + + + public String getVnfName() { + return vnfName; + } + + public void setVnfName(String vnfName) { + this.vnfName = vnfName; + } + + public String getServiceId() { + return serviceId; + } + + public void setServiceId(String serviceId) { + this.serviceId = serviceId; + } + + public String getVnfType() { + return vnfType; + } + + public void setVnfType(String vnfType) { + this.vnfType = vnfType; + } + + public String getOrchStatus() { + return orchStatus; + } + + public void setOrchStatus(String orchStatus) { + this.orchStatus = orchStatus; + } + + public String getModelInvariantId() { + return modelInvariantId; + } + + public void setModelInvariantId(String modelInvariantId) { + this.modelInvariantId = modelInvariantId; + } + + public String getModelVersionId() { + return modelVersionId; + } + + public void setModelVersionId(String modelVersionId) { + this.modelVersionId = modelVersionId; + } + + public String getModelCustomizationId() { + return modelCustomizationId; + } + + public void setModelCustomizationId(String modelCustomizationId) { + this.modelCustomizationId = modelCustomizationId; + } + + public String getNfType() { + return nfType; + } + + public void setNfType(String nfType) { + this.nfType = nfType; + } + + public String getNfRole() { + return nfRole; + } + + public void setNfRole(String nfRole) { + this.nfRole = nfRole; + } + + public String getNfFunction() { + return nfFunction; + } + + public void setNfFunction(String nfFunction) { + this.nfFunction = nfFunction; + } + + public String getNfNamingCode() { + return nfNamingCode; + } + + public void setNfNamingCode(String nfNamingCode) { + this.nfNamingCode = nfNamingCode; + } + + public String getVnfId() { + return vnfId; + } + + public void setVnfId(String vnfId) { + this.vnfId = vnfId; + } + + public String getTenantId() { + return tenantId; + } + + public void setTenantId(String tenantId) { + this.tenantId = tenantId; + } + + public String getCloudSiteId() { + return cloudSiteId; + } + + public void setCloudSiteId(String cloudSiteId) { + this.cloudSiteId = cloudSiteId; + } + } diff --git a/bpmn/MSOCoreBPMN/src/main/java/org/onap/so/bpmn/core/domain/VnfResource.java b/bpmn/MSOCoreBPMN/src/main/java/org/onap/so/bpmn/core/domain/VnfResource.java index a7e5389583..f66ad36058 100644 --- a/bpmn/MSOCoreBPMN/src/main/java/org/onap/so/bpmn/core/domain/VnfResource.java +++ b/bpmn/MSOCoreBPMN/src/main/java/org/onap/so/bpmn/core/domain/VnfResource.java @@ -23,7 +23,6 @@ package org.onap.so.bpmn.core.domain; import java.util.ArrayList; import java.util.List; import java.util.UUID; - import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import com.fasterxml.jackson.annotation.JsonProperty; @@ -36,154 +35,170 @@ import com.fasterxml.jackson.annotation.JsonRootName; @JsonRootName("vnfResource") public class VnfResource extends Resource { - private static final long serialVersionUID = 1L; - - /* - * set resourceType for this object - */ - public VnfResource(){ - resourceType = ResourceType.VNF; - setResourceId(UUID.randomUUID().toString()); - } - - /* - * fields specific to VNF resource type - */ - @JsonProperty("vfModules") - private List <ModuleResource> vfModules; - private String vnfHostname; - private String vnfType; - private String nfFunction; - private String nfType; - private String nfRole; - private String nfNamingCode; - private String multiStageDesign; - private String orchestrationStatus; - - @JsonIgnore - private String resourceInput; - - /* - * GET and SET - */ - public List<ModuleResource> getVfModules() { - return vfModules; - } - public void setModules(List<ModuleResource> moduleResources) { - this.vfModules = moduleResources; - } - public String getVnfHostname() { - return vnfHostname; - } - public void setVnfHostname(String vnfHostname) { - this.vnfHostname = vnfHostname; - } - @Deprecated - public void setVnfType(String vnfType) { - this.vnfType = vnfType; - } - public String getVnfType() { - return vnfType; - } - public String getNfFunction() { - return nfFunction; - } - public void setNfFunction(String nfFunction) { - this.nfFunction = nfFunction; - } - public String getNfType() { - return nfType; - } - public void setNfType(String nfType) { - this.nfType = nfType; - } - public String getNfRole() { - return nfRole; - } - public void setNfRole(String nfRole) { - this.nfRole = nfRole; - } - public String getNfNamingCode() { - return nfNamingCode; - } - public void setNfNamingCode(String nfNamingCode) { - this.nfNamingCode = nfNamingCode; - } - public String getMultiStageDesign() { - return multiStageDesign; - } - public void setMultiStageDesign(String multiStageDesign) { - this.multiStageDesign = multiStageDesign; - } - /* - * GET accessors per design requirements - */ - - - public String getOrchestrationStatus(){ - return orchestrationStatus; - } - - public void setOrchestrationStatus(String orchestrationStatus){ - this.orchestrationStatus = orchestrationStatus; - } - - public String getResourceInput() { - return resourceInput; - } - - public void setResourceInput(String resourceInput) { - this.resourceInput = resourceInput; - } - - /** - * Returns a list of all VfModule objects. - * Base module is first entry in the list - * @return ordered list of ModuleResources objects - */ - @JsonIgnore - public List<ModuleResource> getAllVfModuleObjects(){ - if (vfModules == null) { - return null; - } - - for (int i = 0; i < vfModules.size(); i++) { - ModuleResource moduleResource = vfModules.get(i); - if (moduleResource.getIsBase()){ - vfModules.remove(moduleResource); - vfModules.add(0,moduleResource); - } - } - return vfModules; - } - - /** - * - * @return Returns JSON list of all VfModule structures. - */ - @JsonIgnore - public String getAllVfModulesJson(){ - - return listToJson(vfModules); - } - - // methods to add to the list - public void addVfModule(ModuleResource moduleResource) { - if (vfModules == null){ - vfModules = new ArrayList<>(); - } - this.vfModules.add(moduleResource); - } - - - /** - * Utility method to allow construction of the filed in the form of - * <serviceResources.modelInfo.modelName>/<serviceVnfs.modelInfo.modelInstanceName> - * - * default setter for this field deprecated - * @param modelName << serviceResources.modelInfo.modelName - */ - public void constructVnfType(String modelName) { - this.vnfType = modelName.concat("/").concat(this.modelInfo.getModelInstanceName()); - } -}
\ No newline at end of file + private static final long serialVersionUID = 1L; + + /* + * set resourceType for this object + */ + public VnfResource() { + resourceType = ResourceType.VNF; + setResourceId(UUID.randomUUID().toString()); + } + + /* + * fields specific to VNF resource type + */ + @JsonProperty("vfModules") + private List<ModuleResource> vfModules; + private String vnfHostname; + private String vnfType; + private String nfFunction; + private String nfType; + private String nfRole; + private String nfNamingCode; + private String multiStageDesign; + private String orchestrationStatus; + + @JsonIgnore + private String resourceInput; + + /* + * GET and SET + */ + public List<ModuleResource> getVfModules() { + return vfModules; + } + + public void setModules(List<ModuleResource> moduleResources) { + this.vfModules = moduleResources; + } + + public String getVnfHostname() { + return vnfHostname; + } + + public void setVnfHostname(String vnfHostname) { + this.vnfHostname = vnfHostname; + } + + @Deprecated + public void setVnfType(String vnfType) { + this.vnfType = vnfType; + } + + public String getVnfType() { + return vnfType; + } + + public String getNfFunction() { + return nfFunction; + } + + public void setNfFunction(String nfFunction) { + this.nfFunction = nfFunction; + } + + public String getNfType() { + return nfType; + } + + public void setNfType(String nfType) { + this.nfType = nfType; + } + + public String getNfRole() { + return nfRole; + } + + public void setNfRole(String nfRole) { + this.nfRole = nfRole; + } + + public String getNfNamingCode() { + return nfNamingCode; + } + + public void setNfNamingCode(String nfNamingCode) { + this.nfNamingCode = nfNamingCode; + } + + public String getMultiStageDesign() { + return multiStageDesign; + } + + public void setMultiStageDesign(String multiStageDesign) { + this.multiStageDesign = multiStageDesign; + } + /* + * GET accessors per design requirements + */ + + + public String getOrchestrationStatus() { + return orchestrationStatus; + } + + public void setOrchestrationStatus(String orchestrationStatus) { + this.orchestrationStatus = orchestrationStatus; + } + + public String getResourceInput() { + return resourceInput; + } + + public void setResourceInput(String resourceInput) { + this.resourceInput = resourceInput; + } + + /** + * Returns a list of all VfModule objects. Base module is first entry in the list + * + * @return ordered list of ModuleResources objects + */ + @JsonIgnore + public List<ModuleResource> getAllVfModuleObjects() { + if (vfModules == null) { + return null; + } + + for (int i = 0; i < vfModules.size(); i++) { + ModuleResource moduleResource = vfModules.get(i); + if (moduleResource.getIsBase()) { + vfModules.remove(moduleResource); + vfModules.add(0, moduleResource); + } + } + return vfModules; + } + + /** + * + * @return Returns JSON list of all VfModule structures. + */ + @JsonIgnore + public String getAllVfModulesJson() { + + return listToJson(vfModules); + } + + // methods to add to the list + public void addVfModule(ModuleResource moduleResource) { + if (vfModules == null) { + vfModules = new ArrayList<>(); + } + this.vfModules.add(moduleResource); + } + + + /** + * Utility method to allow construction of the filed in the form of + * <serviceResources.modelInfo.modelName>/<serviceVnfs.modelInfo.modelInstanceName> + * + * default setter for this field deprecated + * + * @param modelName << serviceResources.modelInfo.modelName + */ + public void constructVnfType(String modelName) { + this.vnfType = modelName.concat("/").concat(this.modelInfo.getModelInstanceName()); + } +} diff --git a/bpmn/MSOCoreBPMN/src/main/java/org/onap/so/bpmn/core/internal/VariableNameExtractor.java b/bpmn/MSOCoreBPMN/src/main/java/org/onap/so/bpmn/core/internal/VariableNameExtractor.java index f63ab31496..1604e91979 100644 --- a/bpmn/MSOCoreBPMN/src/main/java/org/onap/so/bpmn/core/internal/VariableNameExtractor.java +++ b/bpmn/MSOCoreBPMN/src/main/java/org/onap/so/bpmn/core/internal/VariableNameExtractor.java @@ -25,27 +25,24 @@ import java.util.regex.Matcher; import java.util.regex.Pattern; /** - * Extracts variable name from expression if entire expression is just - * one variable, for example "${x}". + * Extracts variable name from expression if entire expression is just one variable, for example "${x}". * * Ignores all whitespaces, except inside variable name. * - * Examples: - * "${x}", extracted variable name is "x" - * " ${\t weird_NAME }", extracted variable name is "weird_NAME" - * "${incorrect name}", no extracted name - * "${two}+${two}", no extracted name + * Examples: "${x}", extracted variable name is "x" " ${\t weird_NAME }", extracted variable name is "weird_NAME" + * "${incorrect name}", no extracted name "${two}+${two}", no extracted name */ public class VariableNameExtractor { - private static final Pattern VARIABLE_NAME_PATTERN = Pattern - .compile("^\\s*\\$\\s*\\{\\s*([a-zA-Z0-9_]+)\\s*\\}\\s*$"); + private static final Pattern VARIABLE_NAME_PATTERN = + Pattern.compile("^\\s*\\$\\s*\\{\\s*([a-zA-Z0-9_]+)\\s*\\}\\s*$"); private final String expression; /** * Creates new VariableNameExtractor + * * @param expression expression to be parsed */ public VariableNameExtractor(String expression) { @@ -54,6 +51,7 @@ public class VariableNameExtractor { /** * Extracts variable name from expression given in constructor + * * @return Optional of variable name, empty if expression wasn't single variable */ public Optional<String> extract() { diff --git a/bpmn/MSOCoreBPMN/src/main/java/org/onap/so/bpmn/core/json/DecomposeJsonUtil.java b/bpmn/MSOCoreBPMN/src/main/java/org/onap/so/bpmn/core/json/DecomposeJsonUtil.java index 89f61fec75..93a47ff6b1 100644 --- a/bpmn/MSOCoreBPMN/src/main/java/org/onap/so/bpmn/core/json/DecomposeJsonUtil.java +++ b/bpmn/MSOCoreBPMN/src/main/java/org/onap/so/bpmn/core/json/DecomposeJsonUtil.java @@ -24,14 +24,12 @@ package org.onap.so.bpmn.core.json; import java.io.IOException; import java.io.Serializable; - import org.onap.so.bpmn.core.domain.AllottedResource; import org.onap.so.bpmn.core.domain.ConfigResource; import org.onap.so.bpmn.core.domain.NetworkResource; import org.onap.so.bpmn.core.domain.ServiceDecomposition; import org.onap.so.bpmn.core.domain.ServiceInstance; import org.onap.so.bpmn.core.domain.VnfResource; - import com.fasterxml.jackson.databind.DeserializationFeature; import com.fasterxml.jackson.databind.ObjectMapper; import org.slf4j.Logger; @@ -39,16 +37,15 @@ import org.slf4j.LoggerFactory; public class DecomposeJsonUtil implements Serializable { - private static final Logger logger = LoggerFactory.getLogger(DecomposeJsonUtil.class); - /** - * - */ - private static final long serialVersionUID = 1L; + private static final Logger logger = LoggerFactory.getLogger(DecomposeJsonUtil.class); + /** + * + */ + private static final long serialVersionUID = 1L; private static final ObjectMapper OBJECT_MAPPER = createObjectMapper(); - private DecomposeJsonUtil() { - } + private DecomposeJsonUtil() {} private static ObjectMapper createObjectMapper() { ObjectMapper om = new ObjectMapper(); @@ -56,24 +53,24 @@ public class DecomposeJsonUtil implements Serializable { return om; } - /** + /** * Method to construct Service Decomposition object converting JSON structure - * + * * @param jsonString input in JSON format confirming ServiceDecomposition * @return decoded object * @throws JsonDecomposingException thrown when decoding json fails - */ + */ public static ServiceDecomposition jsonToServiceDecomposition(String jsonString) throws JsonDecomposingException { try { - ObjectMapper om = new ObjectMapper(); - om.configure(DeserializationFeature.UNWRAP_ROOT_VALUE, true); - om.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); + ObjectMapper om = new ObjectMapper(); + om.configure(DeserializationFeature.UNWRAP_ROOT_VALUE, true); + om.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); return om.readValue(jsonString, ServiceDecomposition.class); - } catch (IOException e) { + } catch (IOException e) { throw new JsonDecomposingException("Exception while converting json to service decomposition", e); } - } - + } + /** * Method to construct Service Decomposition object converting JSON structure * @@ -88,59 +85,59 @@ public class DecomposeJsonUtil implements Serializable { ServiceInstance serviceInstance = new ServiceInstance(); serviceInstance.setInstanceId(serviceInstanceId); serviceDecomposition.setServiceInstance(serviceInstance); - return serviceDecomposition; - } - - /** + return serviceDecomposition; + } + + /** * Method to construct Resource Decomposition object converting JSON structure - * + * * @param jsonString input in JSON format confirming ResourceDecomposition * @return decoded object * @throws JsonDecomposingException thrown when decoding json fails - */ + */ public static VnfResource jsonToVnfResource(String jsonString) throws JsonDecomposingException { - try { + try { return OBJECT_MAPPER.readValue(jsonString, VnfResource.class); - } catch (IOException e) { + } catch (IOException e) { throw new JsonDecomposingException("Exception while converting json to vnf resource", e); - } - } - - /** + } + } + + /** * Method to construct Resource Decomposition object converting JSON structure - * + * * @param jsonString input in JSON format confirming ResourceDecomposition * @return decoded object * @throws JsonDecomposingException thrown when decoding json fails - */ + */ public static NetworkResource jsonToNetworkResource(String jsonString) throws JsonDecomposingException { - try { + try { return OBJECT_MAPPER.readValue(jsonString, NetworkResource.class); - } catch (IOException e) { + } catch (IOException e) { throw new JsonDecomposingException("Exception while converting json to network resource", e); - } - } - - /** + } + } + + /** * Method to construct Resource Decomposition object converting JSON structure - * - * @param jsonString - input in JSON format confirming ResourceDecomposition + * + * @param jsonString - input in JSON format confirming ResourceDecomposition * @return decoded object * @throws JsonDecomposingException thrown when decoding json fails - */ + */ public static AllottedResource jsonToAllottedResource(String jsonString) throws JsonDecomposingException { - try { + try { return OBJECT_MAPPER.readValue(jsonString, AllottedResource.class); - } catch (IOException e) { + } catch (IOException e) { throw new JsonDecomposingException("Exception while converting json to allotted resource", e); - } - } - + } + } + public static ConfigResource jsonToConfigResource(String jsonString) throws JsonDecomposingException { - try { + try { return OBJECT_MAPPER.readValue(jsonString, ConfigResource.class); - } catch (IOException e) { + } catch (IOException e) { throw new JsonDecomposingException("Exception while converting json to allotted resource", e); - } - } + } + } } diff --git a/bpmn/MSOCoreBPMN/src/main/java/org/onap/so/bpmn/core/json/JsonUtils.java b/bpmn/MSOCoreBPMN/src/main/java/org/onap/so/bpmn/core/json/JsonUtils.java index ccc5ea667e..d3d07f9014 100644 --- a/bpmn/MSOCoreBPMN/src/main/java/org/onap/so/bpmn/core/json/JsonUtils.java +++ b/bpmn/MSOCoreBPMN/src/main/java/org/onap/so/bpmn/core/json/JsonUtils.java @@ -30,7 +30,6 @@ import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.StringTokenizer; - import org.camunda.bpm.engine.delegate.DelegateExecution; import org.camunda.bpm.engine.runtime.Execution; import org.json.JSONArray; @@ -39,7 +38,6 @@ import org.json.JSONObject; import org.json.XML; import org.onap.so.bpmn.core.xml.XmlTool; import org.onap.so.exceptions.ValidationException; - import com.fasterxml.jackson.databind.JsonNode; import com.github.fge.jackson.JsonLoader; import com.github.fge.jsonschema.core.exceptions.ProcessingException; @@ -54,1016 +52,1019 @@ import org.slf4j.LoggerFactory; * * @version 1.0 * - * Note: It was observed, that depending on the JSON implementation, an org.json.JSONException or a - * java.util.NoSuchElementException will be thrown in the event of the key value being "not found" - * in a JSON document. A general check has been added to the applicable catch blocks for this - * this type of behavior to reduce the amount of logging. As a key value not being found is - * expect behavior, it makes no sense to log the stack trace associated with this type of failure. + * Note: It was observed, that depending on the JSON implementation, an org.json.JSONException or a + * java.util.NoSuchElementException will be thrown in the event of the key value being "not found" in a JSON + * document. A general check has been added to the applicable catch blocks for this this type of behavior to + * reduce the amount of logging. As a key value not being found is expect behavior, it makes no sense to log + * the stack trace associated with this type of failure. */ public class JsonUtils { - private static Logger logger = LoggerFactory.getLogger(JsonUtils.class); - private static int MSOJsonIndentFactor = 3; - - /** - * Uses the JSONObject static method to convert a XML doc to JSON. - * - * @param xml String containing the XML doc - * @param pretty flag to determine if the output should be formatted - * @return String containing the JSON translation - */ - public static String xml2json(String xml, Boolean pretty) { - try { - // name spaces cause problems, so just remove them - JSONObject jsonObj = XML.toJSONObject(XmlTool.removeNamespaces(xml)); - if (!pretty) { - return jsonObj.toString(); - } else { - // add an indent to make it 'pretty' - return jsonObj.toString(MSOJsonIndentFactor); - } - } catch (Exception e){ - logger.debug("xml2json(): unable to parse xml and convert to json. Exception was: {}", e.toString(), e); - return null; - } - } - - /** - * Invokes xml2json(String, Boolean) defaulting to 'pretty' output. - * - * @param xml String containing the XML doc - * @return String containing the JSON translation - */ - public static String xml2json(String xml) { - return xml2json(xml, true); - } - - /** - * Uses the JSONObject static method to convert a JSON doc to XML. - * Note: this method may not generate valid XML if the JSONObject - * contains JSONArrays which are used to represent XML attributes - * in the JSON doc. - * - * @param jsonStr String containing the JSON doc - * @param pretty flag to determine if the output should be formatted - * @return String containing the XML translation - */ - public static String json2xml(String jsonStr, Boolean pretty) { - - try { - JSONObject jsonObj = new JSONObject(jsonStr); - if (pretty) { -// use the local class method which properly handles certain JSONArray content - return XmlTool.normalize(toXMLString(jsonObj, null)); - } else { -// use the local class method which properly handles certain JSONArray content - return toXMLString(jsonObj, null); - } - } catch (Exception e){ - logger.debug("json2xml(): unable to parse json and convert to xml. Exception was: {}", e.toString(), e); - return null; - } - } - - /** - * Uses a modified version of the org.json.XML toString() algorithm - * to convert a JSONObject to an XML Doc. The intent of this is to - * correctly generate XML from JSON including TAGs for JSONArrays - * - * @param obj org.json.JSON object to be converted to XML - * @param tagName optional XML tagname supplied primarily during recursive calls - * @return String containing the XML translation - */ - public static String toXMLString(Object obj, String tagName) throws JSONException { - StringBuilder strBuf = new StringBuilder(); - int i; - JSONArray jsonArr; - JSONObject jsonObj; - String key; - Iterator<String> keys; - int len; - String str; - Object curObj; - if (obj instanceof JSONObject) { - // append "<tagName>" to the XML output - if (tagName != null) { - strBuf.append("<"); - strBuf.append(tagName); - strBuf.append(">"); - } - // iterate thru the keys. - jsonObj = (JSONObject) obj; - keys = jsonObj.keys(); - while (keys.hasNext()) { - key = keys.next(); - curObj = jsonObj.opt(key); - if (curObj == null) { - curObj = ""; - } - if (curObj instanceof String) { - str = (String) curObj; - } else { - str = null; - } - // append the content to the XML output - if ("content".equals(key)) { - if (curObj instanceof JSONArray) { - jsonArr = (JSONArray) curObj; - len = jsonArr.length(); - for (i = 0; i < len; i += 1) { - if (i > 0) { - strBuf.append('\n'); - } - strBuf.append(XML.escape(jsonArr.get(i).toString())); - } - } else { - strBuf.append(XML.escape(curObj.toString())); - } - // append an array of similar keys to the XML output - } else if (curObj instanceof JSONArray) { - jsonArr = (JSONArray) curObj; - len = jsonArr.length(); - for (i = 0; i < len; i += 1) { - curObj = jsonArr.get(i); - if (curObj instanceof JSONArray) { -// The XML tags for the nested array should be generated below when this method -// is called recursively and the JSONArray object is passed -// strBuf.append("<"); -// strBuf.append(key); -// strBuf.append(">"); - strBuf.append(toXMLString(curObj, null)); -// strBuf.append("</"); -// strBuf.append(key); -// strBuf.append(">"); - } else { - // append the opening tag for the array (before 1st element) - if (i == 0) { - strBuf.append("<"); - strBuf.append(key); - strBuf.append(">"); - } - // append the opening tag for the array - strBuf.append(toXMLString(curObj, null)); - // append the closing tag for the array (after last element) - if (i == (len - 1)) { - strBuf.append("</"); - strBuf.append(key); - strBuf.append(">"); - } - } - } - } else if (curObj.equals("")) { - // append a closing tag "<key>" to the XML output - strBuf.append("<"); - strBuf.append(key); - strBuf.append("/>"); - } else { - strBuf.append(toXMLString(curObj, key)); - } - } - if (tagName != null) { - // append the closing tag "</tagName>" to the XML output - strBuf.append("</"); - strBuf.append(tagName); - strBuf.append(">"); - } - return strBuf.toString(); - // XML does not have good support for arrays. If an array appears in a place - // where XML is lacking, synthesize an < array > element. - } else if (obj instanceof JSONArray) { - jsonArr = (JSONArray) obj; - len = jsonArr.length(); - for (i = 0; i < len; ++i) { - curObj = jsonArr.opt(i); - strBuf.append(toXMLString(curObj, (tagName == null) ? "array" - : tagName)); - } - return strBuf.toString(); - } else { - str = (obj == null) ? "null" : XML.escape(obj.toString()); - return (tagName == null) ? "\"" + str + "\"" - : (str.length() == 0) ? "<" + tagName + "/>" : "<" - + tagName + ">" + str + "</" + tagName + ">"; - } - } - - /** - * Invokes json2xml(String, Boolean) defaulting to 'pretty' output. - * - * @param jsonStr String containing the XML doc - * @return String containing the JSON translation - */ - public static String json2xml(String jsonStr) { - return json2xml(jsonStr, true); - } - - /** - * Formats the JSON String using the value of MSOJsonIndentFactor. - * - * @param jsonStr String containing the JSON doc - * @return String containing the formatted JSON doc - */ - public static String prettyJson(String jsonStr) { - try { - JSONObject jsonObj = new JSONObject(jsonStr); - return jsonObj.toString(MSOJsonIndentFactor); - } catch (Exception e){ - logger.debug("prettyJson(): unable to parse/format json input. Exception was: {}", e.toString(), e); - return null; - } - } - - /** - * Returns an Iterator over the JSON keys in the specified JSON doc. - * - * @param jsonStr String containing the JSON doc - * @return Iterator over the JSON keys - * @throws JSONException if the doc cannot be parsed - */ - public static Iterator <String> getJsonIterator(String jsonStr) throws JSONException { - return new JSONObject(jsonStr).keys(); - } - - /** - * Returns the name of the "root" property in the specified JSON doc. The - * "root" property is the single top-level property in the JSON doc. An - * exception is thrown if the doc is empty or if it contains more than one - * top-level property. - * - * @param jsonStr String containing the JSON doc - * @return the name of the "root" property - * @throws JSONException if the doc cannot be parsed, or if it is empty, or if - * it contains more than one top-level property - */ - public static String getJsonRootProperty(String jsonStr) throws JSONException { - Iterator<String> iter = getJsonIterator(jsonStr); - - if (!iter.hasNext()) { - throw new JSONException("Empty JSON object"); - } - - String rootPropertyName = iter.next(); - - if (iter.hasNext()) { - throw new JSONException("JSON object has more than one root property"); - } - - return rootPropertyName; - } - - /** - * Invokes the getJsonRawValue() method and returns the String equivalent of - * the object returned. - * - * TBD: May need separate methods for boolean, float, and integer fields if the - * String representation is not sufficient to meet client needs. - * - * @param jsonStr String containing the JSON doc - * @param keys full key path to the target value in the format of "key1.key2.key3..." - * @return String field value associated with keys - */ - public static String getJsonValue(String jsonStr, String keys) { - try { - Object rawValue = getJsonRawValue(jsonStr, keys); - if (rawValue == null) { - return null; - } else { - if (rawValue instanceof String) { - logger.debug("getJsonValue(): the raw value is a String Object={}", rawValue); - return (String) rawValue; - } else { - logger.debug("getJsonValue(): the raw value is NOT a String Object={}", rawValue.toString()); - return rawValue.toString(); - } - } - } catch (Exception e) { - logger.debug("getJsonValue(): unable to parse json to retrieve value for field={}. Exception was: {}", keys, - e.toString(), e); - } - return null; - } - - /** - * Invokes the getJsonRawValue() method with the wrap flag set to true - * and returns the String equivalent of the json node object returned. - * - * @param jsonStr String containing the JSON doc - * @param keys full key path to the target value in the format of "key1.key2.key3..." - * @return String field value associated with keys - */ - public static String getJsonNodeValue(String jsonStr, String keys) { - try { - Object rawValue = getJsonRawValue(jsonStr, keys, true); - if (rawValue == null) { - return null; - } else { - if (rawValue instanceof String) { - logger.debug("getJsonNodeValue(): the raw value is a String Object={}", rawValue); - return (String) rawValue; - } else { - logger.debug("getJsonNodeValue(): the raw value is NOT a String Object={}", rawValue.toString()); - return rawValue.toString(); - } - } - } catch (Exception e) { - logger.debug("getJsonNodeValue(): unable to parse json to retrieve node for field={}. Exception was: {}", keys, - e.toString(), e); - } - return null; - } - - /** - * Invokes the getJsonRawValue() method and returns the String equivalent of - * the object returned. - * - * TBD: May need separate methods for boolean, float, and integer fields if the - * String representation is not sufficient to meet client needs. - * - * @param jsonStr String containing the JSON doc - * @param keys full key path to the target value in the format of "key1.key2.key3..." - * @return String field value associated with keys - */ - public static int getJsonIntValue(String jsonStr, String keys) { - try { - Object rawValue = getJsonRawValue(jsonStr, keys); - if (rawValue == null) { - return 0; - } else { - if (rawValue instanceof Integer) { - logger.debug("getJsonIntValue(): the raw value is an Integer Object={}", ((String) rawValue).toString()); - return (Integer) rawValue; - } else { - logger.debug("getJsonIntValue(): the raw value is NOT an Integer Object={}", rawValue.toString()); - return 0; - } - } - } catch (Exception e) { - logger.debug("getJsonIntValue(): unable to parse json to retrieve value for field={}. Exception was: {}", keys, - e.toString(), e); - } - return 0; - } - - /** - * Invokes the getJsonRawValue() method and returns the boolean equivalent of - * the object returned. - * - * @param jsonStr String containing the JSON doc - * @param keys full key path to the target value in the format of "key1.key2.key3..." - * @return boolean field value associated with keys - default is false - */ - public static boolean getJsonBooleanValue(String jsonStr, String keys) { - try { - Object rawValue = getJsonRawValue(jsonStr, keys); - if (rawValue == null) { - return false; - } else { - if (rawValue instanceof Boolean) { - logger.debug("getJsonBooleanValue(): the raw value is a Boolean Object={}", rawValue); - return (Boolean) rawValue; - } else { - logger.debug("getJsonBooleanValue(): the raw value is NOT an Boolean Object={}", rawValue.toString()); - return false; - } - } - } catch (Exception e) { - logger.debug("getJsonBooleanValue(): unable to parse json to retrieve value for field={}. Exception was: {}", keys, - e.toString(), e); - } - return false; - } - - /** - * Invokes the getJsonParamValue() method to obtain the JSONArray associated with - * the specified keys. The JSONArray is then walked to retrieve the first array - * value associated with the specified field name (index=0). - * - * @param jsonStr String containing the JSON doc - * @param keys full key path to the target value in the format of "key1.key2.key3..." - * @param name field name for the param to be retrieved - * @return String param value associated with field name - */ - public static String getJsonParamValue(String jsonStr, String keys, String name) { - return getJsonParamValue(jsonStr, keys, name, 0); - } - - /** - * Invokes the getJsonRawValue() method to obtain the JSONArray associated with - * the specified keys. The JSONArray is then walked to retrieve the nth array - * value associated with the specified field name and index. - * - * @param jsonStr String containing the JSON doc - * @param keys full key path to the target value in the format of "key1.key2.key3..." - * @param name field name for the param to be retrieved - * @param index the nth param associated with name starting at 0 - * @return String param value associated with field name - */ - public static String getJsonParamValue(String jsonStr, String keys, String name, int index) { - try { - Object rawValue = getJsonRawValue(jsonStr, keys); - if (rawValue == null) { - return null; - } else { - if (rawValue instanceof JSONArray) { - logger.debug("getJsonParamValue(): keys={} points to JSONArray: {}", keys, rawValue.toString()); - int arrayLen = ((JSONArray) rawValue).length(); - if (index < 0 || arrayLen < index+1) { - logger.debug("getJsonParamValue(): index: {} is out of bounds for array size of {}", index, arrayLen); - return null; - } - int foundCnt = 0; - for (int i = 0; i < arrayLen; i++) { - logger.debug("getJsonParamValue(): index: {}, value: {}", i, ((JSONArray) rawValue).get(i).toString()); - if (((JSONArray) rawValue).get(i) instanceof JSONObject) { - JSONObject jsonObj = (JSONObject)((JSONArray) rawValue).get(i); - String parmValue = jsonObj.get(name).toString(); - if (parmValue != null) { - logger.debug("getJsonParamValue(): found value: {} for name: {} and index: {}", parmValue, name, i); - if (foundCnt == index) { - return parmValue; - } else { - foundCnt++; - continue; - } - } else { - continue; - } - } else { - logger.debug("getJsonParamValue(): the JSONArray element is NOT a JSONObject={}", rawValue.toString()); - return null; - } - } - logger.debug("getJsonParamValue(): content value NOT found for name: {}", name); - return null; - } else { - logger.debug("getJsonParamValue(): the raw value is NOT a JSONArray Object={}", rawValue.toString()); - return null; - } - } - } catch (Exception e) { - if (e.getMessage().contains("not found")) { - logger.debug("getJsonParamValue(): failed to retrieve param value for keys:{}, name={} : {}", keys, name, - e.getMessage()); - } else { - logger.debug("getJsonParamValue(): unable to parse json to retrieve value for field={}. Exception was: {}", keys, - e.toString(), e); - } - } - return null; - } - - /** - * Wrapper to generate the JSONObject to pass to the getJsonValueForKey(JSONObject, String) - * method so that recursion over the subobjects can be supported there - * - * @param jsonStr String containing the JSON doc - * @param key key to the target value - * @return String field value associated with key - */ - public static String getJsonValueForKey(String jsonStr, String key) { - - try { - JSONObject jsonObj = new JSONObject(jsonStr); - return getJsonValueForKey(jsonObj, key); - } catch (Exception e) { - logger.debug("getJsonValueForKey(): unable to parse json to retrieve value for field={}. Exception was: {}", key, - e.toString(), e); - } - return null; - } - - /** - * Walks the JSONObject (and sub-objects recursively), searching for the first value associated with the - * single key/field name specified. Returns the associated value if found or null if the key is not found - * - * @param jsonObj JSONObject representation of the the JSON doc - * @param key key to the target value - * @return String field value associated with key - */ - public static String getJsonValueForKey(JSONObject jsonObj, String key) { - - String keyValue = null; - try { - if (jsonObj.has(key)) { - Object value = jsonObj.get(key); - logger.debug("getJsonValueForKey(): found value={}, for key={}", (String) value, key); - if (value == null) { - return null; - } else { - return ((String) value); - } - } else { - Iterator <String> itr = jsonObj.keys(); - while (itr.hasNext()) { - String nextKey = itr.next(); - Object obj = jsonObj.get(nextKey); - if (obj instanceof JSONObject) { - keyValue = getJsonValueForKey((JSONObject) obj, key); - if (keyValue != null) { - break; - } - } else { - logger.debug("getJsonValueForKey(): key={}, does not point to a JSONObject, next key", nextKey); - } - } - } - } catch (Exception e) { - // JSONObject::get() throws a "not found" exception if one of the specified keys is not found - if (e.getMessage().contains("not found")) { - logger.debug("getJsonValueForKey(): failed to retrieve param value for key={}: {}", key, e.getMessage()); - } else { - logger.debug("getJsonValueForKey(): unable to parse json to retrieve value for field={}. Exception was {}", key, - e.toString(), e); - } - keyValue = null; - } - return keyValue; - } - - /** - * Walks the JSONObject (and sub-objects recursively), searching for the first value associated with the - * single key/field name specified. Returns the associated value if found or null if the key is not found - * - * @param jsonObj JSONObject representation of the the JSON doc - * @param key key to the target value - * @return String field value associated with key - */ - public static Integer getJsonIntValueForKey(JSONObject jsonObj, String key) { - Integer keyValue = null; - try { - if (jsonObj.has(key)) { - Integer value = (Integer) jsonObj.get(key); - logger.debug("getJsonIntValueForKey(): found value={}, for key={}", value, key); - return value; - } else { - Iterator <String> itr = jsonObj.keys(); - while (itr.hasNext()) { - String nextKey = itr.next(); - Object obj = jsonObj.get(nextKey); - if (obj instanceof JSONObject) { - keyValue = getJsonIntValueForKey((JSONObject) obj, key); - if (keyValue != null) { - break; - } - } else { - logger.debug("getJsonIntValueForKey(): key={}, does not point to a JSONObject, next key", nextKey); - } - } - } - } catch (Exception e) { - // JSONObject::get() throws a "not found" exception if one of the specified keys is not found - if (e.getMessage().contains("not found")) { - logger.debug("getJsonIntValueForKey(): failed to retrieve param value for key={}: {}", key, e.getMessage()); - } else { - logger.debug("getJsonIntValueForKey(): unable to parse json to retrieve value for field={}. Exception was: {}", key, - e.toString(), e); - } - keyValue = null; - } - return keyValue; - } - - /** - * Walks the JSONObject (and sub-objects recursively), searching for the first value associated with the - * single key/field name specified. Returns the associated value if found or null if the key is not found - * - * @param jsonObj JSONObject representation of the the JSON doc - * @param key key to the target value - * @return String field value associated with key - */ - public static Boolean getJsonBooleanValueForKey(JSONObject jsonObj, String key) { - Boolean keyValue = null; - try { - if (jsonObj.has(key)) { - Boolean value = (Boolean) jsonObj.get(key); - logger.debug("getJsonBooleanValueForKey(): found value={}, for key={}", value, key); - return value; - } else { - Iterator <String> itr = jsonObj.keys(); - while (itr.hasNext()) { - String nextKey = itr.next(); - Object obj = jsonObj.get(nextKey); - if (obj instanceof JSONObject) { - keyValue = getJsonBooleanValueForKey((JSONObject) obj, key); - if (keyValue != null) { - break; - } - } else { - logger.debug("getJsonBooleanValueForKey(): key={}, does not point to a JSONObject, next key", nextKey); - } - } - } - } catch (Exception e) { - // JSONObject::get() throws a "not found" exception if one of the specified keys is not found - if (e.getMessage().contains("not found")) { - logger.debug("getJsonBooleanValueForKey(): failed to retrieve param value for key={}: {}", key, e.getMessage()); - } else { - logger.debug("getJsonBooleanValueForKey(): unable to parse json to retrieve value for field={}. Exception was: {}", - key, e.toString(), e); - } - keyValue = null; - } - return keyValue; - } + private static Logger logger = LoggerFactory.getLogger(JsonUtils.class); + private static int MSOJsonIndentFactor = 3; + + /** + * Uses the JSONObject static method to convert a XML doc to JSON. + * + * @param xml String containing the XML doc + * @param pretty flag to determine if the output should be formatted + * @return String containing the JSON translation + */ + public static String xml2json(String xml, Boolean pretty) { + try { + // name spaces cause problems, so just remove them + JSONObject jsonObj = XML.toJSONObject(XmlTool.removeNamespaces(xml)); + if (!pretty) { + return jsonObj.toString(); + } else { + // add an indent to make it 'pretty' + return jsonObj.toString(MSOJsonIndentFactor); + } + } catch (Exception e) { + logger.debug("xml2json(): unable to parse xml and convert to json. Exception was: {}", e.toString(), e); + return null; + } + } - /** - * Boolean method to determine if a key path is valid for the JSON doc. Invokes - * getJsonValue(). - * - * @param jsonStr String containing the JSON doc - * @param keys full key path to the target value in the format of "key1.key2.key3..." - * @return Boolean true if keys points to value in the JSON doc - */ - public static Boolean jsonValueExists(String jsonStr, String keys) { - if (getJsonRawValue(jsonStr, keys) == null) { - return false; - } else { - return true; - } - } + /** + * Invokes xml2json(String, Boolean) defaulting to 'pretty' output. + * + * @param xml String containing the XML doc + * @return String containing the JSON translation + */ + public static String xml2json(String xml) { + return xml2json(xml, true); + } - /** - * Inserts the new key/value pair at the appropriate location in the JSON - * document after first determining if keyed field already exists. If - * it does exist, return the JSON unmodified, otherwise return the new JSON - * Note: this method currently only supports String value inserts. - * - * @param jsonStr String containing the JSON doc - * @param keys full key path to the value to be added in the format of "key1.key2.key3..." - * @return String containing the updated JSON doc - */ - public static String addJsonValue(String jsonStr, String keys, String value) { + /** + * Uses the JSONObject static method to convert a JSON doc to XML. Note: this method may not generate valid XML if + * the JSONObject contains JSONArrays which are used to represent XML attributes in the JSON doc. + * + * @param jsonStr String containing the JSON doc + * @param pretty flag to determine if the output should be formatted + * @return String containing the XML translation + */ + public static String json2xml(String jsonStr, Boolean pretty) { + + try { + JSONObject jsonObj = new JSONObject(jsonStr); + if (pretty) { + // use the local class method which properly handles certain JSONArray content + return XmlTool.normalize(toXMLString(jsonObj, null)); + } else { + // use the local class method which properly handles certain JSONArray content + return toXMLString(jsonObj, null); + } + } catch (Exception e) { + logger.debug("json2xml(): unable to parse json and convert to xml. Exception was: {}", e.toString(), e); + return null; + } + } - // only attempt to insert the key/value pair if it does not exist - if (!jsonValueExists(jsonStr, keys)) { - return putJsonValue(jsonStr, keys, value); - } else { - logger.debug("addJsonValue(): JSON add failed, key={}/value={} already exists", keys, value); - return jsonStr; - } - } + /** + * Uses a modified version of the org.json.XML toString() algorithm to convert a JSONObject to an XML Doc. The + * intent of this is to correctly generate XML from JSON including TAGs for JSONArrays + * + * @param obj org.json.JSON object to be converted to XML + * @param tagName optional XML tagname supplied primarily during recursive calls + * @return String containing the XML translation + */ + public static String toXMLString(Object obj, String tagName) throws JSONException { + StringBuilder strBuf = new StringBuilder(); + int i; + JSONArray jsonArr; + JSONObject jsonObj; + String key; + Iterator<String> keys; + int len; + String str; + Object curObj; + if (obj instanceof JSONObject) { + // append "<tagName>" to the XML output + if (tagName != null) { + strBuf.append("<"); + strBuf.append(tagName); + strBuf.append(">"); + } + // iterate thru the keys. + jsonObj = (JSONObject) obj; + keys = jsonObj.keys(); + while (keys.hasNext()) { + key = keys.next(); + curObj = jsonObj.opt(key); + if (curObj == null) { + curObj = ""; + } + if (curObj instanceof String) { + str = (String) curObj; + } else { + str = null; + } + // append the content to the XML output + if ("content".equals(key)) { + if (curObj instanceof JSONArray) { + jsonArr = (JSONArray) curObj; + len = jsonArr.length(); + for (i = 0; i < len; i += 1) { + if (i > 0) { + strBuf.append('\n'); + } + strBuf.append(XML.escape(jsonArr.get(i).toString())); + } + } else { + strBuf.append(XML.escape(curObj.toString())); + } + // append an array of similar keys to the XML output + } else if (curObj instanceof JSONArray) { + jsonArr = (JSONArray) curObj; + len = jsonArr.length(); + for (i = 0; i < len; i += 1) { + curObj = jsonArr.get(i); + if (curObj instanceof JSONArray) { + // The XML tags for the nested array should be generated below when this method + // is called recursively and the JSONArray object is passed + // strBuf.append("<"); + // strBuf.append(key); + // strBuf.append(">"); + strBuf.append(toXMLString(curObj, null)); + // strBuf.append("</"); + // strBuf.append(key); + // strBuf.append(">"); + } else { + // append the opening tag for the array (before 1st element) + if (i == 0) { + strBuf.append("<"); + strBuf.append(key); + strBuf.append(">"); + } + // append the opening tag for the array + strBuf.append(toXMLString(curObj, null)); + // append the closing tag for the array (after last element) + if (i == (len - 1)) { + strBuf.append("</"); + strBuf.append(key); + strBuf.append(">"); + } + } + } + } else if (curObj.equals("")) { + // append a closing tag "<key>" to the XML output + strBuf.append("<"); + strBuf.append(key); + strBuf.append("/>"); + } else { + strBuf.append(toXMLString(curObj, key)); + } + } + if (tagName != null) { + // append the closing tag "</tagName>" to the XML output + strBuf.append("</"); + strBuf.append(tagName); + strBuf.append(">"); + } + return strBuf.toString(); + // XML does not have good support for arrays. If an array appears in a place + // where XML is lacking, synthesize an < array > element. + } else if (obj instanceof JSONArray) { + jsonArr = (JSONArray) obj; + len = jsonArr.length(); + for (i = 0; i < len; ++i) { + curObj = jsonArr.opt(i); + strBuf.append(toXMLString(curObj, (tagName == null) ? "array" : tagName)); + } + return strBuf.toString(); + } else { + str = (obj == null) ? "null" : XML.escape(obj.toString()); + return (tagName == null) ? "\"" + str + "\"" + : (str.length() == 0) ? "<" + tagName + "/>" : "<" + tagName + ">" + str + "</" + tagName + ">"; + } + } - /** - * Updates the value for the specified key in the JSON document - * after first determining if keyed field exists. If it does - * not exist, return the JSON unmodified, otherwise return the updated JSON. - * Note: this method currently only supports String value updates. - * - * @param jsonStr String containing the JSON doc - * @param keys full key path to the value to be updated in the format of "key1.key2.key3..." - * @return String containing the updated JSON doc - */ - public static String updJsonValue(String jsonStr, String keys, String newValue) { - // only attempt to modify the key/value pair if it exists - if (jsonValueExists(jsonStr, keys)) { - return putJsonValue(jsonStr, keys, newValue); - } else { - logger.debug("updJsonValue(): JSON update failed, no value exists for key={}", keys); - return jsonStr; - } - } + /** + * Invokes json2xml(String, Boolean) defaulting to 'pretty' output. + * + * @param jsonStr String containing the XML doc + * @return String containing the JSON translation + */ + public static String json2xml(String jsonStr) { + return json2xml(jsonStr, true); + } - /** - * Deletes the value for the specified key in the JSON document - * after first determining if keyed field exists. If it does - * not exist, return the JSON unmodified, otherwise return the updated JSON - * - * @param jsonStr String containing the JSON doc - * @param keys full key path to the value to be deleted in the format of "key1.key2.key3..." - * @return String containing the updated JSON doc - */ - public static String delJsonValue(String jsonStr, String keys) { + /** + * Formats the JSON String using the value of MSOJsonIndentFactor. + * + * @param jsonStr String containing the JSON doc + * @return String containing the formatted JSON doc + */ + public static String prettyJson(String jsonStr) { + try { + JSONObject jsonObj = new JSONObject(jsonStr); + return jsonObj.toString(MSOJsonIndentFactor); + } catch (Exception e) { + logger.debug("prettyJson(): unable to parse/format json input. Exception was: {}", e.toString(), e); + return null; + } + } - // only attempt to remove the key/value pair if it exists - if (jsonValueExists(jsonStr, keys)) { - // passing a null value results in a delete - return putJsonValue(jsonStr, keys, null); - } else { - logger.debug("delJsonValue(): JSON delete failed, no value exists for key={}", keys); - return jsonStr; - } - } + /** + * Returns an Iterator over the JSON keys in the specified JSON doc. + * + * @param jsonStr String containing the JSON doc + * @return Iterator over the JSON keys + * @throws JSONException if the doc cannot be parsed + */ + public static Iterator<String> getJsonIterator(String jsonStr) throws JSONException { + return new JSONObject(jsonStr).keys(); + } - /** - * Walks the JSON doc using the full key path to retrieve the associated - * value. All but the last key points to the 'parent' object name(s) in order - * in the JSON hierarchy with the last key pointing to the target value. - * The value returned is a Java object. - * - * @param jsonStr String containing the JSON doc - * @param keys full key path to the target value in the format of "key1.key2.key3..." - * @return Object field value associated with keys - */ - private static Object getJsonRawValue(String jsonStr, String keys) { - return getJsonRawValue(jsonStr, keys, false); - } + /** + * Returns the name of the "root" property in the specified JSON doc. The "root" property is the single top-level + * property in the JSON doc. An exception is thrown if the doc is empty or if it contains more than one top-level + * property. + * + * @param jsonStr String containing the JSON doc + * @return the name of the "root" property + * @throws JSONException if the doc cannot be parsed, or if it is empty, or if it contains more than one top-level + * property + */ + public static String getJsonRootProperty(String jsonStr) throws JSONException { + Iterator<String> iter = getJsonIterator(jsonStr); + + if (!iter.hasNext()) { + throw new JSONException("Empty JSON object"); + } + + String rootPropertyName = iter.next(); + + if (iter.hasNext()) { + throw new JSONException("JSON object has more than one root property"); + } + + return rootPropertyName; + } - /** - * Walks the JSON doc using the full key path to retrieve the associated - * value. All but the last key points to the 'parent' object name(s) in order - * in the JSON hierarchy with the last key pointing to the target value. - * The value returned is a Java object. - * - * @param jsonStr String containing the JSON doc - * @param keys full key path to the target value in the format of "key1.key2.key3..." - * @param wrap Boolean which determines if returned JSONObjects sould be "wrapped" - * Note: wrap does not apply to returned scalar values - * @return Object field value associated with keys - */ - private static Object getJsonRawValue(String jsonStr, String keys, Boolean wrap) { + /** + * Invokes the getJsonRawValue() method and returns the String equivalent of the object returned. + * + * TBD: May need separate methods for boolean, float, and integer fields if the String representation is not + * sufficient to meet client needs. + * + * @param jsonStr String containing the JSON doc + * @param keys full key path to the target value in the format of "key1.key2.key3..." + * @return String field value associated with keys + */ + public static String getJsonValue(String jsonStr, String keys) { + try { + Object rawValue = getJsonRawValue(jsonStr, keys); + if (rawValue == null) { + return null; + } else { + if (rawValue instanceof String) { + logger.debug("getJsonValue(): the raw value is a String Object={}", rawValue); + return (String) rawValue; + } else { + logger.debug("getJsonValue(): the raw value is NOT a String Object={}", rawValue.toString()); + return rawValue.toString(); + } + } + } catch (Exception e) { + logger.debug("getJsonValue(): unable to parse json to retrieve value for field={}. Exception was: {}", keys, + e.toString(), e); + } + return null; + } - String keyStr = ""; - try { - JSONObject jsonObj = new JSONObject(jsonStr); - StringTokenizer keyTokens = new StringTokenizer(keys, "."); - while (keyTokens.hasMoreElements()) { - keyStr = keyTokens.nextToken(); - Object keyValue = jsonObj.get(keyStr); - if (keyValue instanceof JSONObject) { - jsonObj = (JSONObject) keyValue; - } else { - if (keyTokens.hasMoreElements()) { - logger.debug("getJsonRawValue(): value found prior to last key for key={}", keyStr); - } - return keyValue; - } - } - // return the json 'node' that the key points to - // note: since this is a json object and not a scalar value, - // use the wrap flag to determine if the object should - // be wrapped with a root node value - // (the last key in the keys String) - if (wrap) { - JSONObject wrappedJsonObj = new JSONObject(); - wrappedJsonObj.put(keyStr, jsonObj); - return wrappedJsonObj.toString(); - } else { - return jsonObj.toString(); - } + /** + * Invokes the getJsonRawValue() method with the wrap flag set to true and returns the String equivalent of the json + * node object returned. + * + * @param jsonStr String containing the JSON doc + * @param keys full key path to the target value in the format of "key1.key2.key3..." + * @return String field value associated with keys + */ + public static String getJsonNodeValue(String jsonStr, String keys) { + try { + Object rawValue = getJsonRawValue(jsonStr, keys, true); + if (rawValue == null) { + return null; + } else { + if (rawValue instanceof String) { + logger.debug("getJsonNodeValue(): the raw value is a String Object={}", rawValue); + return (String) rawValue; + } else { + logger.debug("getJsonNodeValue(): the raw value is NOT a String Object={}", rawValue.toString()); + return rawValue.toString(); + } + } + } catch (Exception e) { + logger.debug("getJsonNodeValue(): unable to parse json to retrieve node for field={}. Exception was: {}", + keys, e.toString(), e); + } + return null; + } - } catch (Exception e) { - // JSONObject::get() throws a "not found" exception if one of the specified keys is not found - if (e.getMessage().contains("not found")) { - logger.debug("getJsonRawValue(): failed to retrieve param value for key={}: {}", keyStr, e.getMessage()); - } else { - logger.debug("getJsonRawValue(): unable to parse json to retrieve value for field={}. Exception was: {}", keys, - e.toString(), e); - } - } - return null; - } + /** + * Invokes the getJsonRawValue() method and returns the String equivalent of the object returned. + * + * TBD: May need separate methods for boolean, float, and integer fields if the String representation is not + * sufficient to meet client needs. + * + * @param jsonStr String containing the JSON doc + * @param keys full key path to the target value in the format of "key1.key2.key3..." + * @return String field value associated with keys + */ + public static int getJsonIntValue(String jsonStr, String keys) { + try { + Object rawValue = getJsonRawValue(jsonStr, keys); + if (rawValue == null) { + return 0; + } else { + if (rawValue instanceof Integer) { + logger.debug("getJsonIntValue(): the raw value is an Integer Object={}", + ((String) rawValue).toString()); + return (Integer) rawValue; + } else { + logger.debug("getJsonIntValue(): the raw value is NOT an Integer Object={}", rawValue.toString()); + return 0; + } + } + } catch (Exception e) { + logger.debug("getJsonIntValue(): unable to parse json to retrieve value for field={}. Exception was: {}", + keys, e.toString(), e); + } + return 0; + } - /** - * Private method invoked by the public add, update, and delete methods. - * - * @param jsonStr String containing the JSON doc - * @param keys full key path to the value to be deleted in the format of "key1.key2.key3..." - * @return String containing the updated JSON doc - */ - private static String putJsonValue(String jsonStr, String keys, String value) { + /** + * Invokes the getJsonRawValue() method and returns the boolean equivalent of the object returned. + * + * @param jsonStr String containing the JSON doc + * @param keys full key path to the target value in the format of "key1.key2.key3..." + * @return boolean field value associated with keys - default is false + */ + public static boolean getJsonBooleanValue(String jsonStr, String keys) { + try { + Object rawValue = getJsonRawValue(jsonStr, keys); + if (rawValue == null) { + return false; + } else { + if (rawValue instanceof Boolean) { + logger.debug("getJsonBooleanValue(): the raw value is a Boolean Object={}", rawValue); + return (Boolean) rawValue; + } else { + logger.debug("getJsonBooleanValue(): the raw value is NOT an Boolean Object={}", + rawValue.toString()); + return false; + } + } + } catch (Exception e) { + logger.debug( + "getJsonBooleanValue(): unable to parse json to retrieve value for field={}. Exception was: {}", + keys, e.toString(), e); + } + return false; + } - String keyStr = ""; - try { - JSONObject jsonObj = new JSONObject(jsonStr); - JSONObject jsonObjOut = jsonObj; - StringTokenizer keyTokens = new StringTokenizer(keys, "."); - while (keyTokens.hasMoreElements()) { - keyStr = keyTokens.nextToken(); - if (keyTokens.hasMoreElements()) { - Object keyValue = jsonObj.get(keyStr); - if (keyValue instanceof JSONObject) { - jsonObj = (JSONObject) keyValue; - } else { - logger.debug("putJsonValue(): key={} not the last key but points to non-json object: {}", keyStr, keyValue); - return null; - } - } else { // at the last/new key value - jsonObj.put(keyStr, value); - return jsonObjOut.toString(3); - } - } - // should not hit this point if the key points to a valid key value - return null; + /** + * Invokes the getJsonParamValue() method to obtain the JSONArray associated with the specified keys. The JSONArray + * is then walked to retrieve the first array value associated with the specified field name (index=0). + * + * @param jsonStr String containing the JSON doc + * @param keys full key path to the target value in the format of "key1.key2.key3..." + * @param name field name for the param to be retrieved + * @return String param value associated with field name + */ + public static String getJsonParamValue(String jsonStr, String keys, String name) { + return getJsonParamValue(jsonStr, keys, name, 0); + } - } catch (Exception e) { - // JSONObject::get() throws a "not found" exception if one of the specified keys is not found - if (e.getMessage().contains("not found")) { - logger.debug("putJsonValue(): failed to put param value for key={}: {}", keyStr, e.getMessage()); - } else { - logger.debug("putJsonValue(): unable to parse json to put value for key={}. Exception was: {}", keys, e.toString(), - e); - } - } - return null; - } + /** + * Invokes the getJsonRawValue() method to obtain the JSONArray associated with the specified keys. The JSONArray is + * then walked to retrieve the nth array value associated with the specified field name and index. + * + * @param jsonStr String containing the JSON doc + * @param keys full key path to the target value in the format of "key1.key2.key3..." + * @param name field name for the param to be retrieved + * @param index the nth param associated with name starting at 0 + * @return String param value associated with field name + */ + public static String getJsonParamValue(String jsonStr, String keys, String name, int index) { + try { + Object rawValue = getJsonRawValue(jsonStr, keys); + if (rawValue == null) { + return null; + } else { + if (rawValue instanceof JSONArray) { + logger.debug("getJsonParamValue(): keys={} points to JSONArray: {}", keys, rawValue.toString()); + int arrayLen = ((JSONArray) rawValue).length(); + if (index < 0 || arrayLen < index + 1) { + logger.debug("getJsonParamValue(): index: {} is out of bounds for array size of {}", index, + arrayLen); + return null; + } + int foundCnt = 0; + for (int i = 0; i < arrayLen; i++) { + logger.debug("getJsonParamValue(): index: {}, value: {}", i, + ((JSONArray) rawValue).get(i).toString()); + if (((JSONArray) rawValue).get(i) instanceof JSONObject) { + JSONObject jsonObj = (JSONObject) ((JSONArray) rawValue).get(i); + String parmValue = jsonObj.get(name).toString(); + if (parmValue != null) { + logger.debug("getJsonParamValue(): found value: {} for name: {} and index: {}", + parmValue, name, i); + if (foundCnt == index) { + return parmValue; + } else { + foundCnt++; + continue; + } + } else { + continue; + } + } else { + logger.debug("getJsonParamValue(): the JSONArray element is NOT a JSONObject={}", + rawValue.toString()); + return null; + } + } + logger.debug("getJsonParamValue(): content value NOT found for name: {}", name); + return null; + } else { + logger.debug("getJsonParamValue(): the raw value is NOT a JSONArray Object={}", + rawValue.toString()); + return null; + } + } + } catch (Exception e) { + if (e.getMessage().contains("not found")) { + logger.debug("getJsonParamValue(): failed to retrieve param value for keys:{}, name={} : {}", keys, + name, e.getMessage()); + } else { + logger.debug( + "getJsonParamValue(): unable to parse json to retrieve value for field={}. Exception was: {}", + keys, e.toString(), e); + } + } + return null; + } - /** - * This json util method converts a json array of Key Value - * pair objects into a Java Map. - * - * @param execution - * @param entryArray - the getJsonValue of a json Array of key/value pairs - * - * @return Map - a Map containing the entries - */ - public Map<String, String> jsonStringToMap(DelegateExecution execution, String entry) { - logger.debug("Started Json String To Map Method"); + /** + * Wrapper to generate the JSONObject to pass to the getJsonValueForKey(JSONObject, String) method so that recursion + * over the subobjects can be supported there + * + * @param jsonStr String containing the JSON doc + * @param key key to the target value + * @return String field value associated with key + */ + public static String getJsonValueForKey(String jsonStr, String key) { + + try { + JSONObject jsonObj = new JSONObject(jsonStr); + return getJsonValueForKey(jsonObj, key); + } catch (Exception e) { + logger.debug("getJsonValueForKey(): unable to parse json to retrieve value for field={}. Exception was: {}", + key, e.toString(), e); + } + return null; + } - Map<String, String> map = new HashMap<>(); + /** + * Walks the JSONObject (and sub-objects recursively), searching for the first value associated with the single + * key/field name specified. Returns the associated value if found or null if the key is not found + * + * @param jsonObj JSONObject representation of the the JSON doc + * @param key key to the target value + * @return String field value associated with key + */ + public static String getJsonValueForKey(JSONObject jsonObj, String key) { + + String keyValue = null; + try { + if (jsonObj.has(key)) { + Object value = jsonObj.get(key); + logger.debug("getJsonValueForKey(): found value={}, for key={}", (String) value, key); + if (value == null) { + return null; + } else { + return ((String) value); + } + } else { + Iterator<String> itr = jsonObj.keys(); + while (itr.hasNext()) { + String nextKey = itr.next(); + Object obj = jsonObj.get(nextKey); + if (obj instanceof JSONObject) { + keyValue = getJsonValueForKey((JSONObject) obj, key); + if (keyValue != null) { + break; + } + } else { + logger.debug("getJsonValueForKey(): key={}, does not point to a JSONObject, next key", nextKey); + } + } + } + } catch (Exception e) { + // JSONObject::get() throws a "not found" exception if one of the specified keys is not found + if (e.getMessage().contains("not found")) { + logger.debug("getJsonValueForKey(): failed to retrieve param value for key={}: {}", key, + e.getMessage()); + } else { + logger.debug( + "getJsonValueForKey(): unable to parse json to retrieve value for field={}. Exception was {}", + key, e.toString(), e); + } + keyValue = null; + } + return keyValue; + } - //Populate Map - JSONObject obj = new JSONObject(entry); + /** + * Walks the JSONObject (and sub-objects recursively), searching for the first value associated with the single + * key/field name specified. Returns the associated value if found or null if the key is not found + * + * @param jsonObj JSONObject representation of the the JSON doc + * @param key key to the target value + * @return String field value associated with key + */ + public static Integer getJsonIntValueForKey(JSONObject jsonObj, String key) { + Integer keyValue = null; + try { + if (jsonObj.has(key)) { + Integer value = (Integer) jsonObj.get(key); + logger.debug("getJsonIntValueForKey(): found value={}, for key={}", value, key); + return value; + } else { + Iterator<String> itr = jsonObj.keys(); + while (itr.hasNext()) { + String nextKey = itr.next(); + Object obj = jsonObj.get(nextKey); + if (obj instanceof JSONObject) { + keyValue = getJsonIntValueForKey((JSONObject) obj, key); + if (keyValue != null) { + break; + } + } else { + logger.debug("getJsonIntValueForKey(): key={}, does not point to a JSONObject, next key", + nextKey); + } + } + } + } catch (Exception e) { + // JSONObject::get() throws a "not found" exception if one of the specified keys is not found + if (e.getMessage().contains("not found")) { + logger.debug("getJsonIntValueForKey(): failed to retrieve param value for key={}: {}", key, + e.getMessage()); + } else { + logger.debug( + "getJsonIntValueForKey(): unable to parse json to retrieve value for field={}. Exception was: {}", + key, e.toString(), e); + } + keyValue = null; + } + return keyValue; + } - /* Wildfly is pushing a version of org.json which does not - * auto cast to string. Leaving it as an object prevents - * a method not found exception at runtime. - */ - final Iterator<String> keys = obj.keys(); - while (keys.hasNext()) { - final String key = keys.next(); - map.put(key, obj.getString(key)); - } - logger.debug("Outgoing Map is: {}", map); - logger.debug("Completed Json String To Map Method"); - return map; - } + /** + * Walks the JSONObject (and sub-objects recursively), searching for the first value associated with the single + * key/field name specified. Returns the associated value if found or null if the key is not found + * + * @param jsonObj JSONObject representation of the the JSON doc + * @param key key to the target value + * @return String field value associated with key + */ + public static Boolean getJsonBooleanValueForKey(JSONObject jsonObj, String key) { + Boolean keyValue = null; + try { + if (jsonObj.has(key)) { + Boolean value = (Boolean) jsonObj.get(key); + logger.debug("getJsonBooleanValueForKey(): found value={}, for key={}", value, key); + return value; + } else { + Iterator<String> itr = jsonObj.keys(); + while (itr.hasNext()) { + String nextKey = itr.next(); + Object obj = jsonObj.get(nextKey); + if (obj instanceof JSONObject) { + keyValue = getJsonBooleanValueForKey((JSONObject) obj, key); + if (keyValue != null) { + break; + } + } else { + logger.debug("getJsonBooleanValueForKey(): key={}, does not point to a JSONObject, next key", + nextKey); + } + } + } + } catch (Exception e) { + // JSONObject::get() throws a "not found" exception if one of the specified keys is not found + if (e.getMessage().contains("not found")) { + logger.debug("getJsonBooleanValueForKey(): failed to retrieve param value for key={}: {}", key, + e.getMessage()); + } else { + logger.debug( + "getJsonBooleanValueForKey(): unable to parse json to retrieve value for field={}. Exception was: {}", + key, e.toString(), e); + } + keyValue = null; + } + return keyValue; + } - /** - * This json util method converts a json array of Key Value - * pair objects into a Java Map. - * - * @param execution - * @param entryArray - the getJsonValue of a json Array of key/value pairs - * @param keyNode - the name of the node that represents the key - * @param valueNode - the name of the node that represents the value - * @return Map - a Map containing the entries - * - */ - public Map<String, String> entryArrayToMap(DelegateExecution execution, String entryArray, String keyNode, String valueNode) { - logger.debug("Started Entry Array To Map Util Method"); + /** + * Boolean method to determine if a key path is valid for the JSON doc. Invokes getJsonValue(). + * + * @param jsonStr String containing the JSON doc + * @param keys full key path to the target value in the format of "key1.key2.key3..." + * @return Boolean true if keys points to value in the JSON doc + */ + public static Boolean jsonValueExists(String jsonStr, String keys) { + if (getJsonRawValue(jsonStr, keys) == null) { + return false; + } else { + return true; + } + } - Map<String, String> map = new HashMap<>(); - //Populate Map - String entryListJson = "{ \"wrapper\":" + entryArray + "}"; - JSONObject obj = new JSONObject(entryListJson); - JSONArray arr = obj.getJSONArray("wrapper"); - for (int i = 0; i < arr.length(); i++){ - JSONObject jo = arr.getJSONObject(i); - String key = jo.getString(keyNode); - String value = jo.get(valueNode).toString(); - map.put(key, value); - } - logger.debug("Completed Entry Array To Map Util Method"); - return map; - } + /** + * Inserts the new key/value pair at the appropriate location in the JSON document after first determining if keyed + * field already exists. If it does exist, return the JSON unmodified, otherwise return the new JSON Note: this + * method currently only supports String value inserts. + * + * @param jsonStr String containing the JSON doc + * @param keys full key path to the value to be added in the format of "key1.key2.key3..." + * @return String containing the updated JSON doc + */ + public static String addJsonValue(String jsonStr, String keys, String value) { + + // only attempt to insert the key/value pair if it does not exist + if (!jsonValueExists(jsonStr, keys)) { + return putJsonValue(jsonStr, keys, value); + } else { + logger.debug("addJsonValue(): JSON add failed, key={}/value={} already exists", keys, value); + return jsonStr; + } + } - /** - * This json util method converts a json array of Key Value pair objects into a Java Map. - * - * @param entryArray - the json Array of key/value pairs objects - * @param keyNode - the name of the node that represents the key - * @param valueNode - the name of the node that represents the value - * @return Map - a Map containing the entries - * @author cb645j - * - */ - public Map<String, String> entryArrayToMap(String entryArray, String keyNode, String valueNode){ - logger.debug("Started Entry Array To Map Util Method"); + /** + * Updates the value for the specified key in the JSON document after first determining if keyed field exists. If it + * does not exist, return the JSON unmodified, otherwise return the updated JSON. Note: this method currently only + * supports String value updates. + * + * @param jsonStr String containing the JSON doc + * @param keys full key path to the value to be updated in the format of "key1.key2.key3..." + * @return String containing the updated JSON doc + */ + public static String updJsonValue(String jsonStr, String keys, String newValue) { + // only attempt to modify the key/value pair if it exists + if (jsonValueExists(jsonStr, keys)) { + return putJsonValue(jsonStr, keys, newValue); + } else { + logger.debug("updJsonValue(): JSON update failed, no value exists for key={}", keys); + return jsonStr; + } + } - Map<String, String> map = new HashMap<>(); - String entryListJson = "{ \"wrapper\":" + entryArray + "}"; - JSONObject obj = new JSONObject(entryListJson); // TODO just put in json array - JSONArray arr = obj.getJSONArray("wrapper"); - for(int i = 0; i < arr.length(); i++){ - JSONObject jo = arr.getJSONObject(i); - String key = jo.getString(keyNode); - String value = jo.get(valueNode).toString(); - map.put(key, value); - } - logger.debug("Completed Entry Array To Map Util Method"); - return map; - } + /** + * Deletes the value for the specified key in the JSON document after first determining if keyed field exists. If it + * does not exist, return the JSON unmodified, otherwise return the updated JSON + * + * @param jsonStr String containing the JSON doc + * @param keys full key path to the value to be deleted in the format of "key1.key2.key3..." + * @return String containing the updated JSON doc + */ + public static String delJsonValue(String jsonStr, String keys) { + + // only attempt to remove the key/value pair if it exists + if (jsonValueExists(jsonStr, keys)) { + // passing a null value results in a delete + return putJsonValue(jsonStr, keys, null); + } else { + logger.debug("delJsonValue(): JSON delete failed, no value exists for key={}", keys); + return jsonStr; + } + } - /** - * This json util method converts a json Array of Strings to a Java List. It takes each - * String in the json Array and puts it in a Java List<String>. - * - * @param execution - * @param jsonArray - string value of a json array - * @return List - a java list containing the strings - * - * @author cb645j - */ - public List<String> StringArrayToList(Execution execution, String jsonArray){ - logger.debug("Started String Array To List Util Method"); + /** + * Walks the JSON doc using the full key path to retrieve the associated value. All but the last key points to the + * 'parent' object name(s) in order in the JSON hierarchy with the last key pointing to the target value. The value + * returned is a Java object. + * + * @param jsonStr String containing the JSON doc + * @param keys full key path to the target value in the format of "key1.key2.key3..." + * @return Object field value associated with keys + */ + private static Object getJsonRawValue(String jsonStr, String keys) { + return getJsonRawValue(jsonStr, keys, false); + } - List<String> list = new ArrayList<>(); - // Populate List - // TODO - String stringListJson = "{ \"strings\":" + jsonArray + "}"; - JSONObject obj = new JSONObject(stringListJson); - JSONArray arr = obj.getJSONArray("strings"); - for(int i = 0; i < arr.length(); i++){ - String s = arr.get(i).toString(); - list.add(s); - } - logger.debug("Outgoing List is: {}", list); - logger.debug("Completed String Array To List Util Method"); - return list; - } + /** + * Walks the JSON doc using the full key path to retrieve the associated value. All but the last key points to the + * 'parent' object name(s) in order in the JSON hierarchy with the last key pointing to the target value. The value + * returned is a Java object. + * + * @param jsonStr String containing the JSON doc + * @param keys full key path to the target value in the format of "key1.key2.key3..." + * @param wrap Boolean which determines if returned JSONObjects sould be "wrapped" Note: wrap does not apply to + * returned scalar values + * @return Object field value associated with keys + */ + private static Object getJsonRawValue(String jsonStr, String keys, Boolean wrap) { + + String keyStr = ""; + try { + JSONObject jsonObj = new JSONObject(jsonStr); + StringTokenizer keyTokens = new StringTokenizer(keys, "."); + while (keyTokens.hasMoreElements()) { + keyStr = keyTokens.nextToken(); + Object keyValue = jsonObj.get(keyStr); + if (keyValue instanceof JSONObject) { + jsonObj = (JSONObject) keyValue; + } else { + if (keyTokens.hasMoreElements()) { + logger.debug("getJsonRawValue(): value found prior to last key for key={}", keyStr); + } + return keyValue; + } + } + // return the json 'node' that the key points to + // note: since this is a json object and not a scalar value, + // use the wrap flag to determine if the object should + // be wrapped with a root node value + // (the last key in the keys String) + if (wrap) { + JSONObject wrappedJsonObj = new JSONObject(); + wrappedJsonObj.put(keyStr, jsonObj); + return wrappedJsonObj.toString(); + } else { + return jsonObj.toString(); + } + + } catch (Exception e) { + // JSONObject::get() throws a "not found" exception if one of the specified keys is not found + if (e.getMessage().contains("not found")) { + logger.debug("getJsonRawValue(): failed to retrieve param value for key={}: {}", keyStr, + e.getMessage()); + } else { + logger.debug( + "getJsonRawValue(): unable to parse json to retrieve value for field={}. Exception was: {}", + keys, e.toString(), e); + } + } + return null; + } - /** - * This json util method converts a json Array of Strings to a Java List. It takes each - * String in the json Array and puts it in a Java List<String>. - * - * @param jsonArray - string value of a json array - * @return List - a java list containing the strings - * - * @author cb645j - */ - public List<String> StringArrayToList(String jsonArray){ - logger.debug("Started Json Util String Array To List"); - List<String> list = new ArrayList<>(); + /** + * Private method invoked by the public add, update, and delete methods. + * + * @param jsonStr String containing the JSON doc + * @param keys full key path to the value to be deleted in the format of "key1.key2.key3..." + * @return String containing the updated JSON doc + */ + private static String putJsonValue(String jsonStr, String keys, String value) { + + String keyStr = ""; + try { + JSONObject jsonObj = new JSONObject(jsonStr); + JSONObject jsonObjOut = jsonObj; + StringTokenizer keyTokens = new StringTokenizer(keys, "."); + while (keyTokens.hasMoreElements()) { + keyStr = keyTokens.nextToken(); + if (keyTokens.hasMoreElements()) { + Object keyValue = jsonObj.get(keyStr); + if (keyValue instanceof JSONObject) { + jsonObj = (JSONObject) keyValue; + } else { + logger.debug("putJsonValue(): key={} not the last key but points to non-json object: {}", + keyStr, keyValue); + return null; + } + } else { // at the last/new key value + jsonObj.put(keyStr, value); + return jsonObjOut.toString(3); + } + } + // should not hit this point if the key points to a valid key value + return null; + + } catch (Exception e) { + // JSONObject::get() throws a "not found" exception if one of the specified keys is not found + if (e.getMessage().contains("not found")) { + logger.debug("putJsonValue(): failed to put param value for key={}: {}", keyStr, e.getMessage()); + } else { + logger.debug("putJsonValue(): unable to parse json to put value for key={}. Exception was: {}", keys, + e.toString(), e); + } + } + return null; + } - JSONArray arr = new JSONArray(jsonArray); - for(int i = 0; i < arr.length(); i++){ - String s = arr.get(i).toString(); - list.add(s); - } - logger.debug("Completed Json Util String Array To List"); - return list; - } + /** + * This json util method converts a json array of Key Value pair objects into a Java Map. + * + * @param execution + * @param entryArray - the getJsonValue of a json Array of key/value pairs + * + * @return Map - a Map containing the entries + */ + public Map<String, String> jsonStringToMap(DelegateExecution execution, String entry) { + logger.debug("Started Json String To Map Method"); + + Map<String, String> map = new HashMap<>(); + + // Populate Map + JSONObject obj = new JSONObject(entry); + + /* + * Wildfly is pushing a version of org.json which does not auto cast to string. Leaving it as an object prevents + * a method not found exception at runtime. + */ + final Iterator<String> keys = obj.keys(); + while (keys.hasNext()) { + final String key = keys.next(); + map.put(key, obj.getString(key)); + } + logger.debug("Outgoing Map is: {}", map); + logger.debug("Completed Json String To Map Method"); + return map; + } - /** - * This json util method converts a json Array of Strings to a Java List. It takes each - * String in the json Array and puts it in a Java List<String>. - * - * @param jsonArray - json array - * @return List - a java list containing the strings - * - * @author cb645j - */ - public List<String> StringArrayToList(JSONArray jsonArray){ - logger.debug("Started Json Util String Array To List"); - List<String> list = new ArrayList<>(); + /** + * This json util method converts a json array of Key Value pair objects into a Java Map. + * + * @param execution + * @param entryArray - the getJsonValue of a json Array of key/value pairs + * @param keyNode - the name of the node that represents the key + * @param valueNode - the name of the node that represents the value + * @return Map - a Map containing the entries + * + */ + public Map<String, String> entryArrayToMap(DelegateExecution execution, String entryArray, String keyNode, + String valueNode) { + logger.debug("Started Entry Array To Map Util Method"); + + Map<String, String> map = new HashMap<>(); + // Populate Map + String entryListJson = "{ \"wrapper\":" + entryArray + "}"; + JSONObject obj = new JSONObject(entryListJson); + JSONArray arr = obj.getJSONArray("wrapper"); + for (int i = 0; i < arr.length(); i++) { + JSONObject jo = arr.getJSONObject(i); + String key = jo.getString(keyNode); + String value = jo.get(valueNode).toString(); + map.put(key, value); + } + logger.debug("Completed Entry Array To Map Util Method"); + return map; + } - for(int i = 0; i < jsonArray.length(); i++){ - String s = jsonArray.get(i).toString(); - list.add(s); - } - logger.debug("Completed Json Util String Array To List"); - return list; - } + /** + * This json util method converts a json array of Key Value pair objects into a Java Map. + * + * @param entryArray - the json Array of key/value pairs objects + * @param keyNode - the name of the node that represents the key + * @param valueNode - the name of the node that represents the value + * @return Map - a Map containing the entries + * @author cb645j + * + */ + public Map<String, String> entryArrayToMap(String entryArray, String keyNode, String valueNode) { + logger.debug("Started Entry Array To Map Util Method"); + + Map<String, String> map = new HashMap<>(); + String entryListJson = "{ \"wrapper\":" + entryArray + "}"; + JSONObject obj = new JSONObject(entryListJson); // TODO just put in json array + JSONArray arr = obj.getJSONArray("wrapper"); + for (int i = 0; i < arr.length(); i++) { + JSONObject jo = arr.getJSONObject(i); + String key = jo.getString(keyNode); + String value = jo.get(valueNode).toString(); + map.put(key, value); + } + logger.debug("Completed Entry Array To Map Util Method"); + return map; + } - /** - * - * Invokes the getJsonRawValue() method to determine if the json element/variable exist. - * Returns true if the json element exist - * - * @param jsonStr - String containing the JSON doc - * @param keys - full key path to the target value in the format of "key1.key2.key3..." - * @return boolean field value associated with keys - * - */ - public static boolean jsonElementExist(String jsonStr, String keys){ + /** + * This json util method converts a json Array of Strings to a Java List. It takes each String in the json Array and + * puts it in a Java List<String>. + * + * @param execution + * @param jsonArray - string value of a json array + * @return List - a java list containing the strings + * + * @author cb645j + */ + public List<String> StringArrayToList(Execution execution, String jsonArray) { + logger.debug("Started String Array To List Util Method"); + + List<String> list = new ArrayList<>(); + // Populate List + // TODO + String stringListJson = "{ \"strings\":" + jsonArray + "}"; + JSONObject obj = new JSONObject(stringListJson); + JSONArray arr = obj.getJSONArray("strings"); + for (int i = 0; i < arr.length(); i++) { + String s = arr.get(i).toString(); + list.add(s); + } + logger.debug("Outgoing List is: {}", list); + logger.debug("Completed String Array To List Util Method"); + return list; + } - try{ - Object rawValue = getJsonRawValue(jsonStr, keys); + /** + * This json util method converts a json Array of Strings to a Java List. It takes each String in the json Array and + * puts it in a Java List<String>. + * + * @param jsonArray - string value of a json array + * @return List - a java list containing the strings + * + * @author cb645j + */ + public List<String> StringArrayToList(String jsonArray) { + logger.debug("Started Json Util String Array To List"); + List<String> list = new ArrayList<>(); + + JSONArray arr = new JSONArray(jsonArray); + for (int i = 0; i < arr.length(); i++) { + String s = arr.get(i).toString(); + list.add(s); + } + logger.debug("Completed Json Util String Array To List"); + return list; + } - return !(rawValue == null); + /** + * This json util method converts a json Array of Strings to a Java List. It takes each String in the json Array and + * puts it in a Java List<String>. + * + * @param jsonArray - json array + * @return List - a java list containing the strings + * + * @author cb645j + */ + public List<String> StringArrayToList(JSONArray jsonArray) { + logger.debug("Started Json Util String Array To List"); + List<String> list = new ArrayList<>(); + + for (int i = 0; i < jsonArray.length(); i++) { + String s = jsonArray.get(i).toString(); + list.add(s); + } + logger.debug("Completed Json Util String Array To List"); + return list; + } - } catch(Exception e){ - logger.debug("jsonElementExist(): unable to determine if json element exist. Exception is: {}", e.toString(), e); - } - return true; - } + /** + * + * Invokes the getJsonRawValue() method to determine if the json element/variable exist. Returns true if the json + * element exist + * + * @param jsonStr - String containing the JSON doc + * @param keys - full key path to the target value in the format of "key1.key2.key3..." + * @return boolean field value associated with keys + * + */ + public static boolean jsonElementExist(String jsonStr, String keys) { + + try { + Object rawValue = getJsonRawValue(jsonStr, keys); + + return !(rawValue == null); + + } catch (Exception e) { + logger.debug("jsonElementExist(): unable to determine if json element exist. Exception is: {}", + e.toString(), e); + } + return true; + } - /** - * - * Validates the JSON document against a schema file. - * - * @param jsonStr String containing the JSON doc - * @param jsonSchemaPath full path to a valid JSON schema file - * - */ + /** + * + * Validates the JSON document against a schema file. + * + * @param jsonStr String containing the JSON doc + * @param jsonSchemaPath full path to a valid JSON schema file + * + */ public static String jsonSchemaValidation(String jsonStr, String jsonSchemaPath) throws ValidationException { - try { - logger.debug("JSON document to be validated: {}", jsonStr); - JsonNode document = JsonLoader.fromString(jsonStr); - JsonNode schema = JsonLoader.fromPath(jsonSchemaPath); - - JsonSchemaFactory factory = JsonSchemaFactory.byDefault(); - JsonValidator validator = factory.getValidator(); - - ProcessingReport report = validator.validate(schema, document); - logger.debug("JSON schema validation report: {}", report.toString()); - return report.toString(); - } catch (IOException e) { - logger.debug("IOException performing JSON schema validation on document: {}", e.toString()); - throw new ValidationException(e.getMessage()); - } catch (ProcessingException e) { - logger.debug("ProcessingException performing JSON schema validation on document: {}", e.toString()); - throw new ValidationException(e.getMessage()); - } + try { + logger.debug("JSON document to be validated: {}", jsonStr); + JsonNode document = JsonLoader.fromString(jsonStr); + JsonNode schema = JsonLoader.fromPath(jsonSchemaPath); + + JsonSchemaFactory factory = JsonSchemaFactory.byDefault(); + JsonValidator validator = factory.getValidator(); + + ProcessingReport report = validator.validate(schema, document); + logger.debug("JSON schema validation report: {}", report.toString()); + return report.toString(); + } catch (IOException e) { + logger.debug("IOException performing JSON schema validation on document: {}", e.toString()); + throw new ValidationException(e.getMessage()); + } catch (ProcessingException e) { + logger.debug("ProcessingException performing JSON schema validation on document: {}", e.toString()); + throw new ValidationException(e.getMessage()); + } } } diff --git a/bpmn/MSOCoreBPMN/src/main/java/org/onap/so/bpmn/core/xml/XmlTool.java b/bpmn/MSOCoreBPMN/src/main/java/org/onap/so/bpmn/core/xml/XmlTool.java index 6c8070f9bd..da096e5461 100644 --- a/bpmn/MSOCoreBPMN/src/main/java/org/onap/so/bpmn/core/xml/XmlTool.java +++ b/bpmn/MSOCoreBPMN/src/main/java/org/onap/so/bpmn/core/xml/XmlTool.java @@ -32,7 +32,6 @@ import java.io.StringWriter; import java.util.HashMap; import java.util.Map; import java.util.Optional; - import javax.xml.XMLConstants; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; @@ -49,7 +48,6 @@ import javax.xml.xpath.XPath; import javax.xml.xpath.XPathConstants; import javax.xml.xpath.XPathExpressionException; import javax.xml.xpath.XPathFactory; - import org.apache.commons.lang3.StringEscapeUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -64,193 +62,194 @@ import org.xml.sax.SAXException; */ public final class XmlTool { - private static final Map<String, Integer> ENTITIES = new HashMap<>(); - private static final Logger logger = LoggerFactory.getLogger(XmlTool.class); - static { - ENTITIES.put("amp", 38); - ENTITIES.put("quot", 34); - ENTITIES.put("lt", 60); - ENTITIES.put("gt", 62); - } + private static final Map<String, Integer> ENTITIES = new HashMap<>(); + private static final Logger logger = LoggerFactory.getLogger(XmlTool.class); + static { + ENTITIES.put("amp", 38); + ENTITIES.put("quot", 34); + ENTITIES.put("lt", 60); + ENTITIES.put("gt", 62); + } - /** + /** * Instantiation is not allowed. */ - private XmlTool() { + private XmlTool() {} + + /** + * Normalizes and formats XML. This method consolidates and moves all namespace declarations to the root element. + * The result will not have an XML prolog or a trailing newline. + * + * @param xml the XML to normalize + * @throws IOException + * @throws TransformerException + * @throws ParserConfigurationException + * @throws SAXException + * @throws XPathExpressionException + */ + public static String normalize(Object xml) throws IOException, TransformerException, ParserConfigurationException, + SAXException, XPathExpressionException { + + if (xml == null) { + return null; + } + + Source xsltSource = new StreamSource(new StringReader(readResourceFile("normalize-namespaces.xsl"))); + + DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance(); + dbFactory.setNamespaceAware(true); + dbFactory.setFeature("http://xml.org/sax/features/external-general-entities", false); + dbFactory.setFeature("http://xml.org/sax/features/external-parameter-entities", false); + DocumentBuilder db = dbFactory.newDocumentBuilder(); + InputSource source = new InputSource(new StringReader(String.valueOf(xml))); + Document doc = db.parse(source); + + // Start of code to remove whitespace outside of tags + XPath xPath = XPathFactory.newInstance().newXPath(); + NodeList nodeList = (NodeList) xPath.evaluate("//text()[normalize-space()='']", doc, XPathConstants.NODESET); + + for (int i = 0; i < nodeList.getLength(); ++i) { + Node node = nodeList.item(i); + node.getParentNode().removeChild(node); + } + // End of code to remove whitespace outside of tags + + // the factory pattern supports different XSLT processors + TransformerFactory transformerFactory = TransformerFactory.newInstance(); + transformerFactory.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, true); + Transformer transformer = transformerFactory.newTransformer(xsltSource); + + transformer.setOutputProperty(OutputKeys.INDENT, "yes"); + transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes"); + transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8"); + transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "2"); + + StringWriter writer = new StringWriter(); + transformer.transform(new DOMSource(doc), new StreamResult(writer)); + return writer.toString().trim(); } - - /** - * Normalizes and formats XML. This method consolidates and moves all namespace - * declarations to the root element. The result will not have an XML prolog or - * a trailing newline. - * @param xml the XML to normalize - * @throws IOException - * @throws TransformerException - * @throws ParserConfigurationException - * @throws SAXException - * @throws XPathExpressionException - */ - public static String normalize(Object xml) throws IOException, TransformerException, - ParserConfigurationException, SAXException, XPathExpressionException { - - if (xml == null) { - return null; - } - - Source xsltSource = new StreamSource(new StringReader( - readResourceFile("normalize-namespaces.xsl"))); - - DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance(); - dbFactory.setNamespaceAware(true); - dbFactory.setFeature("http://xml.org/sax/features/external-general-entities", false); - dbFactory.setFeature("http://xml.org/sax/features/external-parameter-entities", false); - DocumentBuilder db = dbFactory.newDocumentBuilder(); - InputSource source = new InputSource(new StringReader(String.valueOf(xml))); - Document doc = db.parse(source); - - // Start of code to remove whitespace outside of tags - XPath xPath = XPathFactory.newInstance().newXPath(); - NodeList nodeList = (NodeList) xPath.evaluate( - "//text()[normalize-space()='']", doc, XPathConstants.NODESET); - - for (int i = 0; i < nodeList.getLength(); ++i) { - Node node = nodeList.item(i); - node.getParentNode().removeChild(node); - } - // End of code to remove whitespace outside of tags - - // the factory pattern supports different XSLT processors - TransformerFactory transformerFactory = TransformerFactory.newInstance(); - transformerFactory.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, true); - Transformer transformer = transformerFactory.newTransformer(xsltSource); - - transformer.setOutputProperty(OutputKeys.INDENT, "yes"); - transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes"); - transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8"); - transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "2"); - - StringWriter writer = new StringWriter(); - transformer.transform(new DOMSource(doc), new StreamResult(writer)); - return writer.toString().trim(); - } - - /** - * Encodes a value so it can be used inside an XML text element. - * @param value the string to encode - * @return the encoded string - */ - public static String encode(Object value) { - if (value == null) { - return null; - } - return StringEscapeUtils.escapeXml11(value.toString()); - } - - /** - * Removes the preamble, if present, from an XML document. - * @param xml the XML document - * @return a possibly modified document - */ - public static String removePreamble(Object xml) { - if (xml == null) { - return null; - } - - return String.valueOf(xml).replaceAll("(<\\?[^<]*\\?>\\s*[\\r\\n]*)?", ""); - } - /** - * Removes namespaces and namespace declarations from an XML document. - * @param xml the XML document - * @return a possibly modified document - */ - public static String removeNamespaces(Object xml) { - if (xml == null) { - logger.debug("removeNamespaces input object is null , returning null"); - return null; - } - - String text = String.valueOf(xml); - - // remove xmlns declaration - text = text.replaceAll("xmlns.*?(\"|\').*?(\"|\')", ""); - // remove opening tag prefix - text = text.replaceAll("(<)(\\w+:)(.*?>)", "$1$3"); - // remove closing tags prefix - text = text.replaceAll("(</)(\\w+:)(.*?>)", "$1$3"); - // remove extra spaces left when xmlns declarations are removed - text = text.replaceAll("\\s+>", ">"); - - return text; - } + /** + * Encodes a value so it can be used inside an XML text element. + * + * @param value the string to encode + * @return the encoded string + */ + public static String encode(Object value) { + if (value == null) { + return null; + } + return StringEscapeUtils.escapeXml11(value.toString()); + } + /** + * Removes the preamble, if present, from an XML document. + * + * @param xml the XML document + * @return a possibly modified document + */ + public static String removePreamble(Object xml) { + if (xml == null) { + return null; + } - /** - * Reads the specified resource file and return the contents as a string. - * @param file Name of the resource file - * @return the contents of the resource file as a String - * @throws IOException if there is a problem reading the file - */ - private static String readResourceFile(String file) throws IOException { + return String.valueOf(xml).replaceAll("(<\\?[^<]*\\?>\\s*[\\r\\n]*)?", ""); + } - try (InputStream stream = XmlTool.class.getClassLoader().getResourceAsStream(file); - Reader reader = new InputStreamReader(stream, "UTF-8")) { + /** + * Removes namespaces and namespace declarations from an XML document. + * + * @param xml the XML document + * @return a possibly modified document + */ + public static String removeNamespaces(Object xml) { + if (xml == null) { + logger.debug("removeNamespaces input object is null , returning null"); + return null; + } + + String text = String.valueOf(xml); + + // remove xmlns declaration + text = text.replaceAll("xmlns.*?(\"|\').*?(\"|\')", ""); + // remove opening tag prefix + text = text.replaceAll("(<)(\\w+:)(.*?>)", "$1$3"); + // remove closing tags prefix + text = text.replaceAll("(</)(\\w+:)(.*?>)", "$1$3"); + // remove extra spaces left when xmlns declarations are removed + text = text.replaceAll("\\s+>", ">"); + + return text; + } - StringBuilder out = new StringBuilder(); - char[] buf = new char[1024]; - int n; - while ((n = reader.read(buf)) >= 0) { - out.append(buf, 0, n); - } - return out.toString(); - } catch (Exception e) { - logger.debug("Exception at readResourceFile stream: " + e); - return null; - } - } - - /** - * Parses the XML document String for the first occurrence of the specified element tag. - * If found, the value associated with that element tag is replaced with the new value - * and a String containing the modified XML document is returned. If the XML passed is - * null or the element tag is not found in the document, null will be returned. - * @param xml String containing the original XML document. - * @param elementTag String containing the tag of the element to be modified. - * @param newValue String containing the new value to be used to modify the corresponding element. - * @return the contents of the modified XML document as a String or null/empty if the modification failed. - * @throws IOException, TransformerException, ParserConfigurationException, SAXException - */ - public static Optional<String> modifyElement(String xml, String elementTag, String newValue) throws IOException, TransformerException, - ParserConfigurationException, SAXException { + /** + * Reads the specified resource file and return the contents as a string. + * + * @param file Name of the resource file + * @return the contents of the resource file as a String + * @throws IOException if there is a problem reading the file + */ + private static String readResourceFile(String file) throws IOException { + + try (InputStream stream = XmlTool.class.getClassLoader().getResourceAsStream(file); + Reader reader = new InputStreamReader(stream, "UTF-8")) { + + StringBuilder out = new StringBuilder(); + char[] buf = new char[1024]; + int n; + + while ((n = reader.read(buf)) >= 0) { + out.append(buf, 0, n); + } + return out.toString(); + } catch (Exception e) { + logger.debug("Exception at readResourceFile stream: " + e); + return null; + } + } - if (xml == null || xml.isEmpty()) { - // no XML content to be modified, return empty - return Optional.empty(); - } - - DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance(); - dbFactory.setNamespaceAware(true); - dbFactory.setFeature("http://xml.org/sax/features/external-general-entities", false); - dbFactory.setFeature("http://xml.org/sax/features/external-parameter-entities", false); - DocumentBuilder db = dbFactory.newDocumentBuilder(); - InputSource source = new InputSource(new StringReader(xml)); - Document doc = db.parse(source); - - Node modNode = doc.getElementsByTagName(elementTag).item(0); - if (modNode == null) { - // did not find the specified element to be modified, return empty - //System.out.println("Did not find element tag " + elementTag + " in XML"); - return Optional.empty(); - } else { - modNode.setTextContent(newValue); - } - - TransformerFactory transformerFactory = TransformerFactory.newInstance(); - Transformer transformer = transformerFactory.newTransformer(); - StringWriter writer = new StringWriter(); - transformer.transform(new DOMSource(doc), new StreamResult(writer)); - // return the modified String representation of the XML - return Optional.of(writer.toString().trim()); - } + /** + * Parses the XML document String for the first occurrence of the specified element tag. If found, the value + * associated with that element tag is replaced with the new value and a String containing the modified XML document + * is returned. If the XML passed is null or the element tag is not found in the document, null will be returned. + * + * @param xml String containing the original XML document. + * @param elementTag String containing the tag of the element to be modified. + * @param newValue String containing the new value to be used to modify the corresponding element. + * @return the contents of the modified XML document as a String or null/empty if the modification failed. + * @throws IOException, TransformerException, ParserConfigurationException, SAXException + */ + public static Optional<String> modifyElement(String xml, String elementTag, String newValue) + throws IOException, TransformerException, ParserConfigurationException, SAXException { + + if (xml == null || xml.isEmpty()) { + // no XML content to be modified, return empty + return Optional.empty(); + } + + DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance(); + dbFactory.setNamespaceAware(true); + dbFactory.setFeature("http://xml.org/sax/features/external-general-entities", false); + dbFactory.setFeature("http://xml.org/sax/features/external-parameter-entities", false); + DocumentBuilder db = dbFactory.newDocumentBuilder(); + InputSource source = new InputSource(new StringReader(xml)); + Document doc = db.parse(source); + + Node modNode = doc.getElementsByTagName(elementTag).item(0); + if (modNode == null) { + // did not find the specified element to be modified, return empty + // System.out.println("Did not find element tag " + elementTag + " in XML"); + return Optional.empty(); + } else { + modNode.setTextContent(newValue); + } + + TransformerFactory transformerFactory = TransformerFactory.newInstance(); + Transformer transformer = transformerFactory.newTransformer(); + StringWriter writer = new StringWriter(); + transformer.transform(new DOMSource(doc), new StreamResult(writer)); + // return the modified String representation of the XML + return Optional.of(writer.toString().trim()); + } } |