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;
/**
"relatedModelList",
"requestInfo",
"subscriberInfo",
- "requestParameters"
+ "requestParameters",
+ "configurationParameters"
})
public class RequestDetails{
+
+
/** The cloud configuration. */
@JsonProperty("cloudConfiguration")
private CloudConfiguration cloudConfiguration;
private ModelInfo modelInfo;
/** The related model list. */
- @JsonProperty("relatedModelList")
- private List<RelatedModel> relatedInstanceList;
+ @JsonProperty("relatedInstanceList")
+ private List<RelatedInstanceWrapper> relatedInstanceList;
/** The request info. */
@JsonProperty("requestInfo")
@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.
* @return The relatedInstanceList
*/
@JsonProperty("relatedInstanceList")
- public List<RelatedModel> getRelatedInstanceList() {
+ public List<RelatedInstanceWrapper> getRelatedInstanceList() {
return relatedInstanceList;
}
* @param relatedInstanceList The relatedInstanceList
*/
@JsonProperty("relatedInstanceList")
- public void setRelatedInstanceList( List<RelatedModel> relatedInstanceList) {
+ public void setRelatedInstanceList(List<RelatedInstanceWrapper> relatedInstanceList) {
this.relatedInstanceList = relatedInstanceList;
}
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)
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() {
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));
+ }
+
+
}