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]