1 17 package org.apache.ws.jaxme.generator.types; 18 19 import javax.xml.namespace.QName ; 20 21 import org.apache.ws.jaxme.generator.sg.SGFactory; 22 import org.apache.ws.jaxme.generator.sg.SGlet; 23 import org.apache.ws.jaxme.generator.sg.SchemaSG; 24 import org.apache.ws.jaxme.generator.sg.SimpleTypeSG; 25 import org.apache.ws.jaxme.js.DirectAccessible; 26 import org.apache.ws.jaxme.js.JavaMethod; 27 import org.apache.ws.jaxme.js.JavaQName; 28 import org.apache.ws.jaxme.js.JavaQNameImpl; 29 import org.apache.ws.jaxme.js.JavaSource; 30 import org.apache.ws.jaxme.js.LocalJavaField; 31 import org.apache.ws.jaxme.js.TypedValue; 32 import org.apache.ws.jaxme.js.impl.TypedValueImpl; 33 import org.apache.ws.jaxme.xs.XSType; 34 import org.xml.sax.SAXException ; 35 36 39 public class QNameSG extends AtomicTypeSGImpl { 40 public static final JavaQName QNAME_TYPE = JavaQNameImpl.getInstance(QName .class); 41 42 44 public QNameSG(SGFactory pFactory, SchemaSG pSchema, XSType pType) throws SAXException { 45 super(pFactory, pSchema, pType); 46 } 47 48 protected String getDatatypeName() { return "QName"; } 49 protected JavaQName getDatatypeType() { return QNAME_TYPE; } 50 51 public JavaQName getRuntimeType(SimpleTypeSG pController) { return QNAME_TYPE; } 52 53 public TypedValue getCastFromString(SimpleTypeSG pController, String pValue) throws SAXException { 54 QName qName = QName.valueOf(pValue); 55 Object result; 56 if(qName.getNamespaceURI() == null || qName.getNamespaceURI().length() == 0) { 57 result = new Object []{ "new ", QNAME_TYPE, "(", JavaSource.getQuoted(qName.getLocalPart()), ")" }; 58 } else { 59 result = new Object []{ "new ", QNAME_TYPE, "(", JavaSource.getQuoted(qName.getNamespaceURI()), 60 ", ", JavaSource.getQuoted(qName.getLocalPart()), ")" }; 61 } 62 return new TypedValueImpl(result, QNAME_TYPE); 63 } 64 65 public TypedValue getCastFromString(SimpleTypeSG pController, JavaMethod pMethod, Object pValue, Object pData) throws SAXException { 66 return new TypedValueImpl(new Object []{ pData, ".getDatatypeConverter().parseQName(", pValue, ", ", pData, 67 ".getNamespaceSupport())" }, QNAME_TYPE); 68 } 69 70 public TypedValue getCastToString(SimpleTypeSG pController, Object pValue, DirectAccessible pData) { 71 return new TypedValueImpl(new Object []{ pData, ".getDatatypeConverter().printQName(", pValue, ", ", pData, 72 ".getNamespaceContext())" }, String .class); 73 } 74 75 public void forAllNonNullValues(SimpleTypeSG pController, JavaMethod pMethod, Object pValue, SGlet pSGlet) throws SAXException { 76 LocalJavaField f = pMethod.newJavaField(QNAME_TYPE); 77 f.addLine(pValue); 78 pMethod.addIf(f, " != null"); 79 pSGlet.generate(pMethod, pValue); 80 pMethod.addEndIf(); 81 } 82 83 public void forAllValues(SimpleTypeSG pController, JavaMethod pMethod, Object pValue, SGlet pSGlet) throws SAXException { 84 pSGlet.generate(pMethod, pValue); 85 } 86 } 87 | Popular Tags |