484628e3c085b8feef94f232a9e04ca041fd0d18
[vtn.git] /
1 /*
2  * Copyright (c) 2012-2013 NEC Corporation
3  * All rights reserved.
4  * 
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
8  */
9
10 package org.opendaylight.vtn.javaapi.validation.logical;
11
12 import com.google.gson.JsonObject;
13 import org.opendaylight.vtn.core.util.Logger;
14 import org.opendaylight.vtn.javaapi.constants.VtnServiceConsts;
15 import org.opendaylight.vtn.javaapi.constants.VtnServiceJsonConsts;
16 import org.opendaylight.vtn.javaapi.exception.VtnServiceException;
17 import org.opendaylight.vtn.javaapi.ipc.enums.UncJavaAPIErrorCode;
18 import org.opendaylight.vtn.javaapi.resources.AbstractResource;
19 import org.opendaylight.vtn.javaapi.resources.logical.IpRouteResource;
20 import org.opendaylight.vtn.javaapi.validation.CommonValidator;
21 import org.opendaylight.vtn.javaapi.validation.VtnServiceValidator;
22
23 /**
24  * The Class IpRouteResourceValidator validates request Json object for IpRoute
25  * API.
26  */
27 public class IpRouteResourceValidator extends VtnServiceValidator {
28
29         private static final Logger LOG = Logger
30                         .getLogger(IpRouteResourceValidator.class.getName());
31
32         private final AbstractResource resource;
33         final CommonValidator validator = new CommonValidator();
34
35         /**
36          * Instantiates a new Ip Route resource validator.
37          * 
38          * @param resource
39          *            the instance of AbstractResource
40          */
41         public IpRouteResourceValidator(final AbstractResource resource) {
42                 this.resource = resource;
43         }
44
45         /**
46          * Validate uri parameters for IpRoute API.
47          * 
48          * @return true, if successful
49          */
50         @Override
51         public boolean validateUri() {
52                 LOG.trace("Start IpRouteResourceValidator#validateUri()");
53                 boolean isValid = false;
54                 setInvalidParameter(VtnServiceJsonConsts.URI
55                                 + VtnServiceJsonConsts.VTNNAME);
56                 if (resource instanceof IpRouteResource
57                                 && ((IpRouteResource) resource).getVtnName() != null
58                                 && !((IpRouteResource) resource).getVtnName().trim().isEmpty()) {
59                         isValid = validator.isValidMaxLengthAlphaNum(
60                                         ((IpRouteResource) resource).getVtnName().trim(),
61                                         VtnServiceJsonConsts.LEN_31);
62                         if (isValid) {
63                                 setInvalidParameter(VtnServiceJsonConsts.URI
64                                                 + VtnServiceJsonConsts.VROUTERNAME);
65                                 if (((IpRouteResource) resource).getVrtName() != null
66                                                 && !((IpRouteResource) resource).getVrtName().trim()
67                                                                 .isEmpty()) {
68                                         isValid = validator.isValidMaxLengthAlphaNum(
69                                                         ((IpRouteResource) resource).getVrtName().trim(),
70                                                         VtnServiceJsonConsts.LEN_31);
71                                 } else {
72                                         isValid = false;
73                                 }
74                         }
75                         setListOpFlag(false);
76                 }
77                 LOG.trace("Complete IpRouteResourceValidator#validateUri()");
78                 return isValid;
79         }
80
81         /**
82          * Validate request Json object for get method of IpRoute API.
83          */
84         @Override
85         public void validate(final String method, final JsonObject requestBody)
86                         throws VtnServiceException {
87                 LOG.trace("Start IpRouteResourceValidator#validate()");
88                 LOG.info("Validating request for " + method
89                                 + " of IpRouteResourceValidator");
90                 boolean isValid = false;
91                 isValid = validateUri();
92                 if (isValid && requestBody != null
93                                 && VtnServiceConsts.GET.equals(method)) {
94                         isValid = ValidateGet(requestBody);
95                         updateOpParameterForList(requestBody);
96                 } else {
97                         isValid = false;
98                 }
99                 // Throws exception if validation fails
100                 if (!isValid) {
101                         LOG.error("Validation failed");
102                         throw new VtnServiceException(Thread.currentThread()
103                                         .getStackTrace()[1].getMethodName(),
104                                         UncJavaAPIErrorCode.VALIDATION_ERROR.getErrorCode(),
105                                         UncJavaAPIErrorCode.VALIDATION_ERROR.getErrorMessage());
106                 }
107                 LOG.info("Validation successful");
108                 LOG.trace("Complete IpRouteResourceValidator#validate()");
109         }
110
111         /**
112          * Validate get request Json object for IpRoute API.
113          * 
114          * @param requestBody
115          *            the request Json object
116          * @return true, if successful
117          */
118         private boolean ValidateGet(final JsonObject requestBody) {
119                 LOG.trace("Start IpRouteResourceValidator#ValidateGet()");
120                 boolean isValid = true;
121                 // validation for key: op
122                 setInvalidParameter(VtnServiceJsonConsts.OP);
123                 isValid = validator.isValidOperationForCount(requestBody);
124                 LOG.trace("Complete IpRouteResourceValidator#ValidateGet()");
125                 return isValid;
126         }
127 }