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.HostAddressResource;
19 import org.opendaylight.vtn.javaapi.validation.CommonValidator;
20 import org.opendaylight.vtn.javaapi.validation.VtnServiceValidator;
23 * The Class HostAddressResourceValidator validates request Json object for
26 public class HostAddressResourceValidator extends VtnServiceValidator {
28 private static final Logger LOG = Logger
29 .getLogger(HostAddressResourceValidator.class.getName());
31 private final AbstractResource resource;
32 final CommonValidator validator = new CommonValidator();
35 * Instantiates a new host address resource validator.
38 * the instance of AbstractResource
40 public HostAddressResourceValidator(final AbstractResource resource) {
41 this.resource = resource;
45 * Validate uri parameters for HostAddress API.
47 * @return true, if successful
50 public boolean validateUri() {
51 LOG.trace("Start HostAddressResourceValidator#validateUri()");
52 boolean isValid = false;
53 setInvalidParameter(VtnServiceJsonConsts.URI
54 + VtnServiceJsonConsts.VTNNAME);
55 if (resource instanceof HostAddressResource
56 && ((HostAddressResource) resource).getVtnName() != null
57 && !((HostAddressResource) resource).getVtnName().trim()
59 isValid = validator.isValidMaxLengthAlphaNum(
60 ((HostAddressResource) resource).getVtnName().trim(),
61 VtnServiceJsonConsts.LEN_31);
63 setInvalidParameter(VtnServiceJsonConsts.URI
64 + VtnServiceJsonConsts.VBRNAME);
65 if (((HostAddressResource) resource).getVbrName() != null
66 && !((HostAddressResource) resource).getVbrName()
68 isValid = validator.isValidMaxLengthAlphaNum(
69 ((HostAddressResource) resource).getVbrName()
70 .trim(), VtnServiceJsonConsts.LEN_31);
77 LOG.trace("Complete HostAddressResourceValidator#validateUri()");
82 * Validate request Json object for get, put and post method of HostAddress
86 public void validate(final String method, final JsonObject requestBody)
87 throws VtnServiceException {
88 LOG.trace("Start HostAddressResourceValidator#validate()");
89 boolean isValid = false;
91 isValid = validateUri();
92 LOG.info("Validating request for " + method
93 + " of HostAddressResourceValidator");
94 if (isValid && requestBody != null
95 && VtnServiceConsts.GET.equals(method)) {
96 isValid = validator.isValidGet(requestBody, isListOpFlag());
97 setInvalidParameter(validator.getInvalidParameter());
98 updateOpParameterForList(requestBody);
99 } else if (isValid && requestBody != null
100 && VtnServiceConsts.PUT.equals(method)) {
101 isValid = validatePut(requestBody);
105 } catch (final NumberFormatException e) {
106 if (method.equals(VtnServiceConsts.GET)) {
107 setInvalidParameter(validator.getInvalidParameter());
109 LOG.error("Inside catch:NumberFormatException");
111 } catch (final ClassCastException e) {
112 if (method.equals(VtnServiceConsts.GET)) {
113 setInvalidParameter(validator.getInvalidParameter());
115 LOG.error("Inside catch:ClassCastException");
118 // Throws exception if validation fails
120 LOG.error("Validation failed");
121 throw new VtnServiceException(Thread.currentThread()
122 .getStackTrace()[1].getMethodName(),
123 UncJavaAPIErrorCode.VALIDATION_ERROR.getErrorCode(),
124 UncJavaAPIErrorCode.VALIDATION_ERROR.getErrorMessage());
126 LOG.info("Validation successful");
127 LOG.trace("Complete HostAddressResourceValidator#validate()");
131 * Validate put request Json object for HostAddressResource
134 * the request Json object
135 * @return true, if successful
137 private boolean validatePut(final JsonObject requestBody) {
138 LOG.trace("Start HostAddressResourceValidator#validatePut()");
139 boolean isValid = false;
140 setInvalidParameter(VtnServiceJsonConsts.IPADDRESS);
141 if (requestBody.has(VtnServiceJsonConsts.IPADDRESS)
142 && requestBody.get(VtnServiceJsonConsts.IPADDRESS)
144 final JsonObject ipaddr = requestBody
145 .getAsJsonObject(VtnServiceJsonConsts.IPADDRESS);
146 // validation for mandatory keys: ipaddr
147 setInvalidParameter(VtnServiceJsonConsts.IPADDR);
148 if (ipaddr.has(VtnServiceJsonConsts.IPADDR)
149 && ipaddr.getAsJsonPrimitive(VtnServiceJsonConsts.IPADDR)
150 .getAsString() != null) {
151 isValid = validator.isValidIpV4(ipaddr
152 .getAsJsonPrimitive(VtnServiceJsonConsts.IPADDR)
153 .getAsString().trim());
156 // validation for mandatory keys: netmask
157 setInvalidParameter(VtnServiceJsonConsts.NETMASK);
158 if (ipaddr.has(VtnServiceJsonConsts.NETMASK)
159 && ipaddr.getAsJsonPrimitive(
160 VtnServiceJsonConsts.NETMASK).getAsString() != null) {
161 isValid = validator.isValidRange(
162 Integer.parseInt(ipaddr
164 VtnServiceJsonConsts.NETMASK)
165 .getAsString().trim()),
166 VtnServiceJsonConsts.VAL_1,
167 VtnServiceJsonConsts.VAL_30);
173 LOG.trace("Complete HostAddressResourceValidator#validatePut()");