From 62cd6aaaf74aa91ee0037c0e155c8e7284f07567 Mon Sep 17 00:00:00 2001 From: Arthur Martella Date: Fri, 8 Sep 2017 13:27:46 -0400 Subject: 1710 Rebase - Second Attempt This commit rebases changes from openecomp-mso/internal-staging-1710 up to and including this codecloud commit: 54483fc6606ddb1591a2e9da61bff8712325f924 Wed Sep 6 18:12:56 2017 -0400 Rebasing was done on a branch on top of this commit in so/master in ONAP: 93fbdfbe46104f8859d4754040f979cb7997c157 Thu Sep 7 16:42:59 2017 +0000 Change-Id: I4ad9abf40da32bf5bdca43e868b8fa2dbcd9dc59 Issue-id: SO-107 Signed-off-by: Arthur Martella --- .../java/org/openecomp/mso/bpmn/core/BaseTask.java | 25 +- .../mso/bpmn/core/HealthCheckHandler.java | 64 ++-- .../openecomp/mso/bpmn/core/ReadConfigTask.java | 27 +- .../org/openecomp/mso/bpmn/core/ReadFileTask.java | 36 +- .../openecomp/mso/bpmn/core/XQueryScriptTask.java | 31 +- .../bpmn/core/decomposition/AllottedResource.java | 38 -- .../bpmn/core/decomposition/HomingSolution.java | 49 --- .../mso/bpmn/core/decomposition/InstanceData.java | 37 -- .../mso/bpmn/core/decomposition/JsonWrapper.java | 140 ------- .../mso/bpmn/core/decomposition/ModelInfo.java | 101 ----- .../bpmn/core/decomposition/ModuleResource.java | 60 --- .../bpmn/core/decomposition/NetworkResource.java | 42 --- .../core/decomposition/ResourceDecomposition.java | 70 ---- .../core/decomposition/ServiceDecomposition.java | 159 -------- .../core/decomposition/ServiceInstanceData.java | 23 -- .../mso/bpmn/core/decomposition/VnfResource.java | 91 ----- .../mso/bpmn/core/domain/AllottedResource.java | 78 ++++ .../mso/bpmn/core/domain/HomingSolution.java | 110 ++++++ .../mso/bpmn/core/domain/InventoryType.java | 17 + .../mso/bpmn/core/domain/JsonWrapper.java | 134 +++++++ .../openecomp/mso/bpmn/core/domain/ModelInfo.java | 70 ++++ .../mso/bpmn/core/domain/ModuleResource.java | 60 +++ .../mso/bpmn/core/domain/NetworkResource.java | 58 +++ .../openecomp/mso/bpmn/core/domain/Resource.java | 105 ++++++ .../bpmn/core/domain/ResourceDecomposition.java | 66 ++++ .../mso/bpmn/core/domain/ResourceInstance.java | 42 +++ .../mso/bpmn/core/domain/ResourceType.java | 6 + .../mso/bpmn/core/domain/ServiceDecomposition.java | 414 +++++++++++++++++++++ .../mso/bpmn/core/domain/ServiceInstance.java | 30 ++ .../openecomp/mso/bpmn/core/domain/Subscriber.java | 49 +++ .../mso/bpmn/core/domain/VnfResource.java | 134 +++++++ .../mso/bpmn/core/json/DecomposeJsonUtil.java | 148 ++++++++ .../openecomp/mso/bpmn/core/json/JsonUtils.java | 215 +++++++++-- .../openecomp/mso/bpmn/core/json/JsonWrapper.java | 125 +++++++ .../mso/bpmn/core/mybatis/URNMapping.java | 2 +- .../org/openecomp/mso/bpmn/core/xml/XmlTool.java | 44 +++ 36 files changed, 1985 insertions(+), 915 deletions(-) delete mode 100644 bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/decomposition/AllottedResource.java delete mode 100644 bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/decomposition/HomingSolution.java delete mode 100644 bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/decomposition/InstanceData.java delete mode 100644 bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/decomposition/JsonWrapper.java delete mode 100644 bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/decomposition/ModelInfo.java delete mode 100644 bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/decomposition/ModuleResource.java delete mode 100644 bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/decomposition/NetworkResource.java delete mode 100644 bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/decomposition/ResourceDecomposition.java delete mode 100644 bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/decomposition/ServiceDecomposition.java delete mode 100644 bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/decomposition/ServiceInstanceData.java delete mode 100644 bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/decomposition/VnfResource.java create mode 100644 bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/domain/AllottedResource.java create mode 100644 bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/domain/HomingSolution.java create mode 100644 bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/domain/InventoryType.java create mode 100644 bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/domain/JsonWrapper.java create mode 100644 bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/domain/ModelInfo.java create mode 100644 bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/domain/ModuleResource.java create mode 100644 bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/domain/NetworkResource.java create mode 100644 bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/domain/Resource.java create mode 100644 bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/domain/ResourceDecomposition.java create mode 100644 bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/domain/ResourceInstance.java create mode 100644 bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/domain/ResourceType.java create mode 100644 bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/domain/ServiceDecomposition.java create mode 100644 bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/domain/ServiceInstance.java create mode 100644 bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/domain/Subscriber.java create mode 100644 bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/domain/VnfResource.java create mode 100644 bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/json/DecomposeJsonUtil.java create mode 100644 bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/json/JsonWrapper.java (limited to 'bpmn/MSOCoreBPMN/src/main/java') diff --git a/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/BaseTask.java b/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/BaseTask.java index 5b43c3fc07..dea2fa7c5e 100644 --- a/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/BaseTask.java +++ b/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/BaseTask.java @@ -20,9 +20,6 @@ package org.openecomp.mso.bpmn.core; -import java.util.Objects; - -import org.camunda.bpm.engine.ProcessEngineException; import org.camunda.bpm.engine.delegate.DelegateExecution; import org.camunda.bpm.engine.delegate.Expression; import org.camunda.bpm.engine.delegate.JavaDelegate; @@ -30,7 +27,7 @@ import org.camunda.bpm.engine.delegate.JavaDelegate; /** * Base class for service tasks. */ -public abstract class BaseTask implements JavaDelegate { +public class BaseTask implements JavaDelegate { /** * Get the value of a required field. This method throws @@ -188,7 +185,13 @@ public abstract class BaseTask implements JavaDelegate { protected String getOptionalStringField(Expression expression, DelegateExecution execution, String fieldName) { Object o = getFieldImpl(expression, execution, fieldName, true); - return Objects.toString(o, null); + if (o instanceof String) { + return (String) o; + } else if (o == null) { + return null; + } else { + return o.toString(); + } } /** @@ -524,14 +527,6 @@ public abstract class BaseTask implements JavaDelegate { return getClass().getSimpleName(); } - - /** - * Check if shouldFail variable is set to true. - * @param execution - * @return - */ - protected boolean shouldFail(DelegateExecution execution) { - Boolean shouldFail = (Boolean) execution.getVariable("shouldFail"); - return shouldFail != null && shouldFail; - } + @Override + public void execute(DelegateExecution execution) throws Exception { } } diff --git a/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/HealthCheckHandler.java b/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/HealthCheckHandler.java index 409297c927..40ef11d347 100644 --- a/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/HealthCheckHandler.java +++ b/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/HealthCheckHandler.java @@ -20,28 +20,12 @@ package org.openecomp.mso.bpmn.core; -import org.apache.http.client.config.RequestConfig; -import org.apache.http.impl.client.CloseableHttpClient; -import org.apache.http.impl.client.HttpClientBuilder; -import org.apache.http.HttpResponse; -import org.apache.http.HttpStatus; -import org.apache.http.HttpEntity; -import org.apache.http.client.methods.HttpPost; -import org.apache.http.entity.StringEntity; - import java.io.BufferedReader; -import java.io.InputStream; import java.io.InputStreamReader; import java.util.Base64; import java.util.Map; -import java.util.Properties; import java.util.UUID; -import org.openecomp.mso.logger.MsoLogger; -import org.openecomp.mso.utils.UUIDChecker; -import org.openecomp.mso.HealthCheckUtils; -import org.openecomp.mso.logger.MessageEnum; -import org.openecomp.mso.utils.CryptoUtils; import javax.ws.rs.GET; import javax.ws.rs.HEAD; import javax.ws.rs.Path; @@ -49,19 +33,32 @@ import javax.ws.rs.Produces; import javax.ws.rs.QueryParam; import javax.ws.rs.core.Response; +import org.apache.http.HttpEntity; +import org.apache.http.HttpResponse; +import org.apache.http.HttpStatus; +import org.apache.http.client.config.RequestConfig; +import org.apache.http.client.methods.HttpPost; +import org.apache.http.entity.StringEntity; +import org.apache.http.impl.client.CloseableHttpClient; +import org.apache.http.impl.client.HttpClientBuilder; import org.camunda.bpm.engine.ProcessEngines; +import org.openecomp.mso.HealthCheckUtils; +import org.openecomp.mso.logger.MessageEnum; +import org.openecomp.mso.logger.MsoLogger; +import org.openecomp.mso.utils.CryptoUtils; +import org.openecomp.mso.utils.UUIDChecker; @Path("/") public class HealthCheckHandler { private static MsoLogger msoLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.BPEL); private static final String SITENAME = "mso.sitename"; - private static final String ADPTER_ENDPOINT = "mso.adapters.db.endpoint"; + private static final String ADPTER_ENDPOINT = "mso.openecomp.adapters.db.endpoint"; + private static final String OPENECOMP_ADAPTER_NAMESPACE = "mso.openecomp.adapter.namespace"; private static final String CONFIG = "mso.bpmn.urn.properties"; - private static final String PENGINE_PROPERTY = "processengine.properties"; - private static final String PENGINE_PARAM = "processEngineName"; private static final String CREDENTIAL = "mso.adapters.db.auth"; private static final String MSOKEY = "mso.msoKey"; + private String healthcheckDebugEnabled = "mso.healthcheck.log.debug"; private static final String CHECK_HTML = "Health CheckApplication ready"; private static final String NOT_FOUND = "Application Not StartedApplication not started. Properties file missing or invalid or database Connection failed"; @@ -106,7 +103,7 @@ public class HealthCheckHandler { } try { - if (!this.getSiteStatus (endpoint, siteName, props.get(CREDENTIAL), props.get(MSOKEY))) { + if (!this.getSiteStatus (endpoint, siteName, props.get(CREDENTIAL), props.get(MSOKEY), props.get(OPENECOMP_ADAPTER_NAMESPACE))) { msoLogger.debug("This site is currently disabled for maintenance."); return HEALTH_CHECK_NOK_RESPONSE; } @@ -158,7 +155,7 @@ public class HealthCheckHandler { } try { - if (!this.getSiteStatus (endpoint, siteName, props.get(CREDENTIAL), props.get(MSOKEY))) { + if (!this.getSiteStatus (endpoint, siteName, props.get(CREDENTIAL), props.get(MSOKEY), props.get(OPENECOMP_ADAPTER_NAMESPACE))) { msoLogger.debug("This site is currently disabled for maintenance."); return HEALTH_CHECK_NOK_RESPONSE; } @@ -171,13 +168,7 @@ public class HealthCheckHandler { } try { - InputStream stream = Thread.currentThread().getContextClassLoader().getResourceAsStream(PENGINE_PROPERTY); - Properties prop = new Properties(); - prop.load(stream); - String [] engineNames = prop.getProperty(PENGINE_PARAM).split(","); - for (String engine : engineNames) { - ProcessEngines.getProcessEngine(engine).getIdentityService().createGroupQuery().list(); - } + ProcessEngines.getDefaultProcessEngine().getIdentityService().createGroupQuery().list(); } catch (final Exception e) { msoLogger.error(MessageEnum.GENERAL_EXCEPTION_ARG, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception while verifying Camunda engine", e); @@ -224,7 +215,7 @@ public class HealthCheckHandler { return null; } - private boolean getSiteStatus (String url, String site, String credential, String key) throws Exception { + private boolean getSiteStatus (String url, String site, String credential, String key, String adapterNamespace) throws Exception { // set the connection timeout value to 30 seconds (30000 milliseconds) RequestConfig.Builder requestBuilder = RequestConfig.custom(); requestBuilder = requestBuilder.setConnectTimeout(30000); @@ -238,12 +229,15 @@ public class HealthCheckHandler { if (cred != null && !cred.isEmpty()) { post.setHeader("Authorization", "Basic " + Base64.getEncoder().encodeToString(cred.getBytes())); } - msoLogger.debug("Post url is: " + url); + if(healthcheckDebugEnabled == null){ + healthcheckDebugEnabled = "false"; + } + BPMNLogger.debug(healthcheckDebugEnabled, "Post url is: " + url); //now create a soap request message as follows: final StringBuffer payload = new StringBuffer(); payload.append("\n"); - payload.append("\n"); + payload.append("\n"); payload.append("\n"); payload.append("\n"); payload.append("\n"); @@ -252,14 +246,14 @@ public class HealthCheckHandler { payload.append("\n"); payload.append("\n"); - msoLogger.debug ("Initialize SOAP request to url:" + url); - msoLogger.debug ("The payload of the request is:" + payload); + BPMNLogger.debug(healthcheckDebugEnabled, "Initialize SOAP request to url:" + url); + BPMNLogger.debug(healthcheckDebugEnabled, "The payload of the request is:" + payload); HttpEntity entity = new StringEntity(payload.toString(),"UTF-8"); post.setEntity(entity); CloseableHttpClient client = builder.build (); HttpResponse response = client.execute(post); - msoLogger.debug("Response received is:" + response); + BPMNLogger.debug(healthcheckDebugEnabled, "Response received is:" + response); int statusCode = response.getStatusLine().getStatusCode(); if (statusCode != 200) { @@ -278,7 +272,7 @@ public class HealthCheckHandler { while ((line = rd.readLine()) != null) { result.append(line); } - msoLogger.debug("Content of the response is:" + result); + BPMNLogger.debug(healthcheckDebugEnabled, "Content of the response is:" + result); String status = result.substring(result.indexOf("") + 8, result.indexOf("")); client.close (); //shut down the connection diff --git a/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/ReadConfigTask.java b/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/ReadConfigTask.java index 09288f0cff..b46ffcd7f7 100644 --- a/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/ReadConfigTask.java +++ b/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/ReadConfigTask.java @@ -27,6 +27,7 @@ import java.util.Properties; import org.camunda.bpm.engine.ProcessEngineException; import org.camunda.bpm.engine.delegate.DelegateExecution; import org.camunda.bpm.engine.delegate.Expression; + import org.openecomp.mso.logger.MsoLogger; /** @@ -56,20 +57,38 @@ public class ReadConfigTask extends BaseTask { msoLogger.debug("propertiesFile = " + thePropertiesFile); } - if (shouldFail(execution)) { - throw new ProcessEngineException(getTaskName() + " Failed"); - } + Boolean shouldFail = (Boolean) execution.getVariable("shouldFail"); + + if (shouldFail != null && shouldFail) { + throw new ProcessEngineException(getClass().getSimpleName() + " Failed"); + } synchronized (ReadConfigTask.class) { if (properties == null) { properties = new Properties(); - try(InputStream stream = getClass().getResourceAsStream(thePropertiesFile)) { + InputStream stream = null; + + try { + stream = getClass().getResourceAsStream(thePropertiesFile); + if (stream == null) { throw new IOException("Resource not found: " + thePropertiesFile); } properties.load(stream); + + stream.close(); + stream = null; + + } finally { + if (stream != null) { + try { + stream.close(); + } catch (Exception e) { + // Do nothing + } + } } } } diff --git a/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/ReadFileTask.java b/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/ReadFileTask.java index 3adba195ea..389fdc0518 100644 --- a/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/ReadFileTask.java +++ b/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/ReadFileTask.java @@ -24,11 +24,11 @@ import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; -import java.util.stream.Collectors; import org.camunda.bpm.engine.ProcessEngineException; import org.camunda.bpm.engine.delegate.DelegateExecution; import org.camunda.bpm.engine.delegate.Expression; + import org.openecomp.mso.logger.MsoLogger; /** @@ -66,21 +66,45 @@ public class ReadFileTask extends BaseTask { + "file = " + theFile); } - if (shouldFail(execution)) { - throw new ProcessEngineException(getTaskName() + " Failed"); - } + Boolean shouldFail = (Boolean) execution.getVariable("shouldFail"); + + if (shouldFail != null && shouldFail) { + throw new ProcessEngineException(getClass().getSimpleName() + " Failed"); + } Object value = execution.getVariable(theInputVariable); if (value == null) { - try(InputStream xmlStream = getClass().getResourceAsStream(theFile)) { + InputStream xmlStream = null; + + try { + xmlStream = getClass().getResourceAsStream(theFile); if (xmlStream == null) { throw new IOException("Resource not found: " + theFile); } BufferedReader reader = new BufferedReader(new InputStreamReader(xmlStream)); - value = reader.lines().collect(Collectors.joining()); + StringBuilder output = new StringBuilder(); + String line; + + while ((line = reader.readLine()) != null) { + output.append(line); + } + + xmlStream.close(); + xmlStream = null; + + value = output.toString(); + + } finally { + if (xmlStream != null) { + try { + xmlStream.close(); + } catch (Exception e) { + // Do nothing + } + } } } execution.setVariable(theInputVariable, value); diff --git a/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/XQueryScriptTask.java b/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/XQueryScriptTask.java index e42806e95e..31da7376be 100644 --- a/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/XQueryScriptTask.java +++ b/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/XQueryScriptTask.java @@ -25,6 +25,7 @@ import java.io.IOException; import java.io.InputStream; import java.math.BigDecimal; import java.net.URI; +import java.util.Iterator; import javax.xml.transform.stream.StreamSource; @@ -32,6 +33,7 @@ import org.camunda.bpm.engine.ProcessEngineException; import org.camunda.bpm.engine.delegate.DelegateExecution; //import java.util.logging.Logger; import org.camunda.bpm.engine.delegate.Expression; + import org.openecomp.mso.logger.MessageEnum; import org.openecomp.mso.logger.MsoLogger; @@ -95,9 +97,11 @@ public class XQueryScriptTask extends BaseTask { String[] atomicInputVariableArray = (theAtomicInputVariables == null) ? new String[0] : theAtomicInputVariables.split(",[ ]*"); - if (shouldFail(execution)) { - throw new ProcessEngineException(getTaskName() + " Failed"); - } + Boolean shouldFail = (Boolean) execution.getVariable("shouldFail"); + + if (shouldFail != null && shouldFail) { + throw new ProcessEngineException(getClass().getSimpleName() + " Failed"); + } // The script could be compiled once and reused, but we are reading it // and compiling it every time. @@ -186,7 +190,9 @@ public class XQueryScriptTask extends BaseTask { // Evaluate the query and collect the output. StringBuilder output = new StringBuilder(); - for(XdmItem item : evaluator) { + Iterator xdmItems = evaluator.iterator(); + while (xdmItems.hasNext()) { + XdmItem item = xdmItems.next(); if (msoLogger.isDebugEnabled()) { msoLogger.debug("XQuery result item = " + item); @@ -212,13 +218,26 @@ public class XQueryScriptTask extends BaseTask { */ private XQueryExecutable compile(XQueryCompiler compiler, String resource) throws Exception { - try(InputStream xqStream = getClass().getResourceAsStream(resource)) { + InputStream xqStream = null; + try { + xqStream = getClass().getResourceAsStream(resource); if (xqStream == null) { throw new IOException("Resource not found: " + resource); } - return compiler.compile(xqStream); + XQueryExecutable executable = compiler.compile(xqStream); + xqStream.close(); + xqStream = null; + return executable; + } finally { + if (xqStream != null) { + try { + xqStream.close(); + } catch (Exception e) { + // Do nothing + } + } } } } \ No newline at end of file diff --git a/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/decomposition/AllottedResource.java b/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/decomposition/AllottedResource.java deleted file mode 100644 index c7d2ed9583..0000000000 --- a/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/decomposition/AllottedResource.java +++ /dev/null @@ -1,38 +0,0 @@ -package org.openecomp.mso.bpmn.core.decomposition; - -import org.codehaus.jackson.map.annotate.JsonRootName; - -@JsonRootName("allottedResource") -public class AllottedResource extends ResourceDecomposition { - - private static final long serialVersionUID = 1L; - - /* - * set resourceType for this object - */ - public AllottedResource(){ - resourceType = "allottedResource"; - } - - /* - * fields specific to VNF resource type - */ - private String allottedResourceType; - private String allottedResourceRole; - - /* - * 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; - } -} diff --git a/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/decomposition/HomingSolution.java b/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/decomposition/HomingSolution.java deleted file mode 100644 index f6c1ad917f..0000000000 --- a/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/decomposition/HomingSolution.java +++ /dev/null @@ -1,49 +0,0 @@ -package org.openecomp.mso.bpmn.core.decomposition; - -import java.io.Serializable; -import java.util.List; - -public class HomingSolution extends JsonWrapper implements Serializable { - - private static final long serialVersionUID = 1L; - - private String infraServiceInstanceId; - private String aicCloudRegionId; - private String ucpeId; - private List entitlementPool; - private List entitlementKeyGroup; - - /* - * GET && SET - */ - public String getInfraServiceInstanceId() { - return infraServiceInstanceId; - } - public void setInfraServiceInstanceId(String infraServiceInstanceId) { - this.infraServiceInstanceId = infraServiceInstanceId; - } - public String getAicCloudRegionId() { - return aicCloudRegionId; - } - public void setAicCloudRegionId(String aicCloudRegionId) { - this.aicCloudRegionId = aicCloudRegionId; - } - public String getUcpeId() { - return ucpeId; - } - public void setUcpeId(String ucpeId) { - this.ucpeId = ucpeId; - } - public List getEntitlementPool() { - return entitlementPool; - } - public void setEntitlementPool(List entitlementPool) { - this.entitlementPool = entitlementPool; - } - public List getEntitlementKeyGroup() { - return entitlementKeyGroup; - } - public void setEntitlementKeyGroup(List entitlementKeyGroup) { - this.entitlementKeyGroup = entitlementKeyGroup; - } -} diff --git a/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/decomposition/InstanceData.java b/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/decomposition/InstanceData.java deleted file mode 100644 index 13e9f9ac00..0000000000 --- a/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/decomposition/InstanceData.java +++ /dev/null @@ -1,37 +0,0 @@ -package org.openecomp.mso.bpmn.core.decomposition; - -import java.io.Serializable; - -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; - -@JsonIgnoreProperties -public class InstanceData extends JsonWrapper implements Serializable { - - private static final long serialVersionUID = 1L; - - private String instanceId; - private String instanceName; - private HomingSolution homingSolution; - - /* - * GET && SET - */ - 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 HomingSolution getHomingSolution() { - return homingSolution; - } - public void setHomingSolution(HomingSolution homingSolution) { - this.homingSolution = homingSolution; - } -} diff --git a/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/decomposition/JsonWrapper.java b/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/decomposition/JsonWrapper.java deleted file mode 100644 index dcc6852c4e..0000000000 --- a/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/decomposition/JsonWrapper.java +++ /dev/null @@ -1,140 +0,0 @@ -package org.openecomp.mso.bpmn.core.decomposition; - -import java.io.IOException; -import java.util.List; - -import org.codehaus.jackson.JsonGenerationException; -import org.codehaus.jackson.JsonParseException; -import org.codehaus.jackson.map.JsonMappingException; -import org.codehaus.jackson.map.ObjectMapper; -import org.codehaus.jackson.map.ObjectWriter; -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.databind.DeserializationFeature; - - -//import org.codehaus.jackson.map.SerializationConfig.Feature; -import org.codehaus.jackson.map.DeserializationConfig.Feature; -import org.codehaus.jackson.map.annotate.JsonSerialize; - -/** - * Wrapper encapsulates needed JSON functionality - * to be extended by MSO service decomposition objects - * providing ways to convert to and from JSON - * - * @author - * - */ -@JsonInclude(Include.NON_NULL) -public abstract class JsonWrapper { - - @JsonInclude(Include.NON_NULL) - public String toJsonString(){ - - - - String jsonString = ""; - //convert with Jackson - ObjectMapper mapper = new ObjectMapper(); - mapper.enable(org.codehaus.jackson.map.SerializationConfig.Feature.WRAP_ROOT_VALUE); - - mapper.setSerializationInclusion(JsonSerialize.Inclusion.NON_NULL); - - ObjectWriter ow = mapper.writer().withDefaultPrettyPrinter(); - try { - jsonString = ow.writeValueAsString(this); - } catch (JsonGenerationException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } catch (JsonMappingException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } catch (IOException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - return jsonString; - } - - @JsonInclude(Include.NON_NULL) - public JSONObject toJsonObject(){ - - ObjectMapper mapper = new ObjectMapper(); - // mapper.configure(SerializationConfig.Feature.WRAP_ROOT_VALUE, true); - //mapper.enable(SerializationFeature.WRAP_ROOT_VALUE); - - mapper.enable(org.codehaus.jackson.map.SerializationConfig.Feature.WRAP_ROOT_VALUE); - // mapper.enable(org.codehaus.jackson.map.DeserializationConfig.Feature.UNWRAP_ROOT_VALUE); - JSONObject json = new JSONObject(); - try { - json = new JSONObject(mapper.writeValueAsString(this)); - } catch (JsonGenerationException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } catch (JsonMappingException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } catch (JSONException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } catch (IOException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - return json; - } - - public String listToJson(List list) { - ObjectMapper mapper = new ObjectMapper(); - mapper.enable(org.codehaus.jackson.map.SerializationConfig.Feature.WRAP_ROOT_VALUE); - - String jsonString = ""; - try { - jsonString = mapper.writeValueAsString(list); - } catch (JsonGenerationException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } catch (JsonMappingException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } catch (IOException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - - return jsonString; - } - - /** - * Method to construct Service Decomposition object converting - * JSON structure - * - * @param jsonString - input in JSON format confirming ServiceDecomposition - * @return - ServiceDecomposition object - */ - public ServiceDecomposition JsonToServiceDecomposition(String jsonString) { - - ServiceDecomposition serviceDecomposition = new ServiceDecomposition(); - ObjectMapper om = new ObjectMapper(); - om.configure(Feature.UNWRAP_ROOT_VALUE, true); - - try { - serviceDecomposition = om.readValue(jsonString, ServiceDecomposition.class); - } catch (JsonParseException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } catch (JsonMappingException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } catch (IOException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - - return serviceDecomposition; - } - -} diff --git a/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/decomposition/ModelInfo.java b/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/decomposition/ModelInfo.java deleted file mode 100644 index ecbb076d80..0000000000 --- a/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/decomposition/ModelInfo.java +++ /dev/null @@ -1,101 +0,0 @@ -package org.openecomp.mso.bpmn.core.decomposition; - -import java.io.Serializable; - -import org.codehaus.jackson.map.annotate.JsonRootName; - -@JsonRootName("modelInfo") -public class ModelInfo extends JsonWrapper implements Serializable { - - /** - * - */ - private static final long serialVersionUID = 1L; - - private String modelName = ""; - private String modelUuid = ""; - private String modelInvariantId = ""; - private String modelVersion = ""; - //additionally on resource level - private String modelCustomizationUuid = ""; - private String modelInstanceName = ""; - - //TODO - those were present in original "modelInfo" object structure. Confirm. - private String modelCustomizationName = ""; - private String modelVersionId = ""; - private String modelType = ""; - - 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 getModelInvariantId() { - return modelInvariantId; - } - public void setModelInvariantId(String modelInvariantId) { - this.modelInvariantId = modelInvariantId; - } - 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 getModelInstanceName() { - return modelInstanceName; - } - public void setModelInstanceName(String modelInstanceName) { - this.modelInstanceName = modelInstanceName; - } - public String getModelCustomizationName() { - return modelCustomizationName; - } - public void setModelCustomizationName(String modelCustomizationName) { - this.modelCustomizationName = modelCustomizationName; - } - public String getModelVersionId() { - return modelVersionId; - } - public void setModelVersionId(String modelVersionId) { - this.modelVersionId = modelVersionId; - } - public String getModelType() { - return modelType; - } - public void setModelType(String modelType) { - this.modelType = modelType; - } - - //TODO add convenience methods - - - //TODO - complete this manual - public String toString(){ - - String jsonString = ""; - - //can try building manually - jsonString = "{" + - "\"modelName\":\"" + getModelName() + "\"," + - "\"modelUuid\":\"" + getModelUuid() + "\"" + - "\"modelInvariantId\":\"" + getModelInvariantId() + "\"" + - "}"; - - - return jsonString; - } -} diff --git a/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/decomposition/ModuleResource.java b/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/decomposition/ModuleResource.java deleted file mode 100644 index 1c91f4e600..0000000000 --- a/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/decomposition/ModuleResource.java +++ /dev/null @@ -1,60 +0,0 @@ -package org.openecomp.mso.bpmn.core.decomposition; - -import org.codehaus.jackson.map.annotate.JsonRootName; - -@JsonRootName("vfModule") -public class ModuleResource extends ResourceDecomposition { - - private static final long serialVersionUID = 1L; - - /* - * set resourceType for this object - */ - public ModuleResource(){ - resourceType = "module"; - } - - /* - * fields specific to VF Module resource type - */ - private String vfModuleType; - private boolean hasVolumeGroup; - private boolean isBase; - private String vfModuleLabel; - private int initialCount; - - /* - * GET && SET - */ - 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/openecomp/mso/bpmn/core/decomposition/NetworkResource.java b/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/decomposition/NetworkResource.java deleted file mode 100644 index 16d1010633..0000000000 --- a/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/decomposition/NetworkResource.java +++ /dev/null @@ -1,42 +0,0 @@ -package org.openecomp.mso.bpmn.core.decomposition; - -import org.codehaus.jackson.map.annotate.JsonRootName; - - -/** - * Encapsulates Network resource data set - * @author - * - */ -@JsonRootName("networkResource") -public class NetworkResource extends ResourceDecomposition { - - private static final long serialVersionUID = 1L; - /* - * set resourceType for this object - */ - public NetworkResource(){ - resourceType = "networkResource"; - } - /* - * fields specific to VNF resource type - */ - private String networkType; - private String networkRole; - - /* - * 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; - } -} diff --git a/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/decomposition/ResourceDecomposition.java b/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/decomposition/ResourceDecomposition.java deleted file mode 100644 index ba01c8fc44..0000000000 --- a/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/decomposition/ResourceDecomposition.java +++ /dev/null @@ -1,70 +0,0 @@ -package org.openecomp.mso.bpmn.core.decomposition; - -import java.io.Serializable; - -import org.codehaus.jackson.annotate.JsonIgnore; -import org.codehaus.jackson.annotate.JsonIgnoreProperties; -import org.codehaus.jackson.map.annotate.JsonRootName; - -/** - * Abstract superclass for all individual decomposition resources - * - * @author - * - */ -//@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 InstanceData instanceData = new InstanceData(); - - // GET and SET - public ModelInfo getModelInfo() { - return modelInfo; - } - public void setModelInfo(ModelInfo modelInfo) { - this.modelInfo = modelInfo; - } - - public InstanceData getInstanceData() { - return instanceData; - } - public void setInstanceData(InstanceData 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/openecomp/mso/bpmn/core/decomposition/ServiceDecomposition.java b/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/decomposition/ServiceDecomposition.java deleted file mode 100644 index 00ba091677..0000000000 --- a/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/decomposition/ServiceDecomposition.java +++ /dev/null @@ -1,159 +0,0 @@ -package org.openecomp.mso.bpmn.core.decomposition; - - -import java.io.Serializable; -import java.util.ArrayList; -import java.util.List; -import org.codehaus.jackson.annotate.JsonIgnore; -import org.codehaus.jackson.map.annotate.JsonRootName; -import com.fasterxml.jackson.annotation.JsonProperty; - -import org.json.JSONObject; - - - -/** - * Service Decomposition Structure - * This Java object contains service information: - * - Service model info - * - 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) -public class ServiceDecomposition extends JsonWrapper implements Serializable { - - private static final long serialVersionUID = 1L; - - @JsonProperty("modelInfo") - private ModelInfo modelInfo; - private ServiceInstanceData serviceInstanceData; - @JsonProperty("vnfResource") - private List vnfResources; - @JsonProperty("networkResource") - private List networkResources; - @JsonProperty("allottedResource") - private List allottedResources; - - public ServiceDecomposition () { - super(); - } - - public ServiceDecomposition (ModelInfo modelInfo, ServiceInstanceData serviceInstanceData, List vnfResources, List networkResources, List allottedResources ) { - //TODO provide constructor implementation -// this.modelInfo = modelInfo; -// this.serviceInstanceData = serviceInstanceData; -// this.vnfResources = vnfResources; -// this.networkResources = networkResources; -// this.allottedResources = allottedResources; - - } - - public ServiceDecomposition (String catalogRestOutput, String serviceInstanceId) { - //TODO provide constructor implementation - - this.modelInfo = this.JsonToServiceDecomposition(catalogRestOutput).getModelInfo(); - this.vnfResources = this.JsonToServiceDecomposition(catalogRestOutput).getServiceVnfs(); - this.allottedResources = this.JsonToServiceDecomposition(catalogRestOutput).getServiceAllottedResources(); - this.networkResources = this.JsonToServiceDecomposition(catalogRestOutput).getServiceNetworks(); - this.serviceInstanceData = new ServiceInstanceData(); - this.serviceInstanceData.setInstanceId(serviceInstanceId); - } - public ServiceDecomposition (JSONObject catalogRestOutput, String serviceInstanceId) { - //TODO provide constructor implementation - } - //GET and SET - public ModelInfo getModelInfo() { - return modelInfo; - } - public void setModelInfo(ModelInfo modelInfo) { - this.modelInfo = modelInfo; - } - public ServiceInstanceData getServiceInstanceData() { - return serviceInstanceData; - } - public void setServiceInstanceData(ServiceInstanceData serviceInstanceData) { - this.serviceInstanceData = serviceInstanceData; - } - public List getServiceVnfs() { - return vnfResources; - } - public void setServiceVnfs(List vnfResources) { - this.vnfResources = vnfResources; - } - public List getServiceNetworks() { - return networkResources; - } - public void setServiceNetworks(List networkResources) { - this.networkResources = networkResources; - } - public List getServiceAllottedResources() { - return allottedResources; - } - public void setServiceAllottedResources(List allottedResources) { - this.allottedResources = allottedResources; - } - - // methods to add to the list - public void addVnfResource(VnfResource vnfResource) { - if (vnfResources == null){ - vnfResources = new ArrayList(); - } - this.vnfResources.add(vnfResource); - } - public void addNetworkResource(NetworkResource networkResource) { - if (networkResources == null){ - networkResources = new ArrayList(); - } - this.networkResources.add(networkResource); - } - public void addAllottedResource(AllottedResource allottedResource) { - if (allottedResources == null){ - allottedResources = new ArrayList(); - } - this.allottedResources.add(allottedResource); - } - -// //TODO - IF NEEDED, update below methods to return one resource decomposition by (?) ID, not index - used temporarily -// public VnfResource getnfResource(int index) { -// -//// Iterator iter = vnfResources.iterator(); -//// while (iter.hasNext()) { -//// VnfResource vnfResource = iter.next(); -//// vnfResource.getModelInfo().getModelInvariantId(); -//// } -// return this.vnfResources.get(index); -// } -// public NetworkResource getNetworkResource( int index) { -// return this.networkResources.get(index); -// } -// public AllottedResource getAllottedResource(int index) { -// return this.allottedResources.get(index); -// } - - @JsonIgnore - public List getServiceResources(){ - ArrayList serviceResources = new ArrayList(); - serviceResources.addAll(this.getServiceNetworks()); - serviceResources.addAll(this.getServiceVnfs()); - serviceResources.addAll(this.getServiceAllottedResources()); - return serviceResources; - } - - @JsonIgnore - public String getServiceResourcesJsonString(){ - StringBuffer serviceResourcesJsonStringBuffer = new StringBuffer(); - serviceResourcesJsonStringBuffer.append(listToJson((this.getServiceNetworks()))); - serviceResourcesJsonStringBuffer.append(listToJson((this.getServiceVnfs()))); - serviceResourcesJsonStringBuffer.append(listToJson((this.getServiceAllottedResources()))); - return serviceResourcesJsonStringBuffer.toString(); - } - - //return String representation of JSON - @Override - public String toString(){ - return "string representation"; - } - -} diff --git a/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/decomposition/ServiceInstanceData.java b/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/decomposition/ServiceInstanceData.java deleted file mode 100644 index 9b7393d742..0000000000 --- a/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/decomposition/ServiceInstanceData.java +++ /dev/null @@ -1,23 +0,0 @@ -package org.openecomp.mso.bpmn.core.decomposition; - -import java.io.Serializable; - -public class ServiceInstanceData extends JsonWrapper implements Serializable { - - private static final long serialVersionUID = 1L; - private String instanceId; - private String instanceName; - - 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; - } -} diff --git a/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/decomposition/VnfResource.java b/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/decomposition/VnfResource.java deleted file mode 100644 index 267a20ebe6..0000000000 --- a/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/decomposition/VnfResource.java +++ /dev/null @@ -1,91 +0,0 @@ -package org.openecomp.mso.bpmn.core.decomposition; - -import java.util.ArrayList; -import java.util.List; - -import org.codehaus.jackson.annotate.JsonIgnore; -import org.codehaus.jackson.map.annotate.JsonRootName; - -import com.fasterxml.jackson.annotation.JsonProperty; - -/** - * Encapsulates VNF resource data set - * @author - * - */ -@JsonRootName("vnfResource") -public class VnfResource extends ResourceDecomposition { - - private static final long serialVersionUID = 1L; - - /* - * set resourceType for this object - */ - public VnfResource(){ - resourceType = "vnfResource"; - } - - /* - * fields specific to VNF resource type - */ - @JsonProperty("vfModules") - private List vfModules; - private String vnfType; - - /* - * GET and SET - */ - public List getVfModules() { - return vfModules; - } - public void setModules(List moduleResources) { - this.vfModules = moduleResources; - } - public String getVnfType() { - return vnfType; - } - public void setVnfType(String vnfType) { - this.vnfType = vnfType; - } - - /* - * GET accessors per design requirements - */ - - /** - * Returns a list of all VfModule objects. - * Base module is first entry in the list - * @return ordered list of ModuleResources objects - */ - @JsonIgnore - public List getAllVfModuleObjects(){ - - 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); - } - -} diff --git a/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/domain/AllottedResource.java b/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/domain/AllottedResource.java new file mode 100644 index 0000000000..562a4d8124 --- /dev/null +++ b/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/domain/AllottedResource.java @@ -0,0 +1,78 @@ +package org.openecomp.mso.bpmn.core.domain; + +import java.util.UUID; + +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 providingServiceModelInvariantUuid; + private String nfFunction; + private String nfType; + private String nfRole; + private String nfNamingCode; + + /* + * 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 getProvidingServiceModelInvariantUuid() { + return providingServiceModelInvariantUuid; + } + public void setProvidingServiceModelInvariantUuid( + String providingServiceModelInvariantUuid) { + this.providingServiceModelInvariantUuid = providingServiceModelInvariantUuid; + } + 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; + } +} \ No newline at end of file diff --git a/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/domain/HomingSolution.java b/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/domain/HomingSolution.java new file mode 100644 index 0000000000..e0b0dcd367 --- /dev/null +++ b/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/domain/HomingSolution.java @@ -0,0 +1,110 @@ +package org.openecomp.mso.bpmn.core.domain; + +import java.io.Serializable; +import java.util.List; + +import com.fasterxml.jackson.annotation.JsonRootName; + +@JsonRootName("homingSolution") +public class HomingSolution extends JsonWrapper implements Serializable { + + private static final long serialVersionUID = 1L; + + private InventoryType inventoryType; + private String serviceInstanceId; + private String vnfHostname; + private String cloudOwner; + private String cloudRegionId; + private String aicClli; + private String aicVersion; + private String ucpeId; //TODO Remove? + private List entitlementPoolList; + private List licenseKeyGroupList; + + + public InventoryType getInventoryType(){ + return inventoryType; + } + + public void setInventoryType(InventoryType inventoryType){ + this.inventoryType = inventoryType; + } + + public String getServiceInstanceId() { + return serviceInstanceId; + } + + public void setServiceInstanceId(String serviceInstanceId) { + this.serviceInstanceId = serviceInstanceId; + } + + public String getVnfHostname(){ + return vnfHostname; + } + + public void setVnfHostname(String vnfHostname){ + this.vnfHostname = vnfHostname; + } + + + 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; + } + + + 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 getUcpeId(){ + return ucpeId; + } + + public void setUcpeId(String ucpeId){ + this.ucpeId = ucpeId; + } + + public List getEntitlementPoolList(){ + return entitlementPoolList; + } + + public void setEntitlementPoolList(List entitlementPoolList){ + this.entitlementPoolList = entitlementPoolList; + } + + public List getLicenseKeyGroupList(){ + return licenseKeyGroupList; + } + + public void setLicenseKeyGroupList(List licenseKeyGroupList){ + this.licenseKeyGroupList = licenseKeyGroupList; + } +} \ No newline at end of file diff --git a/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/domain/InventoryType.java b/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/domain/InventoryType.java new file mode 100644 index 0000000000..e30a7781eb --- /dev/null +++ b/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/domain/InventoryType.java @@ -0,0 +1,17 @@ +package org.openecomp.mso.bpmn.core.domain; + +public enum InventoryType{ + + cloud("CLOUD"), + service("SERVICE"); + + private String type; + + private InventoryType(String type){ + this.type = type; + } + + public String type(){ + return type; + } +} \ No newline at end of file diff --git a/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/domain/JsonWrapper.java b/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/domain/JsonWrapper.java new file mode 100644 index 0000000000..10e52d1b0d --- /dev/null +++ b/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/domain/JsonWrapper.java @@ -0,0 +1,134 @@ +package org.openecomp.mso.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; +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 com.fasterxml.jackson.databind.annotation.JsonSerialize; + + +//import org.codehaus.jackson.map.SerializationConfig.Feature; + + +/** + * 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 { + + @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 (JsonGenerationException e) { +// // TODO Auto-generated catch block +// e.printStackTrace(); +// } catch (JsonMappingException e) { +// // TODO Auto-generated catch block +// e.printStackTrace(); +// } catch (IOException e) { +// // TODO Auto-generated catch block +// e.printStackTrace(); +// } + } catch (Exception e){ + + e.printStackTrace(); + } + return jsonString; + } + + @JsonInclude(Include.NON_NULL) + public JSONObject toJsonObject(){ + + ObjectMapper mapper = new ObjectMapper(); + // mapper.configure(SerializationConfig.Feature.WRAP_ROOT_VALUE, true); + //mapper.enable(SerializationFeature.WRAP_ROOT_VALUE); + + mapper.configure(SerializationFeature.WRAP_ROOT_VALUE, true); + // mapper.enable(org.codehaus.jackson.map.DeserializationConfig.Feature.UNWRAP_ROOT_VALUE); + JSONObject json = new JSONObject(); + try { + json = new JSONObject(mapper.writeValueAsString(this)); + } catch (JsonGenerationException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (JsonMappingException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (JSONException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + 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) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (JsonMappingException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + 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){ + + e.printStackTrace(); + } + return jsonString; + } + + /** + * Returns a string representation of this object. + */ + public String toString() { + return this.toJsonString(); + } +} diff --git a/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/domain/ModelInfo.java b/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/domain/ModelInfo.java new file mode 100644 index 0000000000..03dd69e1da --- /dev/null +++ b/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/domain/ModelInfo.java @@ -0,0 +1,70 @@ +package org.openecomp.mso.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 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 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 diff --git a/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/domain/ModuleResource.java b/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/domain/ModuleResource.java new file mode 100644 index 0000000000..39cb839b90 --- /dev/null +++ b/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/domain/ModuleResource.java @@ -0,0 +1,60 @@ +package org.openecomp.mso.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 vfModuleType; + private boolean hasVolumeGroup; + private boolean isBase; + private String vfModuleLabel; + private int initialCount; + + /* + * GET && SET + */ + 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 diff --git a/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/domain/NetworkResource.java b/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/domain/NetworkResource.java new file mode 100644 index 0000000000..31f997532f --- /dev/null +++ b/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/domain/NetworkResource.java @@ -0,0 +1,58 @@ +package org.openecomp.mso.bpmn.core.domain; + +import java.util.UUID; + +import com.fasterxml.jackson.annotation.JsonRootName; + + +/** + * Encapsulates Network resource data set + * + */ +@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; + + /* + * 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; + } +} \ No newline at end of file diff --git a/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/domain/Resource.java b/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/domain/Resource.java new file mode 100644 index 0000000000..4e6fedde9e --- /dev/null +++ b/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/domain/Resource.java @@ -0,0 +1,105 @@ +package org.openecomp.mso.bpmn.core.domain; + +import java.io.Serializable; + +import com.fasterxml.jackson.annotation.JsonIgnore; + + + +public abstract class Resource extends JsonWrapper implements Serializable { + + private static final long serialVersionUID = 1L; + private String resourceId; + 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(); // TODO maybe this instead of resourceInstance being "bridge" + + //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 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 diff --git a/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/domain/ResourceDecomposition.java b/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/domain/ResourceDecomposition.java new file mode 100644 index 0000000000..67e1906223 --- /dev/null +++ b/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/domain/ResourceDecomposition.java @@ -0,0 +1,66 @@ +package org.openecomp.mso.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() { +// } +} diff --git a/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/domain/ResourceInstance.java b/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/domain/ResourceInstance.java new file mode 100644 index 0000000000..85368963c1 --- /dev/null +++ b/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/domain/ResourceInstance.java @@ -0,0 +1,42 @@ +package org.openecomp.mso.bpmn.core.domain; + +import java.io.Serializable; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; + +/** + * This class is used to store instance + * data of Resources + * + * @author cb645j + * + */ +//@JsonIgnoreProperties +public class ResourceInstance extends JsonWrapper implements Serializable { + + private static final long serialVersionUID = 1L; + + private String instanceId; + private String instanceName; + private HomingSolution homingSolution; + + + 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 HomingSolution getHomingSolution() { + return homingSolution; + } + public void setHomingSolution(HomingSolution homingSolution) { + this.homingSolution = homingSolution; + } +} \ No newline at end of file diff --git a/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/domain/ResourceType.java b/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/domain/ResourceType.java new file mode 100644 index 0000000000..85c41e0fc6 --- /dev/null +++ b/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/domain/ResourceType.java @@ -0,0 +1,6 @@ +package org.openecomp.mso.bpmn.core.domain; + +public enum ResourceType { + + VNF, NETWORK, MODULE, ALLOTTED_RESOURCE // etc. +} \ No newline at end of file diff --git a/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/domain/ServiceDecomposition.java b/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/domain/ServiceDecomposition.java new file mode 100644 index 0000000000..4bee115411 --- /dev/null +++ b/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/domain/ServiceDecomposition.java @@ -0,0 +1,414 @@ +package org.openecomp.mso.bpmn.core.domain; + + +import java.io.Serializable; +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; + +import org.json.JSONObject; +import org.openecomp.mso.bpmn.core.json.DecomposeJsonUtil; + + + +/** + * 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) +public class ServiceDecomposition extends JsonWrapper implements Serializable { + + private static final long serialVersionUID = 1L; + DecomposeJsonUtil jsonUtils = new DecomposeJsonUtil(); + + @JsonProperty("modelInfo") + private ModelInfo modelInfo; + @JsonProperty("serviceType") + private String serviceType; + @JsonProperty("serviceRole") + private String serviceRole; + private ServiceInstance serviceInstance; + @JsonProperty("vnfResource") + private List vnfResources; + @JsonProperty("networkResource") + private List networkResources; + @JsonProperty("allottedResource") + private List allottedResources; + + public ServiceDecomposition () { + super(); + } + + public ServiceDecomposition (String catalogRestOutput) { + + ServiceDecomposition serviceDecomposition = DecomposeJsonUtil.JsonToServiceDecomposition(catalogRestOutput); + this.modelInfo = serviceDecomposition.getModelInfo(); + this.vnfResources = serviceDecomposition.getServiceVnfs(); + this.allottedResources = serviceDecomposition.getServiceAllottedResources(); + this.networkResources = serviceDecomposition.getServiceNetworks(); + this.serviceRole = serviceDecomposition.getServiceRole(); + this.serviceType = serviceDecomposition.getServiceType(); + } + + /** + * Constructor taking Catalog DB Adapter REST output (serviceResources model) + service Instance ID + * @param catalogRestOutput + * @param serviceInstanceId + */ + public ServiceDecomposition (String catalogRestOutput, String serviceInstanceId) { + + ServiceDecomposition serviceDecomposition = DecomposeJsonUtil.JsonToServiceDecomposition(catalogRestOutput); + this.modelInfo = serviceDecomposition.getModelInfo(); + this.vnfResources = serviceDecomposition.getServiceVnfs(); + this.allottedResources = serviceDecomposition.getServiceAllottedResources(); + this.networkResources = serviceDecomposition.getServiceNetworks(); + + this.serviceRole = serviceDecomposition.getServiceRole(); + this.serviceType = serviceDecomposition.getServiceType(); + + this.serviceInstance = new ServiceInstance(); + this.serviceInstance.setInstanceId(serviceInstanceId); + } + + /** + * 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 List getServiceVnfs() { + return vnfResources; + } + public void setServiceVnfs(List vnfResources) { + this.vnfResources = vnfResources; + } + public List getServiceNetworks() { + return networkResources; + } + public void setServiceNetworks(List networkResources) { + this.networkResources = networkResources; + } + public List getServiceAllottedResources() { + return allottedResources; + } + public void setServiceAllottedResources(List 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; + } + //***** + + //***** + //Access methods + + + /** + * This method returns one combined list of Resources of All Types + * @return + */ + @JsonIgnore + public List getServiceResources(){ + ArrayList serviceResources = new ArrayList(); + if(this.getServiceAllottedResources() != null){ + serviceResources.addAll(this.getServiceAllottedResources()); + } + if(this.getServiceNetworks() != null){ + serviceResources.addAll(this.getServiceNetworks()); + } + if(this.getServiceVnfs() != null){ + serviceResources.addAll(this.getServiceVnfs()); + } + return serviceResources; + } + + /** + * This method returns String representation of one combined list of Resources of All Types + * @return + */ + @JsonIgnore + public String getServiceResourcesJsonString(){ + StringBuffer serviceResourcesJsonStringBuffer = new StringBuffer(); + serviceResourcesJsonStringBuffer.append(listToJson((this.getServiceNetworks()))); + serviceResourcesJsonStringBuffer.append(listToJson((this.getServiceVnfs()))); + serviceResourcesJsonStringBuffer.append(listToJson((this.getServiceAllottedResources()))); + return serviceResourcesJsonStringBuffer.toString(); + } + + /** + * Returns a JSON list of all Network Resource structures (i.e. the serialized NetworkDecomposition objects). + * @return + */ + @JsonIgnore + public String getServiceNetworksJson(){ + return listToJson(this.getServiceNetworks()); + } + /** + * Returns a JSON list of all VnfResource structures (i.e. the serialized VnfResource objects). + * @return + */ + @JsonIgnore + public String getServiceVnfsJson(){ + return listToJson(this.getServiceVnfs()); + } + /** + * Returns a JSON list of all Allotted Resource structures (i.e. the serialized AllottedResource objects). + * @return + */ + @JsonIgnore + public String getServiceAllottedResourcesJson(){ + return listToJson(this.getServiceAllottedResources()); + } + + //TODO - define Resource Object ID + @JsonIgnore + public String getVnfResource(String resourceObjectId) { + + Iterator iter = getServiceResources().iterator(); + while (iter.hasNext()) { + Resource resource = iter.next(); + //resource.getModelInfo().getModelInvariantId(); + + if (resourceObjectId.equals("extracted information")){ + 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 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; + default: + throw new IllegalArgumentException("Invalid resource type: " + resource.resourceType); + } + } + + /** + * Add resource to the list + * @param Resource + */ + public void addVnfResource(String jsonResource) { + VnfResource vnfResource = null; + vnfResource = DecomposeJsonUtil.JsonToVnfResource(jsonResource); + this.addVnfResource(vnfResource); + } + /** + * Add resource to the list + * @param Resource + */ + public void addNetworkResource(String jsonResource) { + NetworkResource networkResource = null; + networkResource = DecomposeJsonUtil.JsonToNetworkResource(jsonResource); + this.addVnfResource(networkResource); + } + /** + * Add resource to the list + * @param Resource + */ + public void addAllottedResource(String jsonResource) { + AllottedResource allottedResource = null; + allottedResource = DecomposeJsonUtil.JsonToAllottedResource(jsonResource); + this.addVnfResource(allottedResource); + } + + /** + * 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 Resource + * @return TRUE if replacement was a success + */ + public boolean replaceResource(Resource newResource){ + boolean result = false; + List serviceResources = getServiceResources(); + Iterator iter = serviceResources.iterator(); + while (iter.hasNext()) { + Resource resource = iter.next(); + 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(serviceResources, resource, newResource); + } + } + } + //set updated list into ServiceDecomposition + this.setResourceList(serviceResources); + 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 serviceResources = getServiceResources(); + Iterator iter = serviceResources.iterator(); + while (iter.hasNext()) { + Resource item = iter.next(); + + if (item.resourceType == resource.resourceType){ + if (item.getResourceId().equalsIgnoreCase(resource.getResourceId())){ + //returns TRUE if replacement is a success + return serviceResources.remove(resource); + } + } + } + + return false; + } + + /** + * Generic method to set List of ResourceDecomposition objects + * @param resources + * @return + */ + public boolean setResourceList(List resources){ + //create resource based upon type + switch (resources.get(0).resourceType) { + case VNF: + this.setServiceVnfs((List)(List)resources); + break; + case NETWORK: + this.setServiceNetworks((List)(List)resources); + break; + case ALLOTTED_RESOURCE: + this.setServiceAllottedResources((List)(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 resources = getServiceResources(); + Iterator iter = resources.iterator(); + while (iter.hasNext()){ + Resource resource = iter.next(); + if (resource.getResourceId().equalsIgnoreCase(resourceId)){ + //match + return resource; + } + } + return null; + } +} diff --git a/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/domain/ServiceInstance.java b/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/domain/ServiceInstance.java new file mode 100644 index 0000000000..e8757cb90f --- /dev/null +++ b/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/domain/ServiceInstance.java @@ -0,0 +1,30 @@ +package org.openecomp.mso.bpmn.core.domain; + +import java.io.Serializable; + +/** + * This class is used to store instance + * data of services aka ServiceDecomposition + * + * @author cb645j + * + */ +public class ServiceInstance extends JsonWrapper implements Serializable { + + private static final long serialVersionUID = 1L; + private String instanceId; + private String instanceName; + + 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; + } +} \ No newline at end of file diff --git a/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/domain/Subscriber.java b/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/domain/Subscriber.java new file mode 100644 index 0000000000..415c412363 --- /dev/null +++ b/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/domain/Subscriber.java @@ -0,0 +1,49 @@ +package org.openecomp.mso.bpmn.core.domain; + +import java.io.Serializable; + +public class Subscriber implements Serializable { + + 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 String getGlobalId(){ + return globalId; + } + + + public void setGlobalId(String globalId){ + this.globalId = globalId; + } + + + public String getName(){ + return name; + } + + + public void setName(String name){ + this.name = name; + } + + + public String getCommonSiteId(){ + return commonSiteId; + } + + public void setCommonSiteId(String commonSiteId){ + this.commonSiteId = commonSiteId; + } + + +} \ No newline at end of file diff --git a/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/domain/VnfResource.java b/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/domain/VnfResource.java new file mode 100644 index 0000000000..08a74968ea --- /dev/null +++ b/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/domain/VnfResource.java @@ -0,0 +1,134 @@ +package org.openecomp.mso.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.JsonProperty; +import com.fasterxml.jackson.annotation.JsonRootName; + +/** + * Encapsulates VNF resource data set + * + */ +@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 vfModules; + private String vnfType; + private String nfFunction; + private String nfType; + private String nfRole; + private String nfNamingCode; + + /* + * GET and SET + */ + public List getVfModules() { + return vfModules; + } + public void setModules(List moduleResources) { + this.vfModules = moduleResources; + } + @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; + } + /* + * GET accessors per design requirements + */ + + /** + * Returns a list of all VfModule objects. + * Base module is first entry in the list + * @return ordered list of ModuleResources objects + */ + @JsonIgnore + public List 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 + * / + * + * default setter for this field deprecated + * @param modelName << serviceResources.modelInfo.modelName + * @param modelInstanceName + */ + public void constructVnfType(String modelName) { + this.vnfType = modelName.concat("/").concat(this.modelInfo.getModelInstanceName()); + } +} \ No newline at end of file diff --git a/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/json/DecomposeJsonUtil.java b/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/json/DecomposeJsonUtil.java new file mode 100644 index 0000000000..32c4776daf --- /dev/null +++ b/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/json/DecomposeJsonUtil.java @@ -0,0 +1,148 @@ +package org.openecomp.mso.bpmn.core.json; + +import java.io.Serializable; +import java.io.IOException; + + +import org.openecomp.mso.bpmn.core.domain.AllottedResource; +import org.openecomp.mso.bpmn.core.domain.NetworkResource; +import org.openecomp.mso.bpmn.core.domain.ServiceDecomposition; +import org.openecomp.mso.bpmn.core.domain.VnfResource; + +import com.fasterxml.jackson.core.JsonParseException; +import com.fasterxml.jackson.databind.DeserializationFeature; +import com.fasterxml.jackson.databind.JsonMappingException; +import com.fasterxml.jackson.databind.ObjectMapper; + +public class DecomposeJsonUtil implements Serializable { + + /** + * + */ + private static final long serialVersionUID = 1L; + + /** + * Method to construct Service Decomposition object converting + * JSON structure + * + * @param jsonString - input in JSON format confirming ServiceDecomposition + * @return - ServiceDecomposition object + * @throws IOException + * @throws JsonMappingException + * @throws JsonParseException + */ + public static ServiceDecomposition JsonToServiceDecomposition(String jsonString) { + + ServiceDecomposition serviceDecomposition = new ServiceDecomposition(); + ObjectMapper om = new ObjectMapper(); + om.configure(DeserializationFeature.UNWRAP_ROOT_VALUE, true); + + try { + serviceDecomposition = om.readValue(jsonString, ServiceDecomposition.class); + } catch (JsonParseException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (JsonMappingException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + + return serviceDecomposition; + } + + /** + * Method to construct Resource Decomposition object converting + * JSON structure + * + * @param jsonString - input in JSON format confirming ResourceDecomposition + * @return - ServiceDecomposition object + * @throws IOException + * @throws JsonMappingException + * @throws JsonParseException + */ + public static VnfResource JsonToVnfResource(String jsonString) { + + VnfResource vnfResource = new VnfResource(); + ObjectMapper om = new ObjectMapper(); + om.configure(DeserializationFeature.UNWRAP_ROOT_VALUE, true); + + try { + vnfResource = om.readValue(jsonString, VnfResource.class); + } catch (JsonParseException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (JsonMappingException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + return vnfResource; + } + + /** + * Method to construct Resource Decomposition object converting + * JSON structure + * + * @param jsonString - input in JSON format confirming ResourceDecomposition + * @return - ServiceDecomposition object + * @throws IOException + * @throws JsonMappingException + * @throws JsonParseException + */ + public static NetworkResource JsonToNetworkResource(String jsonString) { + + NetworkResource networkResource = new NetworkResource(); + ObjectMapper om = new ObjectMapper(); + om.configure(DeserializationFeature.UNWRAP_ROOT_VALUE, true); + + try { + networkResource = om.readValue(jsonString, NetworkResource.class); + } catch (JsonParseException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (JsonMappingException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + return networkResource; + } + + /** + * Method to construct Resource Decomposition object converting + * JSON structure + * + * @param jsonString - input in JSON format confirming ResourceDecomposition + * @return - ServiceDecomposition object + * @throws IOException + * @throws JsonMappingException + * @throws JsonParseException + */ + public static AllottedResource JsonToAllottedResource(String jsonString) { + + AllottedResource allottedResource = new AllottedResource(); + ObjectMapper om = new ObjectMapper(); + om.configure(DeserializationFeature.UNWRAP_ROOT_VALUE, true); + + try { + allottedResource = om.readValue(jsonString, AllottedResource.class); + } catch (JsonParseException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (JsonMappingException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + return allottedResource; + } +} \ No newline at end of file diff --git a/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/json/JsonUtils.java b/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/json/JsonUtils.java index 4c0d068b28..fc59b2ba12 100644 --- a/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/json/JsonUtils.java +++ b/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/json/JsonUtils.java @@ -20,7 +20,9 @@ package org.openecomp.mso.bpmn.core.json; +import java.util.ArrayList; import java.util.Iterator; +import java.util.List; import java.util.Map; import java.util.HashMap; import java.util.StringTokenizer; @@ -95,9 +97,11 @@ public class JsonUtils { try { JSONObject jsonObj = new JSONObject(jsonStr); if (pretty) { - // use the local class method which properly handles certain JSONArray content +// return XmlTool.normalize(XML.toString(jsonObj)); +// use the local class method which properly handles certain JSONArray content return XmlTool.normalize(toXMLString(jsonObj, null)); } else { +// return XML.toString(jsonObj); // use the local class method which properly handles certain JSONArray content return toXMLString(jsonObj, null); } @@ -106,7 +110,7 @@ public class JsonUtils { 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 @@ -173,7 +177,7 @@ public class JsonUtils { 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 +// is called recursively and the JSONArray object is passed // strBuf.append("<"); // strBuf.append(key); // strBuf.append(">"); @@ -237,7 +241,17 @@ public class JsonUtils { + tagName + ">" + str + ""; } } - + + /** + * 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. * @@ -254,17 +268,7 @@ public class JsonUtils { return null; } } - - /** - * 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); - } - + /** * Returns an Iterator over the JSON keys in the specified JSON doc. * @@ -275,7 +279,7 @@ public class JsonUtils { public static Iterator 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 @@ -306,7 +310,7 @@ public class JsonUtils { /** * 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. * @@ -334,8 +338,7 @@ public class JsonUtils { } return null; } - - + /** * Invokes the getJsonRawValue() method with the wrap flag set to true * and returns the String equivalent of the json node object returned. @@ -368,7 +371,7 @@ public class JsonUtils { /** * 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. * @@ -397,9 +400,38 @@ public class JsonUtils { 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) { + String isDebugLogEnabled = "true"; + try { + Object rawValue = getJsonRawValue(jsonStr, keys); + if (rawValue == null) { + return false; + } else { + if (rawValue instanceof Boolean) { + msoLogger.debug("getJsonValue(): the raw value is a Boolean Object=" + ((String) rawValue).toString()); + return (Boolean) rawValue; + } else { + msoLogger.debug("getJsonValue(): the raw value is NOT an Boolean Object=" + rawValue.toString()); + return false; + } + } + } catch (Exception e) { + msoLogger.debug("getJsonValue(): unable to parse json to retrieve value for field=" + keys + ". Exception was: " + e.toString()); + } + 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 + * 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 @@ -414,7 +446,7 @@ public class JsonUtils { /** * 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 + * 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..." @@ -510,7 +542,11 @@ public class JsonUtils { try { if (jsonObj.has(key)) { msoLogger.debug("getJsonValueForKey(): found value for key=" + key); - return ((String) jsonObj.get(key)); + Object value = jsonObj.get(key); + if (value == null) + return null; + else + return ((String) value); } else { msoLogger.debug("getJsonValueForKey(): iterating over the keys"); Iterator itr = jsonObj.keys(); @@ -538,7 +574,7 @@ public class JsonUtils { } 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 @@ -581,7 +617,50 @@ public class JsonUtils { } 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) { + String isDebugLogEnabled = "true"; + Boolean keyValue = false; + try { + if (jsonObj.has(key)) { + msoLogger.debug("getJsonBooleanValueForKey(): found value for key=" + key); + return ((Boolean) jsonObj.get(key)); + } else { + msoLogger.debug("getJsonBooleanValueForKey(): iterating over the keys"); + Iterator itr = jsonObj.keys(); + while (itr.hasNext()) { + String nextKey = (String) itr.next(); + Object obj = jsonObj.get(nextKey); + if (obj instanceof JSONObject) { + msoLogger.debug("getJsonBooleanValueForKey(): key=" + nextKey + ", points to JSONObject, recursive call"); + keyValue = getJsonBooleanValueForKey((JSONObject) obj, key); + if (keyValue != null) { + msoLogger.debug("getJsonBooleanValueForKey(): found value=" + keyValue + ", for key=" + key); + break; + } + } else { + msoLogger.debug("getJsonBooleanValueForKey(): key=" + nextKey + ", does not point to a JSONObject, next key"); + } + } + } + } catch (JSONException je) { + // JSONObject::get() throws this exception if one of the specified keys is not found + msoLogger.debug("getJsonBooleanValueForKey(): caught JSONException attempting to retrieve value for key=" + key); + keyValue = null; + } catch (Exception e) { + msoLogger.debug("getJsonBooleanValueForKey(): unable to parse json to retrieve value for field=" + key + ". Exception was: " + e.toString()); + } + return keyValue; + } + /** * Boolean method to determine if a key path is valid for the JSON doc. Invokes * getJsonValue(). @@ -597,7 +676,7 @@ public class JsonUtils { return true; } } - + /** * Inserts the new key/value pair at the appropriate location in the JSON * document after first determining if keyed field already exists. If @@ -673,7 +752,7 @@ public class JsonUtils { */ private static Object getJsonRawValue(String jsonStr, String keys) { return getJsonRawValue(jsonStr, keys, false); - } + } /** * Walks the JSON doc using the full key path to retrieve the associated @@ -683,8 +762,8 @@ public class JsonUtils { * * @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 + * @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) { @@ -735,7 +814,7 @@ public class JsonUtils { * @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) { + private static String putJsonValue(String jsonStr, String keys, String value) { // String isDebugLogEnabled = "true"; String keyStr = ""; try { @@ -760,7 +839,7 @@ public class JsonUtils { } // should not hit this point if the key points to a valid key value return null; - + } catch (JSONException je) { // JSONObject::get() throws this exception if one of the specified keys is not found msoLogger.debug("putJsonValue(): caught JSONException attempting to retrieve value for key=" + keyStr); @@ -772,14 +851,13 @@ public class JsonUtils { } /** - * This json util method converts a json "Key" and "Value" - * entry Array to a Java map. + * This json util method converts a json array of Key Value + * pair objects into a Java Map. * * @param execution - * @param entryArray - the json value of the entry Array - * - * @return map - a Map containing the entries + * @param entryArray - the getJsonValue of a json Array of key/value pairs * + * @return Map - a Map containing the entries */ public Map entryArrayToMap(Execution execution, String entryArray) { msoLogger.debug("Started Entry Array To Map Util Method"); @@ -801,8 +879,68 @@ public class JsonUtils { return map; } + /** + * 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 entryArrayToMap(Execution execution, String entryArray, String keyNode, String valueNode) { + msoLogger.debug("Started Entry Array To Map Util Method"); + + Map map = new HashMap(); + //Populate Map + String entryListJson = "{ \"entry\":" + entryArray + "}"; + JSONObject obj = new JSONObject(entryListJson); + JSONArray arr = obj.getJSONArray("entry"); + for (int i = 0; i < arr.length(); i++){ + JSONObject jo = arr.getJSONObject(i); + String key = jo.getString(keyNode); + String value =jo.getString(valueNode); + map.put(key, value); + } + msoLogger.debug("Outgoing Map is: " + map); + msoLogger.debug("Completed Entry Array To Map Util 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. + * + * @param execution + * @param stringArray - the getJsonValue of a json array of strings + * + * @return List - a java list containing the strings + * + * + */ + public List StringArrayToList(Execution execution, String jsonArrayOfStrings) { + msoLogger.debug("Started String Array To List Util Method"); + + List list = new ArrayList(); + //Populate List + String stringListJson = "{ \"strings\":" + jsonArrayOfStrings + "}"; + JSONObject obj = new JSONObject(stringListJson); + JSONArray arr = obj.getJSONArray("strings"); + for (int i = 0; i < arr.length(); i++){ + String s = arr.getString(i); + list.add(s); + } + msoLogger.debug("Outgoing List is: " + list); + msoLogger.debug("Completed String Array To List Util Method"); + return list; + } + + /** + * * Invokes the getJsonRawValue() method to determine if the * json element/variable exist. Returns true if the * json element exist @@ -810,6 +948,8 @@ public class JsonUtils { * @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) { @@ -826,5 +966,4 @@ public class JsonUtils { return true; } -} - +} \ No newline at end of file diff --git a/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/json/JsonWrapper.java b/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/json/JsonWrapper.java new file mode 100644 index 0000000000..8898f27b23 --- /dev/null +++ b/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/json/JsonWrapper.java @@ -0,0 +1,125 @@ +package org.openecomp.mso.bpmn.core.json; + +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; +import com.fasterxml.jackson.databind.JsonMappingException; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.ObjectWriter; +import com.fasterxml.jackson.databind.SerializationFeature; + +@JsonInclude(Include.NON_NULL) +public abstract class JsonWrapper implements Serializable { + + + private static final long serialVersionUID = 8633550139273639875L; + + @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 (JsonGenerationException e) { +// // TODO Auto-generated catch block +// e.printStackTrace(); +// } catch (JsonMappingException e) { +// // TODO Auto-generated catch block +// e.printStackTrace(); +// } catch (IOException e) { +// // TODO Auto-generated catch block +// e.printStackTrace(); +// } + } catch (Exception e){ + + e.printStackTrace(); + } + return jsonString; + } + + @JsonInclude(Include.NON_NULL) + public JSONObject toJsonObject() { + + ObjectMapper mapper = new ObjectMapper(); + // mapper.configure(SerializationConfig.Feature.WRAP_ROOT_VALUE, true); + //mapper.enable(SerializationFeature.WRAP_ROOT_VALUE); + + mapper.configure(SerializationFeature.WRAP_ROOT_VALUE, true); + // mapper.enable(org.codehaus.jackson.map.DeserializationConfig.Feature.UNWRAP_ROOT_VALUE); + JSONObject json = new JSONObject(); + try { + json = new JSONObject(mapper.writeValueAsString(this)); + } catch (JsonGenerationException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (JsonMappingException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (JSONException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + 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) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (JsonMappingException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + 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){ + + e.printStackTrace(); + } + return jsonString; + } + + /** + * Returns a string representation of this object. + */ + public String toString() { + return this.toJsonString(); + } +} \ No newline at end of file diff --git a/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/mybatis/URNMapping.java b/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/mybatis/URNMapping.java index 07959cb016..dde51e34df 100644 --- a/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/mybatis/URNMapping.java +++ b/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/mybatis/URNMapping.java @@ -119,4 +119,4 @@ public class URNMapping { return builder.toString(); } -} +} \ No newline at end of file diff --git a/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/xml/XmlTool.java b/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/xml/XmlTool.java index ac0c795d7a..7b6d429912 100644 --- a/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/xml/XmlTool.java +++ b/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/xml/XmlTool.java @@ -29,6 +29,7 @@ import java.io.StringReader; import java.io.StringWriter; import java.util.HashMap; import java.util.Map; +import java.util.Optional; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; @@ -48,6 +49,7 @@ import javax.xml.xpath.XPathFactory; import org.openecomp.mso.logger.MsoLogger; import org.w3c.dom.Document; +import org.w3c.dom.NamedNodeMap; import org.w3c.dom.Node; import org.w3c.dom.NodeList; import org.xml.sax.InputSource; @@ -334,6 +336,48 @@ public final class XmlTool { } } + /** + * 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 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); + 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()); + } + /** * Instantiation is not allowed. */ -- cgit 1.2.3-korg