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

changeset 368
0989ad8c0860
parent 286
f50545b5e2f1
child 637
9c07ef4934dd
     1.1 --- a/src/share/jaxws_classes/com/sun/tools/internal/xjc/reader/xmlschema/bindinfo/BindInfo.java	Thu Apr 04 19:05:24 2013 -0700
     1.2 +++ b/src/share/jaxws_classes/com/sun/tools/internal/xjc/reader/xmlschema/bindinfo/BindInfo.java	Tue Apr 09 14:51:13 2013 +0100
     1.3 @@ -35,6 +35,7 @@
     1.4  
     1.5  import javax.xml.bind.JAXBContext;
     1.6  import javax.xml.bind.JAXBException;
     1.7 +import javax.xml.bind.Unmarshaller;
     1.8  import javax.xml.bind.annotation.XmlAnyElement;
     1.9  import javax.xml.bind.annotation.XmlElement;
    1.10  import javax.xml.bind.annotation.XmlMixed;
    1.11 @@ -46,6 +47,7 @@
    1.12  import javax.xml.transform.stream.StreamResult;
    1.13  
    1.14  import com.sun.codemodel.internal.JDocComment;
    1.15 +import com.sun.xml.internal.bind.v2.WellKnownNamespace;
    1.16  import com.sun.tools.internal.xjc.SchemaCache;
    1.17  import com.sun.tools.internal.xjc.model.CCustomizations;
    1.18  import com.sun.tools.internal.xjc.model.CPluginCustomization;
    1.19 @@ -54,8 +56,6 @@
    1.20  import com.sun.tools.internal.xjc.reader.xmlschema.BGMBuilder;
    1.21  import com.sun.xml.internal.bind.annotation.XmlLocation;
    1.22  import com.sun.xml.internal.bind.marshaller.MinimumEscapeHandler;
    1.23 -import com.sun.xml.internal.bind.v2.WellKnownNamespace;
    1.24 -import com.sun.xml.internal.bind.v2.runtime.JAXBContextImpl;
    1.25  import com.sun.xml.internal.xsom.XSComponent;
    1.26  
    1.27  import org.w3c.dom.Element;
    1.28 @@ -69,7 +69,7 @@
    1.29   * @author
    1.30   *     Kohsuke Kawaguchi (kohsuke,kawaguchi@sun.com)
    1.31   */
    1.32 -@XmlRootElement(namespace=WellKnownNamespace.XML_SCHEMA,name="annotation")
    1.33 +@XmlRootElement(namespace= WellKnownNamespace.XML_SCHEMA,name="annotation")
    1.34  @XmlType(namespace=WellKnownNamespace.XML_SCHEMA,name="foobar")
    1.35  public final class BindInfo implements Iterable<BIDeclaration> {
    1.36  
    1.37 @@ -311,33 +311,42 @@
    1.38      /**
    1.39       * Lazily prepared {@link JAXBContext}.
    1.40       */
    1.41 -    private static JAXBContextImpl customizationContext;
    1.42 +    private static volatile JAXBContext customizationContext;
    1.43  
    1.44 -    public static JAXBContextImpl getJAXBContext() {
    1.45 -        synchronized(AnnotationParserFactoryImpl.class) {
    1.46 -            try {
    1.47 -                if(customizationContext==null)
    1.48 -                    customizationContext = new JAXBContextImpl.JAXBContextBuilder().setClasses(
    1.49 -                        new Class[] {
    1.50 -                            BindInfo.class, // for xs:annotation
    1.51 -                            BIClass.class,
    1.52 -                            BIConversion.User.class,
    1.53 -                            BIConversion.UserAdapter.class,
    1.54 -                            BIDom.class,
    1.55 -                            BIFactoryMethod.class,
    1.56 -                            BIInlineBinaryData.class,
    1.57 -                            BIXDom.class,
    1.58 -                            BIXSubstitutable.class,
    1.59 -                            BIEnum.class,
    1.60 -                            BIEnumMember.class,
    1.61 -                            BIGlobalBinding.class,
    1.62 -                            BIProperty.class,
    1.63 -                            BISchemaBinding.class
    1.64 -                        }).build();
    1.65 -                return customizationContext;
    1.66 -            } catch (JAXBException e) {
    1.67 -                throw new AssertionError(e);
    1.68 +    public static JAXBContext getCustomizationContext() {
    1.69 +        try {
    1.70 +            if (customizationContext == null) {
    1.71 +                synchronized (BindInfo.class) {
    1.72 +                    if (customizationContext == null) {
    1.73 +                        customizationContext = JAXBContext.newInstance(
    1.74 +                                BindInfo.class, // for xs:annotation
    1.75 +                                BIClass.class,
    1.76 +                                BIConversion.User.class,
    1.77 +                                BIConversion.UserAdapter.class,
    1.78 +                                BIDom.class,
    1.79 +                                BIFactoryMethod.class,
    1.80 +                                BIInlineBinaryData.class,
    1.81 +                                BIXDom.class,
    1.82 +                                BIXSubstitutable.class,
    1.83 +                                BIEnum.class,
    1.84 +                                BIEnumMember.class,
    1.85 +                                BIGlobalBinding.class,
    1.86 +                                BIProperty.class,
    1.87 +                                BISchemaBinding.class);
    1.88 +                    }
    1.89 +                }
    1.90              }
    1.91 +            return customizationContext;
    1.92 +        } catch (JAXBException e) {
    1.93 +            throw new AssertionError(e);
    1.94 +        }
    1.95 +    }
    1.96 +
    1.97 +    public static Unmarshaller getCustomizationUnmarshaller() {
    1.98 +        try {
    1.99 +            return getCustomizationContext().createUnmarshaller();
   1.100 +        } catch (JAXBException e) {
   1.101 +            throw new AssertionError(e);
   1.102          }
   1.103      }
   1.104  

mercurial