KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > objectweb > celtix > tools > utils > BuiltInTypesJavaMappingUtil


1 package org.objectweb.celtix.tools.utils;
2
3 import java.util.*;
4 import javax.xml.namespace.QName JavaDoc;
5 import com.sun.tools.xjc.api.S2JJAXBModel;
6 import com.sun.tools.xjc.api.TypeAndAnnotation;
7
8 public final class BuiltInTypesJavaMappingUtil {
9     private static final String JavaDoc XML_SCHEMA_NS = "http://www.w3.org/2000/10/XMLSchema";
10     private static final String JavaDoc NS_XMLNS = "http://www.w3.org/2000/xmlns/";
11     private static final String JavaDoc NS_XSD = "http://www.w3.org/2001/XMLSchema";
12     private static final String JavaDoc NS_XSI = "http://www.w3.org/2001/XMLSchema-instance";
13     
14     private static Set<String JavaDoc> nameSpaces = new HashSet<String JavaDoc>();
15     static {
16         nameSpaces.add(XML_SCHEMA_NS.toLowerCase());
17         nameSpaces.add(NS_XMLNS.toLowerCase());
18         nameSpaces.add(NS_XSD.toLowerCase());
19         nameSpaces.add(NS_XSI.toLowerCase());
20     }
21     private static Map<String JavaDoc, String JavaDoc> jTypeMapping = new HashMap<String JavaDoc, String JavaDoc>();
22     static {
23         jTypeMapping.put("string", "java.lang.String");
24         jTypeMapping.put("integer", "java.math.BigInteger");
25         jTypeMapping.put("int", "int");
26         jTypeMapping.put("long", "long");
27         jTypeMapping.put("short", "short");
28         jTypeMapping.put("decimal", "java.math.BigDecimal");
29         jTypeMapping.put("float", "float");
30         jTypeMapping.put("double", "double");
31         jTypeMapping.put("boolean", "java.lang.boolean");
32         jTypeMapping.put("byte", "byte");
33         jTypeMapping.put("qname", "javax.xml.namespace.QName");
34         jTypeMapping.put("dataTime", "javax.xml.datatype.XMLGregorianCalendar");
35         jTypeMapping.put("time", "javax.xml.datatype.XMLGregorianCalendar");
36         jTypeMapping.put("date", "javax.xml.datatype.XMLGregorianCalendar");
37         jTypeMapping.put("dataTime", "javax.xml.datatype.XMLGregorianCalendar");
38         jTypeMapping.put("gday", "javax.xml.datatype.XMLGregorianCalendar");
39         jTypeMapping.put("gmonth", "javax.xml.datatype.XMLGregorianCalendar");
40         jTypeMapping.put("gyear", "javax.xml.datatype.XMLGregorianCalendar");
41         jTypeMapping.put("gmonthday", "javax.xml.datatype.XMLGregorianCalendar");
42         jTypeMapping.put("base64binary", "byte[]");
43         jTypeMapping.put("hexbinary", "byte[]");
44         jTypeMapping.put("unsignedint", "long");
45         jTypeMapping.put("unsignedshort", "int");
46         jTypeMapping.put("unsignedbyte", "short");
47     }
48     private BuiltInTypesJavaMappingUtil() {
49     }
50
51     public static String JavaDoc getJType(QName JavaDoc xmlTypeName, S2JJAXBModel jaxbModel) {
52         return getJType(xmlTypeName, jaxbModel, false);
53     }
54
55     public static String JavaDoc getJType(QName JavaDoc xmlTypeName, S2JJAXBModel jaxbModel, boolean boxify) {
56         if (jaxbModel == null) {
57             return getJType(xmlTypeName.getNamespaceURI(), xmlTypeName.getLocalPart());
58         }
59         TypeAndAnnotation typeAndAnnotation = jaxbModel.getJavaType(xmlTypeName);
60         if (typeAndAnnotation == null) {
61             return getJType(xmlTypeName.getNamespaceURI(), xmlTypeName.getLocalPart());
62         }
63         if (boxify) {
64             return typeAndAnnotation.getTypeClass().boxify().fullName();
65         } else {
66             return typeAndAnnotation.getTypeClass().fullName();
67         }
68     }
69     
70     public static String JavaDoc getJType(String JavaDoc nameSpace, String JavaDoc type) {
71         if (type == null || nameSpace == null || !nameSpaces.contains(nameSpace.toLowerCase())) {
72             return null;
73         }
74         return jTypeMapping.get(type.toLowerCase());
75     }
76
77 }
78
Popular Tags