Merge from ECOMP's repository
[vid.git] / vid-app-common / src / main / java / org / onap / vid / mso / rest / RequestDetails.java
index 9e74473..da6d46d 100644 (file)
 
 package org.onap.vid.mso.rest;
 
+import com.fasterxml.jackson.annotation.*;
+import org.apache.commons.lang3.builder.EqualsBuilder;
+import org.apache.commons.lang3.builder.HashCodeBuilder;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.onap.vid.exceptions.NotFoundException;
+import org.onap.vid.mso.model.CloudConfiguration;
+import org.onap.vid.mso.model.ModelInfo;
+import org.onap.vid.mso.model.RequestInfo;
+import org.onap.vid.mso.model.RequestParameters;
+
 import java.util.HashMap;
-import java.util.Map;
 import java.util.List;
-
-import org.onap.vid.domain.mso.*;
-import org.onap.vid.domain.mso.SubscriberInfo;
-import com.fasterxml.jackson.annotation.JsonAnyGetter;
-import com.fasterxml.jackson.annotation.JsonAnySetter;
-import com.fasterxml.jackson.annotation.JsonIgnore;
-import com.fasterxml.jackson.annotation.JsonInclude;
-import com.fasterxml.jackson.annotation.JsonProperty;
-import com.fasterxml.jackson.annotation.JsonPropertyOrder;
-import org.apache.commons.lang.builder.EqualsBuilder;
-import org.apache.commons.lang.builder.HashCodeBuilder;
-import org.apache.commons.lang.builder.ToStringBuilder;
+import java.util.Map;
 
 
 /**
@@ -47,10 +45,13 @@ import org.apache.commons.lang.builder.ToStringBuilder;
         "relatedModelList",
         "requestInfo",
         "subscriberInfo",
-        "requestParameters"
+        "requestParameters",
+        "configurationParameters"
 })
 public class RequestDetails{
 
+
+
     /** The cloud configuration. */
     @JsonProperty("cloudConfiguration")
     private CloudConfiguration cloudConfiguration;
@@ -60,8 +61,8 @@ public class RequestDetails{
     private ModelInfo modelInfo;
 
     /** The related model list. */
-    @JsonProperty("relatedModelList")
-    private List<RelatedModel> relatedInstanceList;
+    @JsonProperty("relatedInstanceList")
+    private List<RelatedInstanceWrapper> relatedInstanceList;
 
     /** The request info. */
     @JsonProperty("requestInfo")
@@ -75,9 +76,12 @@ public class RequestDetails{
     @JsonProperty("requestParameters")
     private RequestParameters requestParameters;
 
+    @JsonProperty("configurationParameters")
+    protected List<Map<String, String>> configurationParameters;
+
     /** The additional properties. */
     @JsonIgnore
-    private Map<String, Object> additionalProperties = new HashMap<String, Object>();
+    private Map<String, Object> additionalProperties = new HashMap<>();
 
     /**
      * Gets the cloud configuration.
@@ -124,7 +128,7 @@ public class RequestDetails{
      * @return     The relatedInstanceList
      */
     @JsonProperty("relatedInstanceList")
-    public List<RelatedModel> getRelatedInstanceList() {
+    public List<RelatedInstanceWrapper> getRelatedInstanceList() {
         return relatedInstanceList;
     }
 
@@ -134,7 +138,7 @@ public class RequestDetails{
      * @param relatedInstanceList     The relatedInstanceList
      */
     @JsonProperty("relatedInstanceList")
-    public void setRelatedInstanceList( List<RelatedModel> relatedInstanceList) {
+    public void setRelatedInstanceList(List<RelatedInstanceWrapper> relatedInstanceList) {
         this.relatedInstanceList = relatedInstanceList;
     }
 
@@ -202,12 +206,31 @@ public class RequestDetails{
         this.additionalProperties.put(name, value);
     }
 
+    @JsonProperty("configurationParameters")
+    public List<Map<String, String>> getConfigurationParameters() {
+        return configurationParameters;
+    }
+
+    @JsonProperty("configurationParameters")
+    public void setConfigurationParameters(List<Map<String, String>> configurationParameters) {
+        this.configurationParameters = configurationParameters;
+    }
+
     /* (non-Javadoc)
      * @see org.onap.vid.domain.mso.RequestDetails#hashCode()
      */
     @Override
     public int hashCode() {
-        return new HashCodeBuilder().append(cloudConfiguration).append(modelInfo).append(relatedInstanceList).append(requestInfo).append(getRequestParameters()).append(subscriberInfo).append(additionalProperties).toHashCode();
+        return new HashCodeBuilder()
+                .append(cloudConfiguration)
+                .append(modelInfo)
+                .append(relatedInstanceList)
+                .append(requestInfo)
+                .append(getRequestParameters())
+                .append(subscriberInfo)
+                .append(additionalProperties)
+                .append(configurationParameters)
+                .toHashCode();
     }
 
     /* (non-Javadoc)
@@ -218,11 +241,20 @@ public class RequestDetails{
         if (other == this) {
             return true;
         }
-        if ((other instanceof RequestDetails) == false) {
+        if (!(other instanceof RequestDetails)) {
             return false;
         }
         RequestDetails rhs = ((RequestDetails) other);
-        return new EqualsBuilder().append(cloudConfiguration, rhs.cloudConfiguration).append(modelInfo, rhs.modelInfo).append(relatedInstanceList, rhs.relatedInstanceList).append(requestInfo, rhs.requestInfo).append(getRequestParameters(), rhs.getRequestParameters()).append(subscriberInfo, rhs.subscriberInfo).append(additionalProperties, rhs.additionalProperties).isEquals();
+        return new EqualsBuilder()
+                .append(cloudConfiguration, rhs.cloudConfiguration)
+                .append(modelInfo, rhs.modelInfo)
+                .append(relatedInstanceList, rhs.relatedInstanceList)
+                .append(requestInfo, rhs.requestInfo)
+                .append(getRequestParameters(), rhs.getRequestParameters())
+                .append(subscriberInfo, rhs.subscriberInfo)
+                .append(additionalProperties, rhs.additionalProperties)
+                .append(configurationParameters, rhs.configurationParameters)
+                .isEquals();
     }
 
     public RequestParameters getRequestParameters() {
@@ -232,4 +264,26 @@ public class RequestDetails{
     public void setRequestParameters(RequestParameters requestParameters) {
         this.requestParameters = requestParameters;
     }
+
+    public <T> T extractValueByPathUsingAdditionalProperties (List<String> keys, Class<T> clazz) {
+        Object result = getAdditionalProperties();
+        for (String key : keys) {
+            if (result instanceof Map) {
+                result = ((Map) result).get(key);
+            }
+
+            else {
+                throw new NotFoundException("failed to find key: "+key+" in path: "+String.join("\\", keys));
+            }
+        }
+        if (clazz.isInstance(result)) {
+            return clazz.cast(result);
+        }
+
+        throw new NotFoundException(
+                String.format("failed to extract value from path:%s because %s is not of type %s",
+                String.join("\\", keys), String.valueOf(result) , clazz));
+    }
+
+
 }