KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > apache > ws > jaxme > generator > types > QNameSG


1 /*
2  * Copyright 2003, 2004 The Apache Software Foundation
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15
16  */

17 package org.apache.ws.jaxme.generator.types;
18
19 import javax.xml.namespace.QName JavaDoc;
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 JavaDoc;
35
36 /**
37  * @author <a HREF="mailto:joe@ispsoft.de">Jochen Wiedmann</a>
38  */

39 public class QNameSG extends AtomicTypeSGImpl {
40   public static final JavaQName QNAME_TYPE = JavaQNameImpl.getInstance(QName JavaDoc.class);
41
42   /** <p>Creates a new instance of QNameSG.</p>
43    */

44   public QNameSG(SGFactory pFactory, SchemaSG pSchema, XSType pType) throws SAXException JavaDoc {
45     super(pFactory, pSchema, pType);
46   }
47
48   protected String JavaDoc 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 JavaDoc pValue) throws SAXException JavaDoc {
54     QName JavaDoc qName = QName.valueOf(pValue);
55     Object JavaDoc result;
56     if(qName.getNamespaceURI() == null || qName.getNamespaceURI().length() == 0) {
57       result = new Object JavaDoc[]{ "new ", QNAME_TYPE, "(", JavaSource.getQuoted(qName.getLocalPart()), ")" };
58     } else {
59       result = new Object JavaDoc[]{ "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 JavaDoc pValue, Object JavaDoc pData) throws SAXException JavaDoc {
66     return new TypedValueImpl(new Object JavaDoc[]{ pData, ".getDatatypeConverter().parseQName(", pValue, ", ", pData,
67                               ".getNamespaceSupport())" }, QNAME_TYPE);
68   }
69
70   public TypedValue getCastToString(SimpleTypeSG pController, Object JavaDoc pValue, DirectAccessible pData) {
71       return new TypedValueImpl(new Object JavaDoc[]{ pData, ".getDatatypeConverter().printQName(", pValue, ", ", pData,
72                                 ".getNamespaceContext())" }, String JavaDoc.class);
73   }
74   
75   public void forAllNonNullValues(SimpleTypeSG pController, JavaMethod pMethod, Object JavaDoc pValue, SGlet pSGlet) throws SAXException JavaDoc {
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 JavaDoc pValue, SGlet pSGlet) throws SAXException JavaDoc {
84     pSGlet.generate(pMethod, pValue);
85   }
86 }
87
Popular Tags