src/share/jaxws_classes/com/sun/tools/internal/xjc/reader/xmlschema/bindinfo/BindInfo.java

Print this page

        

@@ -33,10 +33,11 @@
 import java.util.Iterator;
 import java.util.List;
 
 import javax.xml.bind.JAXBContext;
 import javax.xml.bind.JAXBException;
+import javax.xml.bind.Unmarshaller;
 import javax.xml.bind.annotation.XmlAnyElement;
 import javax.xml.bind.annotation.XmlElement;
 import javax.xml.bind.annotation.XmlMixed;
 import javax.xml.bind.annotation.XmlRootElement;
 import javax.xml.bind.annotation.XmlType;

@@ -44,20 +45,19 @@
 import javax.xml.transform.TransformerException;
 import javax.xml.transform.dom.DOMSource;
 import javax.xml.transform.stream.StreamResult;
 
 import com.sun.codemodel.internal.JDocComment;
+import com.sun.xml.internal.bind.v2.WellKnownNamespace;
 import com.sun.tools.internal.xjc.SchemaCache;
 import com.sun.tools.internal.xjc.model.CCustomizations;
 import com.sun.tools.internal.xjc.model.CPluginCustomization;
 import com.sun.tools.internal.xjc.model.Model;
 import com.sun.tools.internal.xjc.reader.Ring;
 import com.sun.tools.internal.xjc.reader.xmlschema.BGMBuilder;
 import com.sun.xml.internal.bind.annotation.XmlLocation;
 import com.sun.xml.internal.bind.marshaller.MinimumEscapeHandler;
-import com.sun.xml.internal.bind.v2.WellKnownNamespace;
-import com.sun.xml.internal.bind.v2.runtime.JAXBContextImpl;
 import com.sun.xml.internal.xsom.XSComponent;
 
 import org.w3c.dom.Element;
 import org.xml.sax.Locator;
 

@@ -67,11 +67,11 @@
  * We use JAXB ourselves and parse this object from "xs:annotation".
  *
  * @author
  *     Kohsuke Kawaguchi (kohsuke,kawaguchi@sun.com)
  */
-@XmlRootElement(namespace=WellKnownNamespace.XML_SCHEMA,name="annotation")
+@XmlRootElement(namespace= WellKnownNamespace.XML_SCHEMA,name="annotation")
 @XmlType(namespace=WellKnownNamespace.XML_SCHEMA,name="foobar")
 public final class BindInfo implements Iterable<BIDeclaration> {
 
     private BGMBuilder builder;
 

@@ -309,18 +309,18 @@
     public final static BindInfo empty = new BindInfo();
 
     /**
      * Lazily prepared {@link JAXBContext}.
      */
-    private static JAXBContextImpl customizationContext;
+    private static volatile JAXBContext customizationContext;
 
-    public static JAXBContextImpl getJAXBContext() {
-        synchronized(AnnotationParserFactoryImpl.class) {
+    public static JAXBContext getCustomizationContext() {
             try {
-                if(customizationContext==null)
-                    customizationContext = new JAXBContextImpl.JAXBContextBuilder().setClasses(
-                        new Class[] {
+            if (customizationContext == null) {
+                synchronized (BindInfo.class) {
+                    if (customizationContext == null) {
+                        customizationContext = JAXBContext.newInstance(
                             BindInfo.class, // for xs:annotation
                             BIClass.class,
                             BIConversion.User.class,
                             BIConversion.UserAdapter.class,
                             BIDom.class,

@@ -330,17 +330,26 @@
                             BIXSubstitutable.class,
                             BIEnum.class,
                             BIEnumMember.class,
                             BIGlobalBinding.class,
                             BIProperty.class,
-                            BISchemaBinding.class
-                        }).build();
+                                BISchemaBinding.class);
+                    }
+                }
+            }
                 return customizationContext;
             } catch (JAXBException e) {
                 throw new AssertionError(e);
             }
         }
+
+    public static Unmarshaller getCustomizationUnmarshaller() {
+        try {
+            return getCustomizationContext().createUnmarshaller();
+        } catch (JAXBException e) {
+            throw new AssertionError(e);
+        }
     }
 
     /**
      * Lazily parsed schema for the binding file.
      */