Use RestTemplate in AaiRestClient
[aai/model-loader.git] / src / main / java / org / onap / aai / modelloader / entity / model / ModelArtifact.java
index c7631e8..fa22969 100644 (file)
  */
 package org.onap.aai.modelloader.entity.model;
 
-import java.io.StringWriter;
 import java.util.List;
-import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.Response;
-import javax.xml.XMLConstants;
-import javax.xml.transform.OutputKeys;
-import javax.xml.transform.Transformer;
-import javax.xml.transform.TransformerException;
-import javax.xml.transform.TransformerFactory;
-import javax.xml.transform.dom.DOMSource;
-import javax.xml.transform.stream.StreamResult;
 import org.onap.aai.modelloader.config.ModelLoaderConfig;
 import org.onap.aai.modelloader.entity.Artifact;
 import org.onap.aai.modelloader.entity.ArtifactType;
 import org.onap.aai.modelloader.restclient.AaiRestClient;
-import org.onap.aai.restclient.client.OperationResult;
-import org.w3c.dom.Node;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.MediaType;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.client.HttpClientErrorException;
 
 
 public class ModelArtifact extends AbstractModelArtifact {
@@ -49,7 +41,7 @@ public class ModelArtifact extends AbstractModelArtifact {
 
     private String modelVerId;
     private String modelInvariantId;
-    private Node modelVer;
+    private String modelVer;
     private boolean firstVersionOfModel = false;
 
     public ModelArtifact() {
@@ -72,11 +64,11 @@ public class ModelArtifact extends AbstractModelArtifact {
         this.modelInvariantId = modelInvariantId;
     }
 
-    public Node getModelVer() {
+    public String getModelVer() {
         return modelVer;
     }
 
-    public void setModelVer(Node modelVer) {
+    public void setModelVer(String modelVer) {
         this.modelVer = modelVer;
     }
 
@@ -95,8 +87,16 @@ public class ModelArtifact extends AbstractModelArtifact {
      * @return true if a request to GET this resource as XML media is successful (status OK)
      */
     private boolean xmlResourceCanBeFetched(AaiRestClient aaiClient, String distId, String xmlResourceUrl) {
-        OperationResult getResponse = getResourceModel(aaiClient, distId, xmlResourceUrl);
-        return getResponse != null && getResponse.getResultCode() == Response.Status.OK.getStatusCode();
+        try {
+            ResponseEntity<Model> getResponse = getResourceModel(aaiClient, distId, xmlResourceUrl);
+            return getResponse.getStatusCode().equals(HttpStatus.OK);
+        } catch (HttpClientErrorException e) {
+            if(e.getStatusCode().equals(HttpStatus.NOT_FOUND)) {
+                return false;
+            } else {
+                throw e;
+            }
+        }
     }
 
     /**
@@ -107,8 +107,8 @@ public class ModelArtifact extends AbstractModelArtifact {
      * @param xmlResourceUrl
      * @return OperationResult the result of the operation
      */
-    private OperationResult getResourceModel(AaiRestClient aaiClient, String distId, String xmlResourceUrl) {
-        return aaiClient.getResource(xmlResourceUrl, distId, MediaType.APPLICATION_XML_TYPE);
+    private ResponseEntity<Model> getResourceModel(AaiRestClient aaiClient, String distId, String xmlResourceUrl) {
+        return aaiClient.getResource(xmlResourceUrl, distId, MediaType.APPLICATION_XML, Model.class);
     }
 
     /**
@@ -121,9 +121,9 @@ public class ModelArtifact extends AbstractModelArtifact {
      * @return true if the resource PUT as XML media was successful (status OK)
      */
     private boolean putXmlResource(AaiRestClient aaiClient, String distId, String resourceUrl, String payload) {
-        OperationResult putResponse =
-                aaiClient.putResource(resourceUrl, payload, distId, MediaType.APPLICATION_XML_TYPE);
-        return putResponse != null && putResponse.getResultCode() == Response.Status.CREATED.getStatusCode();
+        ResponseEntity<String> putResponse =
+                aaiClient.putResource(resourceUrl, payload, distId, MediaType.APPLICATION_XML, String.class);
+        return putResponse != null && putResponse.getStatusCode() == HttpStatus.CREATED;
     }
 
     @Override
@@ -142,24 +142,44 @@ public class ModelArtifact extends AbstractModelArtifact {
 
         // See whether the model is already present
         String resourceUrl = getModelUrl(config);
-        OperationResult result = getResourceModel(aaiClient, distId, resourceUrl);
+        // ResponseEntity<Model> result;
+        boolean modelExists = checkIfModelExists(aaiClient, distId, resourceUrl);
 
-        if (result != null) {
-            if (result.getResultCode() == Response.Status.OK.getStatusCode()) {
-                success = updateExistingModel(aaiClient, config, distId, completedArtifacts);
-            } else if (result.getResultCode() == Response.Status.NOT_FOUND.getStatusCode()) {
-                success = createNewModel(aaiClient, distId, completedArtifacts, resourceUrl);
-            } else {
-                logModelUpdateFailure(
-                        "Response code " + result.getResultCode() + " invalid for getting resource model");
-            }
+        if(modelExists) {
+            success = updateExistingModel(aaiClient, config, distId, completedArtifacts);
         } else {
-            logModelUpdateFailure("Null response from RestClient");
+            success = createNewModel(aaiClient, distId, completedArtifacts, resourceUrl);
         }
 
+        // if (result != null) {
+        //     if (result.getStatusCode() == HttpStatus.OK) {
+        //         success = updateExistingModel(aaiClient, config, distId, completedArtifacts);
+        //     } else if (result.getStatusCode() == HttpStatus.NOT_FOUND) {
+        //         success = createNewModel(aaiClient, distId, completedArtifacts, resourceUrl);
+        //     } else {
+        //         logModelUpdateFailure(
+        //                 "Response code " + result.getStatusCodeValue() + " invalid for getting resource model");
+        //     }
+        // } else {
+        //     logModelUpdateFailure("Null response from RestClient");
+        // }
+
         return success;
     }
 
+    private boolean checkIfModelExists(AaiRestClient aaiClient, String distId, String resourceUrl) throws HttpClientErrorException {
+        try {
+            ResponseEntity<Model> response = getResourceModel(aaiClient, distId, resourceUrl);
+            return response.getStatusCode().equals(HttpStatus.OK);
+        } catch (HttpClientErrorException e) {
+            if(e.getStatusCode().equals(HttpStatus.NOT_FOUND)) {
+                return false;
+            } else {
+                throw e;
+            }
+        }
+    }
+
     private boolean createNewModel(AaiRestClient aaiClient, String distId, List<Artifact> completedArtifacts,
             String resourceUrl) {
         boolean success;
@@ -206,17 +226,12 @@ public class ModelArtifact extends AbstractModelArtifact {
 
         // Load the model version
         boolean success = true;
-        try {
-            success = putXmlResource(aaiClient, distId, getModelVerUrl(config), nodeToString(getModelVer()));
-            if (success) {
-                completedArtifacts.add(this);
-                logInfoMsg(getType() + " " + getUniqueIdentifier() + " successfully ingested.");
-            } else {
-                logModelUpdateFailure("Error pushing model");
-            }
-        } catch (TransformerException e) {
-            logModelUpdateFailure(e.getMessage());
-            success = false;
+        success = putXmlResource(aaiClient, distId, getModelVerUrl(config), getModelVer());
+        if (success) {
+            completedArtifacts.add(this);
+            logInfoMsg(getType() + " " + getUniqueIdentifier() + " successfully ingested.");
+        } else {
+            logModelUpdateFailure("Error pushing model");
         }
 
         return success;
@@ -282,16 +297,4 @@ public class ModelArtifact extends AbstractModelArtifact {
 
         return baseURL + subURL + instance;
     }
-
-    private String nodeToString(Node node) throws TransformerException {
-        StringWriter sw = new StringWriter();
-        TransformerFactory transFact = TransformerFactory.newInstance();
-        transFact.setAttribute(XMLConstants.ACCESS_EXTERNAL_STYLESHEET, "");
-        transFact.setAttribute(XMLConstants.ACCESS_EXTERNAL_DTD, "");
-        transFact.setAttribute(XMLConstants.ACCESS_EXTERNAL_STYLESHEET, "");
-        Transformer t = transFact.newTransformer();
-        t.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes");
-        t.transform(new DOMSource(node), new StreamResult(sw));
-        return sw.toString();
-    }
 }