2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
6 * ================================================================================
7 * Licensed under the Apache License, Version 2.0 (the "License");
8 * you may not use this file except in compliance with the License.
9 * You may obtain a copy of the License at
11 * http://www.apache.org/licenses/LICENSE-2.0
13 * Unless required by applicable law or agreed to in writing, software
14 * distributed under the License is distributed on an "AS IS" BASIS,
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 * See the License for the specific language governing permissions and
17 * limitations under the License.
18 * ============LICENSE_END=========================================================
21 package org.onap.vid.mso.rest;
23 import com.fasterxml.jackson.annotation.*;
24 import org.apache.commons.lang3.builder.EqualsBuilder;
25 import org.apache.commons.lang3.builder.HashCodeBuilder;
26 import org.apache.commons.lang3.builder.ToStringBuilder;
27 import org.onap.vid.exceptions.NotFoundException;
28 import org.onap.vid.mso.model.CloudConfiguration;
29 import org.onap.vid.mso.model.ModelInfo;
30 import org.onap.vid.mso.model.RequestInfo;
31 import org.onap.vid.mso.model.RequestParameters;
33 import java.util.HashMap;
34 import java.util.List;
39 * aggregates the context, configuraiton and detailed parameters associated with the request into a single structure.
41 @JsonInclude(JsonInclude.Include.NON_NULL)
49 "configurationParameters"
51 public class RequestDetails{
55 /** The cloud configuration. */
56 @JsonProperty("cloudConfiguration")
57 private CloudConfiguration cloudConfiguration;
59 /** The model info. */
60 @JsonProperty("modelInfo")
61 private ModelInfo modelInfo;
63 /** The related model list. */
64 @JsonProperty("relatedInstanceList")
65 private List<RelatedInstanceWrapper> relatedInstanceList;
67 /** The request info. */
68 @JsonProperty("requestInfo")
69 private RequestInfo requestInfo;
71 /** The subscriber info. */
72 @JsonProperty("subscriberInfo")
73 private SubscriberInfo subscriberInfo;
75 /** The request parameters. */
76 @JsonProperty("requestParameters")
77 private RequestParameters requestParameters;
79 @JsonProperty("configurationParameters")
80 protected List<Map<String, String>> configurationParameters;
82 /** The additional properties. */
84 private Map<String, Object> additionalProperties = new HashMap<>();
87 * Gets the cloud configuration.
89 * @return The cloudConfiguration
91 @JsonProperty("cloudConfiguration")
92 public CloudConfiguration getCloudConfiguration() {
93 return cloudConfiguration;
97 * Sets the cloud configuration.
99 * @param cloudConfiguration The cloudConfiguration
101 @JsonProperty("cloudConfiguration")
102 public void setCloudConfiguration(CloudConfiguration cloudConfiguration) {
103 this.cloudConfiguration = cloudConfiguration;
107 * Gets the model info.
109 * @return The modelInfo
111 @JsonProperty("modelInfo")
112 public ModelInfo getModelInfo() {
117 * Sets the model info.
119 * @param modelInfo The modelInfo
121 @JsonProperty("modelInfo")
122 public void setModelInfo(ModelInfo modelInfo) {
123 this.modelInfo = modelInfo;
126 * Gets the related instance list.
128 * @return The relatedInstanceList
130 @JsonProperty("relatedInstanceList")
131 public List<RelatedInstanceWrapper> getRelatedInstanceList() {
132 return relatedInstanceList;
136 * Sets the related model list.
138 * @param relatedInstanceList The relatedInstanceList
140 @JsonProperty("relatedInstanceList")
141 public void setRelatedInstanceList(List<RelatedInstanceWrapper> relatedInstanceList) {
142 this.relatedInstanceList = relatedInstanceList;
146 * Gets the request info.
148 * @return The requestInfo
150 @JsonProperty("requestInfo")
151 public RequestInfo getRequestInfo() {
156 * Sets the request info.
158 * @param requestInfo The requestInfo
160 @JsonProperty("requestInfo")
161 public void setRequestInfo(RequestInfo requestInfo) {
162 this.requestInfo = requestInfo;
166 * Gets the subscriber info.
168 * @return The subscriberInfo
170 @JsonProperty("subscriberInfo")
171 public SubscriberInfo getSubscriberInfo() {
172 return subscriberInfo;
176 * Sets the subscriber info.
178 * @param subscriberInfo The subscriberInfo
180 @JsonProperty("subscriberInfo")
181 public void setSubscriberInfo(SubscriberInfo subscriberInfo) {
182 this.subscriberInfo = subscriberInfo;
186 * @see org.onap.vid.domain.mso.RequestDetails#toString()
189 public String toString() {
190 return ToStringBuilder.reflectionToString(this);
194 * @see org.onap.vid.domain.mso.RequestDetails#getAdditionalProperties()
197 public Map<String, Object> getAdditionalProperties() {
198 return this.additionalProperties;
202 * @see org.onap.vid.domain.mso.RequestDetails#setAdditionalProperty(java.lang.String, java.lang.Object)
205 public void setAdditionalProperty(String name, Object value) {
206 this.additionalProperties.put(name, value);
209 @JsonProperty("configurationParameters")
210 public List<Map<String, String>> getConfigurationParameters() {
211 return configurationParameters;
214 @JsonProperty("configurationParameters")
215 public void setConfigurationParameters(List<Map<String, String>> configurationParameters) {
216 this.configurationParameters = configurationParameters;
220 * @see org.onap.vid.domain.mso.RequestDetails#hashCode()
223 public int hashCode() {
224 return new HashCodeBuilder()
225 .append(cloudConfiguration)
227 .append(relatedInstanceList)
229 .append(getRequestParameters())
230 .append(subscriberInfo)
231 .append(additionalProperties)
232 .append(configurationParameters)
237 * @see org.onap.vid.domain.mso.RequestDetails#equals(java.lang.Object)
240 public boolean equals(Object other) {
244 if (!(other instanceof RequestDetails)) {
247 RequestDetails rhs = ((RequestDetails) other);
248 return new EqualsBuilder()
249 .append(cloudConfiguration, rhs.cloudConfiguration)
250 .append(modelInfo, rhs.modelInfo)
251 .append(relatedInstanceList, rhs.relatedInstanceList)
252 .append(requestInfo, rhs.requestInfo)
253 .append(getRequestParameters(), rhs.getRequestParameters())
254 .append(subscriberInfo, rhs.subscriberInfo)
255 .append(additionalProperties, rhs.additionalProperties)
256 .append(configurationParameters, rhs.configurationParameters)
260 public RequestParameters getRequestParameters() {
261 return requestParameters;
264 public void setRequestParameters(RequestParameters requestParameters) {
265 this.requestParameters = requestParameters;
268 public <T> T extractValueByPathUsingAdditionalProperties (List<String> keys, Class<T> clazz) {
269 Object result = getAdditionalProperties();
270 for (String key : keys) {
271 if (result instanceof Map) {
272 result = ((Map) result).get(key);
276 throw new NotFoundException("failed to find key: "+key+" in path: "+String.join("\\", keys));
279 if (clazz.isInstance(result)) {
280 return clazz.cast(result);
283 throw new NotFoundException(
284 String.format("failed to extract value from path:%s because %s is not of type %s",
285 String.join("\\", keys), String.valueOf(result) , clazz));