src/share/jaxws_classes/com/sun/xml/internal/bind/v2/model/impl/RuntimeBuiltinLeafInfoImpl.java

Print this page




  74 import javax.xml.transform.Source;
  75 import javax.xml.transform.Transformer;
  76 import javax.xml.transform.TransformerException;
  77 import javax.xml.transform.stream.StreamResult;
  78 
  79 import com.sun.istack.internal.ByteArrayDataSource;
  80 import com.sun.xml.internal.bind.DatatypeConverterImpl;
  81 import com.sun.xml.internal.bind.WhiteSpaceProcessor;
  82 import com.sun.xml.internal.bind.api.AccessorException;
  83 import com.sun.xml.internal.bind.v2.TODO;
  84 import com.sun.xml.internal.bind.v2.WellKnownNamespace;
  85 import com.sun.xml.internal.bind.v2.model.runtime.RuntimeBuiltinLeafInfo;
  86 import com.sun.xml.internal.bind.v2.runtime.Name;
  87 import com.sun.xml.internal.bind.v2.runtime.Transducer;
  88 import com.sun.xml.internal.bind.v2.runtime.XMLSerializer;
  89 import com.sun.xml.internal.bind.v2.runtime.output.Pcdata;
  90 import com.sun.xml.internal.bind.v2.runtime.unmarshaller.Base64Data;
  91 import com.sun.xml.internal.bind.v2.runtime.unmarshaller.UnmarshallingContext;
  92 import com.sun.xml.internal.bind.v2.util.ByteArrayOutputStreamEx;
  93 import com.sun.xml.internal.bind.v2.util.DataSourceSource;



  94 
  95 import org.xml.sax.SAXException;
  96 
  97 /**
  98  * {@link BuiltinLeafInfoImpl} with a support for runtime.
  99  *
 100  * <p>
 101  * In particular this class defines {@link Transducer}s for the built-in types.
 102  *
 103  * @author Kohsuke Kawaguchi
 104  */
 105 public abstract class RuntimeBuiltinLeafInfoImpl<T> extends BuiltinLeafInfoImpl<Type,Class>
 106     implements RuntimeBuiltinLeafInfo, Transducer<T> {
 107 


 108     private RuntimeBuiltinLeafInfoImpl(Class type, QName... typeNames) {
 109         super(type, typeNames);
 110         LEAVES.put(type,this);
 111     }
 112 
 113     public final Class getClazz() {
 114         return (Class)getType();
 115     }
 116 
 117 
 118     public final Transducer getTransducer() {
 119         return this;
 120     }
 121 
 122     public boolean useNamespace() {
 123         return false;
 124     }
 125 
 126     public final boolean isDefault() {
 127         return true;


 179     public static final Map<Type,RuntimeBuiltinLeafInfoImpl<?>> LEAVES = new HashMap<Type, RuntimeBuiltinLeafInfoImpl<?>>();
 180 
 181     private static QName createXS(String typeName) {
 182         return new QName(WellKnownNamespace.XML_SCHEMA,typeName);
 183     }
 184 
 185     public static final RuntimeBuiltinLeafInfoImpl<String> STRING;
 186 
 187     private static final String DATE = "date";
 188 
 189     /**
 190      * List of all {@link RuntimeBuiltinLeafInfoImpl}s.
 191      *
 192      * <p>
 193      * This corresponds to the built-in Java classes that are specified to be
 194      * handled differently than ordinary classes. See table 8-2 "Mapping of Standard Java classes".
 195      */
 196     public static final List<RuntimeBuiltinLeafInfoImpl<?>> builtinBeanInfos;
 197 
 198     public static final String MAP_ANYURI_TO_URI = "mapAnyUriToUri";

 199 
 200     static {
 201 
 202         QName[] qnames = (System.getProperty(MAP_ANYURI_TO_URI) == null) ? new QName[] {
 203                                 createXS("string"),
 204                                 createXS("anySimpleType"),
 205                                 createXS("normalizedString"),
 206                                 createXS("anyURI"),
 207                                 createXS("token"),
 208                                 createXS("language"),
 209                                 createXS("Name"),
 210                                 createXS("NCName"),
 211                                 createXS("NMTOKEN"),
 212                                 createXS("ENTITY")}
 213                                     :
 214                          new QName[] {
 215                                 createXS("string"),
 216                                 createXS("anySimpleType"),
 217                                 createXS("normalizedString"),
 218                                 createXS("token"),


 943                         }
 944                 }
 945                 if (buf.length() > 0){
 946                         throw new javax.xml.bind.MarshalException(
 947                          Messages.XMLGREGORIANCALENDAR_INVALID.format(type.getLocalPart())
 948                          + buf.toString());
 949                 }
 950         }
 951 
 952     /**
 953      * Format string for the {@link XMLGregorianCalendar}.
 954      */
 955     private static final Map<QName,String> xmlGregorianCalendarFormatString = new HashMap<QName, String>();
 956 
 957     static {
 958         Map<QName,String> m = xmlGregorianCalendarFormatString;
 959         // See 4971612: be careful for SCCS substitution
 960         m.put(DatatypeConstants.DATETIME,   "%Y-%M-%DT%h:%m:%s"+ "%z");
 961         m.put(DatatypeConstants.DATE,       "%Y-%M-%D" +"%z");
 962         m.put(DatatypeConstants.TIME,       "%h:%m:%s"+ "%z");






 963         m.put(DatatypeConstants.GMONTH,     "--%M--%z");

 964         m.put(DatatypeConstants.GDAY,       "---%D" + "%z");
 965         m.put(DatatypeConstants.GYEAR,      "%Y" + "%z");
 966         m.put(DatatypeConstants.GYEARMONTH, "%Y-%M" + "%z");
 967         m.put(DatatypeConstants.GMONTHDAY,  "--%M-%D" +"%z");
 968     }
 969 
 970         /**
 971          * Field designations for XMLGregorianCalendar format string.
 972          * sec          0x0000001
 973          * min          0x0000010
 974          * hrs          0x0000100
 975          * day          0x0001000
 976          * month        0x0010000
 977          * year         0x0100000
 978          * timezone     0x1000000
 979          */
 980         private static final Map<QName, Integer> xmlGregorianCalendarFieldRef =
 981                 new HashMap<QName, Integer>();
 982         static {
 983                 Map<QName, Integer> f = xmlGregorianCalendarFieldRef;




  74 import javax.xml.transform.Source;
  75 import javax.xml.transform.Transformer;
  76 import javax.xml.transform.TransformerException;
  77 import javax.xml.transform.stream.StreamResult;
  78 
  79 import com.sun.istack.internal.ByteArrayDataSource;
  80 import com.sun.xml.internal.bind.DatatypeConverterImpl;
  81 import com.sun.xml.internal.bind.WhiteSpaceProcessor;
  82 import com.sun.xml.internal.bind.api.AccessorException;
  83 import com.sun.xml.internal.bind.v2.TODO;
  84 import com.sun.xml.internal.bind.v2.WellKnownNamespace;
  85 import com.sun.xml.internal.bind.v2.model.runtime.RuntimeBuiltinLeafInfo;
  86 import com.sun.xml.internal.bind.v2.runtime.Name;
  87 import com.sun.xml.internal.bind.v2.runtime.Transducer;
  88 import com.sun.xml.internal.bind.v2.runtime.XMLSerializer;
  89 import com.sun.xml.internal.bind.v2.runtime.output.Pcdata;
  90 import com.sun.xml.internal.bind.v2.runtime.unmarshaller.Base64Data;
  91 import com.sun.xml.internal.bind.v2.runtime.unmarshaller.UnmarshallingContext;
  92 import com.sun.xml.internal.bind.v2.util.ByteArrayOutputStreamEx;
  93 import com.sun.xml.internal.bind.v2.util.DataSourceSource;
  94 import java.util.logging.Logger;
  95 import com.sun.xml.internal.bind.Util;
  96 import java.util.logging.Level;
  97 
  98 import org.xml.sax.SAXException;
  99 
 100 /**
 101  * {@link BuiltinLeafInfoImpl} with a support for runtime.
 102  *
 103  * <p>
 104  * In particular this class defines {@link Transducer}s for the built-in types.
 105  *
 106  * @author Kohsuke Kawaguchi
 107  */
 108 public abstract class RuntimeBuiltinLeafInfoImpl<T> extends BuiltinLeafInfoImpl<Type,Class>
 109     implements RuntimeBuiltinLeafInfo, Transducer<T> {
 110 
 111     private static final Logger logger = Util.getClassLogger();
 112 
 113     private RuntimeBuiltinLeafInfoImpl(Class type, QName... typeNames) {
 114         super(type, typeNames);
 115         LEAVES.put(type,this);
 116     }
 117 
 118     public final Class getClazz() {
 119         return (Class)getType();
 120     }
 121 
 122 
 123     public final Transducer getTransducer() {
 124         return this;
 125     }
 126 
 127     public boolean useNamespace() {
 128         return false;
 129     }
 130 
 131     public final boolean isDefault() {
 132         return true;


 184     public static final Map<Type,RuntimeBuiltinLeafInfoImpl<?>> LEAVES = new HashMap<Type, RuntimeBuiltinLeafInfoImpl<?>>();
 185 
 186     private static QName createXS(String typeName) {
 187         return new QName(WellKnownNamespace.XML_SCHEMA,typeName);
 188     }
 189 
 190     public static final RuntimeBuiltinLeafInfoImpl<String> STRING;
 191 
 192     private static final String DATE = "date";
 193 
 194     /**
 195      * List of all {@link RuntimeBuiltinLeafInfoImpl}s.
 196      *
 197      * <p>
 198      * This corresponds to the built-in Java classes that are specified to be
 199      * handled differently than ordinary classes. See table 8-2 "Mapping of Standard Java classes".
 200      */
 201     public static final List<RuntimeBuiltinLeafInfoImpl<?>> builtinBeanInfos;
 202 
 203     public static final String MAP_ANYURI_TO_URI = "mapAnyUriToUri";
 204     public static final String USE_OLD_GMONTH_MAPPING = "jaxb.ri.useOldGmonthMapping";
 205 
 206     static {
 207 
 208         QName[] qnames = (System.getProperty(MAP_ANYURI_TO_URI) == null) ? new QName[] {
 209                                 createXS("string"),
 210                                 createXS("anySimpleType"),
 211                                 createXS("normalizedString"),
 212                                 createXS("anyURI"),
 213                                 createXS("token"),
 214                                 createXS("language"),
 215                                 createXS("Name"),
 216                                 createXS("NCName"),
 217                                 createXS("NMTOKEN"),
 218                                 createXS("ENTITY")}
 219                                     :
 220                          new QName[] {
 221                                 createXS("string"),
 222                                 createXS("anySimpleType"),
 223                                 createXS("normalizedString"),
 224                                 createXS("token"),


 949                         }
 950                 }
 951                 if (buf.length() > 0){
 952                         throw new javax.xml.bind.MarshalException(
 953                          Messages.XMLGREGORIANCALENDAR_INVALID.format(type.getLocalPart())
 954                          + buf.toString());
 955                 }
 956         }
 957 
 958     /**
 959      * Format string for the {@link XMLGregorianCalendar}.
 960      */
 961     private static final Map<QName,String> xmlGregorianCalendarFormatString = new HashMap<QName, String>();
 962 
 963     static {
 964         Map<QName,String> m = xmlGregorianCalendarFormatString;
 965         // See 4971612: be careful for SCCS substitution
 966         m.put(DatatypeConstants.DATETIME,   "%Y-%M-%DT%h:%m:%s"+ "%z");
 967         m.put(DatatypeConstants.DATE,       "%Y-%M-%D" +"%z");
 968         m.put(DatatypeConstants.TIME,       "%h:%m:%s"+ "%z");
 969         if (System.getProperty(USE_OLD_GMONTH_MAPPING) == null) {
 970             m.put(DatatypeConstants.GMONTH, "--%M%z");      //  E2-12 Error. http://www.w3.org/2001/05/xmlschema-errata#e2-12
 971         } else {                                            //  backw. compatibility
 972             if (logger.isLoggable(Level.FINE)) {
 973                 logger.log(Level.FINE, "Old GMonth mapping used.");
 974             }
 975             m.put(DatatypeConstants.GMONTH, "--%M--%z");
 976         }
 977         m.put(DatatypeConstants.GDAY,       "---%D" + "%z");
 978         m.put(DatatypeConstants.GYEAR,      "%Y" + "%z");
 979         m.put(DatatypeConstants.GYEARMONTH, "%Y-%M" + "%z");
 980         m.put(DatatypeConstants.GMONTHDAY,  "--%M-%D" +"%z");
 981     }
 982 
 983         /**
 984          * Field designations for XMLGregorianCalendar format string.
 985          * sec          0x0000001
 986          * min          0x0000010
 987          * hrs          0x0000100
 988          * day          0x0001000
 989          * month        0x0010000
 990          * year         0x0100000
 991          * timezone     0x1000000
 992          */
 993         private static final Map<QName, Integer> xmlGregorianCalendarFieldRef =
 994                 new HashMap<QName, Integer>();
 995         static {
 996                 Map<QName, Integer> f = xmlGregorianCalendarFieldRef;