001 //
002 // This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v1.0.1-05/30/2003 05:06 AM(java_re)-fcs
003 // See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
004 // Any modifications to this file will be lost upon recompilation of the source schema.
005 // Generated on: 2004.10.11 at 12:13:34 EDT
006 //
007
008 /*
009 * Copyright 2003 Sun Microsystems, Inc. All rights reserved.
010 * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
011 */
012
013 /*
014 * @(#)$Id: DefaultJAXBContextImpl.java,v 1.8 2003/05/14 18:36:17 lschwenk Exp $
015 */
016 package astronomy.data.spectra.impl.runtime;
017
018 import javax.xml.bind.DatatypeConverter;
019 import javax.xml.bind.JAXBContext;
020 import javax.xml.bind.JAXBException;
021 import javax.xml.bind.Marshaller;
022 import javax.xml.bind.PropertyException;
023 import javax.xml.bind.Unmarshaller;
024 import javax.xml.bind.Validator;
025
026 import com.sun.msv.grammar.Grammar;
027 import com.sun.xml.bind.Messages;
028 import com.sun.xml.bind.DatatypeConverterImpl;
029
030 /**
031 * This class provides the default implementation of JAXBContext. It
032 * also creates the GrammarInfoFacade that unifies all of the grammar
033 * info from packages on the contextPath.
034 *
035 * @version $Revision: 1.8 $
036 */
037 public class DefaultJAXBContextImpl extends JAXBContext {
038
039 /**
040 * This object keeps information about the grammar.
041 *
042 * When more than one package are specified,
043 * GrammarInfoFacade is used.
044 */
045 private GrammarInfo gi = null;
046
047 /**
048 * Once we load a grammar, we will cache the value here.
049 */
050 private Grammar grammar = null;
051
052 /**
053 * This is the constructor used by javax.xml.bind.FactoryFinder which
054 * bootstraps the RI. It causes the construction of a JAXBContext that
055 * contains a GrammarInfoFacade which is the union of all the generated
056 * JAXBContextImpl objects on the contextPath.
057 */
058 public DefaultJAXBContextImpl( String contextPath, ClassLoader classLoader )
059 throws JAXBException {
060
061 this( GrammarInfoFacade.createGrammarInfoFacade( contextPath, classLoader ) );
062
063 // initialize datatype converter with ours
064 DatatypeConverter.setDatatypeConverter(DatatypeConverterImpl.theInstance);
065 }
066
067 /**
068 * This constructor is used by the default no-arg constructor in the
069 * generated JAXBContextImpl objects. It is also used by the
070 * bootstrapping constructor in this class.
071 */
072 public DefaultJAXBContextImpl( GrammarInfo gi ) {
073 this.gi = gi;
074 }
075
076 public GrammarInfo getGrammarInfo() {
077 return gi;
078 }
079
080 /**
081 * Loads a grammar object for the unmarshal-time validation.
082 */
083 public Grammar getGrammar() throws JAXBException {
084 if( grammar==null )
085 // since JAXBContext needs to be thread-safe,
086 // this check might allow more than one thread to
087 // load a grammar, but that's fine; it's just a loss of
088 // time, but by itself it doesn't cause any problem.
089 // by not synchronizing method, we can avoid its overhead.
090 grammar = gi.getGrammar();
091 return grammar;
092 }
093
094
095 /**
096 * Create a <CODE>Marshaller</CODE> object that can be used to convert a
097 * java content-tree into XML data.
098 *
099 * @return a <CODE>Marshaller</CODE> object
100 * @throws JAXBException if an error was encountered while creating the
101 * <code>Marshaller</code> object
102 */
103 public Marshaller createMarshaller() throws JAXBException {
104 return new MarshallerImpl();
105 }
106
107 /**
108 * Create an <CODE>Unmarshaller</CODE> object that can be used to convert XML
109 * data into a java content-tree.
110 *
111 * @return an <CODE>Unmarshaller</CODE> object
112 * @throws JAXBException if an error was encountered while creating the
113 * <code>Unmarshaller</code> object
114 */
115 public Unmarshaller createUnmarshaller() throws JAXBException {
116 // TODO: revisit TypeRegistry.
117 // we don't need to create TypeRegistry everytime we create unmarshaller.
118 return new UnmarshallerImpl( this, gi );
119 }
120
121 /**
122 * Create a <CODE>Validator</CODE> object that can be used to validate a
123 * java content-tree.
124 *
125 * @return an <CODE>Unmarshaller</CODE> object
126 * @throws JAXBException if an error was encountered while creating the
127 * <code>Validator</code> object
128 */
129 public Validator createValidator() throws JAXBException {
130 return new ValidatorImpl();
131 }
132
133
134
135 /**
136 * Create an instance of the specified Java content interface.
137 *
138 * @param javaContentInterface the Class object
139 * @return an instance of the Java content interface
140 * @exception JAXBException
141 */
142 public Object newInstance( Class javaContentInterface )
143 throws JAXBException {
144
145 if( javaContentInterface == null ) {
146 throw new JAXBException( Messages.format( Messages.CI_NOT_NULL ) );
147 }
148
149 try {
150 Class c = gi.getDefaultImplementation( javaContentInterface );
151 if(c==null)
152 throw new JAXBException(
153 Messages.format( Messages.MISSING_INTERFACE, javaContentInterface ));
154
155 return c.newInstance();
156 } catch( Exception e ) {
157 throw new JAXBException( e );
158 }
159 }
160
161 /**
162 * There are no required properties, so simply throw an exception. Other
163 * providers may have support for properties on Validator, but the RI doesn't
164 */
165 public void setProperty( String name, Object value )
166 throws PropertyException {
167
168 throw new PropertyException(name, value);
169 }
170
171 /**
172 * There are no required properties, so simply throw an exception. Other
173 * providers may have support for properties on Validator, but the RI doesn't
174 */
175 public Object getProperty( String name )
176 throws PropertyException {
177
178 throw new PropertyException(name);
179 }
180
181
182 }