64a776f6161b8ccd755d9ed234baa59e49d3cef9
[appc.git] / appc-inbound / appc-design-services / provider / src / main / java / org / onap / appc / design / dbervices / RequestValidator.java
1 /*-
2  * ============LICENSE_START=======================================================
3  * ONAP : APPC
4  * ================================================================================
5  * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
6  * ================================================================================
7  * Copyright (C) 2017 Amdocs
8  * =============================================================================
9  * Licensed under the Apache License, Version 2.0 (the "License");
10  * you may not use this file except in compliance with the License.
11  * You may obtain a copy of the License at
12  * 
13  *      http://www.apache.org/licenses/LICENSE-2.0
14  * 
15  * Unless required by applicable law or agreed to in writing, software
16  * distributed under the License is distributed on an "AS IS" BASIS,
17  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18  * See the License for the specific language governing permissions and
19  * limitations under the License.
20  * 
21  * ECOMP is a trademark and service mark of AT&T Intellectual Property.
22  * ============LICENSE_END=========================================================
23  */
24
25 package org.onap.appc.design.dbervices;
26
27 import static org.onap.appc.design.services.util.DesignServiceConstants.ACTION;
28 import static org.onap.appc.design.services.util.DesignServiceConstants.ACTION_LEVEL;
29 import static org.onap.appc.design.services.util.DesignServiceConstants.ARTIFACT_CONTENTS;
30 import static org.onap.appc.design.services.util.DesignServiceConstants.ARTIFACT_NAME;
31 import static org.onap.appc.design.services.util.DesignServiceConstants.ARTIFACT_TYPE;
32 import static org.onap.appc.design.services.util.DesignServiceConstants.ARTIFACT_VERSOIN;
33 import static org.onap.appc.design.services.util.DesignServiceConstants.GETARTIFACT;
34 import static org.onap.appc.design.services.util.DesignServiceConstants.GETDESIGNS;
35 import static org.onap.appc.design.services.util.DesignServiceConstants.GETSTATUS;
36 import static org.onap.appc.design.services.util.DesignServiceConstants.PROTOCOL;
37 import static org.onap.appc.design.services.util.DesignServiceConstants.SETINCART;
38 import static org.onap.appc.design.services.util.DesignServiceConstants.SETPROTOCOLREFERENCE;
39 import static org.onap.appc.design.services.util.DesignServiceConstants.SETSTATUS;
40 import static org.onap.appc.design.services.util.DesignServiceConstants.STATUS;
41 import static org.onap.appc.design.services.util.DesignServiceConstants.UPLOADARTIFACT;
42 import static org.onap.appc.design.services.util.DesignServiceConstants.USER_ID;
43 import static org.onap.appc.design.services.util.DesignServiceConstants.VNF_TYPE;
44
45 import com.att.eelf.configuration.EELFLogger;
46 import com.att.eelf.configuration.EELFManager;
47 import com.fasterxml.jackson.databind.JsonNode;
48 import com.fasterxml.jackson.databind.ObjectMapper;
49 import java.io.IOException;
50
51 public class RequestValidator {
52
53     private static final EELFLogger log = EELFManager.getInstance().getLogger(RequestValidator.class);
54
55     private RequestValidator() {
56     }
57
58     public static void validate(String action, String payload) throws RequestValidationException, IOException {
59         log.info("payload" + payload);
60         ObjectMapper objectMapper = new ObjectMapper();
61         JsonNode payloadObject = objectMapper.readTree(payload);
62         log.info("payloadObject" + payloadObject.get(ARTIFACT_CONTENTS));
63
64         String errorString;
65         switch (action) {
66             case GETDESIGNS:
67                 errorString = resolveGetDesignsErrorString(payloadObject);
68                 break;
69             case GETARTIFACT:
70                 errorString = resolveGetArtifactErrorString(payloadObject);
71                 break;
72             case GETSTATUS:
73                 errorString = resolveGetStatusErrorString(payloadObject);
74                 break;
75             case SETSTATUS:
76                 errorString = resolveSetStatusErrorString(payloadObject);
77                 break;
78             case UPLOADARTIFACT:
79                 errorString = resolveUploadArtifactErrorString(payloadObject);
80                 break;
81             case SETPROTOCOLREFERENCE:
82             case SETINCART:
83                 errorString = resolveErrorString(payloadObject);
84                 break;
85             default:
86                 throw new RequestValidationException(" Action " + action + " not found while processing request ");
87         }
88         checkForErrorString(errorString);
89     }
90
91     private static void checkForErrorString(String errorString) throws RequestValidationException {
92         if (errorString != null) {
93             throw new RequestValidationException(" Missing input parameter :-" + errorString + " -:");
94         }
95     }
96
97     private static String resolveGetDesignsErrorString(JsonNode payloadObject) {
98         return nullOrEmpty(payloadObject, USER_ID) ? USER_ID : null;
99     }
100
101     private static String resolveErrorString(JsonNode payloadObject) {
102         if (nullOrEmpty(payloadObject, ACTION)) {
103             return ACTION;
104         } else if (nullOrEmpty(payloadObject, ACTION_LEVEL)) {
105             return ACTION_LEVEL;
106         } else if (nullOrEmpty(payloadObject, VNF_TYPE)) {
107             return VNF_TYPE;
108         } else if (nullOrEmpty(payloadObject, PROTOCOL)) {
109             return PROTOCOL;
110         }
111         return null;
112     }
113
114     private static String resolveUploadArtifactErrorString(JsonNode payloadObject) {
115         if (nullOrEmpty(payloadObject, ARTIFACT_NAME)) {
116             return ARTIFACT_NAME;
117         } else if (doesNotContainReference(payloadObject)) {
118             return ACTION;
119         } else if (nullOrEmpty(payloadObject, ARTIFACT_VERSOIN)) {
120             return ARTIFACT_VERSOIN;
121         } else if (payloadObject.get(ARTIFACT_CONTENTS) == null) {
122             return ARTIFACT_CONTENTS;
123         } else if (nullOrEmpty(payloadObject, ARTIFACT_TYPE)) {
124             return ARTIFACT_TYPE;
125         } else if (nullOrEmpty(payloadObject, VNF_TYPE)) {
126             return VNF_TYPE;
127         }
128         return null;
129     }
130
131     private static boolean doesNotContainReference(JsonNode payloadObject) {
132         return
133             !payloadObject.get(ARTIFACT_NAME).textValue().contains("reference")
134                 && nullOrEmpty(payloadObject, ARTIFACT_NAME);
135     }
136
137     private static String resolveSetStatusErrorString(JsonNode payloadObject) {
138         if (nullOrEmpty(payloadObject, USER_ID)) {
139             return USER_ID;
140         } else if (nullOrEmpty(payloadObject, VNF_TYPE)) {
141             return VNF_TYPE;
142         } else if (nullOrEmpty(payloadObject, ACTION)) {
143             return ACTION;
144         } else if (nullOrEmpty(payloadObject, ARTIFACT_TYPE)) {
145             return ARTIFACT_TYPE;
146         } else if (nullOrEmpty(payloadObject, STATUS)) {
147             return STATUS;
148         }
149         return null;
150     }
151
152     private static String resolveGetStatusErrorString(JsonNode payloadObject) {
153         if (nullOrEmpty(payloadObject, USER_ID)) {
154             return USER_ID;
155         } else if (nullOrEmpty(payloadObject, VNF_TYPE)) {
156             return VNF_TYPE;
157         }
158         return null;
159     }
160
161     private static String resolveGetArtifactErrorString(JsonNode payloadObject) {
162         if (nullOrEmpty(payloadObject, VNF_TYPE)) {
163             return VNF_TYPE;
164         } else if (nullOrEmpty(payloadObject, ARTIFACT_TYPE)) {
165             return ARTIFACT_TYPE;
166         } else if (nullOrEmpty(payloadObject, ARTIFACT_NAME)) {
167             return ARTIFACT_NAME;
168         }
169         return null;
170     }
171
172     private static boolean nullOrEmpty(JsonNode payloadObject, String param) {
173         return payloadObject.get(param) == null || payloadObject
174             .get(param).textValue().isEmpty();
175     }
176
177 }
178
179