KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > spoon > aval > support > validator > URLValidator


1 /**
2  * Spoon - http://spoon.gforge.inria.fr/
3  * Copyright (C) 2006 INRIA Futurs <renaud.pawlak@inria.fr>
4  *
5  * This software is governed by the CeCILL-C License under French law and
6  * abiding by the rules of distribution of free software. You can use,
7  * modify and/or redistribute the software under the terms of the
8  * CeCILL-C
9  * license as circulated by CEA, CNRS and INRIA at the following URL:
10  * http://www.cecill.info.
11  *
12  * This program is distributed in the hope that it will be useful, but
13  * WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the CeCILL-C
15  * License for more details.
16  *
17  * The fact that you are presently reading this means that you have had
18  * knowledge of the CeCILL-C license and that you accept its terms.
19  */

20
21 package spoon.aval.support.validator;
22
23 import java.net.MalformedURLException JavaDoc;
24 import java.net.URL JavaDoc;
25
26 import spoon.aval.Validator;
27 import spoon.aval.annotation.value.URLValue;
28 import spoon.aval.processing.AValProcessor;
29 import spoon.aval.processing.ValidationPoint;
30 import spoon.processing.Severity;
31 import spoon.reflect.code.CtLiteral;
32 import spoon.reflect.declaration.CtAnnotation;
33 import spoon.reflect.declaration.CtField;
34 import spoon.reflect.reference.CtFieldReference;
35
36 /**
37  * Implementation of the {@link URLValue} validator.
38  * <p>
39  *
40  * This class implements the {@link URLValue} validator. It checks that the
41  * current validation point is a valid URL by attempting to construct a
42  * {@link URL} object. If this throws a {@link MalformedURLException}, an ERROR
43  * is reported.
44  *
45  */

46 public class URLValidator implements Validator<URLValue> {
47     /**
48      * Implementation of the Validator interface. Called by
49      * {@link AValProcessor}
50      */

51     @SuppressWarnings JavaDoc("unchecked")
52     public void check(ValidationPoint<URLValue> vp) {
53         CtFieldReference dslElement = (CtFieldReference) vp.getDslElement();
54         
55         String JavaDoc attribName = (dslElement).getSimpleName();
56         String JavaDoc value = (String JavaDoc) vp.getDslAnnotation().getElementValue(
57                 attribName);
58         CtField<?> dslfield = dslElement.getDeclaration();
59         if(dslfield !=null && dslfield.getDefaultExpression() instanceof CtLiteral) {
60             CtLiteral defaultVal = (CtLiteral) dslfield.getDefaultExpression();
61             if(value.equals(defaultVal.getValue())){
62                 return;
63             }
64             
65         }
66         
67         try {
68             new URL JavaDoc(value);
69         } catch (MalformedURLException JavaDoc ex) {
70             CtAnnotation dslAnnotation = vp.getDslAnnotation();
71             String JavaDoc message = vp.getValAnnotation().message().replace("?val", value);
72             ValidationPoint.report(Severity.ERROR, dslAnnotation, message,vp.fixerFactory(vp.getValAnnotation().fixers()));
73         }
74
75     }
76
77 }
78
Popular Tags