1 package org.objectweb.celtix.tools.utils; 2 3 import java.util.*; 4 import javax.xml.namespace.QName ; 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 XML_SCHEMA_NS = "http://www.w3.org/2000/10/XMLSchema"; 10 private static final String NS_XMLNS = "http://www.w3.org/2000/xmlns/"; 11 private static final String NS_XSD = "http://www.w3.org/2001/XMLSchema"; 12 private static final String NS_XSI = "http://www.w3.org/2001/XMLSchema-instance"; 13 14 private static Set<String > nameSpaces = new HashSet<String >(); 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 , String > jTypeMapping = new HashMap<String , String >(); 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 getJType(QName xmlTypeName, S2JJAXBModel jaxbModel) { 52 return getJType(xmlTypeName, jaxbModel, false); 53 } 54 55 public static String getJType(QName 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 getJType(String nameSpace, String 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 |