aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorYuanHu <yuan.hu1@zte.com.cn>2016-09-29 16:26:15 +0800
committerYuanHu <yuan.hu1@zte.com.cn>2016-09-29 16:26:15 +0800
commitcee5085e4a3868d1dabfed4d032a7446ea49fee9 (patch)
tree2a9536a800b41c98a4a63483d120ecd2ea935228
parent8f0af18222fa4474b1e405c2cd2b473b411d671c (diff)
Clean Code. Extracting common methods.
Dynamically Obtain the download-uri of service template. Change-Id: I79e60b6105bdad9cf9682776bc9dda7d2034fc54 Signed-off-by: YuanHu <yuan.hu1@zte.com.cn>
-rw-r--r--catalog-core/catalog-mgr/src/main/java/org/openo/commontosca/catalog/model/common/TemplateDataHelper.java33
-rw-r--r--catalog-core/catalog-mgr/src/main/java/org/openo/commontosca/catalog/model/common/TemplateUtils.java105
-rw-r--r--catalog-core/catalog-mgr/src/main/java/org/openo/commontosca/catalog/model/parser/AbstractModelParser.java81
-rw-r--r--catalog-core/catalog-mgr/src/main/java/org/openo/commontosca/catalog/model/parser/yaml/aria/AriaModelParser.java5
-rw-r--r--catalog-core/catalog-mgr/src/main/java/org/openo/commontosca/catalog/model/parser/yaml/zte/ToscaYamlModelParser.java5
-rw-r--r--catalog-core/catalog-mgr/src/test/java/org/openo/commontosca/catalog/wrapper/ServiceTemplateWrapperTest.java5
6 files changed, 149 insertions, 85 deletions
diff --git a/catalog-core/catalog-mgr/src/main/java/org/openo/commontosca/catalog/model/common/TemplateDataHelper.java b/catalog-core/catalog-mgr/src/main/java/org/openo/commontosca/catalog/model/common/TemplateDataHelper.java
index ad5fb78e..7019ebe0 100644
--- a/catalog-core/catalog-mgr/src/main/java/org/openo/commontosca/catalog/model/common/TemplateDataHelper.java
+++ b/catalog-core/catalog-mgr/src/main/java/org/openo/commontosca/catalog/model/common/TemplateDataHelper.java
@@ -15,22 +15,25 @@
*/
package org.openo.commontosca.catalog.model.common;
-import com.google.gson.Gson;
-import com.google.gson.JsonElement;
-import com.google.gson.JsonObject;
-import com.google.gson.JsonPrimitive;
-
import org.openo.commontosca.catalog.common.ToolUtil;
import org.openo.commontosca.catalog.db.entity.NodeTemplateData;
import org.openo.commontosca.catalog.db.entity.ServiceTemplateData;
import org.openo.commontosca.catalog.db.entity.ServiceTemplateMappingData;
import org.openo.commontosca.catalog.db.entity.TemplateData;
+import org.openo.commontosca.catalog.db.exception.CatalogResourceException;
+import org.openo.commontosca.catalog.entity.response.CsarFileUriResponse;
import org.openo.commontosca.catalog.model.entity.NodeTemplate;
import org.openo.commontosca.catalog.model.entity.Parameters;
import org.openo.commontosca.catalog.model.entity.RelationShip;
import org.openo.commontosca.catalog.model.entity.ServiceTemplate;
import org.openo.commontosca.catalog.model.entity.ServiceTemplateOperation;
import org.openo.commontosca.catalog.model.entity.SubstitutionMapping;
+import org.openo.commontosca.catalog.wrapper.PackageWrapper;
+
+import com.google.gson.Gson;
+import com.google.gson.JsonElement;
+import com.google.gson.JsonObject;
+import com.google.gson.JsonPrimitive;
import java.util.ArrayList;
import java.util.Arrays;
@@ -40,8 +43,6 @@ import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
-
-
public class TemplateDataHelper {
/**
@@ -122,8 +123,9 @@ public class TemplateDataHelper {
* convert to service templates.
* @param stdList ServiceTemplateData list
* @return ServiceTemplate list
+ * @throws CatalogResourceException
*/
- public static ServiceTemplate[] convert2ServiceTemplates(List<ServiceTemplateData> stdList) {
+ public static ServiceTemplate[] convert2ServiceTemplates(List<ServiceTemplateData> stdList) throws CatalogResourceException {
List<ServiceTemplate> stList = new ArrayList<>();
for (ServiceTemplateData std : stdList) {
stList.add(convert2ServiceTemplate(std));
@@ -136,17 +138,26 @@ public class TemplateDataHelper {
* covert to service template.
* @param std ServiceTemplateData
* @return ServiceTemplate
+ * @throws CatalogResourceException
*/
- public static ServiceTemplate convert2ServiceTemplate(ServiceTemplateData std) {
+ public static ServiceTemplate convert2ServiceTemplate(ServiceTemplateData std) throws CatalogResourceException {
Parameters parameters = ToolUtil.fromJson(std.getInputs(), Parameters.class);
ServiceTemplateOperation[] operations =
ToolUtil.fromJson(std.getOperations(), ServiceTemplateOperation[].class);
-
+ String downloadUri = buildSTDownloadUri(std.getCsarId(), std.getDownloadUri());
+
return new ServiceTemplate(std.getServiceTemplateId(), std.getTemplateName(), std.getVendor(),
- std.getVersion(), std.getCsarId(), std.getType(), std.getDownloadUri(),
+ std.getVersion(), std.getCsarId(), std.getType(), downloadUri,
parameters.getInputs(), parameters.getOutputs(), operations);
}
+ private static String buildSTDownloadUri(String packageId, String stFileName)
+ throws CatalogResourceException {
+ CsarFileUriResponse stDownloadUri =
+ PackageWrapper.getInstance().getCsarFileDownloadUri(packageId, stFileName);
+ return stDownloadUri.getDownloadUri();
+ }
+
/**
* covert to nodeTemplates.
* @param ntdList NodeTemplateData list
diff --git a/catalog-core/catalog-mgr/src/main/java/org/openo/commontosca/catalog/model/common/TemplateUtils.java b/catalog-core/catalog-mgr/src/main/java/org/openo/commontosca/catalog/model/common/TemplateUtils.java
new file mode 100644
index 00000000..945cc92a
--- /dev/null
+++ b/catalog-core/catalog-mgr/src/main/java/org/openo/commontosca/catalog/model/common/TemplateUtils.java
@@ -0,0 +1,105 @@
+/**
+ * Copyright 2016 ZTE Corporation.
+ *
+ * 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.
+ */
+package org.openo.commontosca.catalog.model.common;
+
+import org.openo.commontosca.catalog.db.exception.CatalogResourceException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.io.BufferedInputStream;
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.zip.ZipEntry;
+import java.util.zip.ZipFile;
+import java.util.zip.ZipInputStream;
+
+public class TemplateUtils {
+ private static final Logger logger = LoggerFactory.getLogger(TemplateUtils.class);
+
+ /**
+ * @param zipFileName
+ * @param zipEntryName
+ * @return
+ * @throws CatalogResourceException
+ */
+ public static String readStringFromZipFile(String zipFileName, String zipEntryName) throws CatalogResourceException {
+ String[] lines = readFromZipFile(zipFileName, zipEntryName);
+ StringBuffer sb = new StringBuffer();
+ for (String line : lines) {
+ sb.append(line).append(System.lineSeparator());
+ }
+ return sb.toString();
+ }
+
+ /**
+ * @param zipFileName
+ * @param zipEntryName
+ * @return
+ * @throws CatalogResourceException
+ */
+ @SuppressWarnings("resource")
+ public static String[] readFromZipFile(String zipFileName, String zipEntryName)
+ throws CatalogResourceException {
+ ZipInputStream zipIns = null;
+ BufferedReader zipEntryBr = null;
+ try {
+ ZipFile zipFile = new ZipFile(zipFileName);
+
+ zipIns = new ZipInputStream(new BufferedInputStream(new FileInputStream(zipFileName)));
+ ZipEntry zipEntry;
+ while ((zipEntry = zipIns.getNextEntry()) != null) {
+ if (zipEntryName.equals(zipEntry.getName())
+ || (zipEntryName.replaceAll("/", File.separator)).equals(zipEntry.getName())) {
+ zipEntryBr = new BufferedReader(new InputStreamReader(zipFile.getInputStream(zipEntry)));
+ List<String> lineList = new ArrayList<>();
+ String line;
+ while ((line = zipEntryBr.readLine()) != null) {
+ lineList.add(line);
+ }
+
+ return lineList.toArray(new String[0]);
+ }
+ }
+ } catch (IOException e) {
+ throw new CatalogResourceException("Parse Tosca Meta Fail.", e);
+ } finally {
+ closeStreamAndReader(zipIns, zipEntryBr);
+ }
+ return new String[0];
+ }
+
+ private static void closeStreamAndReader(ZipInputStream zin, BufferedReader br) {
+ if (br != null) {
+ try {
+ br.close();
+ } catch (IOException e1) {
+ logger.error("Buffered reader close failed !");
+ }
+ }
+ if (zin != null) {
+ try {
+ zin.closeEntry();
+ } catch (IOException e2) {
+ logger.error("Zip inputStream close failed !");
+ }
+ }
+ }
+}
diff --git a/catalog-core/catalog-mgr/src/main/java/org/openo/commontosca/catalog/model/parser/AbstractModelParser.java b/catalog-core/catalog-mgr/src/main/java/org/openo/commontosca/catalog/model/parser/AbstractModelParser.java
index 065b5c0d..11c50a96 100644
--- a/catalog-core/catalog-mgr/src/main/java/org/openo/commontosca/catalog/model/parser/AbstractModelParser.java
+++ b/catalog-core/catalog-mgr/src/main/java/org/openo/commontosca/catalog/model/parser/AbstractModelParser.java
@@ -18,30 +18,19 @@ package org.openo.commontosca.catalog.model.parser;
import org.openo.commontosca.catalog.common.Config;
import org.openo.commontosca.catalog.common.ToolUtil;
import org.openo.commontosca.catalog.db.exception.CatalogResourceException;
-import org.openo.commontosca.catalog.entity.response.CsarFileUriResponse;
+import org.openo.commontosca.catalog.model.common.TemplateUtils;
import org.openo.commontosca.catalog.model.entity.NodeTemplate;
-import org.openo.commontosca.catalog.wrapper.PackageWrapper;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import java.io.BufferedInputStream;
-import java.io.BufferedReader;
import java.io.File;
-import java.io.FileInputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
-import java.util.zip.ZipEntry;
-import java.util.zip.ZipFile;
-import java.util.zip.ZipInputStream;
public abstract class AbstractModelParser {
private static final Logger logger = LoggerFactory.getLogger(AbstractModelParser.class);
-
public abstract String parse(String packageId, String fileLocation)
throws CatalogResourceException;
@@ -52,6 +41,8 @@ public abstract class AbstractModelParser {
fileLocation, destPath, true)) {
throw new CatalogResourceException("Copy Temporary To HttpServer Failed.");
}
+
+ logger.info("destPath = " + destPath);
return destPath;
}
@@ -79,14 +70,14 @@ public abstract class AbstractModelParser {
if (ToolUtil.isTrimedEmptyString(type)) {
return false;
}
- return type.toUpperCase().contains(".VNF");
+ return type.toUpperCase().endsWith(".VNF") || type.toUpperCase().contains(".VNF.");
}
private boolean isNsType(String type) {
if (ToolUtil.isTrimedEmptyString(type)) {
return false;
}
- return type.toUpperCase().contains(".NS");
+ return type.toUpperCase().endsWith(".NS") || type.toUpperCase().contains(".NS.");
}
private EnumTemplateType getTemplateTypeFromNodeTemplates(List<NodeTemplate> ntList) {
@@ -101,67 +92,27 @@ public abstract class AbstractModelParser {
private static final String TOSCA_META_FIELD_ENTRY_DEFINITIONS = "Entry-Definitions";
- protected CsarFileUriResponse buildServiceTemplateDownloadUri(String packageId, String fileLocation)
+ protected String parseServiceTemplateFileName(String packageId, String fileLocation)
throws CatalogResourceException {
- Map<String, String> toscaMeta = parseToscaMeta(fileLocation);
- String stFileName = toscaMeta.get(TOSCA_META_FIELD_ENTRY_DEFINITIONS);
- CsarFileUriResponse stDownloadUri =
- PackageWrapper.getInstance().getCsarFileDownloadUri(packageId, stFileName);
- return stDownloadUri;
+ return File.separator + parseToscaMeta(fileLocation).get(TOSCA_META_FIELD_ENTRY_DEFINITIONS);
}
- @SuppressWarnings("resource")
- protected Map<String, String> parseToscaMeta(String fileLocation) throws CatalogResourceException {
+ private static final String TOSCA_META_FILE_NAME = "TOSCA-Metadata/TOSCA.meta";
+ protected Map<String, String> parseToscaMeta(String zipLocation) throws CatalogResourceException {
Map<String, String> toscaMeta = new HashMap<>();
+ String[] lines = TemplateUtils.readFromZipFile(zipLocation, TOSCA_META_FILE_NAME);
- ZipInputStream zin = null;
- BufferedReader br = null;
- try {
- InputStream in = new BufferedInputStream(new FileInputStream(fileLocation));
- zin = new ZipInputStream(in);
- ZipEntry ze;
- while ((ze = zin.getNextEntry()) != null) {
- if (("TOSCA-Metadata" + File.separator + "TOSCA.meta").equals(ze.getName())
- || "TOSCA-Metadata/TOSCA.meta".equals(ze.getName())) {
- ZipFile zf = new ZipFile(fileLocation);
- br = new BufferedReader(new InputStreamReader(zf.getInputStream(ze)));
- String line;
- String[] tmps;
- while ((line = br.readLine()) != null) {
- if (line.indexOf(":") > 0) {
- tmps = line.split(":");
- toscaMeta.put(tmps[0].trim(), tmps[1].trim());
- }
- }
-
- return toscaMeta;
- }
+ for (String line : lines) {
+ String[] tmps;
+ if (line.indexOf(":") > 0) {
+ tmps = line.split(":");
+ toscaMeta.put(tmps[0].trim(), tmps[1].trim());
}
-
- } catch (IOException e1) {
- throw new CatalogResourceException("Parse Tosca Meta Fail.", e1);
- } finally {
- closeStreamAndReader(zin, br);
}
return toscaMeta;
}
+
- private void closeStreamAndReader(ZipInputStream zin, BufferedReader br) {
- if (br != null) {
- try {
- br.close();
- } catch (IOException e1) {
- logger.error("Buffered reader close failed !");
- }
- }
- if (zin != null) {
- try {
- zin.closeEntry();
- } catch (IOException e2) {
- logger.error("Zip inputStream close failed !");
- }
- }
- }
}
diff --git a/catalog-core/catalog-mgr/src/main/java/org/openo/commontosca/catalog/model/parser/yaml/aria/AriaModelParser.java b/catalog-core/catalog-mgr/src/main/java/org/openo/commontosca/catalog/model/parser/yaml/aria/AriaModelParser.java
index 32e295f9..205ddf08 100644
--- a/catalog-core/catalog-mgr/src/main/java/org/openo/commontosca/catalog/model/parser/yaml/aria/AriaModelParser.java
+++ b/catalog-core/catalog-mgr/src/main/java/org/openo/commontosca/catalog/model/parser/yaml/aria/AriaModelParser.java
@@ -18,7 +18,6 @@ package org.openo.commontosca.catalog.model.parser.yaml.aria;
import org.openo.commontosca.catalog.common.ToolUtil;
import org.openo.commontosca.catalog.db.exception.CatalogResourceException;
import org.openo.commontosca.catalog.db.resource.TemplateManager;
-import org.openo.commontosca.catalog.entity.response.CsarFileUriResponse;
import org.openo.commontosca.catalog.model.common.TemplateDataHelper;
import org.openo.commontosca.catalog.model.entity.InputParameter;
import org.openo.commontosca.catalog.model.entity.NodeTemplate;
@@ -56,8 +55,8 @@ public class AriaModelParser extends AbstractModelParser {
AriaParserResult result = getAriaParserResult(fileLocation);
// service template
- CsarFileUriResponse stDownloadUri = buildServiceTemplateDownloadUri(packageId, fileLocation);
- ServiceTemplate st = parseServiceTemplate(result, packageId, stDownloadUri.getDownloadUri());
+ ServiceTemplate st = parseServiceTemplate(
+ result, packageId, parseServiceTemplateFileName(packageId, fileLocation));
// node templates
List<NodeTemplate> ntList = parseNodeTemplates(packageId, st.getServiceTemplateId(), result);
st.setType(getTemplateType(getSubstitutionType(result), ntList).toString());
diff --git a/catalog-core/catalog-mgr/src/main/java/org/openo/commontosca/catalog/model/parser/yaml/zte/ToscaYamlModelParser.java b/catalog-core/catalog-mgr/src/main/java/org/openo/commontosca/catalog/model/parser/yaml/zte/ToscaYamlModelParser.java
index f1f43989..2465beab 100644
--- a/catalog-core/catalog-mgr/src/main/java/org/openo/commontosca/catalog/model/parser/yaml/zte/ToscaYamlModelParser.java
+++ b/catalog-core/catalog-mgr/src/main/java/org/openo/commontosca/catalog/model/parser/yaml/zte/ToscaYamlModelParser.java
@@ -18,7 +18,6 @@ package org.openo.commontosca.catalog.model.parser.yaml.zte;
import org.openo.commontosca.catalog.common.ToolUtil;
import org.openo.commontosca.catalog.db.exception.CatalogResourceException;
import org.openo.commontosca.catalog.db.resource.TemplateManager;
-import org.openo.commontosca.catalog.entity.response.CsarFileUriResponse;
import org.openo.commontosca.catalog.model.common.TemplateDataHelper;
import org.openo.commontosca.catalog.model.entity.InputParameter;
import org.openo.commontosca.catalog.model.entity.NodeTemplate;
@@ -55,8 +54,8 @@ public class ToscaYamlModelParser extends AbstractModelParser {
ParseYamlResult result = getParseYamlResult(fileLocation);
// service template
- CsarFileUriResponse stDownloadUri = buildServiceTemplateDownloadUri(packageId, fileLocation);
- ServiceTemplate st = parseServiceTemplate(packageId, result, stDownloadUri.getDownloadUri());
+ ServiceTemplate st = parseServiceTemplate(
+ packageId, result, parseServiceTemplateFileName(packageId, fileLocation));
// workflow
ServiceTemplateOperation[] operations = parseOperations(result.getPlanList(), fileLocation);
st.setOperations(operations);
diff --git a/catalog-core/catalog-mgr/src/test/java/org/openo/commontosca/catalog/wrapper/ServiceTemplateWrapperTest.java b/catalog-core/catalog-mgr/src/test/java/org/openo/commontosca/catalog/wrapper/ServiceTemplateWrapperTest.java
index ac87302b..1cbf2ad3 100644
--- a/catalog-core/catalog-mgr/src/test/java/org/openo/commontosca/catalog/wrapper/ServiceTemplateWrapperTest.java
+++ b/catalog-core/catalog-mgr/src/test/java/org/openo/commontosca/catalog/wrapper/ServiceTemplateWrapperTest.java
@@ -319,8 +319,7 @@ public class ServiceTemplateWrapperTest {
private ServiceTemplateData setServiceTemplate() {
ServiceTemplateData serviceTemplate = new ServiceTemplateData();
serviceTemplate.setCsarId("123456");
- serviceTemplate.setDownloadUri(MsbAddrConfig.getMsbAddress()
- + "/files/catalog/NSAR/ZTE/NanocellGW/v1.0/Definitions/segw.yml");
+ serviceTemplate.setDownloadUri("/Definitions/segw.yml");
String inputs = "{\"inputs\":[{\"name\": \"SubscribersPerNfc\","
+ "\"type\": \"STRING\",\"description\": \"\",\"required\": false}],"
+ "\"outputs\":[]}";
@@ -362,7 +361,7 @@ public class ServiceTemplateWrapperTest {
ServiceTemplate serviceTemplate = new ServiceTemplate();
serviceTemplate.setCsarid("123456");
serviceTemplate.setDownloadUri(MsbAddrConfig.getMsbAddress()
- + "/files/catalog/NSAR/ZTE/NanocellGW/v1.0/Definitions/segw.yml");
+ + "/files/catalog-http/NSAR/ZTE/NanocellGW/v1.0/NanocellGW/Definitions/segw.yml");
InputParameter[] inputs = getServiceTemplateInputs();
serviceTemplate.setInputs(inputs);
ServiceTemplateOperation[] operations = getServiceTemplateOperation();