From 161df8a94bb3b0c34ed16fd4fdba078bd1eeef9a Mon Sep 17 00:00:00 2001 From: Patrick Brady Date: Wed, 13 Dec 2017 11:14:21 -0800 Subject: Second part of onap rename This is the second commit of the rename. The folder structure is renamed for appc-adapters and appc-config in this commit. Change-Id: Iaa2b8c937ff1ca1b5d1178128961fb115ee65d9b Signed-off-by: Patrick Brady Issue-ID: APPC-13 --- .../sdnc/config/params/ParamsHandlerActivator.java | 70 ++++ .../sdnc/config/params/ParamsHandlerConstant.java | 55 +++ .../onap/sdnc/config/params/data/Parameter.java | 126 +++++++ .../config/params/data/PropertyDefinition.java | 56 +++ .../onap/sdnc/config/params/data/RequestKey.java | 51 +++ .../onap/sdnc/config/params/data/ResponseKey.java | 57 +++ .../params/parser/PropertyDefinitionNode.java | 251 +++++++++++++ .../params/transformer/ArtificatTransformer.java | 87 +++++ .../transformer/tosca/ArtifactProcessor.java | 68 ++++ .../tosca/ArtifactProcessorFactory.java | 43 +++ .../transformer/tosca/ArtifactProcessorImpl.java | 401 +++++++++++++++++++++ .../exceptions/ArtifactProcessorException.java | 48 +++ .../sdnc/config/params/ParamsHandlerActivator.java | 70 ---- .../sdnc/config/params/ParamsHandlerConstant.java | 55 --- .../sdnc/config/params/data/Parameter.java | 126 ------- .../config/params/data/PropertyDefinition.java | 56 --- .../sdnc/config/params/data/RequestKey.java | 51 --- .../sdnc/config/params/data/ResponseKey.java | 57 --- .../params/parser/PropertyDefinitionNode.java | 251 ------------- .../params/transformer/ArtificatTransformer.java | 87 ----- .../transformer/tosca/ArtifactProcessor.java | 68 ---- .../tosca/ArtifactProcessorFactory.java | 43 --- .../transformer/tosca/ArtifactProcessorImpl.java | 401 --------------------- .../exceptions/ArtifactProcessorException.java | 48 --- .../params/parser/TestPropertyDefinitionNode.java | 116 ++++++ .../transformer/tosca/TestArtifactProcessor.java | 105 ++++++ .../tosca/TestGenerateArtifactObject.java | 254 +++++++++++++ .../tosca/TestGenerateArtifactString.java | 155 ++++++++ .../transformer/tosca/TestPropertyQueryString.java | 171 +++++++++ .../params/transformer/tosca/TestReadArtifact.java | 103 ++++++ .../params/parser/TestPropertyDefinitionNode.java | 116 ------ .../transformer/tosca/TestArtifactProcessor.java | 105 ------ .../tosca/TestGenerateArtifactObject.java | 254 ------------- .../tosca/TestGenerateArtifactString.java | 155 -------- .../transformer/tosca/TestPropertyQueryString.java | 171 --------- .../params/transformer/tosca/TestReadArtifact.java | 103 ------ 36 files changed, 2217 insertions(+), 2217 deletions(-) create mode 100644 appc-config/appc-config-params/provider/src/main/java/org/onap/sdnc/config/params/ParamsHandlerActivator.java create mode 100644 appc-config/appc-config-params/provider/src/main/java/org/onap/sdnc/config/params/ParamsHandlerConstant.java create mode 100644 appc-config/appc-config-params/provider/src/main/java/org/onap/sdnc/config/params/data/Parameter.java create mode 100644 appc-config/appc-config-params/provider/src/main/java/org/onap/sdnc/config/params/data/PropertyDefinition.java create mode 100644 appc-config/appc-config-params/provider/src/main/java/org/onap/sdnc/config/params/data/RequestKey.java create mode 100644 appc-config/appc-config-params/provider/src/main/java/org/onap/sdnc/config/params/data/ResponseKey.java create mode 100644 appc-config/appc-config-params/provider/src/main/java/org/onap/sdnc/config/params/parser/PropertyDefinitionNode.java create mode 100644 appc-config/appc-config-params/provider/src/main/java/org/onap/sdnc/config/params/transformer/ArtificatTransformer.java create mode 100644 appc-config/appc-config-params/provider/src/main/java/org/onap/sdnc/config/params/transformer/tosca/ArtifactProcessor.java create mode 100644 appc-config/appc-config-params/provider/src/main/java/org/onap/sdnc/config/params/transformer/tosca/ArtifactProcessorFactory.java create mode 100644 appc-config/appc-config-params/provider/src/main/java/org/onap/sdnc/config/params/transformer/tosca/ArtifactProcessorImpl.java create mode 100644 appc-config/appc-config-params/provider/src/main/java/org/onap/sdnc/config/params/transformer/tosca/exceptions/ArtifactProcessorException.java delete mode 100644 appc-config/appc-config-params/provider/src/main/java/org/openecomp/sdnc/config/params/ParamsHandlerActivator.java delete mode 100644 appc-config/appc-config-params/provider/src/main/java/org/openecomp/sdnc/config/params/ParamsHandlerConstant.java delete mode 100644 appc-config/appc-config-params/provider/src/main/java/org/openecomp/sdnc/config/params/data/Parameter.java delete mode 100644 appc-config/appc-config-params/provider/src/main/java/org/openecomp/sdnc/config/params/data/PropertyDefinition.java delete mode 100644 appc-config/appc-config-params/provider/src/main/java/org/openecomp/sdnc/config/params/data/RequestKey.java delete mode 100644 appc-config/appc-config-params/provider/src/main/java/org/openecomp/sdnc/config/params/data/ResponseKey.java delete mode 100644 appc-config/appc-config-params/provider/src/main/java/org/openecomp/sdnc/config/params/parser/PropertyDefinitionNode.java delete mode 100644 appc-config/appc-config-params/provider/src/main/java/org/openecomp/sdnc/config/params/transformer/ArtificatTransformer.java delete mode 100644 appc-config/appc-config-params/provider/src/main/java/org/openecomp/sdnc/config/params/transformer/tosca/ArtifactProcessor.java delete mode 100644 appc-config/appc-config-params/provider/src/main/java/org/openecomp/sdnc/config/params/transformer/tosca/ArtifactProcessorFactory.java delete mode 100644 appc-config/appc-config-params/provider/src/main/java/org/openecomp/sdnc/config/params/transformer/tosca/ArtifactProcessorImpl.java delete mode 100644 appc-config/appc-config-params/provider/src/main/java/org/openecomp/sdnc/config/params/transformer/tosca/exceptions/ArtifactProcessorException.java create mode 100644 appc-config/appc-config-params/provider/src/test/java/org/onap/sdnc/config/params/parser/TestPropertyDefinitionNode.java create mode 100644 appc-config/appc-config-params/provider/src/test/java/org/onap/sdnc/config/params/transformer/tosca/TestArtifactProcessor.java create mode 100644 appc-config/appc-config-params/provider/src/test/java/org/onap/sdnc/config/params/transformer/tosca/TestGenerateArtifactObject.java create mode 100644 appc-config/appc-config-params/provider/src/test/java/org/onap/sdnc/config/params/transformer/tosca/TestGenerateArtifactString.java create mode 100644 appc-config/appc-config-params/provider/src/test/java/org/onap/sdnc/config/params/transformer/tosca/TestPropertyQueryString.java create mode 100644 appc-config/appc-config-params/provider/src/test/java/org/onap/sdnc/config/params/transformer/tosca/TestReadArtifact.java delete mode 100644 appc-config/appc-config-params/provider/src/test/java/org/openecomp/sdnc/config/params/parser/TestPropertyDefinitionNode.java delete mode 100644 appc-config/appc-config-params/provider/src/test/java/org/openecomp/sdnc/config/params/transformer/tosca/TestArtifactProcessor.java delete mode 100644 appc-config/appc-config-params/provider/src/test/java/org/openecomp/sdnc/config/params/transformer/tosca/TestGenerateArtifactObject.java delete mode 100644 appc-config/appc-config-params/provider/src/test/java/org/openecomp/sdnc/config/params/transformer/tosca/TestGenerateArtifactString.java delete mode 100644 appc-config/appc-config-params/provider/src/test/java/org/openecomp/sdnc/config/params/transformer/tosca/TestPropertyQueryString.java delete mode 100644 appc-config/appc-config-params/provider/src/test/java/org/openecomp/sdnc/config/params/transformer/tosca/TestReadArtifact.java (limited to 'appc-config/appc-config-params/provider') diff --git a/appc-config/appc-config-params/provider/src/main/java/org/onap/sdnc/config/params/ParamsHandlerActivator.java b/appc-config/appc-config-params/provider/src/main/java/org/onap/sdnc/config/params/ParamsHandlerActivator.java new file mode 100644 index 000000000..dd4515cca --- /dev/null +++ b/appc-config/appc-config-params/provider/src/main/java/org/onap/sdnc/config/params/ParamsHandlerActivator.java @@ -0,0 +1,70 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP : APPC + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Copyright (C) 2017 Amdocs + * ============================================================================= + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * ECOMP is a trademark and service mark of AT&T Intellectual Property. + * ============LICENSE_END========================================================= + */ + +package org.openecomp.sdnc.config.params; + +import java.util.LinkedList; +import java.util.List; + +import org.openecomp.sdnc.config.params.parser.PropertyDefinitionNode; +import org.osgi.framework.BundleActivator; +import org.osgi.framework.BundleContext; +import org.osgi.framework.ServiceRegistration; + +import com.att.eelf.configuration.EELFLogger; +import com.att.eelf.configuration.EELFManager; + +public class ParamsHandlerActivator implements BundleActivator{ + + private List registrations = new LinkedList(); + + + private static final EELFLogger log = EELFManager.getInstance().getLogger(ParamsHandlerActivator.class); + + @Override + public void start(BundleContext ctx) throws Exception + { + + try { + PropertyDefinitionNode propertyDefinitionNode = new PropertyDefinitionNode(); + log.info("Registering service "+ propertyDefinitionNode.getClass().getName()); + registrations.add(ctx.registerService(propertyDefinitionNode.getClass().getName(), propertyDefinitionNode, null)); + log.info("Registering service sccessful for "+ propertyDefinitionNode.getClass().getName()); + } catch (Exception e) { + e.printStackTrace(); + } + + } + @Override + public void stop(BundleContext arg0) throws Exception + { + for (ServiceRegistration registration: registrations) + { + registration.unregister(); + registration = null; + } + + } + +} diff --git a/appc-config/appc-config-params/provider/src/main/java/org/onap/sdnc/config/params/ParamsHandlerConstant.java b/appc-config/appc-config-params/provider/src/main/java/org/onap/sdnc/config/params/ParamsHandlerConstant.java new file mode 100644 index 000000000..65b93d738 --- /dev/null +++ b/appc-config/appc-config-params/provider/src/main/java/org/onap/sdnc/config/params/ParamsHandlerConstant.java @@ -0,0 +1,55 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP : APPC + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Copyright (C) 2017 Amdocs + * ============================================================================= + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * ECOMP is a trademark and service mark of AT&T Intellectual Property. + * ============LICENSE_END========================================================= + */ + +package org.openecomp.sdnc.config.params; + +public class ParamsHandlerConstant { + + public static String STRING_ENCODING = "utf-8"; + public static String Y = "Y"; + public static String N = "N"; + public static String DATA_TYPE_TEXT = "TEXT"; + public static String DATA_TYPE_JSON = "JSON"; + public static String DATA_TYPE_XML = "XML"; + public static String DATA_TYPE_SQL = "SQL"; + + + public static String INPUT_PARAM_PD_CONTENT = "pdContent"; + public static String INPUT_PARAM_SYSTEM_NAME = "systemName"; + public static String INPUT_PARAM_JSON_DATA = "jsonData"; + public static String INPUT_PARAM_MERGE__JSON_DATA = "mergeJsonData"; + + + public static String INPUT_PARAM_REQUEST_DATA = "requestData"; + public static String INPUT_PARAM_RESPONSE_PRIFIX = "responsePrefix"; + public static String OUTPUT_PARAM_CONFIGURATION_PARAMETER = "configuration-parameters"; + + + + public static String OUTPUT_PARAM_STATUS = "status"; + public static String OUTPUT_PARAM_ERROR_MESSAGE = "error-message"; + public static String OUTPUT_STATUS_SUCCESS = "success"; + public static String OUTPUT_STATUS_FAILURE = "failure"; + +} diff --git a/appc-config/appc-config-params/provider/src/main/java/org/onap/sdnc/config/params/data/Parameter.java b/appc-config/appc-config-params/provider/src/main/java/org/onap/sdnc/config/params/data/Parameter.java new file mode 100644 index 000000000..aaa457645 --- /dev/null +++ b/appc-config/appc-config-params/provider/src/main/java/org/onap/sdnc/config/params/data/Parameter.java @@ -0,0 +1,126 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP : APPC + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Copyright (C) 2017 Amdocs + * ============================================================================= + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * ECOMP is a trademark and service mark of AT&T Intellectual Property. + * ============LICENSE_END========================================================= + */ + +package org.openecomp.sdnc.config.params.data; + +import java.util.List; + +import com.fasterxml.jackson.annotation.JsonProperty; + +public class Parameter { + private String name; + private String description; + private String type; + private boolean required; + private String source; + + @JsonProperty("rule-type") + private String ruleType; + + @JsonProperty("default") + private String defaultValue; + + @JsonProperty("request-keys") + private List requestKeys; + + @JsonProperty("response-keys") + private List responseKeys; + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + public boolean isRequired() { + return required; + } + + public void setRequired(boolean required) { + this.required = required; + } + + public String getSource() { + return source; + } + + public void setSource(String source) { + this.source = source; + } + + public String getRuleType() { + return ruleType; + } + + public void setRuleType(String ruleType) { + this.ruleType = ruleType; + } + + public String getDefaultValue() { + return defaultValue; + } + + public void setDefaultValue(String defaultValue) { + this.defaultValue = defaultValue; + } + + public List getRequestKeys() { + return requestKeys; + } + + public void setRequestKeys(List requestKeys) { + this.requestKeys = requestKeys; + } + + public List getResponseKeys() { + return responseKeys; + } + + public void setResponseKeys(List responseKeys) { + this.responseKeys = responseKeys; + } + + + + + +} diff --git a/appc-config/appc-config-params/provider/src/main/java/org/onap/sdnc/config/params/data/PropertyDefinition.java b/appc-config/appc-config-params/provider/src/main/java/org/onap/sdnc/config/params/data/PropertyDefinition.java new file mode 100644 index 000000000..d33fd9589 --- /dev/null +++ b/appc-config/appc-config-params/provider/src/main/java/org/onap/sdnc/config/params/data/PropertyDefinition.java @@ -0,0 +1,56 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP : APPC + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Copyright (C) 2017 Amdocs + * ============================================================================= + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * ECOMP is a trademark and service mark of AT&T Intellectual Property. + * ============LICENSE_END========================================================= + */ + +package org.openecomp.sdnc.config.params.data; + +import java.util.List; + +import com.fasterxml.jackson.annotation.JsonProperty; + +public class PropertyDefinition { + public String kind = "Property Definition"; + public String version = "V1"; + + @JsonProperty("vnf-parameter-list") + public List parameters; + public String getKind() { + return kind; + } + public void setKind(String kind) { + this.kind = kind; + } + public String getVersion() { + return version; + } + public void setVersion(String version) { + this.version = version; + } + public List getParameters() { + return parameters; + } + public void setParameters(List parameters) { + this.parameters = parameters; + } + +} diff --git a/appc-config/appc-config-params/provider/src/main/java/org/onap/sdnc/config/params/data/RequestKey.java b/appc-config/appc-config-params/provider/src/main/java/org/onap/sdnc/config/params/data/RequestKey.java new file mode 100644 index 000000000..0589afcc3 --- /dev/null +++ b/appc-config/appc-config-params/provider/src/main/java/org/onap/sdnc/config/params/data/RequestKey.java @@ -0,0 +1,51 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP : APPC + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Copyright (C) 2017 Amdocs + * ============================================================================= + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * ECOMP is a trademark and service mark of AT&T Intellectual Property. + * ============LICENSE_END========================================================= + */ + +package org.openecomp.sdnc.config.params.data; + +import com.fasterxml.jackson.annotation.JsonProperty; + +public class RequestKey{ + @JsonProperty("key-name") + private String keyName; + @JsonProperty("key-value") + private String keyValue; + + public String getKeyName() { + return keyName; + } + public void setKeyName(String keyName) { + this.keyName = keyName; + } + public String getKeyValue() { + return keyValue; + } + public void setKeyValue(String keyValue) { + this.keyValue = keyValue; + } + + + + +} diff --git a/appc-config/appc-config-params/provider/src/main/java/org/onap/sdnc/config/params/data/ResponseKey.java b/appc-config/appc-config-params/provider/src/main/java/org/onap/sdnc/config/params/data/ResponseKey.java new file mode 100644 index 000000000..5277699e1 --- /dev/null +++ b/appc-config/appc-config-params/provider/src/main/java/org/onap/sdnc/config/params/data/ResponseKey.java @@ -0,0 +1,57 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP : APPC + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Copyright (C) 2017 Amdocs + * ============================================================================= + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * ECOMP is a trademark and service mark of AT&T Intellectual Property. + * ============LICENSE_END========================================================= + */ + +package org.openecomp.sdnc.config.params.data; + +import com.fasterxml.jackson.annotation.JsonProperty; + +public class ResponseKey{ + @JsonProperty("unique-key-name") + private String uniqueKeyName; + @JsonProperty("unique-key-value") + private String uniqueKeyValue; + @JsonProperty("field-key-name") + private String fieldKeyName; + + public String getUniqueKeyName() { + return uniqueKeyName; + } + public void setUniqueKeyName(String uniqueKeyName) { + this.uniqueKeyName = uniqueKeyName; + } + public String getUniqueKeyValue() { + return uniqueKeyValue; + } + public void setUniqueKeyValue(String uniqueKeyValue) { + this.uniqueKeyValue = uniqueKeyValue; + } + public String getFieldKeyName() { + return fieldKeyName; + } + public void setFieldKeyName(String fieldKeyName) { + this.fieldKeyName = fieldKeyName; + } + + +} diff --git a/appc-config/appc-config-params/provider/src/main/java/org/onap/sdnc/config/params/parser/PropertyDefinitionNode.java b/appc-config/appc-config-params/provider/src/main/java/org/onap/sdnc/config/params/parser/PropertyDefinitionNode.java new file mode 100644 index 000000000..4916c46a8 --- /dev/null +++ b/appc-config/appc-config-params/provider/src/main/java/org/onap/sdnc/config/params/parser/PropertyDefinitionNode.java @@ -0,0 +1,251 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP : APPC + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Copyright (C) 2017 Amdocs + * ============================================================================= + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * ECOMP is a trademark and service mark of AT&T Intellectual Property. + * ============LICENSE_END========================================================= + */ + +package org.openecomp.sdnc.config.params.parser; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import org.apache.commons.lang3.StringUtils; +import org.openecomp.sdnc.config.params.ParamsHandlerConstant; +import org.openecomp.sdnc.config.params.data.Parameter; +import org.openecomp.sdnc.config.params.data.PropertyDefinition; +import org.onap.ccsdk.sli.core.sli.SvcLogicContext; +import org.onap.ccsdk.sli.core.sli.SvcLogicException; +import org.onap.ccsdk.sli.core.sli.SvcLogicJavaPlugin; + +import com.att.eelf.configuration.EELFLogger; +import com.att.eelf.configuration.EELFManager; +import com.fasterxml.jackson.core.JsonParseException; +import com.fasterxml.jackson.databind.JsonMappingException; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.dataformat.yaml.YAMLFactory; + +public class PropertyDefinitionNode implements SvcLogicJavaPlugin{ + + + private static final EELFLogger log = EELFManager.getInstance().getLogger(PropertyDefinitionNode.class); + + public void processMissingParamKeys(Map inParams, SvcLogicContext ctx) throws SvcLogicException { + log.info("Received processParamKeys call with params : " + inParams); + String responsePrefix = inParams.get(ParamsHandlerConstant.INPUT_PARAM_RESPONSE_PRIFIX); + try{ + responsePrefix = StringUtils.isNotBlank(responsePrefix) ? (responsePrefix+".") : ""; + + String requestParamJson = inParams.get(ParamsHandlerConstant.INPUT_PARAM_JSON_DATA); + String pdContent = inParams.get(ParamsHandlerConstant.INPUT_PARAM_PD_CONTENT); + + if(StringUtils.isBlank(pdContent)){ + throw new Exception("Request Param (pdContent) is Missing .."); + } + + if(StringUtils.isBlank(requestParamJson)){ + throw new Exception("Request Param (jsonData) is Missing .."); + } + + PropertyDefinition propertyDefinition = parsePDContent(pdContent); + if(propertyDefinition != null){ + requestParamJson = mergeMissingRequestParamFromPD(propertyDefinition, requestParamJson); + ctx.setAttribute(responsePrefix + ParamsHandlerConstant.OUTPUT_PARAM_CONFIGURATION_PARAMETER, requestParamJson); + } + + ctx.setAttribute(responsePrefix + ParamsHandlerConstant.OUTPUT_PARAM_STATUS, ParamsHandlerConstant.OUTPUT_STATUS_SUCCESS); + } catch (Exception e) { + ctx.setAttribute(responsePrefix + ParamsHandlerConstant.OUTPUT_PARAM_STATUS, ParamsHandlerConstant.OUTPUT_STATUS_FAILURE); + ctx.setAttribute(responsePrefix + ParamsHandlerConstant.OUTPUT_PARAM_ERROR_MESSAGE,e.getMessage()); + log.error("Failed in merging data to template " + e.getMessage()); + throw new SvcLogicException(e.getMessage()); + } + } + + public void processExternalSystemParamKeys(Map inParams, SvcLogicContext ctx) throws SvcLogicException { + log.info("Received processExternalSystemParamKeys call with params : " + inParams); + String responsePrefix = inParams.get(ParamsHandlerConstant.INPUT_PARAM_RESPONSE_PRIFIX); + try{ + responsePrefix = StringUtils.isNotBlank(responsePrefix) ? (responsePrefix+".") : ""; + + String requestParamJson = inParams.get(ParamsHandlerConstant.INPUT_PARAM_JSON_DATA); + String pdContent = inParams.get(ParamsHandlerConstant.INPUT_PARAM_PD_CONTENT); + String systemName = inParams.get(ParamsHandlerConstant.INPUT_PARAM_SYSTEM_NAME); + + + if(StringUtils.isBlank(pdContent)){ + throw new Exception("Request Param (pdContent) is Missing .."); + } + + if(StringUtils.isBlank(requestParamJson)){ + throw new Exception("Request Param (jsonData) is Missing .."); + } + + if(StringUtils.isBlank(systemName)){ + throw new Exception("Request Param (systemName) is Missing .."); + } + + PropertyDefinition propertyDefinition = parsePDContent(pdContent); + if(propertyDefinition != null){ + getSystemRequestParamInfoFromPD(propertyDefinition, requestParamJson, systemName, ctx); + } + + ctx.setAttribute(responsePrefix + ParamsHandlerConstant.OUTPUT_PARAM_STATUS, ParamsHandlerConstant.OUTPUT_STATUS_SUCCESS); + } catch (Exception e) { + ctx.setAttribute(responsePrefix + ParamsHandlerConstant.OUTPUT_PARAM_STATUS, ParamsHandlerConstant.OUTPUT_STATUS_FAILURE); + ctx.setAttribute(responsePrefix + ParamsHandlerConstant.OUTPUT_PARAM_ERROR_MESSAGE,e.getMessage()); + log.error("Failed in merging data to template " + e.getMessage()); + throw new SvcLogicException(e.getMessage()); + } + } + + + public void mergeJsonData(Map inParams, SvcLogicContext ctx) throws SvcLogicException { + log.info("Received mergeJsonData call with params : " + inParams); + String responsePrefix = inParams.get(ParamsHandlerConstant.INPUT_PARAM_RESPONSE_PRIFIX); + try{ + responsePrefix = StringUtils.isNotBlank(responsePrefix) ? (responsePrefix+".") : ""; + + String requestParamJson = inParams.get(ParamsHandlerConstant.INPUT_PARAM_JSON_DATA); + String mergeJsonData = inParams.get(ParamsHandlerConstant.INPUT_PARAM_MERGE__JSON_DATA); + + if(StringUtils.isBlank(requestParamJson)){ + throw new Exception("Request Param (jsonData) is Missing .."); + } + + if(StringUtils.isBlank(mergeJsonData)){ + throw new Exception("Request Param (mergeJsonData) is Missing .."); + } + + requestParamJson = mergeJson(requestParamJson, mergeJsonData); + ctx.setAttribute(responsePrefix + ParamsHandlerConstant.OUTPUT_PARAM_CONFIGURATION_PARAMETER, requestParamJson); + ctx.setAttribute(responsePrefix + ParamsHandlerConstant.OUTPUT_PARAM_STATUS, ParamsHandlerConstant.OUTPUT_STATUS_SUCCESS); + } catch (Exception e) { + ctx.setAttribute(responsePrefix + ParamsHandlerConstant.OUTPUT_PARAM_STATUS, ParamsHandlerConstant.OUTPUT_STATUS_FAILURE); + ctx.setAttribute(responsePrefix + ParamsHandlerConstant.OUTPUT_PARAM_ERROR_MESSAGE,e.getMessage()); + log.error("Failed in merging data to template " + e.getMessage()); + throw new SvcLogicException(e.getMessage()); + } + } + + + /* */ + + private PropertyDefinition parsePDContent(String pdContent) throws JsonParseException, JsonMappingException, IOException{ + PropertyDefinition propertyDefinition = null; + if(StringUtils.isNotBlank(pdContent)){ + ObjectMapper mapper = new ObjectMapper(new YAMLFactory()); + propertyDefinition = mapper.readValue(pdContent, PropertyDefinition.class); + } + return propertyDefinition; + } + + + private String mergeMissingRequestParamFromPD(PropertyDefinition propertyDefinition, String requestParamJson) throws Exception{ + + if(propertyDefinition == null){ + throw new Exception("PropertyDefinition is Missing .."); + } + + if(StringUtils.isBlank(requestParamJson)){ + throw new Exception("Request Param is Missing .."); + } + + ObjectMapper mapper = new ObjectMapper(); + Map requestParamMap = mapper.readValue(requestParamJson, HashMap.class); + if(requestParamMap != null){ + List parameters = propertyDefinition.getParameters(); + for (Parameter parameter : parameters) { + if(parameter != null){ + + log.info("Checking Key " + parameter.getName() + ":: Source :" +parameter.getSource()); + // Add Only non external system keys,If it is not present in request Params + if( !requestParamMap.containsKey(parameter.getName()) + && StringUtils.isBlank(parameter.getSource()) + ){ + log.info("Adding New Key " + parameter.getName()); + requestParamMap.put(parameter.getName(), parameter.getDefaultValue()); + } + } + } + requestParamJson = mapper.writeValueAsString(requestParamMap); + log.info("Processed Request Param " + requestParamJson); + } + + return requestParamJson; + } + + private void getSystemRequestParamInfoFromPD(PropertyDefinition propertyDefinition, String requestParamJson, String systemName, SvcLogicContext ctx) throws Exception{ + + if(propertyDefinition == null){ + throw new Exception("PropertyDefinition is Missing .."); + } + + if(StringUtils.isBlank(requestParamJson)){ + throw new Exception("Request Param is Missing .."); + } + + ObjectMapper mapper = new ObjectMapper(); + Map requestParamMap = mapper.readValue(requestParamJson, HashMap.class); + if(requestParamMap != null){ + List parameters = propertyDefinition.getParameters(); + + List externalSystemKeys = new ArrayList(); + for (Parameter parameter : parameters) { + if(parameter != null){ + if( !requestParamMap.containsKey(parameter.getName()) && StringUtils.isNotBlank(parameter.getSource()) && !StringUtils.equalsIgnoreCase(parameter.getSource(),"Manual") ){ + log.info("Adding New System Key " + parameter.getName() + ":"+ mapper.writeValueAsString(parameter)); + externalSystemKeys.add(parameter.getName()); + ctx.setAttribute(systemName +"."+parameter.getName(), mapper.writeValueAsString(parameter)); + } + } + } + + String systemKeys = systemName+".keys"; + ctx.setAttribute(systemKeys, mapper.writeValueAsString(externalSystemKeys)); + } + } + + + private String mergeJson(String requestParamJson, String systemParamJson) throws Exception { + ObjectMapper mapper = new ObjectMapper(); + Map requestParamMap = mapper.readValue(requestParamJson, HashMap.class); + if(requestParamMap != null){ + Map systemParamMap = mapper.readValue(systemParamJson, HashMap.class); + if(systemParamMap != null){ + for (String systemParamKey : systemParamMap.keySet()) { + log.trace("Megging System Key Values " + systemParamKey); + requestParamMap.put( systemParamKey , systemParamMap.get(systemParamKey)); + } + } + requestParamJson = mapper.writeValueAsString(requestParamMap); + log.info("Processed Request Param " + requestParamJson); + } + + return requestParamJson; + } + + + + +} diff --git a/appc-config/appc-config-params/provider/src/main/java/org/onap/sdnc/config/params/transformer/ArtificatTransformer.java b/appc-config/appc-config-params/provider/src/main/java/org/onap/sdnc/config/params/transformer/ArtificatTransformer.java new file mode 100644 index 000000000..8498b6375 --- /dev/null +++ b/appc-config/appc-config-params/provider/src/main/java/org/onap/sdnc/config/params/transformer/ArtificatTransformer.java @@ -0,0 +1,87 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP : APPC + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Copyright (C) 2017 Amdocs + * ============================================================================= + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * ECOMP is a trademark and service mark of AT&T Intellectual Property. + * ============LICENSE_END========================================================= + */ + +package org.openecomp.sdnc.config.params.transformer; + +import java.io.IOException; +import java.util.List; + +import org.apache.commons.lang3.StringUtils; +import org.openecomp.sdnc.config.params.data.Parameter; +import org.openecomp.sdnc.config.params.data.PropertyDefinition; + +import com.fasterxml.jackson.core.JsonParseException; +import com.fasterxml.jackson.databind.JsonMappingException; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.SerializationFeature; +import com.fasterxml.jackson.dataformat.yaml.YAMLFactory; + +public class ArtificatTransformer { + + + public String convertPDToYaml(PropertyDefinition propertyDefinition) throws JsonParseException, JsonMappingException, IOException{ + String yamlContent = null; + if(propertyDefinition != null){ + ObjectMapper mapper = new ObjectMapper(new YAMLFactory()); + mapper.disable(SerializationFeature.FAIL_ON_EMPTY_BEANS); + yamlContent = mapper.writeValueAsString(propertyDefinition); + } + return yamlContent; + } + + public String transformYamlToJson(String yaml) throws JsonParseException, JsonMappingException, IOException { + ObjectMapper yamlReader = new ObjectMapper(new YAMLFactory()); + Object obj = yamlReader.readValue(yaml, Object.class); + ObjectMapper jsonWriter = new ObjectMapper(); + jsonWriter.enable(SerializationFeature.INDENT_OUTPUT); + return jsonWriter.writeValueAsString(obj); + } + + public PropertyDefinition convertYAMLToPD(String pdContent) throws JsonParseException, JsonMappingException, IOException{ + PropertyDefinition propertyDefinition = null; + if(StringUtils.isNotBlank(pdContent)){ + ObjectMapper mapper = new ObjectMapper(new YAMLFactory()); + propertyDefinition = mapper.readValue(pdContent, PropertyDefinition.class); + } + return propertyDefinition; + } + + public String convertYAMLToParams(String pdContent) throws JsonParseException, JsonMappingException, IOException{ + String paramJson = null; + if(StringUtils.isNotBlank(pdContent)){ + paramJson = convertPdToParams(convertYAMLToPD(pdContent)); + } + return paramJson; + } + + public String convertPdToParams(PropertyDefinition propertyDefinition) throws JsonParseException, JsonMappingException, IOException{ + String paramJson = null; + if(propertyDefinition != null && propertyDefinition.getParameters() != null){ + List parameters = propertyDefinition.getParameters(); + + } + return paramJson; + } + +} diff --git a/appc-config/appc-config-params/provider/src/main/java/org/onap/sdnc/config/params/transformer/tosca/ArtifactProcessor.java b/appc-config/appc-config-params/provider/src/main/java/org/onap/sdnc/config/params/transformer/tosca/ArtifactProcessor.java new file mode 100644 index 000000000..cb4f1e0f7 --- /dev/null +++ b/appc-config/appc-config-params/provider/src/main/java/org/onap/sdnc/config/params/transformer/tosca/ArtifactProcessor.java @@ -0,0 +1,68 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP : APPC + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Copyright (C) 2017 Amdocs + * ============================================================================= + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * ECOMP is a trademark and service mark of AT&T Intellectual Property. + * ============LICENSE_END========================================================= + */ + +package org.openecomp.sdnc.config.params.transformer.tosca; + +import org.openecomp.sdnc.config.params.data.PropertyDefinition; +import org.openecomp.sdnc.config.params.transformer.tosca.exceptions.ArtifactProcessorException; + +import java.io.OutputStream; + +public interface ArtifactProcessor +{ + /** + * Generates Tosca artifact from PropertyDefinition object. + * + * @param artifact + * PropertyDefinition object which is to be converted to Tosca. + * @param stream + * Stream to which the generated Tosca is to be written. + * @throws ArtifactProcessorException + * If the Tosca Generation failed + */ + void generateArtifact(PropertyDefinition artifact, OutputStream stream) throws ArtifactProcessorException; + + /** + * Generates Tosca artifact from PropertyDefinition string. + * + * @param artifact + * PropertyDefinition string which is to be converted to Tosca. + * @param stream + * Stream to which the generated Tosca is to be written. + * @throws ArtifactProcessorException + * If the Tosca Generation failed + */ + void generateArtifact(String artifact, OutputStream stream) throws ArtifactProcessorException; + + /** + * Generates the PropertyDefinition object from a Tosca artifact. + * + * @param toscaArtifact + * Tosca artifact which is to be converted. + * @return PropertyDefinition object generated from Tosca + * @throws ArtifactProcessorException + * If the PropertyDefinition Generation failed + */ + PropertyDefinition readArtifact(String toscaArtifact) throws ArtifactProcessorException; +} diff --git a/appc-config/appc-config-params/provider/src/main/java/org/onap/sdnc/config/params/transformer/tosca/ArtifactProcessorFactory.java b/appc-config/appc-config-params/provider/src/main/java/org/onap/sdnc/config/params/transformer/tosca/ArtifactProcessorFactory.java new file mode 100644 index 000000000..9ec80c9a4 --- /dev/null +++ b/appc-config/appc-config-params/provider/src/main/java/org/onap/sdnc/config/params/transformer/tosca/ArtifactProcessorFactory.java @@ -0,0 +1,43 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP : APPC + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Copyright (C) 2017 Amdocs + * ============================================================================= + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * ECOMP is a trademark and service mark of AT&T Intellectual Property. + * ============LICENSE_END========================================================= + */ + +package org.openecomp.sdnc.config.params.transformer.tosca; + +/** + * Created by pranavdi on 3/29/2017. + */ +public class ArtifactProcessorFactory +{ + private static class InstanceHolder + { + private static ArtifactProcessorImpl instance = new ArtifactProcessorImpl(); + } + + private ArtifactProcessorFactory(){} + + public static ArtifactProcessor getArtifactProcessor() + { + return InstanceHolder.instance; + } +} diff --git a/appc-config/appc-config-params/provider/src/main/java/org/onap/sdnc/config/params/transformer/tosca/ArtifactProcessorImpl.java b/appc-config/appc-config-params/provider/src/main/java/org/onap/sdnc/config/params/transformer/tosca/ArtifactProcessorImpl.java new file mode 100644 index 000000000..e3dd5dc41 --- /dev/null +++ b/appc-config/appc-config-params/provider/src/main/java/org/onap/sdnc/config/params/transformer/tosca/ArtifactProcessorImpl.java @@ -0,0 +1,401 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP : APPC + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Copyright (C) 2017 Amdocs + * ============================================================================= + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * ECOMP is a trademark and service mark of AT&T Intellectual Property. + * ============LICENSE_END========================================================= + */ + +package org.openecomp.sdnc.config.params.transformer.tosca; + +import com.att.eelf.configuration.EELFLogger; +import com.att.eelf.configuration.EELFManager; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.dataformat.yaml.YAMLFactory; +import org.apache.commons.lang.StringUtils; + +import org.openecomp.sdc.tosca.datatypes.model.*; +import org.openecomp.sdc.tosca.services.YamlUtil; +import org.openecomp.sdnc.config.params.data.Parameter; +import org.openecomp.sdnc.config.params.data.PropertyDefinition; +import org.openecomp.sdnc.config.params.data.RequestKey; +import org.openecomp.sdnc.config.params.data.ResponseKey; +import org.openecomp.sdnc.config.params.transformer.tosca.exceptions.ArtifactProcessorException; +import org.slf4j.MDC; + +import java.io.IOException; +import java.io.OutputStream; +import java.io.OutputStreamWriter; +import java.util.*; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +import static com.att.eelf.configuration.Configuration.MDC_SERVICE_NAME; + +public class ArtifactProcessorImpl implements ArtifactProcessor +{ + private static final String DERIVEDFROM = "org.openecomp.genericvnf"; + private static final EELFLogger Log = EELFManager.getInstance().getLogger(ArtifactProcessorImpl.class); + private static final String EQUALSENCODING = "="; + private static final String COLONENCODING = ":"; + private static final String COMMAENCODING = ","; + private static final String GREATERTHANENCODING = ">"; + private static final String LESSTHANENCODING = "<"; + + @Override + public void generateArtifact(PropertyDefinition artifact, OutputStream stream) throws ArtifactProcessorException + { + MDC.clear(); + MDC.put(MDC_SERVICE_NAME,"ArtifactGenerator"); + Log.info("Entered into generateArtifact"); + if(!StringUtils.isBlank(artifact.getKind())) { + logArtifact(artifact); + ServiceTemplate serviceTemplate = new ServiceTemplate(); + + addNodeType(artifact, serviceTemplate); + + TopologyTemplate topologyTemplate = new TopologyTemplate(); + serviceTemplate.setTopology_template(topologyTemplate); + addNodeTemplate(artifact, serviceTemplate); + + String tosca = new YamlUtil().objectToYaml(serviceTemplate); + OutputStreamWriter writer = new OutputStreamWriter(stream); + try { + writer.write(tosca); + writer.flush(); + } catch (IOException e) { + Log.error("Error writing to outputstream", e); + throw new ArtifactProcessorException(e); + } finally { + try { + writer.close(); + } catch (IOException e) { + Log.error("Error while closing outputstream writer", e); + } + MDC.clear(); + } + } + else + { + Log.error("Kind in PropertyDefinition is blank or null"); + throw new ArtifactProcessorException("Kind in PropertyDefinition is blank or null"); + } + } + + @Override + public void generateArtifact(String artifact, OutputStream stream) throws ArtifactProcessorException + { + ObjectMapper mapper = new ObjectMapper(new YAMLFactory()); + try { + PropertyDefinition pd = mapper.readValue(artifact, PropertyDefinition.class); + generateArtifact(pd, stream); + } + catch (IOException e) + { + Log.error("Error parsing property definition content = "+ artifact,e); + throw new ArtifactProcessorException(e); + } + } + + @Override + public PropertyDefinition readArtifact(String toscaArtifact) throws ArtifactProcessorException{ + Log.info("Entered into readArtifact."); + Log.info("Received ToscaArtifact:\n" + toscaArtifact); + + PropertyDefinition propertyDefinitionObj = new PropertyDefinition(); + ServiceTemplate serviceTemplate = new YamlUtil().yamlToObject(toscaArtifact, ServiceTemplate.class); + + //mapping parameters + Map nodeTypeMap = serviceTemplate.getNode_types(); + Map nodeTemplateMap = serviceTemplate.getTopology_template().getNode_templates(); + + String nodeTemplateName = nodeTemplateMap.keySet().toArray(new String[0])[0]; + NodeTemplate nodeTemplate = nodeTemplateMap.get(nodeTemplateName); + Map nodeTemplateProperties = nodeTemplate.getProperties(); + + String kind = nodeTypeMap.keySet().toArray(new String[0])[0]; + NodeType nodeType = nodeTypeMap.get(kind); + String version = nodeType.getVersion(); + Log.info("ReadArtifact for "+ kind + " with version "+version); + propertyDefinitionObj.setKind(kind); + propertyDefinitionObj.setVersion(version); + + List parameterList = new LinkedList<>(); + + Map propertyDefinitionFromTOSCA = nodeType.getProperties(); + if(null != propertyDefinitionFromTOSCA){ + for (String propertyName : propertyDefinitionFromTOSCA.keySet()) { + org.openecomp.sdc.tosca.datatypes.model.PropertyDefinition propertyDefinition = propertyDefinitionFromTOSCA.get(propertyName); + + Parameter parameter = new Parameter(); + parameter.setName(propertyName); + + if (propertyDefinition.get_default() != null) { + parameter.setDefaultValue(propertyDefinition.get_default().toString()); + } + parameter.setDescription(propertyDefinition.getDescription()); + if (null != propertyDefinition.getRequired()) { + parameter.setRequired(propertyDefinition.getRequired()); + } else { + parameter.setRequired(false); + } + + if (StringUtils.isNotEmpty(propertyDefinition.getType())) { + parameter.setType(propertyDefinition.getType()); + } + + String propertValueExpr = (String) nodeTemplateProperties.get(propertyName); + String[] stringTokens = parsePropertyValueExpression(propertValueExpr); + String ruleType = stringTokens[0].substring(stringTokens[0].indexOf('=')+1,stringTokens[0].length()).replaceAll(">","").trim(); + String responseExpression = stringTokens[1].substring(stringTokens[1].indexOf('=')+1,stringTokens[1].length()); + String source = stringTokens[2].substring(stringTokens[2].indexOf('=')+1,stringTokens[2].length()).replaceAll(">","").trim(); + String requestExpression = stringTokens[3].substring(stringTokens[3].indexOf('=')+1,stringTokens[3].length()); + + List requestKeys = readRequestKeys(requestExpression); + List responseKeys = readResponseKeys(responseExpression); + + parameter.setRuleType(ruleType); + parameter.setSource(source); + parameter.setRequestKeys(requestKeys); + parameter.setResponseKeys(responseKeys); + + parameterList.add(parameter); + + } + } + propertyDefinitionObj.setParameters(parameterList); + Log.info("Exiting from readArtifact. "); + return propertyDefinitionObj; + } + + private List readResponseKeys(String responseExpression) throws ArtifactProcessorException { + Log.info("Entered into readResponseKeys."); + List responseKeyList = null; + String expression; + expression = responseExpression.replaceAll("<", "").replaceAll(">", "").trim(); + if (StringUtils.isNotEmpty(expression)) { + responseKeyList = new ArrayList<>(); + + String[] responseKeys = expression.split(","); + for (String responseKeyStr : responseKeys) { + ResponseKey responseKey = new ResponseKey(); + try { + responseKey.setUniqueKeyName(responseKeyStr.split(":")[0].replaceAll(LESSTHANENCODING, "<").replaceAll(GREATERTHANENCODING, ">").replaceAll(COLONENCODING, ":").replaceAll(COMMAENCODING, ",").replaceAll(EQUALSENCODING,"=").trim()); + responseKey.setUniqueKeyValue(responseKeyStr.split(":")[1].replaceAll(LESSTHANENCODING, "<").replaceAll(GREATERTHANENCODING, ">").replaceAll(COLONENCODING, ":").replaceAll(COMMAENCODING, ",").replaceAll(EQUALSENCODING,"=").trim()); + responseKey.setFieldKeyName(responseKeyStr.split(":")[2].replaceAll(LESSTHANENCODING, "<").replaceAll(GREATERTHANENCODING, ">").replaceAll(COLONENCODING, ":").replaceAll(COMMAENCODING, ",").replaceAll(EQUALSENCODING,"=").trim()); + } catch (ArrayIndexOutOfBoundsException e) { + Log.error("Invalid response attribute found :" + responseKeyStr + "due to "+e); + throw new ArtifactProcessorException("Invalid response attribute found :" + responseKeyStr); + } + responseKeyList.add(responseKey); + } + } + Log.info("Exiting from readResponseKeys."); + return responseKeyList; + } + + private List readRequestKeys(String requestExpression) { + Log.info("Entered into readRequestKeys."); + List requestKeyList = null; + String expression; + expression = requestExpression.replaceAll("<","").replaceAll(">","").trim(); + if(StringUtils.isNotEmpty(expression)){ + requestKeyList = new ArrayList<>(); + String[] requestKeys = expression.split(","); + for(String responseKeyStr :requestKeys){ + RequestKey requestKey = new RequestKey(); + requestKey.setKeyName(responseKeyStr.split(":")[0].replaceAll(LESSTHANENCODING, "<").replaceAll(GREATERTHANENCODING, ">").replaceAll(COLONENCODING,":").replaceAll(COMMAENCODING,",").replaceAll(EQUALSENCODING,"=").trim()); + requestKey.setKeyValue(responseKeyStr.split(":")[1].replaceAll(LESSTHANENCODING, "<").replaceAll(GREATERTHANENCODING, ">").replaceAll(COLONENCODING,":").replaceAll(COMMAENCODING,",").replaceAll(EQUALSENCODING,"=").trim()); + requestKeyList.add(requestKey); + } + } + Log.info("Exiting from readRequestKeys."); + return requestKeyList; + } + + private String[] parsePropertyValueExpression(String propertValueExpr) throws ArtifactProcessorException{ + Log.info("Entered into parsePropertyValueExpression."); + String nodeRegex = "<(.*?)>"; + Pattern pattern = Pattern.compile(nodeRegex, Pattern.CASE_INSENSITIVE); + Matcher matcher = pattern.matcher(propertValueExpr); + List stringTokens = new ArrayList<>(); + while(matcher.find()){ + stringTokens.add(matcher.group(0)); + } + String[] propertiesArr = new String[stringTokens.size()]; + propertiesArr = stringTokens.toArray(propertiesArr); + if(propertiesArr.length!=4){ + throw new ArtifactProcessorException("Invalid input found " + propertValueExpr); + } + Log.info("Exiting from parsePropertyValueExpression."); + return propertiesArr; + } + + private void addNodeType(PropertyDefinition artifact, ServiceTemplate toscaTemplate) throws ArtifactProcessorException { + //Add basic fields for the node + NodeType toscaNodeType = new NodeType(); + toscaNodeType.setDerived_from(DERIVEDFROM); + toscaNodeType.setVersion(artifact.getVersion()); + toscaNodeType.setDescription(""); + if(artifact.getParameters()!=null) { + Map toscaPropertyMap = new HashMap<>(); + toscaNodeType.setProperties(toscaPropertyMap); + + //Add properties from parameters of PD + for (Parameter pdParameter : artifact.getParameters()) { + addProperty(toscaNodeType, pdParameter); + } + } + + // This is where it adds node in node Map and adds the map in tosca template + Map toscaNodeMap = new HashMap<>(); + toscaNodeMap.put(artifact.getKind(),toscaNodeType); + toscaTemplate.setNode_types(toscaNodeMap); + } + + private void addProperty(NodeType toscaNodeType, Parameter pdParameter) throws ArtifactProcessorException { + if(!StringUtils.isBlank(pdParameter.getName())&& !pdParameter.getName().matches(".*\\s+.*")) { + Log.info("Adding parameter " + pdParameter.getName() + " in node type"); + org.openecomp.sdc.tosca.datatypes.model.PropertyDefinition toscaProperty = new org.openecomp.sdc.tosca.datatypes.model.PropertyDefinition(); + + toscaProperty.setType(StringUtils.isBlank(pdParameter.getType()) ? "string" : pdParameter.getType()); + toscaProperty.set_default(pdParameter.getDefaultValue()); + + toscaProperty.setDescription(pdParameter.getDescription()); + toscaProperty.setRequired(pdParameter.isRequired()); + + toscaNodeType.getProperties().put(pdParameter.getName(), toscaProperty); + } + else + { + String message ="Parameter name is empty,null or contains whitespace"; + Log.error(message); + throw new ArtifactProcessorException(message); + } + } + + private void addNodeTemplate(PropertyDefinition artifact, ServiceTemplate toscaTemplate) + { + NodeTemplate nodeTemplate = new NodeTemplate(); + nodeTemplate.setType(artifact.getKind()); + Map templateProperties = new HashMap<>(); + //Add properties from parameters of PD + if(artifact.getParameters()!=null) { + for (Parameter pdParameter : artifact.getParameters()) { + addTemplateProperty(templateProperties, pdParameter); + } + nodeTemplate.setProperties(templateProperties); + } + Map nodeTemplateMap = new HashMap<>(); + nodeTemplateMap.put(artifact.getKind()+"_Template",nodeTemplate); + toscaTemplate.getTopology_template().setNode_templates(nodeTemplateMap); + } + + private void addTemplateProperty(Map templateProperties, Parameter pdParameter) + { + Log.info("Adding parameter "+ pdParameter.getName() + " in node templates"); + String responseKeys = buildResponseKeyExpression(pdParameter.getResponseKeys()); + String requestKeys = buildRequestKeyExpression(pdParameter.getRequestKeys()); + String ruleType = buildRuleType(pdParameter.getRuleType()); + String source = buildSourceSystem(pdParameter.getSource()); + String properties = ruleType + " " + responseKeys + " " + source + " " + requestKeys; + templateProperties.put(pdParameter.getName(),properties); + } + + protected String buildResponseKeyExpression(List responseKeys) + { + StringBuilder propertyBuilder = new StringBuilder(); + propertyBuilder.append(" itr = responseKeys.iterator(); + while (itr.hasNext()) { + ResponseKey res = itr.next(); + if(res!=null) + propertyBuilder.append(encode(res.getUniqueKeyName()) + ":" + encode(res.getUniqueKeyValue()) + ":" + encode(res.getFieldKeyName())); + if (itr.hasNext()) + propertyBuilder.append(" , "); + } + } + propertyBuilder.append(">"); + return propertyBuilder.toString(); + } + + protected String buildRequestKeyExpression(List requestKeys) + { + StringBuilder propertyBuilder = new StringBuilder(); + propertyBuilder.append(" itr = requestKeys.iterator(); + while (itr.hasNext()) { + RequestKey res = itr.next(); + if(res!=null) + propertyBuilder.append(encode(res.getKeyName()) + ":" + encode(res.getKeyValue())); + if (itr.hasNext()) + propertyBuilder.append(" , "); + } + } + propertyBuilder.append(">"); + return propertyBuilder.toString(); + } + + protected String buildRuleType(String classType) + { + StringBuilder propertyBuilder = new StringBuilder(); + String encodedClassType = StringUtils.isBlank(encode(classType))?"":encode(classType); + propertyBuilder.append("<"); + propertyBuilder.append("rule-type = "+encodedClassType); + propertyBuilder.append(">"); + return propertyBuilder.toString(); + } + + protected String buildSourceSystem(String source) + { + StringBuilder sourceBuilder = new StringBuilder(); + sourceBuilder.append(""); + return sourceBuilder.toString(); + } + + protected String encode(String string) + { + String encodedString = null; + if(string!=null) { + encodedString = string.trim().replaceAll("<", "<").replaceAll(">", ">").replaceAll(":",":").replaceAll(",",",").replaceAll("=","="); + } + return encodedString; + } + + private void logArtifact(PropertyDefinition artifact) + { + ObjectMapper mapper = new ObjectMapper(new YAMLFactory()); + String stringArtifact=null; + try + { + stringArtifact = mapper.writeValueAsString(artifact); + Log.info("Received PropertyDefinition:\n" + stringArtifact); + } + catch (JsonProcessingException e) + { + Log.error("Exception while logging artifact:",e); + } + + } +} diff --git a/appc-config/appc-config-params/provider/src/main/java/org/onap/sdnc/config/params/transformer/tosca/exceptions/ArtifactProcessorException.java b/appc-config/appc-config-params/provider/src/main/java/org/onap/sdnc/config/params/transformer/tosca/exceptions/ArtifactProcessorException.java new file mode 100644 index 000000000..e788fbf88 --- /dev/null +++ b/appc-config/appc-config-params/provider/src/main/java/org/onap/sdnc/config/params/transformer/tosca/exceptions/ArtifactProcessorException.java @@ -0,0 +1,48 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP : APPC + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Copyright (C) 2017 Amdocs + * ============================================================================= + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * ECOMP is a trademark and service mark of AT&T Intellectual Property. + * ============LICENSE_END========================================================= + */ + +package org.openecomp.sdnc.config.params.transformer.tosca.exceptions; + +/** + * Created by pranavdi on 3/17/2017. + */ +public class ArtifactProcessorException extends Exception +{ + public ArtifactProcessorException() {} + + public ArtifactProcessorException(String message) + { + super(message); + } + + public ArtifactProcessorException(Throwable cause) + { + super(cause); + } + + public ArtifactProcessorException(String message, Throwable cause) + { + super(message,cause); + } +} diff --git a/appc-config/appc-config-params/provider/src/main/java/org/openecomp/sdnc/config/params/ParamsHandlerActivator.java b/appc-config/appc-config-params/provider/src/main/java/org/openecomp/sdnc/config/params/ParamsHandlerActivator.java deleted file mode 100644 index dd4515cca..000000000 --- a/appc-config/appc-config-params/provider/src/main/java/org/openecomp/sdnc/config/params/ParamsHandlerActivator.java +++ /dev/null @@ -1,70 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP : APPC - * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Copyright (C) 2017 Amdocs - * ============================================================================= - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * ECOMP is a trademark and service mark of AT&T Intellectual Property. - * ============LICENSE_END========================================================= - */ - -package org.openecomp.sdnc.config.params; - -import java.util.LinkedList; -import java.util.List; - -import org.openecomp.sdnc.config.params.parser.PropertyDefinitionNode; -import org.osgi.framework.BundleActivator; -import org.osgi.framework.BundleContext; -import org.osgi.framework.ServiceRegistration; - -import com.att.eelf.configuration.EELFLogger; -import com.att.eelf.configuration.EELFManager; - -public class ParamsHandlerActivator implements BundleActivator{ - - private List registrations = new LinkedList(); - - - private static final EELFLogger log = EELFManager.getInstance().getLogger(ParamsHandlerActivator.class); - - @Override - public void start(BundleContext ctx) throws Exception - { - - try { - PropertyDefinitionNode propertyDefinitionNode = new PropertyDefinitionNode(); - log.info("Registering service "+ propertyDefinitionNode.getClass().getName()); - registrations.add(ctx.registerService(propertyDefinitionNode.getClass().getName(), propertyDefinitionNode, null)); - log.info("Registering service sccessful for "+ propertyDefinitionNode.getClass().getName()); - } catch (Exception e) { - e.printStackTrace(); - } - - } - @Override - public void stop(BundleContext arg0) throws Exception - { - for (ServiceRegistration registration: registrations) - { - registration.unregister(); - registration = null; - } - - } - -} diff --git a/appc-config/appc-config-params/provider/src/main/java/org/openecomp/sdnc/config/params/ParamsHandlerConstant.java b/appc-config/appc-config-params/provider/src/main/java/org/openecomp/sdnc/config/params/ParamsHandlerConstant.java deleted file mode 100644 index 65b93d738..000000000 --- a/appc-config/appc-config-params/provider/src/main/java/org/openecomp/sdnc/config/params/ParamsHandlerConstant.java +++ /dev/null @@ -1,55 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP : APPC - * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Copyright (C) 2017 Amdocs - * ============================================================================= - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * ECOMP is a trademark and service mark of AT&T Intellectual Property. - * ============LICENSE_END========================================================= - */ - -package org.openecomp.sdnc.config.params; - -public class ParamsHandlerConstant { - - public static String STRING_ENCODING = "utf-8"; - public static String Y = "Y"; - public static String N = "N"; - public static String DATA_TYPE_TEXT = "TEXT"; - public static String DATA_TYPE_JSON = "JSON"; - public static String DATA_TYPE_XML = "XML"; - public static String DATA_TYPE_SQL = "SQL"; - - - public static String INPUT_PARAM_PD_CONTENT = "pdContent"; - public static String INPUT_PARAM_SYSTEM_NAME = "systemName"; - public static String INPUT_PARAM_JSON_DATA = "jsonData"; - public static String INPUT_PARAM_MERGE__JSON_DATA = "mergeJsonData"; - - - public static String INPUT_PARAM_REQUEST_DATA = "requestData"; - public static String INPUT_PARAM_RESPONSE_PRIFIX = "responsePrefix"; - public static String OUTPUT_PARAM_CONFIGURATION_PARAMETER = "configuration-parameters"; - - - - public static String OUTPUT_PARAM_STATUS = "status"; - public static String OUTPUT_PARAM_ERROR_MESSAGE = "error-message"; - public static String OUTPUT_STATUS_SUCCESS = "success"; - public static String OUTPUT_STATUS_FAILURE = "failure"; - -} diff --git a/appc-config/appc-config-params/provider/src/main/java/org/openecomp/sdnc/config/params/data/Parameter.java b/appc-config/appc-config-params/provider/src/main/java/org/openecomp/sdnc/config/params/data/Parameter.java deleted file mode 100644 index aaa457645..000000000 --- a/appc-config/appc-config-params/provider/src/main/java/org/openecomp/sdnc/config/params/data/Parameter.java +++ /dev/null @@ -1,126 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP : APPC - * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Copyright (C) 2017 Amdocs - * ============================================================================= - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * ECOMP is a trademark and service mark of AT&T Intellectual Property. - * ============LICENSE_END========================================================= - */ - -package org.openecomp.sdnc.config.params.data; - -import java.util.List; - -import com.fasterxml.jackson.annotation.JsonProperty; - -public class Parameter { - private String name; - private String description; - private String type; - private boolean required; - private String source; - - @JsonProperty("rule-type") - private String ruleType; - - @JsonProperty("default") - private String defaultValue; - - @JsonProperty("request-keys") - private List requestKeys; - - @JsonProperty("response-keys") - private List responseKeys; - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - public String getDescription() { - return description; - } - - public void setDescription(String description) { - this.description = description; - } - - public String getType() { - return type; - } - - public void setType(String type) { - this.type = type; - } - - public boolean isRequired() { - return required; - } - - public void setRequired(boolean required) { - this.required = required; - } - - public String getSource() { - return source; - } - - public void setSource(String source) { - this.source = source; - } - - public String getRuleType() { - return ruleType; - } - - public void setRuleType(String ruleType) { - this.ruleType = ruleType; - } - - public String getDefaultValue() { - return defaultValue; - } - - public void setDefaultValue(String defaultValue) { - this.defaultValue = defaultValue; - } - - public List getRequestKeys() { - return requestKeys; - } - - public void setRequestKeys(List requestKeys) { - this.requestKeys = requestKeys; - } - - public List getResponseKeys() { - return responseKeys; - } - - public void setResponseKeys(List responseKeys) { - this.responseKeys = responseKeys; - } - - - - - -} diff --git a/appc-config/appc-config-params/provider/src/main/java/org/openecomp/sdnc/config/params/data/PropertyDefinition.java b/appc-config/appc-config-params/provider/src/main/java/org/openecomp/sdnc/config/params/data/PropertyDefinition.java deleted file mode 100644 index d33fd9589..000000000 --- a/appc-config/appc-config-params/provider/src/main/java/org/openecomp/sdnc/config/params/data/PropertyDefinition.java +++ /dev/null @@ -1,56 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP : APPC - * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Copyright (C) 2017 Amdocs - * ============================================================================= - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * ECOMP is a trademark and service mark of AT&T Intellectual Property. - * ============LICENSE_END========================================================= - */ - -package org.openecomp.sdnc.config.params.data; - -import java.util.List; - -import com.fasterxml.jackson.annotation.JsonProperty; - -public class PropertyDefinition { - public String kind = "Property Definition"; - public String version = "V1"; - - @JsonProperty("vnf-parameter-list") - public List parameters; - public String getKind() { - return kind; - } - public void setKind(String kind) { - this.kind = kind; - } - public String getVersion() { - return version; - } - public void setVersion(String version) { - this.version = version; - } - public List getParameters() { - return parameters; - } - public void setParameters(List parameters) { - this.parameters = parameters; - } - -} diff --git a/appc-config/appc-config-params/provider/src/main/java/org/openecomp/sdnc/config/params/data/RequestKey.java b/appc-config/appc-config-params/provider/src/main/java/org/openecomp/sdnc/config/params/data/RequestKey.java deleted file mode 100644 index 0589afcc3..000000000 --- a/appc-config/appc-config-params/provider/src/main/java/org/openecomp/sdnc/config/params/data/RequestKey.java +++ /dev/null @@ -1,51 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP : APPC - * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Copyright (C) 2017 Amdocs - * ============================================================================= - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * ECOMP is a trademark and service mark of AT&T Intellectual Property. - * ============LICENSE_END========================================================= - */ - -package org.openecomp.sdnc.config.params.data; - -import com.fasterxml.jackson.annotation.JsonProperty; - -public class RequestKey{ - @JsonProperty("key-name") - private String keyName; - @JsonProperty("key-value") - private String keyValue; - - public String getKeyName() { - return keyName; - } - public void setKeyName(String keyName) { - this.keyName = keyName; - } - public String getKeyValue() { - return keyValue; - } - public void setKeyValue(String keyValue) { - this.keyValue = keyValue; - } - - - - -} diff --git a/appc-config/appc-config-params/provider/src/main/java/org/openecomp/sdnc/config/params/data/ResponseKey.java b/appc-config/appc-config-params/provider/src/main/java/org/openecomp/sdnc/config/params/data/ResponseKey.java deleted file mode 100644 index 5277699e1..000000000 --- a/appc-config/appc-config-params/provider/src/main/java/org/openecomp/sdnc/config/params/data/ResponseKey.java +++ /dev/null @@ -1,57 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP : APPC - * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Copyright (C) 2017 Amdocs - * ============================================================================= - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * ECOMP is a trademark and service mark of AT&T Intellectual Property. - * ============LICENSE_END========================================================= - */ - -package org.openecomp.sdnc.config.params.data; - -import com.fasterxml.jackson.annotation.JsonProperty; - -public class ResponseKey{ - @JsonProperty("unique-key-name") - private String uniqueKeyName; - @JsonProperty("unique-key-value") - private String uniqueKeyValue; - @JsonProperty("field-key-name") - private String fieldKeyName; - - public String getUniqueKeyName() { - return uniqueKeyName; - } - public void setUniqueKeyName(String uniqueKeyName) { - this.uniqueKeyName = uniqueKeyName; - } - public String getUniqueKeyValue() { - return uniqueKeyValue; - } - public void setUniqueKeyValue(String uniqueKeyValue) { - this.uniqueKeyValue = uniqueKeyValue; - } - public String getFieldKeyName() { - return fieldKeyName; - } - public void setFieldKeyName(String fieldKeyName) { - this.fieldKeyName = fieldKeyName; - } - - -} diff --git a/appc-config/appc-config-params/provider/src/main/java/org/openecomp/sdnc/config/params/parser/PropertyDefinitionNode.java b/appc-config/appc-config-params/provider/src/main/java/org/openecomp/sdnc/config/params/parser/PropertyDefinitionNode.java deleted file mode 100644 index 4916c46a8..000000000 --- a/appc-config/appc-config-params/provider/src/main/java/org/openecomp/sdnc/config/params/parser/PropertyDefinitionNode.java +++ /dev/null @@ -1,251 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP : APPC - * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Copyright (C) 2017 Amdocs - * ============================================================================= - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * ECOMP is a trademark and service mark of AT&T Intellectual Property. - * ============LICENSE_END========================================================= - */ - -package org.openecomp.sdnc.config.params.parser; - -import java.io.IOException; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import org.apache.commons.lang3.StringUtils; -import org.openecomp.sdnc.config.params.ParamsHandlerConstant; -import org.openecomp.sdnc.config.params.data.Parameter; -import org.openecomp.sdnc.config.params.data.PropertyDefinition; -import org.onap.ccsdk.sli.core.sli.SvcLogicContext; -import org.onap.ccsdk.sli.core.sli.SvcLogicException; -import org.onap.ccsdk.sli.core.sli.SvcLogicJavaPlugin; - -import com.att.eelf.configuration.EELFLogger; -import com.att.eelf.configuration.EELFManager; -import com.fasterxml.jackson.core.JsonParseException; -import com.fasterxml.jackson.databind.JsonMappingException; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.dataformat.yaml.YAMLFactory; - -public class PropertyDefinitionNode implements SvcLogicJavaPlugin{ - - - private static final EELFLogger log = EELFManager.getInstance().getLogger(PropertyDefinitionNode.class); - - public void processMissingParamKeys(Map inParams, SvcLogicContext ctx) throws SvcLogicException { - log.info("Received processParamKeys call with params : " + inParams); - String responsePrefix = inParams.get(ParamsHandlerConstant.INPUT_PARAM_RESPONSE_PRIFIX); - try{ - responsePrefix = StringUtils.isNotBlank(responsePrefix) ? (responsePrefix+".") : ""; - - String requestParamJson = inParams.get(ParamsHandlerConstant.INPUT_PARAM_JSON_DATA); - String pdContent = inParams.get(ParamsHandlerConstant.INPUT_PARAM_PD_CONTENT); - - if(StringUtils.isBlank(pdContent)){ - throw new Exception("Request Param (pdContent) is Missing .."); - } - - if(StringUtils.isBlank(requestParamJson)){ - throw new Exception("Request Param (jsonData) is Missing .."); - } - - PropertyDefinition propertyDefinition = parsePDContent(pdContent); - if(propertyDefinition != null){ - requestParamJson = mergeMissingRequestParamFromPD(propertyDefinition, requestParamJson); - ctx.setAttribute(responsePrefix + ParamsHandlerConstant.OUTPUT_PARAM_CONFIGURATION_PARAMETER, requestParamJson); - } - - ctx.setAttribute(responsePrefix + ParamsHandlerConstant.OUTPUT_PARAM_STATUS, ParamsHandlerConstant.OUTPUT_STATUS_SUCCESS); - } catch (Exception e) { - ctx.setAttribute(responsePrefix + ParamsHandlerConstant.OUTPUT_PARAM_STATUS, ParamsHandlerConstant.OUTPUT_STATUS_FAILURE); - ctx.setAttribute(responsePrefix + ParamsHandlerConstant.OUTPUT_PARAM_ERROR_MESSAGE,e.getMessage()); - log.error("Failed in merging data to template " + e.getMessage()); - throw new SvcLogicException(e.getMessage()); - } - } - - public void processExternalSystemParamKeys(Map inParams, SvcLogicContext ctx) throws SvcLogicException { - log.info("Received processExternalSystemParamKeys call with params : " + inParams); - String responsePrefix = inParams.get(ParamsHandlerConstant.INPUT_PARAM_RESPONSE_PRIFIX); - try{ - responsePrefix = StringUtils.isNotBlank(responsePrefix) ? (responsePrefix+".") : ""; - - String requestParamJson = inParams.get(ParamsHandlerConstant.INPUT_PARAM_JSON_DATA); - String pdContent = inParams.get(ParamsHandlerConstant.INPUT_PARAM_PD_CONTENT); - String systemName = inParams.get(ParamsHandlerConstant.INPUT_PARAM_SYSTEM_NAME); - - - if(StringUtils.isBlank(pdContent)){ - throw new Exception("Request Param (pdContent) is Missing .."); - } - - if(StringUtils.isBlank(requestParamJson)){ - throw new Exception("Request Param (jsonData) is Missing .."); - } - - if(StringUtils.isBlank(systemName)){ - throw new Exception("Request Param (systemName) is Missing .."); - } - - PropertyDefinition propertyDefinition = parsePDContent(pdContent); - if(propertyDefinition != null){ - getSystemRequestParamInfoFromPD(propertyDefinition, requestParamJson, systemName, ctx); - } - - ctx.setAttribute(responsePrefix + ParamsHandlerConstant.OUTPUT_PARAM_STATUS, ParamsHandlerConstant.OUTPUT_STATUS_SUCCESS); - } catch (Exception e) { - ctx.setAttribute(responsePrefix + ParamsHandlerConstant.OUTPUT_PARAM_STATUS, ParamsHandlerConstant.OUTPUT_STATUS_FAILURE); - ctx.setAttribute(responsePrefix + ParamsHandlerConstant.OUTPUT_PARAM_ERROR_MESSAGE,e.getMessage()); - log.error("Failed in merging data to template " + e.getMessage()); - throw new SvcLogicException(e.getMessage()); - } - } - - - public void mergeJsonData(Map inParams, SvcLogicContext ctx) throws SvcLogicException { - log.info("Received mergeJsonData call with params : " + inParams); - String responsePrefix = inParams.get(ParamsHandlerConstant.INPUT_PARAM_RESPONSE_PRIFIX); - try{ - responsePrefix = StringUtils.isNotBlank(responsePrefix) ? (responsePrefix+".") : ""; - - String requestParamJson = inParams.get(ParamsHandlerConstant.INPUT_PARAM_JSON_DATA); - String mergeJsonData = inParams.get(ParamsHandlerConstant.INPUT_PARAM_MERGE__JSON_DATA); - - if(StringUtils.isBlank(requestParamJson)){ - throw new Exception("Request Param (jsonData) is Missing .."); - } - - if(StringUtils.isBlank(mergeJsonData)){ - throw new Exception("Request Param (mergeJsonData) is Missing .."); - } - - requestParamJson = mergeJson(requestParamJson, mergeJsonData); - ctx.setAttribute(responsePrefix + ParamsHandlerConstant.OUTPUT_PARAM_CONFIGURATION_PARAMETER, requestParamJson); - ctx.setAttribute(responsePrefix + ParamsHandlerConstant.OUTPUT_PARAM_STATUS, ParamsHandlerConstant.OUTPUT_STATUS_SUCCESS); - } catch (Exception e) { - ctx.setAttribute(responsePrefix + ParamsHandlerConstant.OUTPUT_PARAM_STATUS, ParamsHandlerConstant.OUTPUT_STATUS_FAILURE); - ctx.setAttribute(responsePrefix + ParamsHandlerConstant.OUTPUT_PARAM_ERROR_MESSAGE,e.getMessage()); - log.error("Failed in merging data to template " + e.getMessage()); - throw new SvcLogicException(e.getMessage()); - } - } - - - /* */ - - private PropertyDefinition parsePDContent(String pdContent) throws JsonParseException, JsonMappingException, IOException{ - PropertyDefinition propertyDefinition = null; - if(StringUtils.isNotBlank(pdContent)){ - ObjectMapper mapper = new ObjectMapper(new YAMLFactory()); - propertyDefinition = mapper.readValue(pdContent, PropertyDefinition.class); - } - return propertyDefinition; - } - - - private String mergeMissingRequestParamFromPD(PropertyDefinition propertyDefinition, String requestParamJson) throws Exception{ - - if(propertyDefinition == null){ - throw new Exception("PropertyDefinition is Missing .."); - } - - if(StringUtils.isBlank(requestParamJson)){ - throw new Exception("Request Param is Missing .."); - } - - ObjectMapper mapper = new ObjectMapper(); - Map requestParamMap = mapper.readValue(requestParamJson, HashMap.class); - if(requestParamMap != null){ - List parameters = propertyDefinition.getParameters(); - for (Parameter parameter : parameters) { - if(parameter != null){ - - log.info("Checking Key " + parameter.getName() + ":: Source :" +parameter.getSource()); - // Add Only non external system keys,If it is not present in request Params - if( !requestParamMap.containsKey(parameter.getName()) - && StringUtils.isBlank(parameter.getSource()) - ){ - log.info("Adding New Key " + parameter.getName()); - requestParamMap.put(parameter.getName(), parameter.getDefaultValue()); - } - } - } - requestParamJson = mapper.writeValueAsString(requestParamMap); - log.info("Processed Request Param " + requestParamJson); - } - - return requestParamJson; - } - - private void getSystemRequestParamInfoFromPD(PropertyDefinition propertyDefinition, String requestParamJson, String systemName, SvcLogicContext ctx) throws Exception{ - - if(propertyDefinition == null){ - throw new Exception("PropertyDefinition is Missing .."); - } - - if(StringUtils.isBlank(requestParamJson)){ - throw new Exception("Request Param is Missing .."); - } - - ObjectMapper mapper = new ObjectMapper(); - Map requestParamMap = mapper.readValue(requestParamJson, HashMap.class); - if(requestParamMap != null){ - List parameters = propertyDefinition.getParameters(); - - List externalSystemKeys = new ArrayList(); - for (Parameter parameter : parameters) { - if(parameter != null){ - if( !requestParamMap.containsKey(parameter.getName()) && StringUtils.isNotBlank(parameter.getSource()) && !StringUtils.equalsIgnoreCase(parameter.getSource(),"Manual") ){ - log.info("Adding New System Key " + parameter.getName() + ":"+ mapper.writeValueAsString(parameter)); - externalSystemKeys.add(parameter.getName()); - ctx.setAttribute(systemName +"."+parameter.getName(), mapper.writeValueAsString(parameter)); - } - } - } - - String systemKeys = systemName+".keys"; - ctx.setAttribute(systemKeys, mapper.writeValueAsString(externalSystemKeys)); - } - } - - - private String mergeJson(String requestParamJson, String systemParamJson) throws Exception { - ObjectMapper mapper = new ObjectMapper(); - Map requestParamMap = mapper.readValue(requestParamJson, HashMap.class); - if(requestParamMap != null){ - Map systemParamMap = mapper.readValue(systemParamJson, HashMap.class); - if(systemParamMap != null){ - for (String systemParamKey : systemParamMap.keySet()) { - log.trace("Megging System Key Values " + systemParamKey); - requestParamMap.put( systemParamKey , systemParamMap.get(systemParamKey)); - } - } - requestParamJson = mapper.writeValueAsString(requestParamMap); - log.info("Processed Request Param " + requestParamJson); - } - - return requestParamJson; - } - - - - -} diff --git a/appc-config/appc-config-params/provider/src/main/java/org/openecomp/sdnc/config/params/transformer/ArtificatTransformer.java b/appc-config/appc-config-params/provider/src/main/java/org/openecomp/sdnc/config/params/transformer/ArtificatTransformer.java deleted file mode 100644 index 8498b6375..000000000 --- a/appc-config/appc-config-params/provider/src/main/java/org/openecomp/sdnc/config/params/transformer/ArtificatTransformer.java +++ /dev/null @@ -1,87 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP : APPC - * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Copyright (C) 2017 Amdocs - * ============================================================================= - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * ECOMP is a trademark and service mark of AT&T Intellectual Property. - * ============LICENSE_END========================================================= - */ - -package org.openecomp.sdnc.config.params.transformer; - -import java.io.IOException; -import java.util.List; - -import org.apache.commons.lang3.StringUtils; -import org.openecomp.sdnc.config.params.data.Parameter; -import org.openecomp.sdnc.config.params.data.PropertyDefinition; - -import com.fasterxml.jackson.core.JsonParseException; -import com.fasterxml.jackson.databind.JsonMappingException; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.SerializationFeature; -import com.fasterxml.jackson.dataformat.yaml.YAMLFactory; - -public class ArtificatTransformer { - - - public String convertPDToYaml(PropertyDefinition propertyDefinition) throws JsonParseException, JsonMappingException, IOException{ - String yamlContent = null; - if(propertyDefinition != null){ - ObjectMapper mapper = new ObjectMapper(new YAMLFactory()); - mapper.disable(SerializationFeature.FAIL_ON_EMPTY_BEANS); - yamlContent = mapper.writeValueAsString(propertyDefinition); - } - return yamlContent; - } - - public String transformYamlToJson(String yaml) throws JsonParseException, JsonMappingException, IOException { - ObjectMapper yamlReader = new ObjectMapper(new YAMLFactory()); - Object obj = yamlReader.readValue(yaml, Object.class); - ObjectMapper jsonWriter = new ObjectMapper(); - jsonWriter.enable(SerializationFeature.INDENT_OUTPUT); - return jsonWriter.writeValueAsString(obj); - } - - public PropertyDefinition convertYAMLToPD(String pdContent) throws JsonParseException, JsonMappingException, IOException{ - PropertyDefinition propertyDefinition = null; - if(StringUtils.isNotBlank(pdContent)){ - ObjectMapper mapper = new ObjectMapper(new YAMLFactory()); - propertyDefinition = mapper.readValue(pdContent, PropertyDefinition.class); - } - return propertyDefinition; - } - - public String convertYAMLToParams(String pdContent) throws JsonParseException, JsonMappingException, IOException{ - String paramJson = null; - if(StringUtils.isNotBlank(pdContent)){ - paramJson = convertPdToParams(convertYAMLToPD(pdContent)); - } - return paramJson; - } - - public String convertPdToParams(PropertyDefinition propertyDefinition) throws JsonParseException, JsonMappingException, IOException{ - String paramJson = null; - if(propertyDefinition != null && propertyDefinition.getParameters() != null){ - List parameters = propertyDefinition.getParameters(); - - } - return paramJson; - } - -} diff --git a/appc-config/appc-config-params/provider/src/main/java/org/openecomp/sdnc/config/params/transformer/tosca/ArtifactProcessor.java b/appc-config/appc-config-params/provider/src/main/java/org/openecomp/sdnc/config/params/transformer/tosca/ArtifactProcessor.java deleted file mode 100644 index cb4f1e0f7..000000000 --- a/appc-config/appc-config-params/provider/src/main/java/org/openecomp/sdnc/config/params/transformer/tosca/ArtifactProcessor.java +++ /dev/null @@ -1,68 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP : APPC - * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Copyright (C) 2017 Amdocs - * ============================================================================= - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * ECOMP is a trademark and service mark of AT&T Intellectual Property. - * ============LICENSE_END========================================================= - */ - -package org.openecomp.sdnc.config.params.transformer.tosca; - -import org.openecomp.sdnc.config.params.data.PropertyDefinition; -import org.openecomp.sdnc.config.params.transformer.tosca.exceptions.ArtifactProcessorException; - -import java.io.OutputStream; - -public interface ArtifactProcessor -{ - /** - * Generates Tosca artifact from PropertyDefinition object. - * - * @param artifact - * PropertyDefinition object which is to be converted to Tosca. - * @param stream - * Stream to which the generated Tosca is to be written. - * @throws ArtifactProcessorException - * If the Tosca Generation failed - */ - void generateArtifact(PropertyDefinition artifact, OutputStream stream) throws ArtifactProcessorException; - - /** - * Generates Tosca artifact from PropertyDefinition string. - * - * @param artifact - * PropertyDefinition string which is to be converted to Tosca. - * @param stream - * Stream to which the generated Tosca is to be written. - * @throws ArtifactProcessorException - * If the Tosca Generation failed - */ - void generateArtifact(String artifact, OutputStream stream) throws ArtifactProcessorException; - - /** - * Generates the PropertyDefinition object from a Tosca artifact. - * - * @param toscaArtifact - * Tosca artifact which is to be converted. - * @return PropertyDefinition object generated from Tosca - * @throws ArtifactProcessorException - * If the PropertyDefinition Generation failed - */ - PropertyDefinition readArtifact(String toscaArtifact) throws ArtifactProcessorException; -} diff --git a/appc-config/appc-config-params/provider/src/main/java/org/openecomp/sdnc/config/params/transformer/tosca/ArtifactProcessorFactory.java b/appc-config/appc-config-params/provider/src/main/java/org/openecomp/sdnc/config/params/transformer/tosca/ArtifactProcessorFactory.java deleted file mode 100644 index 9ec80c9a4..000000000 --- a/appc-config/appc-config-params/provider/src/main/java/org/openecomp/sdnc/config/params/transformer/tosca/ArtifactProcessorFactory.java +++ /dev/null @@ -1,43 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP : APPC - * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Copyright (C) 2017 Amdocs - * ============================================================================= - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * ECOMP is a trademark and service mark of AT&T Intellectual Property. - * ============LICENSE_END========================================================= - */ - -package org.openecomp.sdnc.config.params.transformer.tosca; - -/** - * Created by pranavdi on 3/29/2017. - */ -public class ArtifactProcessorFactory -{ - private static class InstanceHolder - { - private static ArtifactProcessorImpl instance = new ArtifactProcessorImpl(); - } - - private ArtifactProcessorFactory(){} - - public static ArtifactProcessor getArtifactProcessor() - { - return InstanceHolder.instance; - } -} diff --git a/appc-config/appc-config-params/provider/src/main/java/org/openecomp/sdnc/config/params/transformer/tosca/ArtifactProcessorImpl.java b/appc-config/appc-config-params/provider/src/main/java/org/openecomp/sdnc/config/params/transformer/tosca/ArtifactProcessorImpl.java deleted file mode 100644 index e3dd5dc41..000000000 --- a/appc-config/appc-config-params/provider/src/main/java/org/openecomp/sdnc/config/params/transformer/tosca/ArtifactProcessorImpl.java +++ /dev/null @@ -1,401 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP : APPC - * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Copyright (C) 2017 Amdocs - * ============================================================================= - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * ECOMP is a trademark and service mark of AT&T Intellectual Property. - * ============LICENSE_END========================================================= - */ - -package org.openecomp.sdnc.config.params.transformer.tosca; - -import com.att.eelf.configuration.EELFLogger; -import com.att.eelf.configuration.EELFManager; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.dataformat.yaml.YAMLFactory; -import org.apache.commons.lang.StringUtils; - -import org.openecomp.sdc.tosca.datatypes.model.*; -import org.openecomp.sdc.tosca.services.YamlUtil; -import org.openecomp.sdnc.config.params.data.Parameter; -import org.openecomp.sdnc.config.params.data.PropertyDefinition; -import org.openecomp.sdnc.config.params.data.RequestKey; -import org.openecomp.sdnc.config.params.data.ResponseKey; -import org.openecomp.sdnc.config.params.transformer.tosca.exceptions.ArtifactProcessorException; -import org.slf4j.MDC; - -import java.io.IOException; -import java.io.OutputStream; -import java.io.OutputStreamWriter; -import java.util.*; -import java.util.regex.Matcher; -import java.util.regex.Pattern; - -import static com.att.eelf.configuration.Configuration.MDC_SERVICE_NAME; - -public class ArtifactProcessorImpl implements ArtifactProcessor -{ - private static final String DERIVEDFROM = "org.openecomp.genericvnf"; - private static final EELFLogger Log = EELFManager.getInstance().getLogger(ArtifactProcessorImpl.class); - private static final String EQUALSENCODING = "="; - private static final String COLONENCODING = ":"; - private static final String COMMAENCODING = ","; - private static final String GREATERTHANENCODING = ">"; - private static final String LESSTHANENCODING = "<"; - - @Override - public void generateArtifact(PropertyDefinition artifact, OutputStream stream) throws ArtifactProcessorException - { - MDC.clear(); - MDC.put(MDC_SERVICE_NAME,"ArtifactGenerator"); - Log.info("Entered into generateArtifact"); - if(!StringUtils.isBlank(artifact.getKind())) { - logArtifact(artifact); - ServiceTemplate serviceTemplate = new ServiceTemplate(); - - addNodeType(artifact, serviceTemplate); - - TopologyTemplate topologyTemplate = new TopologyTemplate(); - serviceTemplate.setTopology_template(topologyTemplate); - addNodeTemplate(artifact, serviceTemplate); - - String tosca = new YamlUtil().objectToYaml(serviceTemplate); - OutputStreamWriter writer = new OutputStreamWriter(stream); - try { - writer.write(tosca); - writer.flush(); - } catch (IOException e) { - Log.error("Error writing to outputstream", e); - throw new ArtifactProcessorException(e); - } finally { - try { - writer.close(); - } catch (IOException e) { - Log.error("Error while closing outputstream writer", e); - } - MDC.clear(); - } - } - else - { - Log.error("Kind in PropertyDefinition is blank or null"); - throw new ArtifactProcessorException("Kind in PropertyDefinition is blank or null"); - } - } - - @Override - public void generateArtifact(String artifact, OutputStream stream) throws ArtifactProcessorException - { - ObjectMapper mapper = new ObjectMapper(new YAMLFactory()); - try { - PropertyDefinition pd = mapper.readValue(artifact, PropertyDefinition.class); - generateArtifact(pd, stream); - } - catch (IOException e) - { - Log.error("Error parsing property definition content = "+ artifact,e); - throw new ArtifactProcessorException(e); - } - } - - @Override - public PropertyDefinition readArtifact(String toscaArtifact) throws ArtifactProcessorException{ - Log.info("Entered into readArtifact."); - Log.info("Received ToscaArtifact:\n" + toscaArtifact); - - PropertyDefinition propertyDefinitionObj = new PropertyDefinition(); - ServiceTemplate serviceTemplate = new YamlUtil().yamlToObject(toscaArtifact, ServiceTemplate.class); - - //mapping parameters - Map nodeTypeMap = serviceTemplate.getNode_types(); - Map nodeTemplateMap = serviceTemplate.getTopology_template().getNode_templates(); - - String nodeTemplateName = nodeTemplateMap.keySet().toArray(new String[0])[0]; - NodeTemplate nodeTemplate = nodeTemplateMap.get(nodeTemplateName); - Map nodeTemplateProperties = nodeTemplate.getProperties(); - - String kind = nodeTypeMap.keySet().toArray(new String[0])[0]; - NodeType nodeType = nodeTypeMap.get(kind); - String version = nodeType.getVersion(); - Log.info("ReadArtifact for "+ kind + " with version "+version); - propertyDefinitionObj.setKind(kind); - propertyDefinitionObj.setVersion(version); - - List parameterList = new LinkedList<>(); - - Map propertyDefinitionFromTOSCA = nodeType.getProperties(); - if(null != propertyDefinitionFromTOSCA){ - for (String propertyName : propertyDefinitionFromTOSCA.keySet()) { - org.openecomp.sdc.tosca.datatypes.model.PropertyDefinition propertyDefinition = propertyDefinitionFromTOSCA.get(propertyName); - - Parameter parameter = new Parameter(); - parameter.setName(propertyName); - - if (propertyDefinition.get_default() != null) { - parameter.setDefaultValue(propertyDefinition.get_default().toString()); - } - parameter.setDescription(propertyDefinition.getDescription()); - if (null != propertyDefinition.getRequired()) { - parameter.setRequired(propertyDefinition.getRequired()); - } else { - parameter.setRequired(false); - } - - if (StringUtils.isNotEmpty(propertyDefinition.getType())) { - parameter.setType(propertyDefinition.getType()); - } - - String propertValueExpr = (String) nodeTemplateProperties.get(propertyName); - String[] stringTokens = parsePropertyValueExpression(propertValueExpr); - String ruleType = stringTokens[0].substring(stringTokens[0].indexOf('=')+1,stringTokens[0].length()).replaceAll(">","").trim(); - String responseExpression = stringTokens[1].substring(stringTokens[1].indexOf('=')+1,stringTokens[1].length()); - String source = stringTokens[2].substring(stringTokens[2].indexOf('=')+1,stringTokens[2].length()).replaceAll(">","").trim(); - String requestExpression = stringTokens[3].substring(stringTokens[3].indexOf('=')+1,stringTokens[3].length()); - - List requestKeys = readRequestKeys(requestExpression); - List responseKeys = readResponseKeys(responseExpression); - - parameter.setRuleType(ruleType); - parameter.setSource(source); - parameter.setRequestKeys(requestKeys); - parameter.setResponseKeys(responseKeys); - - parameterList.add(parameter); - - } - } - propertyDefinitionObj.setParameters(parameterList); - Log.info("Exiting from readArtifact. "); - return propertyDefinitionObj; - } - - private List readResponseKeys(String responseExpression) throws ArtifactProcessorException { - Log.info("Entered into readResponseKeys."); - List responseKeyList = null; - String expression; - expression = responseExpression.replaceAll("<", "").replaceAll(">", "").trim(); - if (StringUtils.isNotEmpty(expression)) { - responseKeyList = new ArrayList<>(); - - String[] responseKeys = expression.split(","); - for (String responseKeyStr : responseKeys) { - ResponseKey responseKey = new ResponseKey(); - try { - responseKey.setUniqueKeyName(responseKeyStr.split(":")[0].replaceAll(LESSTHANENCODING, "<").replaceAll(GREATERTHANENCODING, ">").replaceAll(COLONENCODING, ":").replaceAll(COMMAENCODING, ",").replaceAll(EQUALSENCODING,"=").trim()); - responseKey.setUniqueKeyValue(responseKeyStr.split(":")[1].replaceAll(LESSTHANENCODING, "<").replaceAll(GREATERTHANENCODING, ">").replaceAll(COLONENCODING, ":").replaceAll(COMMAENCODING, ",").replaceAll(EQUALSENCODING,"=").trim()); - responseKey.setFieldKeyName(responseKeyStr.split(":")[2].replaceAll(LESSTHANENCODING, "<").replaceAll(GREATERTHANENCODING, ">").replaceAll(COLONENCODING, ":").replaceAll(COMMAENCODING, ",").replaceAll(EQUALSENCODING,"=").trim()); - } catch (ArrayIndexOutOfBoundsException e) { - Log.error("Invalid response attribute found :" + responseKeyStr + "due to "+e); - throw new ArtifactProcessorException("Invalid response attribute found :" + responseKeyStr); - } - responseKeyList.add(responseKey); - } - } - Log.info("Exiting from readResponseKeys."); - return responseKeyList; - } - - private List readRequestKeys(String requestExpression) { - Log.info("Entered into readRequestKeys."); - List requestKeyList = null; - String expression; - expression = requestExpression.replaceAll("<","").replaceAll(">","").trim(); - if(StringUtils.isNotEmpty(expression)){ - requestKeyList = new ArrayList<>(); - String[] requestKeys = expression.split(","); - for(String responseKeyStr :requestKeys){ - RequestKey requestKey = new RequestKey(); - requestKey.setKeyName(responseKeyStr.split(":")[0].replaceAll(LESSTHANENCODING, "<").replaceAll(GREATERTHANENCODING, ">").replaceAll(COLONENCODING,":").replaceAll(COMMAENCODING,",").replaceAll(EQUALSENCODING,"=").trim()); - requestKey.setKeyValue(responseKeyStr.split(":")[1].replaceAll(LESSTHANENCODING, "<").replaceAll(GREATERTHANENCODING, ">").replaceAll(COLONENCODING,":").replaceAll(COMMAENCODING,",").replaceAll(EQUALSENCODING,"=").trim()); - requestKeyList.add(requestKey); - } - } - Log.info("Exiting from readRequestKeys."); - return requestKeyList; - } - - private String[] parsePropertyValueExpression(String propertValueExpr) throws ArtifactProcessorException{ - Log.info("Entered into parsePropertyValueExpression."); - String nodeRegex = "<(.*?)>"; - Pattern pattern = Pattern.compile(nodeRegex, Pattern.CASE_INSENSITIVE); - Matcher matcher = pattern.matcher(propertValueExpr); - List stringTokens = new ArrayList<>(); - while(matcher.find()){ - stringTokens.add(matcher.group(0)); - } - String[] propertiesArr = new String[stringTokens.size()]; - propertiesArr = stringTokens.toArray(propertiesArr); - if(propertiesArr.length!=4){ - throw new ArtifactProcessorException("Invalid input found " + propertValueExpr); - } - Log.info("Exiting from parsePropertyValueExpression."); - return propertiesArr; - } - - private void addNodeType(PropertyDefinition artifact, ServiceTemplate toscaTemplate) throws ArtifactProcessorException { - //Add basic fields for the node - NodeType toscaNodeType = new NodeType(); - toscaNodeType.setDerived_from(DERIVEDFROM); - toscaNodeType.setVersion(artifact.getVersion()); - toscaNodeType.setDescription(""); - if(artifact.getParameters()!=null) { - Map toscaPropertyMap = new HashMap<>(); - toscaNodeType.setProperties(toscaPropertyMap); - - //Add properties from parameters of PD - for (Parameter pdParameter : artifact.getParameters()) { - addProperty(toscaNodeType, pdParameter); - } - } - - // This is where it adds node in node Map and adds the map in tosca template - Map toscaNodeMap = new HashMap<>(); - toscaNodeMap.put(artifact.getKind(),toscaNodeType); - toscaTemplate.setNode_types(toscaNodeMap); - } - - private void addProperty(NodeType toscaNodeType, Parameter pdParameter) throws ArtifactProcessorException { - if(!StringUtils.isBlank(pdParameter.getName())&& !pdParameter.getName().matches(".*\\s+.*")) { - Log.info("Adding parameter " + pdParameter.getName() + " in node type"); - org.openecomp.sdc.tosca.datatypes.model.PropertyDefinition toscaProperty = new org.openecomp.sdc.tosca.datatypes.model.PropertyDefinition(); - - toscaProperty.setType(StringUtils.isBlank(pdParameter.getType()) ? "string" : pdParameter.getType()); - toscaProperty.set_default(pdParameter.getDefaultValue()); - - toscaProperty.setDescription(pdParameter.getDescription()); - toscaProperty.setRequired(pdParameter.isRequired()); - - toscaNodeType.getProperties().put(pdParameter.getName(), toscaProperty); - } - else - { - String message ="Parameter name is empty,null or contains whitespace"; - Log.error(message); - throw new ArtifactProcessorException(message); - } - } - - private void addNodeTemplate(PropertyDefinition artifact, ServiceTemplate toscaTemplate) - { - NodeTemplate nodeTemplate = new NodeTemplate(); - nodeTemplate.setType(artifact.getKind()); - Map templateProperties = new HashMap<>(); - //Add properties from parameters of PD - if(artifact.getParameters()!=null) { - for (Parameter pdParameter : artifact.getParameters()) { - addTemplateProperty(templateProperties, pdParameter); - } - nodeTemplate.setProperties(templateProperties); - } - Map nodeTemplateMap = new HashMap<>(); - nodeTemplateMap.put(artifact.getKind()+"_Template",nodeTemplate); - toscaTemplate.getTopology_template().setNode_templates(nodeTemplateMap); - } - - private void addTemplateProperty(Map templateProperties, Parameter pdParameter) - { - Log.info("Adding parameter "+ pdParameter.getName() + " in node templates"); - String responseKeys = buildResponseKeyExpression(pdParameter.getResponseKeys()); - String requestKeys = buildRequestKeyExpression(pdParameter.getRequestKeys()); - String ruleType = buildRuleType(pdParameter.getRuleType()); - String source = buildSourceSystem(pdParameter.getSource()); - String properties = ruleType + " " + responseKeys + " " + source + " " + requestKeys; - templateProperties.put(pdParameter.getName(),properties); - } - - protected String buildResponseKeyExpression(List responseKeys) - { - StringBuilder propertyBuilder = new StringBuilder(); - propertyBuilder.append(" itr = responseKeys.iterator(); - while (itr.hasNext()) { - ResponseKey res = itr.next(); - if(res!=null) - propertyBuilder.append(encode(res.getUniqueKeyName()) + ":" + encode(res.getUniqueKeyValue()) + ":" + encode(res.getFieldKeyName())); - if (itr.hasNext()) - propertyBuilder.append(" , "); - } - } - propertyBuilder.append(">"); - return propertyBuilder.toString(); - } - - protected String buildRequestKeyExpression(List requestKeys) - { - StringBuilder propertyBuilder = new StringBuilder(); - propertyBuilder.append(" itr = requestKeys.iterator(); - while (itr.hasNext()) { - RequestKey res = itr.next(); - if(res!=null) - propertyBuilder.append(encode(res.getKeyName()) + ":" + encode(res.getKeyValue())); - if (itr.hasNext()) - propertyBuilder.append(" , "); - } - } - propertyBuilder.append(">"); - return propertyBuilder.toString(); - } - - protected String buildRuleType(String classType) - { - StringBuilder propertyBuilder = new StringBuilder(); - String encodedClassType = StringUtils.isBlank(encode(classType))?"":encode(classType); - propertyBuilder.append("<"); - propertyBuilder.append("rule-type = "+encodedClassType); - propertyBuilder.append(">"); - return propertyBuilder.toString(); - } - - protected String buildSourceSystem(String source) - { - StringBuilder sourceBuilder = new StringBuilder(); - sourceBuilder.append(""); - return sourceBuilder.toString(); - } - - protected String encode(String string) - { - String encodedString = null; - if(string!=null) { - encodedString = string.trim().replaceAll("<", "<").replaceAll(">", ">").replaceAll(":",":").replaceAll(",",",").replaceAll("=","="); - } - return encodedString; - } - - private void logArtifact(PropertyDefinition artifact) - { - ObjectMapper mapper = new ObjectMapper(new YAMLFactory()); - String stringArtifact=null; - try - { - stringArtifact = mapper.writeValueAsString(artifact); - Log.info("Received PropertyDefinition:\n" + stringArtifact); - } - catch (JsonProcessingException e) - { - Log.error("Exception while logging artifact:",e); - } - - } -} diff --git a/appc-config/appc-config-params/provider/src/main/java/org/openecomp/sdnc/config/params/transformer/tosca/exceptions/ArtifactProcessorException.java b/appc-config/appc-config-params/provider/src/main/java/org/openecomp/sdnc/config/params/transformer/tosca/exceptions/ArtifactProcessorException.java deleted file mode 100644 index e788fbf88..000000000 --- a/appc-config/appc-config-params/provider/src/main/java/org/openecomp/sdnc/config/params/transformer/tosca/exceptions/ArtifactProcessorException.java +++ /dev/null @@ -1,48 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP : APPC - * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Copyright (C) 2017 Amdocs - * ============================================================================= - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * ECOMP is a trademark and service mark of AT&T Intellectual Property. - * ============LICENSE_END========================================================= - */ - -package org.openecomp.sdnc.config.params.transformer.tosca.exceptions; - -/** - * Created by pranavdi on 3/17/2017. - */ -public class ArtifactProcessorException extends Exception -{ - public ArtifactProcessorException() {} - - public ArtifactProcessorException(String message) - { - super(message); - } - - public ArtifactProcessorException(Throwable cause) - { - super(cause); - } - - public ArtifactProcessorException(String message, Throwable cause) - { - super(message,cause); - } -} diff --git a/appc-config/appc-config-params/provider/src/test/java/org/onap/sdnc/config/params/parser/TestPropertyDefinitionNode.java b/appc-config/appc-config-params/provider/src/test/java/org/onap/sdnc/config/params/parser/TestPropertyDefinitionNode.java new file mode 100644 index 000000000..be11384c4 --- /dev/null +++ b/appc-config/appc-config-params/provider/src/test/java/org/onap/sdnc/config/params/parser/TestPropertyDefinitionNode.java @@ -0,0 +1,116 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP : APPC + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Copyright (C) 2017 Amdocs + * ============================================================================= + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * ECOMP is a trademark and service mark of AT&T Intellectual Property. + * ============LICENSE_END========================================================= + */ + +package org.openecomp.sdnc.config.params.parser; + +import static org.junit.Assert.assertEquals; + +import java.io.File; +import java.nio.charset.Charset; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.nio.file.attribute.BasicFileAttributes; +import java.util.HashMap; +import java.util.Map; +import java.util.concurrent.TimeUnit; + +import org.apache.commons.io.IOUtils; +import org.junit.Test; +import org.junit.Ignore; +import org.openecomp.sdnc.config.params.ParamsHandlerConstant; +import org.openecomp.sdnc.config.params.data.PropertyDefinition; +import org.openecomp.sdnc.config.params.parser.PropertyDefinitionNode; +import org.openecomp.sdnc.config.params.transformer.ArtificatTransformer; + +import org.onap.ccsdk.sli.core.sli.SvcLogicContext; + +import com.fasterxml.jackson.databind.ObjectMapper; + +public class TestPropertyDefinitionNode { + + @Ignore + public void testProcessMissingParamKeys() throws Exception { + PropertyDefinitionNode propertyDefinitionNode = new PropertyDefinitionNode(); + Map inParams = new HashMap(); + inParams.put(ParamsHandlerConstant.INPUT_PARAM_RESPONSE_PRIFIX, "test"); + + String yamlData = IOUtils.toString(TestPropertyDefinitionNode.class.getClassLoader().getResourceAsStream("parser/pd.yaml"), Charset.defaultCharset()); + inParams.put(ParamsHandlerConstant.INPUT_PARAM_PD_CONTENT, yamlData); + + String jsonData = IOUtils.toString(TestPropertyDefinitionNode.class.getClassLoader().getResourceAsStream("parser/request-param.json"), Charset.defaultCharset()); + inParams.put(ParamsHandlerConstant.INPUT_PARAM_JSON_DATA, jsonData); + + SvcLogicContext ctx = new SvcLogicContext(); + propertyDefinitionNode.processMissingParamKeys(inParams, ctx); + assertEquals(ctx.getAttribute("test."+ParamsHandlerConstant.OUTPUT_PARAM_STATUS), ParamsHandlerConstant.OUTPUT_STATUS_SUCCESS); + + } + + @Test + public void testProcessExternalSystemParamKeys() throws Exception { + PropertyDefinitionNode propertyDefinitionNode = new PropertyDefinitionNode(); + Map inParams = new HashMap(); + inParams.put(ParamsHandlerConstant.INPUT_PARAM_RESPONSE_PRIFIX, "test"); + + String yamlData = IOUtils.toString(TestPropertyDefinitionNode.class.getClassLoader().getResourceAsStream("parser/pd.yaml"), Charset.defaultCharset()); + inParams.put(ParamsHandlerConstant.INPUT_PARAM_PD_CONTENT, yamlData); + + String jsonData = IOUtils.toString(TestPropertyDefinitionNode.class.getClassLoader().getResourceAsStream("parser/request-param.json"), Charset.defaultCharset()); + inParams.put(ParamsHandlerConstant.INPUT_PARAM_JSON_DATA, jsonData); + + inParams.put(ParamsHandlerConstant.INPUT_PARAM_SYSTEM_NAME, "SOURCE"); + + SvcLogicContext ctx = new SvcLogicContext(); + propertyDefinitionNode.processExternalSystemParamKeys(inParams, ctx); + assertEquals(ctx.getAttribute("test."+ParamsHandlerConstant.OUTPUT_PARAM_STATUS), ParamsHandlerConstant.OUTPUT_STATUS_SUCCESS); +} + + @Test + public void mergeJsonData() throws Exception { + PropertyDefinitionNode propertyDefinitionNode = new PropertyDefinitionNode(); + Map inParams = new HashMap(); + inParams.put(ParamsHandlerConstant.INPUT_PARAM_RESPONSE_PRIFIX, "test"); + + String jsonData = IOUtils.toString(TestPropertyDefinitionNode.class.getClassLoader().getResourceAsStream("parser/request-param.json"), Charset.defaultCharset()); + inParams.put(ParamsHandlerConstant.INPUT_PARAM_JSON_DATA, jsonData); + + String mergeJsonData = IOUtils.toString(TestPropertyDefinitionNode.class.getClassLoader().getResourceAsStream("parser/merge-param.json"), Charset.defaultCharset()); + inParams.put(ParamsHandlerConstant.INPUT_PARAM_MERGE__JSON_DATA, mergeJsonData); + + SvcLogicContext ctx = new SvcLogicContext(); + propertyDefinitionNode.mergeJsonData(inParams, ctx); + assertEquals(ctx.getAttribute("test."+ParamsHandlerConstant.OUTPUT_PARAM_STATUS), ParamsHandlerConstant.OUTPUT_STATUS_SUCCESS); + } + + @Test + public void testArtificatTransformer() throws Exception { + ArtificatTransformer transformer = new ArtificatTransformer(); + String yamlData = IOUtils.toString(TestPropertyDefinitionNode.class.getClassLoader().getResourceAsStream("parser/pd.yaml"), Charset.defaultCharset()); + + PropertyDefinition propertyDefinition = transformer.convertYAMLToPD(yamlData); + String yaml = transformer.convertPDToYaml(propertyDefinition); + } + +} diff --git a/appc-config/appc-config-params/provider/src/test/java/org/onap/sdnc/config/params/transformer/tosca/TestArtifactProcessor.java b/appc-config/appc-config-params/provider/src/test/java/org/onap/sdnc/config/params/transformer/tosca/TestArtifactProcessor.java new file mode 100644 index 000000000..33845ddca --- /dev/null +++ b/appc-config/appc-config-params/provider/src/test/java/org/onap/sdnc/config/params/transformer/tosca/TestArtifactProcessor.java @@ -0,0 +1,105 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP : APPC + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Copyright (C) 2017 Amdocs + * ============================================================================= + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * ECOMP is a trademark and service mark of AT&T Intellectual Property. + * ============LICENSE_END========================================================= + */ + +package org.openecomp.sdnc.config.params.transformer.tosca; + +import org.junit.Assert; +import org.junit.Rule; +import org.junit.Test; +import org.junit.rules.TemporaryFolder; +import org.openecomp.sdnc.config.params.transformer.tosca.exceptions.ArtifactProcessorException; + +import java.io.*; + +public class TestArtifactProcessor{ + @Rule + public TemporaryFolder temporaryFolder = new TemporaryFolder(); + + @Test + public void testArtifactProcessor() throws IOException, ArtifactProcessorException { + + ArtifactProcessor arp = ArtifactProcessorFactory.getArtifactProcessor(); + + String pdString = getFileContent("tosca/ExamplePropertyDefinition.yml"); + OutputStream outstream=null; + + File tempFile = temporaryFolder.newFile("TestTosca.yml"); + outstream = new FileOutputStream(tempFile); + arp.generateArtifact(pdString,outstream); + outstream.flush(); + outstream.close(); + + String expectedTosca = getFileContent("tosca/ExpectedTosca.yml"); + String toscaString = getFileContent(tempFile); + Assert.assertEquals(expectedTosca,toscaString); + } + + @Test + public void testArtifactProcessorWithStringOutput() throws IOException, ArtifactProcessorException { + + ArtifactProcessor arp = ArtifactProcessorFactory.getArtifactProcessor(); + + String pdString = getFileContent("tosca/ExamplePropertyDefinition.yml"); + OutputStream outstream=null; + + outstream = new ByteArrayOutputStream(); + arp.generateArtifact(pdString,outstream); + outstream.flush(); + outstream.close(); + + String expectedTosca = getFileContent("tosca/ExpectedTosca.yml"); + String toscaString = outstream.toString(); + } + + private String getFileContent(String fileName) throws IOException{ + ClassLoader classLoader = new TestArtifactProcessor().getClass().getClassLoader(); + InputStream is = new FileInputStream(classLoader.getResource(fileName).getFile()); + BufferedReader buf = new BufferedReader(new InputStreamReader(is)); + String line = buf.readLine(); + StringBuilder sb = new StringBuilder(); + + while (line != null) { + sb.append(line).append("\n"); + line = buf.readLine(); + } + String fileString = sb.toString(); + is.close(); + return fileString; + } + + private String getFileContent(File file) throws IOException{ + InputStream is = new FileInputStream(file); + BufferedReader buf = new BufferedReader(new InputStreamReader(is)); + String line = buf.readLine(); + StringBuilder sb = new StringBuilder(); + + while (line != null) { + sb.append(line).append("\n"); + line = buf.readLine(); + } + String fileString = sb.toString(); + is.close(); + return fileString; + } +} diff --git a/appc-config/appc-config-params/provider/src/test/java/org/onap/sdnc/config/params/transformer/tosca/TestGenerateArtifactObject.java b/appc-config/appc-config-params/provider/src/test/java/org/onap/sdnc/config/params/transformer/tosca/TestGenerateArtifactObject.java new file mode 100644 index 000000000..950180262 --- /dev/null +++ b/appc-config/appc-config-params/provider/src/test/java/org/onap/sdnc/config/params/transformer/tosca/TestGenerateArtifactObject.java @@ -0,0 +1,254 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP : APPC + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Copyright (C) 2017 Amdocs + * ============================================================================= + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * ECOMP is a trademark and service mark of AT&T Intellectual Property. + * ============LICENSE_END========================================================= + */ + +package org.openecomp.sdnc.config.params.transformer.tosca; + +import org.junit.Assert; +import org.junit.Rule; +import org.junit.Test; +import org.junit.rules.TemporaryFolder; +import org.openecomp.sdnc.config.params.data.Parameter; +import org.openecomp.sdnc.config.params.data.PropertyDefinition; +import org.openecomp.sdnc.config.params.data.RequestKey; +import org.openecomp.sdnc.config.params.data.ResponseKey; +import org.openecomp.sdnc.config.params.transformer.tosca.exceptions.ArtifactProcessorException; + +import java.io.*; +import java.util.ArrayList; +import java.util.List; + +public class TestGenerateArtifactObject +{ + @Rule + public TemporaryFolder temporaryFolder = new TemporaryFolder(); + + @Test + public void testObjectArtifactProcessor() throws IOException, ArtifactProcessorException { + + String expectedTosca="node_types:\n" + + " VNF:\n" + + " derived_from: org.openecomp.genericvnf\n" + + " version: V1\n" + + " description: ''\n" + + " properties:\n" + + " LOCAL_ACCESS_IP_ADDR:\n" + + " type: string\n" + + " required: false\n" + + " default: 0.0.0.0\n" + + " status: SUPPORTED\n" + + " LOCAL_CORE_ALT_IP_ADDR:\n" + + " type: String\n" + + " required: false\n" + + " default: value\n" + + " status: SUPPORTED\n" + + "topology_template:\n" + + " node_templates:\n" + + " VNF_Template:\n" + + " type: VNF\n" + + " properties:\n" + + " LOCAL_ACCESS_IP_ADDR: \n" + + " LOCAL_CORE_ALT_IP_ADDR: \n"; + //Create object + PropertyDefinition pd = new PropertyDefinition(); + pd.setKind("VNF"); + pd.setVersion("V1"); + pd.setParameters(createParameters()); + + //Call ArtifactProcessor + OutputStream outstream=null; + + File toscaFile =temporaryFolder.newFile("TestTosca.yml"); + outstream = new FileOutputStream(toscaFile); + ArtifactProcessorImpl arp = new ArtifactProcessorImpl(); + arp.generateArtifact(pd,outstream); + outstream.flush(); + outstream.close(); + + String toscaString = getFileContent(toscaFile); + Assert.assertEquals(expectedTosca,toscaString); + + } + + @Test + public void testPDpropertiesSetNull() throws IOException, ArtifactProcessorException { + String expectedTosca = "node_types:\n" + + " PropertyDefinition:\n" + + " derived_from: org.openecomp.genericvnf\n" + + " version: V1\n" + + " description: ''\n" + + "topology_template:\n" + + " node_templates:\n" + + " PropertyDefinition_Template:\n" + + " type: PropertyDefinition\n"; + //Create object + PropertyDefinition pd = new PropertyDefinition(); + pd.setKind("PropertyDefinition"); + pd.setVersion("V1"); + OutputStream outstream=null; + + File toscaFile =temporaryFolder.newFile("TestTosca.yml"); + outstream = new FileOutputStream(toscaFile); + + ArtifactProcessorImpl arp = new ArtifactProcessorImpl(); + arp.generateArtifact(pd,outstream); + outstream.flush(); + outstream.close(); + + String toscaString = getFileContent(toscaFile); + Assert.assertEquals(expectedTosca,toscaString); + } + + @Test + public void testArtifactGeneratorInvalidStream() throws IOException { + String expectedMsg = "java.io.IOException: Stream Closed"; + PropertyDefinition pd = new PropertyDefinition(); + pd.setKind("VNF"); + pd.setVersion("V1"); + pd.setParameters(createParameters()); + + //Call ArtifactProcessor + OutputStream outstream=null; + try { + File toscaFile =temporaryFolder.newFile("TestTosca.yml"); + outstream = new FileOutputStream(toscaFile); + outstream.close(); + ArtifactProcessorImpl arp = new ArtifactProcessorImpl(); + arp.generateArtifact(pd,outstream); + Assert.fail(); + } + catch (ArtifactProcessorException e) + { + Assert.assertEquals(expectedMsg,e.getMessage()); + } + } + + private List createParameters() + { + //Create single Parameter object 1 + Parameter singleParameter1 = new Parameter(); + singleParameter1.setName("LOCAL_ACCESS_IP_ADDR"); + singleParameter1.setRequired(false); + singleParameter1.setSource("source"); + singleParameter1.setDefaultValue("0.0.0.0"); + singleParameter1.setRuleType("myRule1"); + singleParameter1.setRequestKeys(createRequestKeys()); + + //Create single Parameter object 2 + Parameter singleParameter2 = new Parameter(); + singleParameter2.setName("LOCAL_CORE_ALT_IP_ADDR"); + singleParameter2.setType("String"); + singleParameter2.setRequired(false); + singleParameter2.setSource("source"); + singleParameter2.setDefaultValue("value"); + singleParameter2.setRuleType("myRule2"); + singleParameter2.setResponseKeys(createResponseKeys()); + + //Add the Parameter objects to the List + List parameterList = new ArrayList(); + parameterList.add(singleParameter1); + parameterList.add(singleParameter2); + return parameterList; + } + + private List createRequestKeys() + { + //Create RequestKey object 1 + RequestKey requestKey1 = new RequestKey(); + requestKey1.setKeyName("class-type"); + requestKey1.setKeyValue("interface-ip-address"); + + //Create RequestKey object 2 + RequestKey requestKey2 = new RequestKey(); + requestKey2.setKeyName("address_fqdn"); + requestKey2.setKeyValue("someVal"); + + //Create RequestKey object 3 + RequestKey requestKey3 = new RequestKey(); + requestKey3.setKeyName("address_type"); + requestKey3.setKeyValue("v4"); + + //Add the RequestKey Objects to the List + List requestKeyList = new ArrayList(); + requestKeyList.add(requestKey1); + requestKeyList.add(requestKey2); + requestKeyList.add(requestKey3); + return requestKeyList; + } + + private List createResponseKeys() + { + //Create RequestKey object 1 + ResponseKey responseKey1 = new ResponseKey(); + + responseKey1.setUniqueKeyName("name1"); + responseKey1.setUniqueKeyValue("value1"); + responseKey1.setFieldKeyName("field1"); + + //Add the RequestKey Objects to the List + List responseKeyList = new ArrayList(); + responseKeyList.add(responseKey1); + + return responseKeyList; + } + + private Parameter createParameter() + { + Parameter singleParameter1 = new Parameter(); + singleParameter1.setName("LOCAL_ACCESS_IP_ADDR"); + singleParameter1.setRequired(false); + singleParameter1.setSource("source"); + singleParameter1.setDefaultValue("0.0.0.0"); + singleParameter1.setRequestKeys(createRequestKeys()); + singleParameter1.setResponseKeys(createResponseKeys()); + return singleParameter1; + } + + @Test(expected =Exception.class) + public void testPDnull() throws IOException, ArtifactProcessorException { + PropertyDefinition pd = null; + OutputStream outstream=null; + + outstream = new FileOutputStream(".\\TestTosca.yml"); + ArtifactProcessorImpl arp = new ArtifactProcessorImpl(); + arp.generateArtifact(pd,outstream); + outstream.flush(); + outstream.close(); + } + + private String getFileContent(File file) throws IOException + { + InputStream is = new FileInputStream(file); + BufferedReader buf = new BufferedReader(new InputStreamReader(is)); + String line = buf.readLine(); + StringBuilder sb = new StringBuilder(); + + while (line != null) { + sb.append(line).append("\n"); + line = buf.readLine(); + } + String fileString = sb.toString(); + is.close(); + return fileString; + } +} diff --git a/appc-config/appc-config-params/provider/src/test/java/org/onap/sdnc/config/params/transformer/tosca/TestGenerateArtifactString.java b/appc-config/appc-config-params/provider/src/test/java/org/onap/sdnc/config/params/transformer/tosca/TestGenerateArtifactString.java new file mode 100644 index 000000000..4ffbe5298 --- /dev/null +++ b/appc-config/appc-config-params/provider/src/test/java/org/onap/sdnc/config/params/transformer/tosca/TestGenerateArtifactString.java @@ -0,0 +1,155 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP : APPC + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Copyright (C) 2017 Amdocs + * ============================================================================= + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * ECOMP is a trademark and service mark of AT&T Intellectual Property. + * ============LICENSE_END========================================================= + */ + +package org.openecomp.sdnc.config.params.transformer.tosca; + +import org.junit.Assert; +import org.junit.Rule; +import org.junit.Test; +import org.junit.rules.TemporaryFolder; +import org.openecomp.sdnc.config.params.transformer.tosca.exceptions.ArtifactProcessorException; + +import java.io.*; +import java.net.URL; + +public class TestGenerateArtifactString{ + + @Rule + public TemporaryFolder temporaryFolder = new TemporaryFolder(); + + @Test + public void testStringArtifactGenerator() throws IOException, ArtifactProcessorException { + + String pdString = getFileContent("tosca/ExamplePropertyDefinition.yml"); + OutputStream outstream=null; + + File tempFile = temporaryFolder.newFile("TestTosca.yml"); + outstream = new FileOutputStream(tempFile); + ArtifactProcessorImpl arp = new ArtifactProcessorImpl(); + arp.generateArtifact(pdString,outstream); + outstream.flush(); + outstream.close(); + + String expectedTosca = getFileContent("tosca/ExpectedTosca.yml"); + String toscaString = getFileContent(tempFile); + Assert.assertEquals(expectedTosca,toscaString); + + } + + @Test + public void testArtifactGeneratorWithParameterNameBlank() throws IOException, ArtifactProcessorException { + + String pdString = getFileContent("tosca/ExamplePropertyDefinition2.yml"); + OutputStream outstream=null; + String expectedMsg ="Parameter name is empty,null or contains whitespace"; + + File tempFile = temporaryFolder.newFile("TestTosca.yml"); + outstream = new FileOutputStream(tempFile); + ArtifactProcessorImpl arp = new ArtifactProcessorImpl(); + try { + arp.generateArtifact(pdString, outstream); + } + catch (ArtifactProcessorException e) + { + Assert.assertEquals(expectedMsg,e.getMessage()); + } + outstream.flush(); + outstream.close(); + } + + @Test + public void testArtifactGeneratorWithParameterNameNull() throws IOException, ArtifactProcessorException { + + String pdString = getFileContent("tosca/ExamplePropertyDefinition3.yml"); + OutputStream outstream=null; + String expectedMsg ="Parameter name is empty,null or contains whitespace"; + + File tempFile = temporaryFolder.newFile("TestTosca.yml"); + outstream = new FileOutputStream(tempFile); + ArtifactProcessorImpl arp = new ArtifactProcessorImpl(); + try { + arp.generateArtifact(pdString, outstream); + } + catch (ArtifactProcessorException e) + { + Assert.assertEquals(expectedMsg,e.getMessage()); + } + outstream.flush(); + outstream.close(); + } + + @Test + public void testArtifactGeneratorWithKindNull() throws IOException, ArtifactProcessorException { + + String pdString = getFileContent("tosca/ExamplePropertyDefinition4.yml"); + OutputStream outstream=null; + String expectedMsg ="Kind in PropertyDefinition is blank or null"; + + File tempFile = temporaryFolder.newFile("TestTosca.yml"); + outstream = new FileOutputStream(tempFile); + ArtifactProcessorImpl arp = new ArtifactProcessorImpl(); + try { + arp.generateArtifact(pdString, outstream); + } + catch (ArtifactProcessorException e) + { + Assert.assertEquals(expectedMsg,e.getMessage()); + } + outstream.flush(); + outstream.close(); + } + + private String getFileContent(String fileName) throws IOException + { + ClassLoader classLoader = new TestGenerateArtifactString().getClass().getClassLoader(); + InputStream is = new FileInputStream(classLoader.getResource(fileName).getFile()); + BufferedReader buf = new BufferedReader(new InputStreamReader(is)); + String line = buf.readLine(); + StringBuilder sb = new StringBuilder(); + + while (line != null) { + sb.append(line).append("\n"); + line = buf.readLine(); + } + String fileString = sb.toString(); + is.close(); + return fileString; + } + + private String getFileContent(File file) throws IOException + { + InputStream is = new FileInputStream(file); + BufferedReader buf = new BufferedReader(new InputStreamReader(is)); + String line = buf.readLine(); + StringBuilder sb = new StringBuilder(); + + while (line != null) { + sb.append(line).append("\n"); + line = buf.readLine(); + } + String fileString = sb.toString(); + is.close(); + return fileString; + } +} diff --git a/appc-config/appc-config-params/provider/src/test/java/org/onap/sdnc/config/params/transformer/tosca/TestPropertyQueryString.java b/appc-config/appc-config-params/provider/src/test/java/org/onap/sdnc/config/params/transformer/tosca/TestPropertyQueryString.java new file mode 100644 index 000000000..3eb231ae9 --- /dev/null +++ b/appc-config/appc-config-params/provider/src/test/java/org/onap/sdnc/config/params/transformer/tosca/TestPropertyQueryString.java @@ -0,0 +1,171 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP : APPC + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Copyright (C) 2017 Amdocs + * ============================================================================= + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * ECOMP is a trademark and service mark of AT&T Intellectual Property. + * ============LICENSE_END========================================================= + */ + +package org.openecomp.sdnc.config.params.transformer.tosca; + +import org.junit.Assert; +import org.junit.Test; +import org.openecomp.sdnc.config.params.data.RequestKey; +import org.openecomp.sdnc.config.params.data.ResponseKey; + +import java.util.ArrayList; +import java.util.List; + +public class TestPropertyQueryString +{ + @Test + public void testBuildResponseKeys() + { + ArtifactProcessorImpl arp = new ArtifactProcessorImpl(); + String properties= arp.buildResponseKeyExpression(createResponseKeys()); + Assert.assertEquals("",properties); + } + + @Test + public void testBuildRequestKeys() + { + ArtifactProcessorImpl arp = new ArtifactProcessorImpl(); + String properties= arp.buildRequestKeyExpression(createRequestKeys()); + Assert.assertEquals("",properties); + } + + @Test + public void testEncoding() + { + ArtifactProcessorImpl arp = new ArtifactProcessorImpl(); + + String expected1 = "<class-type>"; + String encoded1 = arp.encode(""); + Assert.assertEquals(expected1,encoded1); + + String expected2 = "<<<metallica<>iron_maiden>>>"; + String encoded2 = arp.encode("<<iron_maiden>>>"); + Assert.assertEquals(expected2,encoded2); + + String expected3 = "band-list:metallica,ironmaiden"; + String encoded3 = arp.encode("band-list:metallica,ironmaiden"); + Assert.assertEquals(expected3,encoded3); + + String expected4 = "motorhead=lemmy"; + String encoded4 = arp.encode("motorhead=lemmy"); + Assert.assertEquals(expected4,encoded4); + + String expected5 = "DreamTheater"; + String encoded5 = arp.encode(" DreamTheater "); + Assert.assertEquals(expected5,encoded5); + } + + @Test + public void testBuildRuleType() + { + ArtifactProcessorImpl arp = new ArtifactProcessorImpl(); + String input = "IPV4"; + String expected = ""; + Assert.assertEquals(expected,arp.buildRuleType(input)); + } + + @Test + public void testRuleTypeSetNull() + { + ArtifactProcessorImpl arp = new ArtifactProcessorImpl(); + String expected = ""; + Assert.assertEquals(expected,arp.buildRuleType(null)); + } + + @Test + public void testBuildRequestKeysWithKeyNull() + { + ArtifactProcessorImpl arp = new ArtifactProcessorImpl(); + List requestKeyList = new ArrayList(); + requestKeyList.add(null); + String properties= arp.buildRequestKeyExpression(requestKeyList); + Assert.assertEquals("",properties); + } + + @Test + public void testBuildResponseKeysWithKeyNull() + { + ArtifactProcessorImpl arp = new ArtifactProcessorImpl(); + List responseKeyList = new ArrayList(); + responseKeyList.add(null); + String properties= arp.buildResponseKeyExpression(responseKeyList); + Assert.assertEquals("",properties); + } + + @Test + public void testBuildSourceSystem() + { + ArtifactProcessorImpl arp = new ArtifactProcessorImpl(); + Assert.assertEquals("",arp.buildSourceSystem("source")); + } + + //@Test + private List createRequestKeys() + { + //Create RequestKey object 1 + RequestKey requestKey1 = new RequestKey(); + requestKey1.setKeyName("class-type"); + requestKey1.setKeyValue("interface-ip-address"); + + //Create RequestKey object 2 + RequestKey requestKey2 = new RequestKey(); + requestKey2.setKeyName("address_fqdn"); + requestKey2.setKeyValue("00000000000000"); + + //Create RequestKey object 3 + RequestKey requestKey3 = new RequestKey(); + requestKey3.setKeyName("address_type"); + requestKey3.setKeyValue("v4"); + + //Add the RequestKey Objects to the List + List requestKeyList = new ArrayList(); + requestKeyList.add(requestKey1); + requestKeyList.add(requestKey2); + requestKeyList.add(requestKey3); + return requestKeyList; + } + + //@Test + private List createResponseKeys() + { + //Create RequestKey object 1 + ResponseKey responseKey1 = new ResponseKey(); + + responseKey1.setUniqueKeyName("address-fqdn"); + responseKey1.setUniqueKeyValue("0000000000000"); + responseKey1.setFieldKeyName("ipaddress-v4"); + + ResponseKey responseKey2 = new ResponseKey(); + responseKey2.setUniqueKeyName("key2"); + responseKey2.setUniqueKeyValue("value2"); + responseKey2.setFieldKeyName("field2"); + + //Add the RequestKey Objects to the List + List responseKeyList = new ArrayList(); + responseKeyList.add(responseKey1); + responseKeyList.add(responseKey2); + + return responseKeyList; + } +} diff --git a/appc-config/appc-config-params/provider/src/test/java/org/onap/sdnc/config/params/transformer/tosca/TestReadArtifact.java b/appc-config/appc-config-params/provider/src/test/java/org/onap/sdnc/config/params/transformer/tosca/TestReadArtifact.java new file mode 100644 index 000000000..1b65a21f6 --- /dev/null +++ b/appc-config/appc-config-params/provider/src/test/java/org/onap/sdnc/config/params/transformer/tosca/TestReadArtifact.java @@ -0,0 +1,103 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP : APPC + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Copyright (C) 2017 Amdocs + * ============================================================================= + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * ECOMP is a trademark and service mark of AT&T Intellectual Property. + * ============LICENSE_END========================================================= + */ + +package org.openecomp.sdnc.config.params.transformer.tosca; + +import org.junit.Assert; +import org.junit.Test; +import org.openecomp.sdnc.config.params.data.PropertyDefinition; +import org.openecomp.sdnc.config.params.transformer.tosca.exceptions.ArtifactProcessorException; + +import java.io.*; + +public class TestReadArtifact { + @Test + public void testReadArtifactPositive() throws ArtifactProcessorException, IOException { + + String toscaArtifact = getFileContent("tosca/ReadArtifactPositiveInputTosca.yml"); + ArtifactProcessorImpl artifact = new ArtifactProcessorImpl(); + PropertyDefinition ouptPD = artifact.readArtifact(toscaArtifact); + Assert.assertEquals(ouptPD.getKind(),"Property Definition"); + Assert.assertEquals(ouptPD.getVersion(),"V1"); + + Assert.assertEquals(ouptPD.getParameters().get(0).getDefaultValue(),"0.0.0.0"); + Assert.assertEquals(ouptPD.getParameters().get(0).getName(),"abc"); + Assert.assertEquals(ouptPD.getParameters().get(0).getSource(),"source"); + Assert.assertEquals(ouptPD.getParameters().get(0).getRuleType(),"interface-ip-address"); + Assert.assertEquals(ouptPD.getParameters().get(0).getDescription(),"param_desc"); + Assert.assertEquals(ouptPD.getParameters().get(0).getType(),"param1_type"); + Assert.assertEquals(ouptPD.getParameters().get(1).getRequestKeys().get(0).getKeyName(),"address_fqdn"); + Assert.assertEquals(ouptPD.getParameters().get(1).getRequestKeys().get(0).getKeyValue(),"0"); + Assert.assertEquals(ouptPD.getParameters().get(1).getRequestKeys().get(0).getKeyName(),"address_fqdn"); + Assert.assertEquals(ouptPD.getParameters().get(1).getRequestKeys().get(0).getKeyValue(),"0"); + Assert.assertEquals(ouptPD.getParameters().get(0).getResponseKeys().get(0).getUniqueKeyName(),"address-0"); + Assert.assertEquals(ouptPD.getParameters().get(0).getResponseKeys().get(0).getFieldKeyName(),"0"); + + Assert.assertEquals(ouptPD.getParameters().get(1).getDefaultValue(),"value"); + Assert.assertEquals(ouptPD.getParameters().get(1).getName(),"param 2"); + Assert.assertEquals(ouptPD.getParameters().get(1).getSource(),"source"); + Assert.assertEquals(ouptPD.getParameters().get(1).getRuleType(),"interface-ip-address"); + Assert.assertEquals(ouptPD.getParameters().get(1).getDescription(),"param2"); + Assert.assertEquals(ouptPD.getParameters().get(1).getType(),"param2 type"); + Assert.assertEquals(ouptPD.getParameters().get(1).getRequestKeys().get(0).getKeyName(),"address_fqdn"); + Assert.assertEquals(ouptPD.getParameters().get(1).getRequestKeys().get(0).getKeyValue(),"0"); + Assert.assertEquals(ouptPD.getParameters().get(1).getRequestKeys().get(1).getKeyName(),"address_type"); + Assert.assertEquals(ouptPD.getParameters().get(1).getRequestKeys().get(1).getKeyValue(),"v4"); + Assert.assertEquals(ouptPD.getParameters().get(1).getResponseKeys().get(0).getUniqueKeyName(),"address-0"); + Assert.assertEquals(ouptPD.getParameters().get(1).getResponseKeys().get(0).getUniqueKeyValue(),"0"); + Assert.assertEquals(ouptPD.getParameters().get(1).getResponseKeys().get(0).getFieldKeyName(),"0"); + + } + + @Test + public void testReadArtifactNegetive() throws IOException { + + String toscaArtifact = getFileContent("tosca/ReadArtifactNegetiveInputTosca.yml"); + ArtifactProcessorImpl artifact = new ArtifactProcessorImpl(); + try { + PropertyDefinition ouptPD = artifact.readArtifact(toscaArtifact); + } catch (ArtifactProcessorException e) { + Assert.assertNotNull(e); + Assert.assertEquals(e.getMessage(),"Invalid input found <> source1 "); + } + } + + private String getFileContent(String fileName) throws IOException + { + ClassLoader classLoader = new TestReadArtifact().getClass().getClassLoader(); + InputStream is = new FileInputStream(classLoader.getResource(fileName).getFile()); + BufferedReader buf = new BufferedReader(new InputStreamReader(is)); + String line = buf.readLine(); + StringBuilder sb = new StringBuilder(); + + while (line != null) { + sb.append(line).append("\n"); + line = buf.readLine(); + } + String fileString = sb.toString(); + is.close(); + return fileString; + } + +} diff --git a/appc-config/appc-config-params/provider/src/test/java/org/openecomp/sdnc/config/params/parser/TestPropertyDefinitionNode.java b/appc-config/appc-config-params/provider/src/test/java/org/openecomp/sdnc/config/params/parser/TestPropertyDefinitionNode.java deleted file mode 100644 index be11384c4..000000000 --- a/appc-config/appc-config-params/provider/src/test/java/org/openecomp/sdnc/config/params/parser/TestPropertyDefinitionNode.java +++ /dev/null @@ -1,116 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP : APPC - * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Copyright (C) 2017 Amdocs - * ============================================================================= - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * ECOMP is a trademark and service mark of AT&T Intellectual Property. - * ============LICENSE_END========================================================= - */ - -package org.openecomp.sdnc.config.params.parser; - -import static org.junit.Assert.assertEquals; - -import java.io.File; -import java.nio.charset.Charset; -import java.nio.file.Files; -import java.nio.file.Path; -import java.nio.file.Paths; -import java.nio.file.attribute.BasicFileAttributes; -import java.util.HashMap; -import java.util.Map; -import java.util.concurrent.TimeUnit; - -import org.apache.commons.io.IOUtils; -import org.junit.Test; -import org.junit.Ignore; -import org.openecomp.sdnc.config.params.ParamsHandlerConstant; -import org.openecomp.sdnc.config.params.data.PropertyDefinition; -import org.openecomp.sdnc.config.params.parser.PropertyDefinitionNode; -import org.openecomp.sdnc.config.params.transformer.ArtificatTransformer; - -import org.onap.ccsdk.sli.core.sli.SvcLogicContext; - -import com.fasterxml.jackson.databind.ObjectMapper; - -public class TestPropertyDefinitionNode { - - @Ignore - public void testProcessMissingParamKeys() throws Exception { - PropertyDefinitionNode propertyDefinitionNode = new PropertyDefinitionNode(); - Map inParams = new HashMap(); - inParams.put(ParamsHandlerConstant.INPUT_PARAM_RESPONSE_PRIFIX, "test"); - - String yamlData = IOUtils.toString(TestPropertyDefinitionNode.class.getClassLoader().getResourceAsStream("parser/pd.yaml"), Charset.defaultCharset()); - inParams.put(ParamsHandlerConstant.INPUT_PARAM_PD_CONTENT, yamlData); - - String jsonData = IOUtils.toString(TestPropertyDefinitionNode.class.getClassLoader().getResourceAsStream("parser/request-param.json"), Charset.defaultCharset()); - inParams.put(ParamsHandlerConstant.INPUT_PARAM_JSON_DATA, jsonData); - - SvcLogicContext ctx = new SvcLogicContext(); - propertyDefinitionNode.processMissingParamKeys(inParams, ctx); - assertEquals(ctx.getAttribute("test."+ParamsHandlerConstant.OUTPUT_PARAM_STATUS), ParamsHandlerConstant.OUTPUT_STATUS_SUCCESS); - - } - - @Test - public void testProcessExternalSystemParamKeys() throws Exception { - PropertyDefinitionNode propertyDefinitionNode = new PropertyDefinitionNode(); - Map inParams = new HashMap(); - inParams.put(ParamsHandlerConstant.INPUT_PARAM_RESPONSE_PRIFIX, "test"); - - String yamlData = IOUtils.toString(TestPropertyDefinitionNode.class.getClassLoader().getResourceAsStream("parser/pd.yaml"), Charset.defaultCharset()); - inParams.put(ParamsHandlerConstant.INPUT_PARAM_PD_CONTENT, yamlData); - - String jsonData = IOUtils.toString(TestPropertyDefinitionNode.class.getClassLoader().getResourceAsStream("parser/request-param.json"), Charset.defaultCharset()); - inParams.put(ParamsHandlerConstant.INPUT_PARAM_JSON_DATA, jsonData); - - inParams.put(ParamsHandlerConstant.INPUT_PARAM_SYSTEM_NAME, "SOURCE"); - - SvcLogicContext ctx = new SvcLogicContext(); - propertyDefinitionNode.processExternalSystemParamKeys(inParams, ctx); - assertEquals(ctx.getAttribute("test."+ParamsHandlerConstant.OUTPUT_PARAM_STATUS), ParamsHandlerConstant.OUTPUT_STATUS_SUCCESS); -} - - @Test - public void mergeJsonData() throws Exception { - PropertyDefinitionNode propertyDefinitionNode = new PropertyDefinitionNode(); - Map inParams = new HashMap(); - inParams.put(ParamsHandlerConstant.INPUT_PARAM_RESPONSE_PRIFIX, "test"); - - String jsonData = IOUtils.toString(TestPropertyDefinitionNode.class.getClassLoader().getResourceAsStream("parser/request-param.json"), Charset.defaultCharset()); - inParams.put(ParamsHandlerConstant.INPUT_PARAM_JSON_DATA, jsonData); - - String mergeJsonData = IOUtils.toString(TestPropertyDefinitionNode.class.getClassLoader().getResourceAsStream("parser/merge-param.json"), Charset.defaultCharset()); - inParams.put(ParamsHandlerConstant.INPUT_PARAM_MERGE__JSON_DATA, mergeJsonData); - - SvcLogicContext ctx = new SvcLogicContext(); - propertyDefinitionNode.mergeJsonData(inParams, ctx); - assertEquals(ctx.getAttribute("test."+ParamsHandlerConstant.OUTPUT_PARAM_STATUS), ParamsHandlerConstant.OUTPUT_STATUS_SUCCESS); - } - - @Test - public void testArtificatTransformer() throws Exception { - ArtificatTransformer transformer = new ArtificatTransformer(); - String yamlData = IOUtils.toString(TestPropertyDefinitionNode.class.getClassLoader().getResourceAsStream("parser/pd.yaml"), Charset.defaultCharset()); - - PropertyDefinition propertyDefinition = transformer.convertYAMLToPD(yamlData); - String yaml = transformer.convertPDToYaml(propertyDefinition); - } - -} diff --git a/appc-config/appc-config-params/provider/src/test/java/org/openecomp/sdnc/config/params/transformer/tosca/TestArtifactProcessor.java b/appc-config/appc-config-params/provider/src/test/java/org/openecomp/sdnc/config/params/transformer/tosca/TestArtifactProcessor.java deleted file mode 100644 index 33845ddca..000000000 --- a/appc-config/appc-config-params/provider/src/test/java/org/openecomp/sdnc/config/params/transformer/tosca/TestArtifactProcessor.java +++ /dev/null @@ -1,105 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP : APPC - * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Copyright (C) 2017 Amdocs - * ============================================================================= - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * ECOMP is a trademark and service mark of AT&T Intellectual Property. - * ============LICENSE_END========================================================= - */ - -package org.openecomp.sdnc.config.params.transformer.tosca; - -import org.junit.Assert; -import org.junit.Rule; -import org.junit.Test; -import org.junit.rules.TemporaryFolder; -import org.openecomp.sdnc.config.params.transformer.tosca.exceptions.ArtifactProcessorException; - -import java.io.*; - -public class TestArtifactProcessor{ - @Rule - public TemporaryFolder temporaryFolder = new TemporaryFolder(); - - @Test - public void testArtifactProcessor() throws IOException, ArtifactProcessorException { - - ArtifactProcessor arp = ArtifactProcessorFactory.getArtifactProcessor(); - - String pdString = getFileContent("tosca/ExamplePropertyDefinition.yml"); - OutputStream outstream=null; - - File tempFile = temporaryFolder.newFile("TestTosca.yml"); - outstream = new FileOutputStream(tempFile); - arp.generateArtifact(pdString,outstream); - outstream.flush(); - outstream.close(); - - String expectedTosca = getFileContent("tosca/ExpectedTosca.yml"); - String toscaString = getFileContent(tempFile); - Assert.assertEquals(expectedTosca,toscaString); - } - - @Test - public void testArtifactProcessorWithStringOutput() throws IOException, ArtifactProcessorException { - - ArtifactProcessor arp = ArtifactProcessorFactory.getArtifactProcessor(); - - String pdString = getFileContent("tosca/ExamplePropertyDefinition.yml"); - OutputStream outstream=null; - - outstream = new ByteArrayOutputStream(); - arp.generateArtifact(pdString,outstream); - outstream.flush(); - outstream.close(); - - String expectedTosca = getFileContent("tosca/ExpectedTosca.yml"); - String toscaString = outstream.toString(); - } - - private String getFileContent(String fileName) throws IOException{ - ClassLoader classLoader = new TestArtifactProcessor().getClass().getClassLoader(); - InputStream is = new FileInputStream(classLoader.getResource(fileName).getFile()); - BufferedReader buf = new BufferedReader(new InputStreamReader(is)); - String line = buf.readLine(); - StringBuilder sb = new StringBuilder(); - - while (line != null) { - sb.append(line).append("\n"); - line = buf.readLine(); - } - String fileString = sb.toString(); - is.close(); - return fileString; - } - - private String getFileContent(File file) throws IOException{ - InputStream is = new FileInputStream(file); - BufferedReader buf = new BufferedReader(new InputStreamReader(is)); - String line = buf.readLine(); - StringBuilder sb = new StringBuilder(); - - while (line != null) { - sb.append(line).append("\n"); - line = buf.readLine(); - } - String fileString = sb.toString(); - is.close(); - return fileString; - } -} diff --git a/appc-config/appc-config-params/provider/src/test/java/org/openecomp/sdnc/config/params/transformer/tosca/TestGenerateArtifactObject.java b/appc-config/appc-config-params/provider/src/test/java/org/openecomp/sdnc/config/params/transformer/tosca/TestGenerateArtifactObject.java deleted file mode 100644 index 950180262..000000000 --- a/appc-config/appc-config-params/provider/src/test/java/org/openecomp/sdnc/config/params/transformer/tosca/TestGenerateArtifactObject.java +++ /dev/null @@ -1,254 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP : APPC - * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Copyright (C) 2017 Amdocs - * ============================================================================= - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * ECOMP is a trademark and service mark of AT&T Intellectual Property. - * ============LICENSE_END========================================================= - */ - -package org.openecomp.sdnc.config.params.transformer.tosca; - -import org.junit.Assert; -import org.junit.Rule; -import org.junit.Test; -import org.junit.rules.TemporaryFolder; -import org.openecomp.sdnc.config.params.data.Parameter; -import org.openecomp.sdnc.config.params.data.PropertyDefinition; -import org.openecomp.sdnc.config.params.data.RequestKey; -import org.openecomp.sdnc.config.params.data.ResponseKey; -import org.openecomp.sdnc.config.params.transformer.tosca.exceptions.ArtifactProcessorException; - -import java.io.*; -import java.util.ArrayList; -import java.util.List; - -public class TestGenerateArtifactObject -{ - @Rule - public TemporaryFolder temporaryFolder = new TemporaryFolder(); - - @Test - public void testObjectArtifactProcessor() throws IOException, ArtifactProcessorException { - - String expectedTosca="node_types:\n" + - " VNF:\n" + - " derived_from: org.openecomp.genericvnf\n" + - " version: V1\n" + - " description: ''\n" + - " properties:\n" + - " LOCAL_ACCESS_IP_ADDR:\n" + - " type: string\n" + - " required: false\n" + - " default: 0.0.0.0\n" + - " status: SUPPORTED\n" + - " LOCAL_CORE_ALT_IP_ADDR:\n" + - " type: String\n" + - " required: false\n" + - " default: value\n" + - " status: SUPPORTED\n" + - "topology_template:\n" + - " node_templates:\n" + - " VNF_Template:\n" + - " type: VNF\n" + - " properties:\n" + - " LOCAL_ACCESS_IP_ADDR: \n" + - " LOCAL_CORE_ALT_IP_ADDR: \n"; - //Create object - PropertyDefinition pd = new PropertyDefinition(); - pd.setKind("VNF"); - pd.setVersion("V1"); - pd.setParameters(createParameters()); - - //Call ArtifactProcessor - OutputStream outstream=null; - - File toscaFile =temporaryFolder.newFile("TestTosca.yml"); - outstream = new FileOutputStream(toscaFile); - ArtifactProcessorImpl arp = new ArtifactProcessorImpl(); - arp.generateArtifact(pd,outstream); - outstream.flush(); - outstream.close(); - - String toscaString = getFileContent(toscaFile); - Assert.assertEquals(expectedTosca,toscaString); - - } - - @Test - public void testPDpropertiesSetNull() throws IOException, ArtifactProcessorException { - String expectedTosca = "node_types:\n" + - " PropertyDefinition:\n" + - " derived_from: org.openecomp.genericvnf\n" + - " version: V1\n" + - " description: ''\n" + - "topology_template:\n" + - " node_templates:\n" + - " PropertyDefinition_Template:\n" + - " type: PropertyDefinition\n"; - //Create object - PropertyDefinition pd = new PropertyDefinition(); - pd.setKind("PropertyDefinition"); - pd.setVersion("V1"); - OutputStream outstream=null; - - File toscaFile =temporaryFolder.newFile("TestTosca.yml"); - outstream = new FileOutputStream(toscaFile); - - ArtifactProcessorImpl arp = new ArtifactProcessorImpl(); - arp.generateArtifact(pd,outstream); - outstream.flush(); - outstream.close(); - - String toscaString = getFileContent(toscaFile); - Assert.assertEquals(expectedTosca,toscaString); - } - - @Test - public void testArtifactGeneratorInvalidStream() throws IOException { - String expectedMsg = "java.io.IOException: Stream Closed"; - PropertyDefinition pd = new PropertyDefinition(); - pd.setKind("VNF"); - pd.setVersion("V1"); - pd.setParameters(createParameters()); - - //Call ArtifactProcessor - OutputStream outstream=null; - try { - File toscaFile =temporaryFolder.newFile("TestTosca.yml"); - outstream = new FileOutputStream(toscaFile); - outstream.close(); - ArtifactProcessorImpl arp = new ArtifactProcessorImpl(); - arp.generateArtifact(pd,outstream); - Assert.fail(); - } - catch (ArtifactProcessorException e) - { - Assert.assertEquals(expectedMsg,e.getMessage()); - } - } - - private List createParameters() - { - //Create single Parameter object 1 - Parameter singleParameter1 = new Parameter(); - singleParameter1.setName("LOCAL_ACCESS_IP_ADDR"); - singleParameter1.setRequired(false); - singleParameter1.setSource("source"); - singleParameter1.setDefaultValue("0.0.0.0"); - singleParameter1.setRuleType("myRule1"); - singleParameter1.setRequestKeys(createRequestKeys()); - - //Create single Parameter object 2 - Parameter singleParameter2 = new Parameter(); - singleParameter2.setName("LOCAL_CORE_ALT_IP_ADDR"); - singleParameter2.setType("String"); - singleParameter2.setRequired(false); - singleParameter2.setSource("source"); - singleParameter2.setDefaultValue("value"); - singleParameter2.setRuleType("myRule2"); - singleParameter2.setResponseKeys(createResponseKeys()); - - //Add the Parameter objects to the List - List parameterList = new ArrayList(); - parameterList.add(singleParameter1); - parameterList.add(singleParameter2); - return parameterList; - } - - private List createRequestKeys() - { - //Create RequestKey object 1 - RequestKey requestKey1 = new RequestKey(); - requestKey1.setKeyName("class-type"); - requestKey1.setKeyValue("interface-ip-address"); - - //Create RequestKey object 2 - RequestKey requestKey2 = new RequestKey(); - requestKey2.setKeyName("address_fqdn"); - requestKey2.setKeyValue("someVal"); - - //Create RequestKey object 3 - RequestKey requestKey3 = new RequestKey(); - requestKey3.setKeyName("address_type"); - requestKey3.setKeyValue("v4"); - - //Add the RequestKey Objects to the List - List requestKeyList = new ArrayList(); - requestKeyList.add(requestKey1); - requestKeyList.add(requestKey2); - requestKeyList.add(requestKey3); - return requestKeyList; - } - - private List createResponseKeys() - { - //Create RequestKey object 1 - ResponseKey responseKey1 = new ResponseKey(); - - responseKey1.setUniqueKeyName("name1"); - responseKey1.setUniqueKeyValue("value1"); - responseKey1.setFieldKeyName("field1"); - - //Add the RequestKey Objects to the List - List responseKeyList = new ArrayList(); - responseKeyList.add(responseKey1); - - return responseKeyList; - } - - private Parameter createParameter() - { - Parameter singleParameter1 = new Parameter(); - singleParameter1.setName("LOCAL_ACCESS_IP_ADDR"); - singleParameter1.setRequired(false); - singleParameter1.setSource("source"); - singleParameter1.setDefaultValue("0.0.0.0"); - singleParameter1.setRequestKeys(createRequestKeys()); - singleParameter1.setResponseKeys(createResponseKeys()); - return singleParameter1; - } - - @Test(expected =Exception.class) - public void testPDnull() throws IOException, ArtifactProcessorException { - PropertyDefinition pd = null; - OutputStream outstream=null; - - outstream = new FileOutputStream(".\\TestTosca.yml"); - ArtifactProcessorImpl arp = new ArtifactProcessorImpl(); - arp.generateArtifact(pd,outstream); - outstream.flush(); - outstream.close(); - } - - private String getFileContent(File file) throws IOException - { - InputStream is = new FileInputStream(file); - BufferedReader buf = new BufferedReader(new InputStreamReader(is)); - String line = buf.readLine(); - StringBuilder sb = new StringBuilder(); - - while (line != null) { - sb.append(line).append("\n"); - line = buf.readLine(); - } - String fileString = sb.toString(); - is.close(); - return fileString; - } -} diff --git a/appc-config/appc-config-params/provider/src/test/java/org/openecomp/sdnc/config/params/transformer/tosca/TestGenerateArtifactString.java b/appc-config/appc-config-params/provider/src/test/java/org/openecomp/sdnc/config/params/transformer/tosca/TestGenerateArtifactString.java deleted file mode 100644 index 4ffbe5298..000000000 --- a/appc-config/appc-config-params/provider/src/test/java/org/openecomp/sdnc/config/params/transformer/tosca/TestGenerateArtifactString.java +++ /dev/null @@ -1,155 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP : APPC - * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Copyright (C) 2017 Amdocs - * ============================================================================= - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * ECOMP is a trademark and service mark of AT&T Intellectual Property. - * ============LICENSE_END========================================================= - */ - -package org.openecomp.sdnc.config.params.transformer.tosca; - -import org.junit.Assert; -import org.junit.Rule; -import org.junit.Test; -import org.junit.rules.TemporaryFolder; -import org.openecomp.sdnc.config.params.transformer.tosca.exceptions.ArtifactProcessorException; - -import java.io.*; -import java.net.URL; - -public class TestGenerateArtifactString{ - - @Rule - public TemporaryFolder temporaryFolder = new TemporaryFolder(); - - @Test - public void testStringArtifactGenerator() throws IOException, ArtifactProcessorException { - - String pdString = getFileContent("tosca/ExamplePropertyDefinition.yml"); - OutputStream outstream=null; - - File tempFile = temporaryFolder.newFile("TestTosca.yml"); - outstream = new FileOutputStream(tempFile); - ArtifactProcessorImpl arp = new ArtifactProcessorImpl(); - arp.generateArtifact(pdString,outstream); - outstream.flush(); - outstream.close(); - - String expectedTosca = getFileContent("tosca/ExpectedTosca.yml"); - String toscaString = getFileContent(tempFile); - Assert.assertEquals(expectedTosca,toscaString); - - } - - @Test - public void testArtifactGeneratorWithParameterNameBlank() throws IOException, ArtifactProcessorException { - - String pdString = getFileContent("tosca/ExamplePropertyDefinition2.yml"); - OutputStream outstream=null; - String expectedMsg ="Parameter name is empty,null or contains whitespace"; - - File tempFile = temporaryFolder.newFile("TestTosca.yml"); - outstream = new FileOutputStream(tempFile); - ArtifactProcessorImpl arp = new ArtifactProcessorImpl(); - try { - arp.generateArtifact(pdString, outstream); - } - catch (ArtifactProcessorException e) - { - Assert.assertEquals(expectedMsg,e.getMessage()); - } - outstream.flush(); - outstream.close(); - } - - @Test - public void testArtifactGeneratorWithParameterNameNull() throws IOException, ArtifactProcessorException { - - String pdString = getFileContent("tosca/ExamplePropertyDefinition3.yml"); - OutputStream outstream=null; - String expectedMsg ="Parameter name is empty,null or contains whitespace"; - - File tempFile = temporaryFolder.newFile("TestTosca.yml"); - outstream = new FileOutputStream(tempFile); - ArtifactProcessorImpl arp = new ArtifactProcessorImpl(); - try { - arp.generateArtifact(pdString, outstream); - } - catch (ArtifactProcessorException e) - { - Assert.assertEquals(expectedMsg,e.getMessage()); - } - outstream.flush(); - outstream.close(); - } - - @Test - public void testArtifactGeneratorWithKindNull() throws IOException, ArtifactProcessorException { - - String pdString = getFileContent("tosca/ExamplePropertyDefinition4.yml"); - OutputStream outstream=null; - String expectedMsg ="Kind in PropertyDefinition is blank or null"; - - File tempFile = temporaryFolder.newFile("TestTosca.yml"); - outstream = new FileOutputStream(tempFile); - ArtifactProcessorImpl arp = new ArtifactProcessorImpl(); - try { - arp.generateArtifact(pdString, outstream); - } - catch (ArtifactProcessorException e) - { - Assert.assertEquals(expectedMsg,e.getMessage()); - } - outstream.flush(); - outstream.close(); - } - - private String getFileContent(String fileName) throws IOException - { - ClassLoader classLoader = new TestGenerateArtifactString().getClass().getClassLoader(); - InputStream is = new FileInputStream(classLoader.getResource(fileName).getFile()); - BufferedReader buf = new BufferedReader(new InputStreamReader(is)); - String line = buf.readLine(); - StringBuilder sb = new StringBuilder(); - - while (line != null) { - sb.append(line).append("\n"); - line = buf.readLine(); - } - String fileString = sb.toString(); - is.close(); - return fileString; - } - - private String getFileContent(File file) throws IOException - { - InputStream is = new FileInputStream(file); - BufferedReader buf = new BufferedReader(new InputStreamReader(is)); - String line = buf.readLine(); - StringBuilder sb = new StringBuilder(); - - while (line != null) { - sb.append(line).append("\n"); - line = buf.readLine(); - } - String fileString = sb.toString(); - is.close(); - return fileString; - } -} diff --git a/appc-config/appc-config-params/provider/src/test/java/org/openecomp/sdnc/config/params/transformer/tosca/TestPropertyQueryString.java b/appc-config/appc-config-params/provider/src/test/java/org/openecomp/sdnc/config/params/transformer/tosca/TestPropertyQueryString.java deleted file mode 100644 index 3eb231ae9..000000000 --- a/appc-config/appc-config-params/provider/src/test/java/org/openecomp/sdnc/config/params/transformer/tosca/TestPropertyQueryString.java +++ /dev/null @@ -1,171 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP : APPC - * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Copyright (C) 2017 Amdocs - * ============================================================================= - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * ECOMP is a trademark and service mark of AT&T Intellectual Property. - * ============LICENSE_END========================================================= - */ - -package org.openecomp.sdnc.config.params.transformer.tosca; - -import org.junit.Assert; -import org.junit.Test; -import org.openecomp.sdnc.config.params.data.RequestKey; -import org.openecomp.sdnc.config.params.data.ResponseKey; - -import java.util.ArrayList; -import java.util.List; - -public class TestPropertyQueryString -{ - @Test - public void testBuildResponseKeys() - { - ArtifactProcessorImpl arp = new ArtifactProcessorImpl(); - String properties= arp.buildResponseKeyExpression(createResponseKeys()); - Assert.assertEquals("",properties); - } - - @Test - public void testBuildRequestKeys() - { - ArtifactProcessorImpl arp = new ArtifactProcessorImpl(); - String properties= arp.buildRequestKeyExpression(createRequestKeys()); - Assert.assertEquals("",properties); - } - - @Test - public void testEncoding() - { - ArtifactProcessorImpl arp = new ArtifactProcessorImpl(); - - String expected1 = "<class-type>"; - String encoded1 = arp.encode(""); - Assert.assertEquals(expected1,encoded1); - - String expected2 = "<<<metallica<>iron_maiden>>>"; - String encoded2 = arp.encode("<<iron_maiden>>>"); - Assert.assertEquals(expected2,encoded2); - - String expected3 = "band-list:metallica,ironmaiden"; - String encoded3 = arp.encode("band-list:metallica,ironmaiden"); - Assert.assertEquals(expected3,encoded3); - - String expected4 = "motorhead=lemmy"; - String encoded4 = arp.encode("motorhead=lemmy"); - Assert.assertEquals(expected4,encoded4); - - String expected5 = "DreamTheater"; - String encoded5 = arp.encode(" DreamTheater "); - Assert.assertEquals(expected5,encoded5); - } - - @Test - public void testBuildRuleType() - { - ArtifactProcessorImpl arp = new ArtifactProcessorImpl(); - String input = "IPV4"; - String expected = ""; - Assert.assertEquals(expected,arp.buildRuleType(input)); - } - - @Test - public void testRuleTypeSetNull() - { - ArtifactProcessorImpl arp = new ArtifactProcessorImpl(); - String expected = ""; - Assert.assertEquals(expected,arp.buildRuleType(null)); - } - - @Test - public void testBuildRequestKeysWithKeyNull() - { - ArtifactProcessorImpl arp = new ArtifactProcessorImpl(); - List requestKeyList = new ArrayList(); - requestKeyList.add(null); - String properties= arp.buildRequestKeyExpression(requestKeyList); - Assert.assertEquals("",properties); - } - - @Test - public void testBuildResponseKeysWithKeyNull() - { - ArtifactProcessorImpl arp = new ArtifactProcessorImpl(); - List responseKeyList = new ArrayList(); - responseKeyList.add(null); - String properties= arp.buildResponseKeyExpression(responseKeyList); - Assert.assertEquals("",properties); - } - - @Test - public void testBuildSourceSystem() - { - ArtifactProcessorImpl arp = new ArtifactProcessorImpl(); - Assert.assertEquals("",arp.buildSourceSystem("source")); - } - - //@Test - private List createRequestKeys() - { - //Create RequestKey object 1 - RequestKey requestKey1 = new RequestKey(); - requestKey1.setKeyName("class-type"); - requestKey1.setKeyValue("interface-ip-address"); - - //Create RequestKey object 2 - RequestKey requestKey2 = new RequestKey(); - requestKey2.setKeyName("address_fqdn"); - requestKey2.setKeyValue("00000000000000"); - - //Create RequestKey object 3 - RequestKey requestKey3 = new RequestKey(); - requestKey3.setKeyName("address_type"); - requestKey3.setKeyValue("v4"); - - //Add the RequestKey Objects to the List - List requestKeyList = new ArrayList(); - requestKeyList.add(requestKey1); - requestKeyList.add(requestKey2); - requestKeyList.add(requestKey3); - return requestKeyList; - } - - //@Test - private List createResponseKeys() - { - //Create RequestKey object 1 - ResponseKey responseKey1 = new ResponseKey(); - - responseKey1.setUniqueKeyName("address-fqdn"); - responseKey1.setUniqueKeyValue("0000000000000"); - responseKey1.setFieldKeyName("ipaddress-v4"); - - ResponseKey responseKey2 = new ResponseKey(); - responseKey2.setUniqueKeyName("key2"); - responseKey2.setUniqueKeyValue("value2"); - responseKey2.setFieldKeyName("field2"); - - //Add the RequestKey Objects to the List - List responseKeyList = new ArrayList(); - responseKeyList.add(responseKey1); - responseKeyList.add(responseKey2); - - return responseKeyList; - } -} diff --git a/appc-config/appc-config-params/provider/src/test/java/org/openecomp/sdnc/config/params/transformer/tosca/TestReadArtifact.java b/appc-config/appc-config-params/provider/src/test/java/org/openecomp/sdnc/config/params/transformer/tosca/TestReadArtifact.java deleted file mode 100644 index 1b65a21f6..000000000 --- a/appc-config/appc-config-params/provider/src/test/java/org/openecomp/sdnc/config/params/transformer/tosca/TestReadArtifact.java +++ /dev/null @@ -1,103 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP : APPC - * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Copyright (C) 2017 Amdocs - * ============================================================================= - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * ECOMP is a trademark and service mark of AT&T Intellectual Property. - * ============LICENSE_END========================================================= - */ - -package org.openecomp.sdnc.config.params.transformer.tosca; - -import org.junit.Assert; -import org.junit.Test; -import org.openecomp.sdnc.config.params.data.PropertyDefinition; -import org.openecomp.sdnc.config.params.transformer.tosca.exceptions.ArtifactProcessorException; - -import java.io.*; - -public class TestReadArtifact { - @Test - public void testReadArtifactPositive() throws ArtifactProcessorException, IOException { - - String toscaArtifact = getFileContent("tosca/ReadArtifactPositiveInputTosca.yml"); - ArtifactProcessorImpl artifact = new ArtifactProcessorImpl(); - PropertyDefinition ouptPD = artifact.readArtifact(toscaArtifact); - Assert.assertEquals(ouptPD.getKind(),"Property Definition"); - Assert.assertEquals(ouptPD.getVersion(),"V1"); - - Assert.assertEquals(ouptPD.getParameters().get(0).getDefaultValue(),"0.0.0.0"); - Assert.assertEquals(ouptPD.getParameters().get(0).getName(),"abc"); - Assert.assertEquals(ouptPD.getParameters().get(0).getSource(),"source"); - Assert.assertEquals(ouptPD.getParameters().get(0).getRuleType(),"interface-ip-address"); - Assert.assertEquals(ouptPD.getParameters().get(0).getDescription(),"param_desc"); - Assert.assertEquals(ouptPD.getParameters().get(0).getType(),"param1_type"); - Assert.assertEquals(ouptPD.getParameters().get(1).getRequestKeys().get(0).getKeyName(),"address_fqdn"); - Assert.assertEquals(ouptPD.getParameters().get(1).getRequestKeys().get(0).getKeyValue(),"0"); - Assert.assertEquals(ouptPD.getParameters().get(1).getRequestKeys().get(0).getKeyName(),"address_fqdn"); - Assert.assertEquals(ouptPD.getParameters().get(1).getRequestKeys().get(0).getKeyValue(),"0"); - Assert.assertEquals(ouptPD.getParameters().get(0).getResponseKeys().get(0).getUniqueKeyName(),"address-0"); - Assert.assertEquals(ouptPD.getParameters().get(0).getResponseKeys().get(0).getFieldKeyName(),"0"); - - Assert.assertEquals(ouptPD.getParameters().get(1).getDefaultValue(),"value"); - Assert.assertEquals(ouptPD.getParameters().get(1).getName(),"param 2"); - Assert.assertEquals(ouptPD.getParameters().get(1).getSource(),"source"); - Assert.assertEquals(ouptPD.getParameters().get(1).getRuleType(),"interface-ip-address"); - Assert.assertEquals(ouptPD.getParameters().get(1).getDescription(),"param2"); - Assert.assertEquals(ouptPD.getParameters().get(1).getType(),"param2 type"); - Assert.assertEquals(ouptPD.getParameters().get(1).getRequestKeys().get(0).getKeyName(),"address_fqdn"); - Assert.assertEquals(ouptPD.getParameters().get(1).getRequestKeys().get(0).getKeyValue(),"0"); - Assert.assertEquals(ouptPD.getParameters().get(1).getRequestKeys().get(1).getKeyName(),"address_type"); - Assert.assertEquals(ouptPD.getParameters().get(1).getRequestKeys().get(1).getKeyValue(),"v4"); - Assert.assertEquals(ouptPD.getParameters().get(1).getResponseKeys().get(0).getUniqueKeyName(),"address-0"); - Assert.assertEquals(ouptPD.getParameters().get(1).getResponseKeys().get(0).getUniqueKeyValue(),"0"); - Assert.assertEquals(ouptPD.getParameters().get(1).getResponseKeys().get(0).getFieldKeyName(),"0"); - - } - - @Test - public void testReadArtifactNegetive() throws IOException { - - String toscaArtifact = getFileContent("tosca/ReadArtifactNegetiveInputTosca.yml"); - ArtifactProcessorImpl artifact = new ArtifactProcessorImpl(); - try { - PropertyDefinition ouptPD = artifact.readArtifact(toscaArtifact); - } catch (ArtifactProcessorException e) { - Assert.assertNotNull(e); - Assert.assertEquals(e.getMessage(),"Invalid input found <> source1 "); - } - } - - private String getFileContent(String fileName) throws IOException - { - ClassLoader classLoader = new TestReadArtifact().getClass().getClassLoader(); - InputStream is = new FileInputStream(classLoader.getResource(fileName).getFile()); - BufferedReader buf = new BufferedReader(new InputStreamReader(is)); - String line = buf.readLine(); - StringBuilder sb = new StringBuilder(); - - while (line != null) { - sb.append(line).append("\n"); - line = buf.readLine(); - } - String fileString = sb.toString(); - is.close(); - return fileString; - } - -} -- cgit 1.2.3-korg