Author: jochen
Date: Mon Nov 21 23:28:01 2005
New Revision: 348115

URL: http://svn.apache.org/viewcvs?rev=348115&view=rev
Log:
The namespace of a simple type xs:QName wasn't necessarily
declared by the marshaller.
PR: JAXME-72
Submitted-By: Andreas Arrgård, andreas.arrgard at octagroup.com


Added:
    webservices/jaxme/branches/v0_4/src/test/jaxb/jira/jaxme-72.xsd
Modified:
    
webservices/jaxme/branches/v0_4/src/jaxme/org/apache/ws/jaxme/generator/types/QNameSG.java
    
webservices/jaxme/branches/v0_4/src/jaxme/org/apache/ws/jaxme/impl/JMSAXDriverController.java
    
webservices/jaxme/branches/v0_4/src/jaxme/org/apache/ws/jaxme/junit/JiraTest.java
    webservices/jaxme/branches/v0_4/status.xml

Modified: 
webservices/jaxme/branches/v0_4/src/jaxme/org/apache/ws/jaxme/generator/types/QNameSG.java
URL: 
http://svn.apache.org/viewcvs/webservices/jaxme/branches/v0_4/src/jaxme/org/apache/ws/jaxme/generator/types/QNameSG.java?rev=348115&r1=348114&r2=348115&view=diff
==============================================================================
--- 
webservices/jaxme/branches/v0_4/src/jaxme/org/apache/ws/jaxme/generator/types/QNameSG.java
 (original)
+++ 
webservices/jaxme/branches/v0_4/src/jaxme/org/apache/ws/jaxme/generator/types/QNameSG.java
 Mon Nov 21 23:28:01 2005
@@ -12,7 +12,6 @@
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  * See the License for the specific language governing permissions and
  * limitations under the License.
-
  */
 package org.apache.ws.jaxme.generator.types;
 
@@ -37,50 +36,52 @@
  * @author <a href="mailto:[EMAIL PROTECTED]">Jochen Wiedmann</a>
  */
 public class QNameSG extends AtomicTypeSGImpl {
-  public static final JavaQName QNAME_TYPE = 
JavaQNameImpl.getInstance(QName.class);
-
-  /** <p>Creates a new instance of QNameSG.</p>
-   */
-  public QNameSG(SGFactory pFactory, SchemaSG pSchema, XSType pType) throws 
SAXException {
-    super(pFactory, pSchema, pType);
-  }
-
-  protected String getDatatypeName() { return "QName"; }
-  protected JavaQName getDatatypeType() { return QNAME_TYPE; }
-
-  public JavaQName getRuntimeType(SimpleTypeSG pController) { return 
QNAME_TYPE; }
-
-  public TypedValue getCastFromString(SimpleTypeSG pController, String pValue) 
throws SAXException {
-    QName qName = QName.valueOf(pValue);
-       Object result;
-       if(qName.getNamespaceURI() == null  ||  
qName.getNamespaceURI().length() == 0) {
-      result = new Object[]{ "new ", QNAME_TYPE, "(", 
JavaSource.getQuoted(qName.getLocalPart()), ")" };
-    } else {
-      result = new Object[]{ "new ", QNAME_TYPE, "(", 
JavaSource.getQuoted(qName.getNamespaceURI()),
-                            ", ", JavaSource.getQuoted(qName.getLocalPart()), 
")" };
-    }
-       return new TypedValueImpl(result, QNAME_TYPE);
-  }
-
-  public TypedValue getCastFromString(SimpleTypeSG pController, JavaMethod 
pMethod, Object pValue, Object pData) throws SAXException {
-    return new TypedValueImpl(new Object[]{ pData, 
".getDatatypeConverter().parseQName(", pValue, ", ", pData,
-                              ".getNamespaceSupport())" }, QNAME_TYPE);
-  }
-
-  public TypedValue getCastToString(SimpleTypeSG pController, Object pValue, 
DirectAccessible pData) {
-      return new TypedValueImpl(new Object[]{ pData, 
".getDatatypeConverter().printQName(", pValue, ", ", pData,
-                                                       
".getNamespaceContext())" }, String.class);
-  }
-  
-  public void forAllNonNullValues(SimpleTypeSG pController, JavaMethod 
pMethod, Object pValue, SGlet pSGlet) throws SAXException {
-    LocalJavaField f = pMethod.newJavaField(QNAME_TYPE);
-    f.addLine(pValue);
-    pMethod.addIf(f, " != null");
-    pSGlet.generate(pMethod, pValue);
-    pMethod.addEndIf();
-  }
-
-  public void forAllValues(SimpleTypeSG pController, JavaMethod pMethod, 
Object pValue, SGlet pSGlet) throws SAXException {
-    pSGlet.generate(pMethod, pValue);
-  }
+       /** The data type [EMAIL PROTECTED] QName}.
+        */
+       public static final JavaQName QNAME_TYPE = 
JavaQNameImpl.getInstance(QName.class);
+       
+       /** <p>Creates a new instance of QNameSG.</p>
+        */
+       public QNameSG(SGFactory pFactory, SchemaSG pSchema, XSType pType) 
throws SAXException {
+               super(pFactory, pSchema, pType);
+       }
+       
+       protected String getDatatypeName() { return "QName"; }
+       protected JavaQName getDatatypeType() { return QNAME_TYPE; }
+       
+       public JavaQName getRuntimeType(SimpleTypeSG pController) { return 
QNAME_TYPE; }
+       
+       public TypedValue getCastFromString(SimpleTypeSG pController, String 
pValue) throws SAXException {
+               QName qName = QName.valueOf(pValue);
+               Object result;
+               if(qName.getNamespaceURI() == null  ||  
qName.getNamespaceURI().length() == 0) {
+                       result = new Object[]{ "new ", QNAME_TYPE, "(", 
JavaSource.getQuoted(qName.getLocalPart()), ")" };
+               } else {
+                       result = new Object[]{ "new ", QNAME_TYPE, "(", 
JavaSource.getQuoted(qName.getNamespaceURI()),
+                                       ", ", 
JavaSource.getQuoted(qName.getLocalPart()), ")" };
+               }
+               return new TypedValueImpl(result, QNAME_TYPE);
+       }
+       
+       public TypedValue getCastFromString(SimpleTypeSG pController, 
JavaMethod pMethod, Object pValue, Object pData) throws SAXException {
+               return new TypedValueImpl(new Object[]{ pData, 
".getDatatypeConverter().parseQName(", pValue, ", ", pData,
+               ".getNamespaceSupport())" }, QNAME_TYPE);
+       }
+       
+       public TypedValue getCastToString(SimpleTypeSG pController, Object 
pValue, DirectAccessible pData) {
+               return new TypedValueImpl(new Object[]{ pData, 
".getElementQName(this, ", pValue, ".getNamespaceURI(), ", pValue,
+               ".getLocalPart())" }, String.class);
+       }
+       
+       public void forAllNonNullValues(SimpleTypeSG pController, JavaMethod 
pMethod, Object pValue, SGlet pSGlet) throws SAXException {
+               LocalJavaField f = pMethod.newJavaField(QNAME_TYPE);
+               f.addLine(pValue);
+               pMethod.addIf(f, " != null");
+               pSGlet.generate(pMethod, pValue);
+               pMethod.addEndIf();
+       }
+       
+       public void forAllValues(SimpleTypeSG pController, JavaMethod pMethod, 
Object pValue, SGlet pSGlet) throws SAXException {
+               pSGlet.generate(pMethod, pValue);
+       }
 }

Modified: 
webservices/jaxme/branches/v0_4/src/jaxme/org/apache/ws/jaxme/impl/JMSAXDriverController.java
URL: 
http://svn.apache.org/viewcvs/webservices/jaxme/branches/v0_4/src/jaxme/org/apache/ws/jaxme/impl/JMSAXDriverController.java?rev=348115&r1=348114&r2=348115&view=diff
==============================================================================
--- 
webservices/jaxme/branches/v0_4/src/jaxme/org/apache/ws/jaxme/impl/JMSAXDriverController.java
 (original)
+++ 
webservices/jaxme/branches/v0_4/src/jaxme/org/apache/ws/jaxme/impl/JMSAXDriverController.java
 Mon Nov 21 23:28:01 2005
@@ -16,6 +16,7 @@
 package org.apache.ws.jaxme.impl;
 
 import javax.xml.bind.DatatypeConverterInterface;
+import javax.xml.bind.PrintConversionEvent;
 import javax.xml.bind.ValidationEvent;
 import javax.xml.bind.ValidationEventHandler;
 import javax.xml.bind.ValidationEventLocator;
@@ -130,8 +131,12 @@
                }
        }
 
-       protected String getElementQName(JMSAXDriver pDriver, String 
pNamespaceURI,
-                                                                        String 
pLocalName)
+       /** Returns the qualified name of the element <code>pLocalName</code>
+        * in namespace <code>pNamespaceURI</code>. In other words, it attachs
+        * a prefix, if required.
+        */
+       public String getElementQName(JMSAXDriver pDriver, String pNamespaceURI,
+                                                                 String 
pLocalName)
                        throws SAXException {
                if (pNamespaceURI == null) {
                        pNamespaceURI = "";
@@ -260,6 +265,8 @@
                }
        }
 
+       /** Fires a [EMAIL PROTECTED] PrintConversionEvent}.
+        */
        public void printConversionEvent(Object pObject, String pMsg, Exception 
pException) throws SAXException {
                ValidationEventHandler handler = 
getJMMarshaller().getEventHandler();
                if (handler != null) {

Modified: 
webservices/jaxme/branches/v0_4/src/jaxme/org/apache/ws/jaxme/junit/JiraTest.java
URL: 
http://svn.apache.org/viewcvs/webservices/jaxme/branches/v0_4/src/jaxme/org/apache/ws/jaxme/junit/JiraTest.java?rev=348115&r1=348114&r2=348115&view=diff
==============================================================================
--- 
webservices/jaxme/branches/v0_4/src/jaxme/org/apache/ws/jaxme/junit/JiraTest.java
 (original)
+++ 
webservices/jaxme/branches/v0_4/src/jaxme/org/apache/ws/jaxme/junit/JiraTest.java
 Mon Nov 21 23:28:01 2005
@@ -8,6 +8,7 @@
 import javax.xml.bind.Unmarshaller;
 import javax.xml.bind.ValidationEvent;
 import javax.xml.bind.ValidationEventHandler;
+import javax.xml.namespace.QName;
 
 import magoffin.matt.ieat.domain.impl.IngredientImpl;
 import net.dspc.commons.activitymodel.TransmissionData;
@@ -21,6 +22,7 @@
 import org.apache.ws.jaxme.generator.sg.SchemaSG;
 import org.apache.ws.jaxme.generator.sg.impl.JAXBSchemaReader;
 import org.apache.ws.jaxme.generator.util.JavaNamer;
+import org.apache.ws.jaxme.test.jira72.Jaxme72;
 import org.apache.ws.jaxme.test.misc.types.Jira62;
 import org.apache.ws.jaxme.test.misc.types.Row;
 import org.apache.ws.jaxme.test.misc.types.impl.RowImpl;
@@ -229,5 +231,22 @@
                } catch (SAXException e) {
                        assertTrue(e.getMessage().indexOf("Model groups with 
maxOccurs > 1 are not yet supported.") != -1);
                }
+       }
+
+       /** Test for <a 
href="http://issues.apache.org/jira/browse/JAXME-72";>JAXME-72</a>.
+        */
+       public void testJAXME72() throws JAXBException {
+               // create test structure
+               org.apache.ws.jaxme.test.jira72.ObjectFactory oFact = new 
org.apache.ws.jaxme.test.jira72.ObjectFactory();
+               Jaxme72 jaxme72  = oFact.createJaxme72();
+               QName qName = new 
QName("http://this.namespace/must/be/declared";, "jaxme72");
+               jaxme72.setTest(qName);
+               // try to marshal it...Jira issue 72 address the problem that 
this will fail.
+               JAXBContext ctx = 
JAXBContext.newInstance("org.apache.ws.jaxme.test.jira72");
+               StringWriter sw = new StringWriter();
+               ctx.createMarshaller().marshal(jaxme72, sw);
+               // if we get this far issue 72 shoulb be fixed. just to be sure 
- unmarshal and compare QNames.
+               Jaxme72 jaxme72Clone = (Jaxme72) 
ctx.createUnmarshaller().unmarshal(new InputSource(new 
StringReader(sw.toString())));
+               assertEquals(jaxme72.getTest(),jaxme72Clone.getTest());
        }
 }

Added: webservices/jaxme/branches/v0_4/src/test/jaxb/jira/jaxme-72.xsd
URL: 
http://svn.apache.org/viewcvs/webservices/jaxme/branches/v0_4/src/test/jaxb/jira/jaxme-72.xsd?rev=348115&view=auto
==============================================================================
--- webservices/jaxme/branches/v0_4/src/test/jaxb/jira/jaxme-72.xsd (added)
+++ webservices/jaxme/branches/v0_4/src/test/jaxb/jira/jaxme-72.xsd Mon Nov 21 
23:28:01 2005
@@ -0,0 +1,8 @@
+<xs:schema targetNamespace='http://apache.org/ws/jaxme/test/jira72'
+           xmlns:xs='http://www.w3.org/2001/XMLSchema'>
+  <xs:element name='jaxme-72'>
+    <xs:complexType>
+      <xs:attribute name="test" type="xs:QName"/>
+    </xs:complexType>
+  </xs:element>
+</xs:schema>

Modified: webservices/jaxme/branches/v0_4/status.xml
URL: 
http://svn.apache.org/viewcvs/webservices/jaxme/branches/v0_4/status.xml?rev=348115&r1=348114&r2=348115&view=diff
==============================================================================
--- webservices/jaxme/branches/v0_4/status.xml (original)
+++ webservices/jaxme/branches/v0_4/status.xml Mon Nov 21 23:28:01 2005
@@ -80,6 +80,11 @@
         the referencing particles maxOccurs and minOccurs values haven't
         been inherited. (JAXME-63)
       </action>
+      <action dev="JW" type="fix" context="generator">
+        The namespace of a simple type xs:QName wasn't necessarily
+        declared by the marshaller. (JAXME-72, Andreas Arrgård,
+        andreas.arrgard at octagroup.com)
+      </action>
     </release>
     <release version="0.4" date="2005-May-19">
       <action dev="JW" type="fix" context="xs">



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to