Refactor GizmoTranslator.translate()
Address Sonar violation for the translate() method throwing multiple types
of checked Exception. Add a JUnit test case for this.
Change-Id: If3c18460895f8193c7b759da4537aad0a2cbf485
Issue-ID: AAI-2264
Signed-off-by: mark.j.leonard <mark.j.leonard@gmail.com>
diff --git a/src/main/java/org/onap/aai/modelloader/entity/model/AbstractModelArtifact.java b/src/main/java/org/onap/aai/modelloader/entity/model/AbstractModelArtifact.java
index c21a285..ee70939 100644
--- a/src/main/java/org/onap/aai/modelloader/entity/model/AbstractModelArtifact.java
+++ b/src/main/java/org/onap/aai/modelloader/entity/model/AbstractModelArtifact.java
@@ -2,8 +2,8 @@
* ============LICENSE_START=======================================================
* org.onap.aai
* ================================================================================
- * Copyright © 2017-2018 AT&T Intellectual Property. All rights reserved.
- * Copyright © 2017-2018 European Software Marketing Ltd.
+ * Copyright (c) 2017-2018 AT&T Intellectual Property. All rights reserved.
+ * Copyright (c) 2017-2019 European Software Marketing Ltd.
* ================================================================================
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -18,8 +18,10 @@
* limitations under the License.
* ============LICENSE_END=========================================================
*/
+
package org.onap.aai.modelloader.entity.model;
+import java.io.IOException;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
@@ -35,7 +37,6 @@
import org.onap.aai.restclient.client.OperationResult;
import org.springframework.http.HttpStatus;
-
public abstract class AbstractModelArtifact extends Artifact implements IModelArtifact {
private static Logger logger = LoggerFactory.getInstance().getLogger(AbstractModelArtifact.class.getName());
@@ -65,7 +66,7 @@
public void setModelNamespace(String modelNamespace) {
this.modelNamespace = modelNamespace;
- // Get the version from the namespace (in format 'http://org.openecomp.aai.inventory/v9')
+ // Get the version from the namespace (in format 'http://org.onap.aai.inventory/v14')
String[] parts = modelNamespace.split("/");
modelNamespaceVersion = parts[parts.length - 1].trim();
}
@@ -90,10 +91,8 @@
if (postResponse.getResultCode() != HttpStatus.OK.value()) {
return false;
}
-
- } catch (Exception e) {
- logErrorMsg(
- "Ingest failed for " + getType().toString() + " " + getUniqueIdentifier() + ": " + e.getMessage());
+ } catch (IOException e) {
+ logErrorMsg("Ingest failed for " + getType() + " " + getUniqueIdentifier() + ": " + e.getMessage());
return false;
}
@@ -111,11 +110,12 @@
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
- sb.append("\nType=" + getType().toString() + "\nId=" + getUniqueIdentifier() + "\nVersion="
- + getModelNamespaceVersion() + "\nDependant models: ");
- for (String dep : referencedModelIds) {
- sb.append(dep + " ");
- }
+ sb.append("\n").append("Type=").append(getType()) //
+ .append("\n").append("Id=").append(getUniqueIdentifier()) //
+ .append("\n").append("Version=").append(getModelNamespaceVersion());
+
+ sb.append("\n").append("Dependant models: ");
+ referencedModelIds.forEach(dep -> sb.append(dep).append(" "));
return sb.toString();
}
diff --git a/src/main/java/org/onap/aai/modelloader/util/GizmoTranslator.java b/src/main/java/org/onap/aai/modelloader/util/GizmoTranslator.java
index a8c5d17..1b03933 100644
--- a/src/main/java/org/onap/aai/modelloader/util/GizmoTranslator.java
+++ b/src/main/java/org/onap/aai/modelloader/util/GizmoTranslator.java
@@ -30,7 +30,6 @@
import java.util.stream.Collectors;
import java.util.stream.IntStream;
import java.util.stream.Stream;
-import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import org.onap.aai.cl.api.Logger;
@@ -56,19 +55,20 @@
private static Logger logger = LoggerFactory.getInstance().getLogger(GizmoTranslator.class.getName());
- public static String translate(String xmlPayload) throws ParserConfigurationException, SAXException, IOException {
+ public static String translate(String xmlPayload) throws IOException {
logger.info(ModelLoaderMsgs.DISTRIBUTION_EVENT, "Process XML model artifact: " + xmlPayload);
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
- factory.setFeature("http://apache.org/xml/features/disallow-doctype-decl", true);
- DocumentBuilder builder = factory.newDocumentBuilder();
- InputSource is = new InputSource(new StringReader(xmlPayload));
- Document doc = builder.parse(is);
+ Document doc;
+ try {
+ factory.setFeature("http://apache.org/xml/features/disallow-doctype-decl", true);
+ doc = factory.newDocumentBuilder().parse(new InputSource(new StringReader(xmlPayload)));
+ } catch (ParserConfigurationException | SAXException e) {
+ throw new IOException(e);
+ }
GizmoBulkPayload gizmoPayload = new GizmoBulkPayload();
-
processNode(doc.getDocumentElement(), null, null, gizmoPayload);
-
return gizmoPayload.toJson();
}
diff --git a/src/test/java/org/onap/aai/modelloader/util/TestGizmoTranslator.java b/src/test/java/org/onap/aai/modelloader/util/TestGizmoTranslator.java
index e82af47..97d7a19 100644
--- a/src/test/java/org/onap/aai/modelloader/util/TestGizmoTranslator.java
+++ b/src/test/java/org/onap/aai/modelloader/util/TestGizmoTranslator.java
@@ -2,8 +2,8 @@
* ============LICENSE_START=======================================================
* org.onap.aai
* ================================================================================
- * Copyright © 2017-2018 AT&T Intellectual Property. All rights reserved.
- * Copyright © 2017-2018 European Software Marketing Ltd.
+ * Copyright (c) 2017-2018 AT&T Intellectual Property. All rights reserved.
+ * Copyright (c) 2017-2019 European Software Marketing Ltd.
* ================================================================================
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -18,6 +18,7 @@
* limitations under the License.
* ============LICENSE_END=========================================================
*/
+
package org.onap.aai.modelloader.util;
import static org.hamcrest.CoreMatchers.is;
@@ -26,15 +27,18 @@
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
-import javax.xml.parsers.ParserConfigurationException;
import org.junit.Test;
import org.onap.aai.modelloader.gizmo.GizmoBulkPayload;
-import org.xml.sax.SAXException;
public class TestGizmoTranslator {
+ @Test(expected = IOException.class)
+ public void translateInvalidXml() throws IOException {
+ GizmoTranslator.translate("not valid XML");
+ }
+
@Test
- public void translateXmlModel1() throws Exception {
+ public void translateXmlModel1() throws IOException {
GizmoBulkPayload request = createBulkRequest("src/test/resources/models/AAI-stellService-service-1.xml");
assertThat(request.getVertexOperations(GizmoBulkPayload.ADD_OP).size(), is(5));
assertThat(request.getVertexOperations(GizmoBulkPayload.EXISTS_OP).size(), is(3));
@@ -42,7 +46,7 @@
}
@Test
- public void translateXmlModel2() throws Exception {
+ public void translateXmlModel2() throws IOException {
GizmoBulkPayload request = createBulkRequest("src/test/resources/models/l3-network-widget.xml");
assertThat(request.getVertexOperations(GizmoBulkPayload.ADD_OP).size(), is(2));
assertThat(request.getVertexOperations(GizmoBulkPayload.EXISTS_OP).size(), is(0));
@@ -50,15 +54,14 @@
}
@Test
- public void translateXmlNamedQuery() throws Exception {
+ public void translateXmlNamedQuery() throws IOException {
GizmoBulkPayload request = createBulkRequest("src/test/resources/models/named-query-wan-connector.xml");
assertThat(request.getVertexOperations(GizmoBulkPayload.ADD_OP).size(), is(5));
assertThat(request.getVertexOperations(GizmoBulkPayload.EXISTS_OP).size(), is(4));
assertThat(request.getEdgeOperations(GizmoBulkPayload.ADD_OP).size(), is(8));
}
- private GizmoBulkPayload createBulkRequest(String filePath)
- throws IOException, ParserConfigurationException, SAXException {
+ private GizmoBulkPayload createBulkRequest(String filePath) throws IOException {
final String xmlPayload = new String(Files.readAllBytes(Paths.get(filePath)));
return GizmoBulkPayload.fromJson(GizmoTranslator.translate(xmlPayload));
}