package org.onap.vid.mso.rest;
import com.fasterxml.jackson.annotation.*;
-import org.apache.commons.lang.builder.EqualsBuilder;
-import org.apache.commons.lang.builder.HashCodeBuilder;
-import org.apache.commons.lang.builder.ToStringBuilder;
-import org.onap.vid.domain.mso.*;
+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.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
private RequestParameters requestParameters;
@JsonProperty("configurationParameters")
- protected List<Map<String, String>> configurationParameters = new ArrayList<>();
+ 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.
.append(getRequestParameters())
.append(subscriberInfo)
.append(additionalProperties)
- .append(configurationParameters.hashCode())
+ .append(configurationParameters)
.toHashCode();
}
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));
+ }
+
+
}