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.logical;
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.logical.VRouterInterfaceResource;
19 import org.opendaylight.vtn.javaapi.resources.logical.VRouterInterfacesResource;
20 import org.opendaylight.vtn.javaapi.validation.CommonValidator;
21 import org.opendaylight.vtn.javaapi.validation.VtnServiceValidator;
24 * The Class VRouterInterfaceResourceValidator validates request Json object for
25 * VrouterInterface API.
27 public class VRouterInterfaceResourceValidator extends VtnServiceValidator {
29 private static final Logger LOG = Logger
30 .getLogger(VRouterInterfaceResourceValidator.class.getName());
32 private final AbstractResource resource;
33 final CommonValidator validator = new CommonValidator();
36 * Instantiates a new vrouter interface resource validator.
39 * the instance of AbstractResource
41 public VRouterInterfaceResourceValidator(final AbstractResource resource) {
42 this.resource = resource;
46 * Validate uri parameters for VrouterInterface API
48 * @return true, if successful
51 public boolean validateUri() {
52 LOG.trace("Start VRouterInterfaceResourceValidator#validateUri()");
53 boolean isValid = false;
54 setInvalidParameter(VtnServiceJsonConsts.URI
55 + VtnServiceJsonConsts.VTNNAME);
56 if (resource instanceof VRouterInterfacesResource
57 && ((VRouterInterfacesResource) resource).getVtnName() != null
58 && !((VRouterInterfacesResource) resource).getVtnName().trim()
60 isValid = validator.isValidMaxLengthAlphaNum(
61 ((VRouterInterfacesResource) resource).getVtnName().trim(),
62 VtnServiceJsonConsts.LEN_31);
64 setInvalidParameter(VtnServiceJsonConsts.URI
65 + VtnServiceJsonConsts.VRTNAME);
66 if (((VRouterInterfacesResource) resource).getVrtName() != null
67 && !((VRouterInterfacesResource) resource).getVrtName()
69 isValid = validator.isValidMaxLengthAlphaNum(
70 ((VRouterInterfacesResource) resource).getVrtName()
71 .trim(), VtnServiceJsonConsts.LEN_31);
77 } else if (resource instanceof VRouterInterfaceResource
78 && ((VRouterInterfaceResource) resource).getVtnName() != null
79 && !((VRouterInterfaceResource) resource).getVtnName().trim()
81 isValid = validator.isValidMaxLengthAlphaNum(
82 ((VRouterInterfaceResource) resource).getVtnName().trim(),
83 VtnServiceJsonConsts.LEN_31);
85 setInvalidParameter(VtnServiceJsonConsts.URI
86 + VtnServiceJsonConsts.VRTNAME);
87 if (((VRouterInterfaceResource) resource).getVrtName() != null
88 && !((VRouterInterfaceResource) resource).getVrtName()
90 isValid = validator.isValidMaxLengthAlphaNum(
91 ((VRouterInterfaceResource) resource).getVrtName()
92 .trim(), VtnServiceJsonConsts.LEN_31);
98 setInvalidParameter(VtnServiceJsonConsts.URI
99 + VtnServiceJsonConsts.IFNAME);
100 if (((VRouterInterfaceResource) resource).getIfName() != null
101 && !((VRouterInterfaceResource) resource).getIfName()
103 isValid = validator.isValidMaxLengthAlphaNum(
104 ((VRouterInterfaceResource) resource).getIfName()
105 .trim(), VtnServiceJsonConsts.LEN_31);
110 setListOpFlag(false);
112 LOG.trace("Complete VRouterInterfaceResourceValidator#validateUri()");
117 * Validate request Json object for get, put and post method of
118 * VrouterInterface API
121 public void validate(final String method, final JsonObject requestBody)
122 throws VtnServiceException {
123 LOG.trace("Start VRouterInterfaceResourceValidator#validate()");
124 LOG.info("Validating request for " + method
125 + " of VRouterInterfaceResourceValidator");
126 boolean isValid = false;
128 isValid = validateUri();
129 if (isValid && requestBody != null
130 && VtnServiceConsts.GET.equals(method)) {
131 isValid = validator.isValidGet(requestBody, isListOpFlag());
132 setInvalidParameter(validator.getInvalidParameter());
133 updateOpParameterForList(requestBody);
134 } else if (isValid && requestBody != null
135 && VtnServiceConsts.PUT.equals(method)) {
136 isValid = validatePut(requestBody);
137 } else if (isValid && requestBody != null
138 && VtnServiceConsts.POST.equals(method)) {
139 isValid = validatePost(requestBody);
140 } else if (isValid) {
141 setInvalidParameter(VtnServiceConsts.INCORRECT_METHOD_INVOCATION);
144 } catch (final NumberFormatException e) {
145 if (method.equals(VtnServiceConsts.GET)) {
146 setInvalidParameter(validator.getInvalidParameter());
148 LOG.error("Inside catch:NumberFormatException");
150 } catch (final ClassCastException e) {
151 if (method.equals(VtnServiceConsts.GET)) {
152 setInvalidParameter(validator.getInvalidParameter());
154 LOG.error("Inside catch:ClassCastException");
157 // Throws exception if validation fails
159 LOG.error("Validation failed");
160 throw new VtnServiceException(Thread.currentThread()
161 .getStackTrace()[1].getMethodName(),
162 UncJavaAPIErrorCode.VALIDATION_ERROR.getErrorCode(),
163 UncJavaAPIErrorCode.VALIDATION_ERROR.getErrorMessage());
165 LOG.info("Validation successful");
166 LOG.trace("Complete VRouterInterfaceResourceValidator#validate()");
170 * validates post request Json object for VrouterInterface API.
173 * the request Json object
174 * @return true, if successful
175 * @throws VtnServiceException
176 * the vtn service exception
178 private boolean validatePost(final JsonObject requestBody)
179 throws VtnServiceException {
180 LOG.trace("Start VRouterInterfaceResourceValidator#validatePost()");
181 boolean isValid = false;
182 setInvalidParameter(VtnServiceJsonConsts.INTERFACE);
183 if (requestBody.has(VtnServiceJsonConsts.INTERFACE)
184 && requestBody.get(VtnServiceJsonConsts.INTERFACE)
186 final JsonObject vRouterInterface = requestBody
187 .getAsJsonObject(VtnServiceJsonConsts.INTERFACE);
188 // validation for key: if_name(mandatory)
189 setInvalidParameter(VtnServiceJsonConsts.IFNAME);
190 if (vRouterInterface.has(VtnServiceJsonConsts.IFNAME)
191 && vRouterInterface.getAsJsonPrimitive(
192 VtnServiceJsonConsts.IFNAME).getAsString() != null) {
193 isValid = validator.isValidMaxLengthAlphaNum(vRouterInterface
194 .getAsJsonPrimitive(VtnServiceJsonConsts.IFNAME)
195 .getAsString().trim(), VtnServiceJsonConsts.LEN_31);
198 isValid = validatePut(requestBody);
202 LOG.trace("Complete VRouterInterfaceResourceValidator#validatePost()");
207 * Validate put request Json object for VrouterInterface API.
210 * the request Json object
211 * @return true, if successful
212 * @throws VtnServiceException
213 * the vtn service exception
215 private boolean validatePut(final JsonObject requestBody)
216 throws VtnServiceException {
217 LOG.trace("Start VRouterInterfaceResourceValidator#validatePost()");
218 final CommonValidator validator = new CommonValidator();
219 boolean isValid = false;
220 setInvalidParameter(VtnServiceJsonConsts.INTERFACE);
221 if (requestBody.has(VtnServiceJsonConsts.INTERFACE)
222 && requestBody.get(VtnServiceJsonConsts.INTERFACE)
225 final JsonObject vRouterInterface = requestBody
226 .getAsJsonObject(VtnServiceJsonConsts.INTERFACE);
227 // validation for key: description(optional)
229 setInvalidParameter(VtnServiceJsonConsts.DESCRIPTION);
230 if (vRouterInterface.has(VtnServiceJsonConsts.DESCRIPTION)
231 && vRouterInterface.getAsJsonPrimitive(
232 VtnServiceJsonConsts.DESCRIPTION).getAsString() != null) {
233 isValid = validator.isValidMaxLength(
236 VtnServiceJsonConsts.DESCRIPTION)
237 .getAsString().trim(),
238 VtnServiceJsonConsts.LEN_127)
241 VtnServiceJsonConsts.DESCRIPTION)
242 .getAsString().trim().isEmpty();
245 // validation for key: adminstatus(optional)
247 setInvalidParameter(VtnServiceJsonConsts.ADMINSTATUS);
248 if (vRouterInterface.has(VtnServiceJsonConsts.ADMINSTATUS)
249 && vRouterInterface.getAsJsonPrimitive(
250 VtnServiceJsonConsts.ADMINSTATUS).getAsString() != null) {
251 final String adminStatus = vRouterInterface
253 VtnServiceJsonConsts.ADMINSTATUS)
254 .getAsString().trim();
255 isValid = adminStatus
256 .equalsIgnoreCase(VtnServiceJsonConsts.ENABLE)
258 .equalsIgnoreCase(VtnServiceJsonConsts.DISABLE);
261 // validation for key: ipaddr(optional)
263 setInvalidParameter(VtnServiceJsonConsts.IPADDR);
264 if (vRouterInterface.has(VtnServiceJsonConsts.IPADDR)
265 && vRouterInterface.getAsJsonPrimitive(
266 VtnServiceJsonConsts.IPADDR).getAsString() != null) {
267 isValid = validator.isValidIpV4(vRouterInterface
268 .getAsJsonPrimitive(VtnServiceJsonConsts.IPADDR)
269 .getAsString().trim());
272 // validation for key: netmask(optional)
274 setInvalidParameter(VtnServiceJsonConsts.PREFIX);
275 if (vRouterInterface.has(VtnServiceJsonConsts.PREFIX)) {
276 isValid = validator.isValidRange(
279 VtnServiceJsonConsts.PREFIX)
280 .getAsString().trim(),
281 VtnServiceJsonConsts.VAL_1,
282 VtnServiceJsonConsts.VAL_30);
285 // validation for key: macaddr(optional)
287 setInvalidParameter(VtnServiceJsonConsts.MACADDR);
288 if (vRouterInterface.has(VtnServiceJsonConsts.MACADDR)
289 && vRouterInterface.getAsJsonPrimitive(
290 VtnServiceJsonConsts.MACADDR).getAsString() != null) {
291 isValid = validator.isValidMacAddress(vRouterInterface
292 .getAsJsonPrimitive(VtnServiceJsonConsts.MACADDR)
293 .getAsString().trim());
297 LOG.trace("Complete VRouterInterfaceResourceValidator#validatePost()");