KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > sun > japex > testsuite > impl > runtime > ValidatorImpl


1 //
2
// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v1.0.3-b18-fcs
3
// See <a HREF="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
4
// Any modifications to this file will be lost upon recompilation of the source schema.
5
// Generated on: 2005.06.14 at 12:02:17 PDT
6
//
7

8 package com.sun.japex.testsuite.impl.runtime;
9
10 import javax.xml.bind.PropertyException;
11 import javax.xml.bind.ValidationEvent;
12 import javax.xml.bind.ValidationEventHandler;
13 import javax.xml.bind.ValidationException;
14 import javax.xml.bind.Validator;
15 import javax.xml.bind.helpers.DefaultValidationEventHandler;
16
17 import org.xml.sax.SAXException JavaDoc;
18
19 import com.sun.xml.bind.validator.Messages;
20
21 /*
22     TODO:
23     reorganize classes into appropriate packages.
24     to reflect the fact that some of the classes in
25     the marshaller package are used for both marshalling
26     and validation.
27
28     In particular, the MarshallingContext interface should be
29     renamed. It is not only for marshalling.
30     (something like "Serializer", maybe).
31 */

32
33 /**
34  * Validator implementation of JAXB RI.
35  */

36 public class ValidatorImpl implements Validator
37 {
38     /** Validation errors will be reported to this object. */
39     private ValidationEventHandler eventHandler =
40         new DefaultValidationEventHandler();
41     
42     final DefaultJAXBContextImpl jaxbContext;
43     
44     public ValidatorImpl( DefaultJAXBContextImpl c ) {
45         jaxbContext = c;
46     }
47     /**
48      * We need to know whether an validation error was detected or not.
49      * For this purpose, we set up the validation so that this interceptor
50      * will "intercept" errors before the application receives it.
51      */

52     private static class EventInterceptor implements ValidationEventHandler {
53         EventInterceptor( ValidationEventHandler _next ) {
54             this.next = _next;
55         }
56         
57         private boolean hadError = false;
58         public boolean hadError() { return hadError; }
59         
60         /** event will be passed to this component. */
61         private final ValidationEventHandler next;
62         
63         public boolean handleEvent( ValidationEvent e ) {
64             hadError = true;
65             boolean result;
66             if( next!=null ) {
67                 // pass it to the application
68
try {
69                     result = next.handleEvent(e);
70                 } catch( RuntimeException JavaDoc re ) {
71                     // if the client event handler causes a RuntimeException,
72
// then we have to return false
73
result = false;
74                 }
75             } else {
76                 // if no error handler was specified, there is no point
77
// in continuing the validation.
78
result = false;
79             }
80             return result;
81         }
82     };
83
84     public boolean validateRoot( Object JavaDoc o ) throws ValidationException {
85         if( o == null ) {
86             throw new IllegalArgumentException JavaDoc(
87                 Messages.format( Messages.MUST_NOT_BE_NULL, "rootObj" ) );
88         }
89         
90         return validate(o,true);
91     }
92     
93     public boolean validate( Object JavaDoc o ) throws ValidationException {
94         if( o == null ) {
95             throw new IllegalArgumentException JavaDoc(
96                 Messages.format( Messages.MUST_NOT_BE_NULL, "subrootObj" ) );
97         }
98         
99         return validate(o,false);
100     }
101     
102     private boolean validate( Object JavaDoc o, boolean validateId )
103         throws ValidationException {
104             
105         try {
106         
107             //ValidatableObject vo = Util.toValidatableObject(o);
108
ValidatableObject vo = jaxbContext.getGrammarInfo().castToValidatableObject(o);
109             
110             if(vo==null)
111                 throw new ValidationException(
112                     Messages.format( Messages.NOT_VALIDATABLE ) );
113         
114             EventInterceptor ei = new EventInterceptor(eventHandler);
115             ValidationContext context = new ValidationContext(jaxbContext,ei,validateId);
116             context.validate(vo);
117             context.reconcileIDs();
118             
119             return !ei.hadError();
120         } catch( SAXException JavaDoc e ) {
121             // we need a consistent mechanism to convert SAXException into JAXBException
122
Exception JavaDoc nested = e.getException();
123             if( nested != null ) {
124                 throw new ValidationException( nested );
125             } else {
126                 throw new ValidationException( e );
127             }
128             //return false;
129
}
130     }
131     
132     public ValidationEventHandler getEventHandler() {
133         return eventHandler;
134     }
135     
136     public void setEventHandler( ValidationEventHandler handler ) {
137         if( handler == null ) {
138             eventHandler = new DefaultValidationEventHandler();
139         } else {
140             eventHandler = handler;
141         }
142     }
143     
144     /**
145      * There are no required properties, so simply throw an exception. Other
146      * providers may have support for properties on Validator, but the RI doesn't
147      */

148     public void setProperty( String JavaDoc name, Object JavaDoc value )
149         throws PropertyException {
150         
151         if( name == null ) {
152             throw new IllegalArgumentException JavaDoc(
153                 Messages.format( Messages.MUST_NOT_BE_NULL, "name" ) );
154         }
155
156         throw new PropertyException(name, value);
157     }
158     
159     /**
160      * There are no required properties, so simply throw an exception. Other
161      * providers may have support for properties on Validator, but the RI doesn't
162      */

163     public Object JavaDoc getProperty( String JavaDoc name )
164         throws PropertyException {
165             
166         if( name == null ) {
167             throw new IllegalArgumentException JavaDoc(
168                 Messages.format( Messages.MUST_NOT_BE_NULL, "name" ) );
169         }
170
171         throw new PropertyException(name);
172     }
173
174 }
175
Popular Tags