2 * Copyright (c) 2012-2013 NEC Corporation
5 * This program and the accompanying materials are made available under the
6 * terms of the Eclipse Public License v1.0 which accompanies this
7 * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html
9 package org.opendaylight.vtn.javaapi.validation.physical;
11 import com.google.gson.JsonObject;
12 import org.opendaylight.vtn.core.util.Logger;
13 import org.opendaylight.vtn.javaapi.constants.VtnServiceConsts;
14 import org.opendaylight.vtn.javaapi.constants.VtnServiceJsonConsts;
15 import org.opendaylight.vtn.javaapi.exception.VtnServiceException;
16 import org.opendaylight.vtn.javaapi.ipc.enums.UncJavaAPIErrorCode;
17 import org.opendaylight.vtn.javaapi.resources.AbstractResource;
18 import org.opendaylight.vtn.javaapi.resources.physical.LinkResource;
19 import org.opendaylight.vtn.javaapi.resources.physical.LinksResource;
20 import org.opendaylight.vtn.javaapi.validation.CommonValidator;
21 import org.opendaylight.vtn.javaapi.validation.VtnServiceValidator;
24 * The Class LinkResourceValidator validates get request Json object for Link
27 public class LinkResourceValidator extends VtnServiceValidator {
29 private static final Logger LOG = Logger
30 .getLogger(LinkResourceValidator.class.getName());
32 private final AbstractResource resource;
33 final CommonValidator validator = new CommonValidator();
36 * Instantiates a new link resource validator.
38 * @param switchResource
39 * the instance of AbstractResource
41 public LinkResourceValidator(final AbstractResource resource) {
42 this.resource = resource;
46 * Validate uri parameters for Link API
48 * @return true, if successful
51 public boolean validateUri() {
52 LOG.trace("Start LinkResourceValidator#validateUri()");
53 boolean isValid = false;
54 setInvalidParameter(VtnServiceJsonConsts.URI
55 + VtnServiceJsonConsts.CONTROLLERID);
56 if (resource instanceof LinkResource
57 && ((LinkResource) resource).getControllerId() != null
58 && !((LinkResource) resource).getControllerId().trim()
60 isValid = validator.isValidMaxLengthAlphaNum(
61 ((LinkResource) resource).getControllerId().trim(),
62 VtnServiceJsonConsts.LEN_31);
64 setInvalidParameter(VtnServiceJsonConsts.URI
65 + VtnServiceJsonConsts.LINKNAME);
66 if (((LinkResource) resource).getLinkName() != null
67 && !((LinkResource) resource).getLinkName().trim()
69 isValid = linkNameValidator(((LinkResource) resource)
70 .getLinkName().trim());
76 } else if (resource instanceof LinksResource
77 && ((LinksResource) resource).getControllerId() != null
78 && !((LinksResource) resource).getControllerId().trim()
80 isValid = validator.isValidMaxLengthAlphaNum(
81 ((LinksResource) resource).getControllerId(),
82 VtnServiceJsonConsts.LEN_31);
85 LOG.trace("Complete LinkResourceValidator#validateUri()");
93 * value to be validated
95 * @return true, if successful
97 private boolean linkNameValidator(final String link) {
98 boolean isValid = false;
99 final String[] uri = link.split(VtnServiceJsonConsts.LINKSAPERATOR);
100 if (uri.length == VtnServiceJsonConsts.LEN_4) {
101 isValid = validator.isValidMaxLength(
102 uri[VtnServiceJsonConsts.VAL_0],
103 VtnServiceJsonConsts.LEN_255);
105 isValid = validator.isValidMaxLength(
106 uri[VtnServiceJsonConsts.VAL_1],
107 VtnServiceJsonConsts.LEN_31);
110 isValid = validator.isValidMaxLength(
111 uri[VtnServiceJsonConsts.VAL_2],
112 VtnServiceJsonConsts.LEN_255);
115 isValid = validator.isValidMaxLength(
116 uri[VtnServiceJsonConsts.VAL_3],
117 VtnServiceJsonConsts.LEN_31);
124 * Validate request json get method of Link API
127 public void validate(final String method, final JsonObject requestBody)
128 throws VtnServiceException {
129 LOG.trace("Start LinkResourceValidator#validate()");
130 LOG.info("Validating request for " + method
131 + " of LinkResourceValidator");
132 boolean isValid = false;
134 isValid = validateUri();
135 if (isValid && requestBody != null
136 && VtnServiceConsts.GET.equals(method)) {
137 isValid = validateGet(requestBody, isListOpFlag());
138 updateOpParameterForList(requestBody);
142 } catch (final NumberFormatException e) {
143 LOG.error("Inside catch:NumberFormatException");
146 // Throws exception if validation fails
148 LOG.error("Validation failed");
149 throw new VtnServiceException(Thread.currentThread()
150 .getStackTrace()[1].getMethodName(),
151 UncJavaAPIErrorCode.VALIDATION_ERROR.getErrorCode(),
152 UncJavaAPIErrorCode.VALIDATION_ERROR.getErrorMessage());
154 LOG.info("Validation successful");
155 LOG.trace("Complete LinkResourceValidator#validate()");
159 * Validate get request json for Link API
162 * the request Json object
164 * @return true, if is valid get
166 public boolean validateGet(final JsonObject requestBody,
167 final boolean opFlag) {
168 LOG.trace("Start LinkResourceValidator#ValidGet");
169 boolean isValid = true;
170 // validation for key: targetdb
171 setInvalidParameter(VtnServiceJsonConsts.TARGETDB);
172 if (requestBody.has(VtnServiceJsonConsts.TARGETDB)
174 .getAsJsonPrimitive(VtnServiceJsonConsts.TARGETDB)
175 .getAsString() != null
177 .getAsJsonPrimitive(VtnServiceJsonConsts.TARGETDB)
178 .getAsString().trim().isEmpty()) {
179 isValid = VtnServiceJsonConsts.STATE.equalsIgnoreCase(requestBody
180 .getAsJsonPrimitive(VtnServiceJsonConsts.TARGETDB)
181 .getAsString().trim());
183 requestBody.remove(VtnServiceJsonConsts.TARGETDB);
184 requestBody.addProperty(VtnServiceJsonConsts.TARGETDB,
185 VtnServiceJsonConsts.STATE);
188 if (requestBody.has(VtnServiceJsonConsts.OP)) {
189 requestBody.remove(VtnServiceJsonConsts.OP);
191 LOG.debug("No need to remove");
193 if (requestBody.has(VtnServiceJsonConsts.INDEX)) {
194 requestBody.remove(VtnServiceJsonConsts.INDEX);
196 LOG.debug("No need to remove");
198 if (requestBody.has(VtnServiceJsonConsts.MAX)) {
199 requestBody.remove(VtnServiceJsonConsts.MAX);
201 LOG.debug("No need to remove");
204 // validation for key: op
206 setInvalidParameter(VtnServiceJsonConsts.OP);
207 isValid = validator.isValidOperation(requestBody);
209 // validation for key: index
211 setInvalidParameter(VtnServiceJsonConsts.INDEX);
212 if (requestBody.has(VtnServiceJsonConsts.INDEX)
213 && requestBody.getAsJsonPrimitive(
214 VtnServiceJsonConsts.INDEX).getAsString() != null
216 .getAsJsonPrimitive(VtnServiceJsonConsts.INDEX)
217 .getAsString().isEmpty()) {
218 isValid = linkNameValidator(requestBody
219 .getAsJsonPrimitive(VtnServiceJsonConsts.INDEX)
220 .getAsString().trim());
223 // validation for key: max_repitition
225 setInvalidParameter(VtnServiceJsonConsts.MAX);
226 isValid = validator.isValidMaxRepetition(requestBody);
228 * if(requestBody.has(VtnServiceJsonConsts.MAX) &&
229 * requestBody.getAsJsonPrimitive(VtnServiceJsonConsts.MAX)
230 * .getAsString() != null) { isValid =
231 * validator.isValidMaxLengthNumber(requestBody
232 * .getAsJsonPrimitive(VtnServiceJsonConsts.MAX).getAsString()
237 // validation for key: switch_id
239 setInvalidParameter(VtnServiceJsonConsts.SWITCH1ID);
240 if (requestBody.has(VtnServiceJsonConsts.SWITCH1ID)
241 && requestBody.getAsJsonPrimitive(
242 VtnServiceJsonConsts.SWITCH1ID).getAsString() != null
244 .getAsJsonPrimitive(VtnServiceJsonConsts.SWITCH1ID)
245 .getAsString().isEmpty()) {
246 isValid = validator.isValidMaxLength(requestBody
247 .getAsJsonPrimitive(VtnServiceJsonConsts.SWITCH1ID)
248 .getAsString().trim(), VtnServiceJsonConsts.LEN_255);
253 setInvalidParameter(VtnServiceJsonConsts.SWITCH2ID);
254 if (requestBody.has(VtnServiceJsonConsts.SWITCH2ID)
255 && requestBody.getAsJsonPrimitive(
256 VtnServiceJsonConsts.SWITCH2ID).getAsString() != null
258 .getAsJsonPrimitive(VtnServiceJsonConsts.SWITCH2ID)
259 .getAsString().isEmpty()) {
260 isValid = validator.isValidMaxLength(requestBody
261 .getAsJsonPrimitive(VtnServiceJsonConsts.SWITCH2ID)
262 .getAsString().trim(), VtnServiceJsonConsts.LEN_255);
265 LOG.trace("Complete LinkResourceValidator#isValidGet");