Author: thomas.diesler(a)jboss.com
Date: 2006-10-17 08:35:24 -0400 (Tue, 17 Oct 2006)
New Revision: 1237
Modified:
branches/jbossws-1.0/src/main/java/org/jboss/ws/utils/DOMWriter.java
branches/jbossws-1.0/src/test/java/org/jboss/test/ws/jaxrpc/jbws1303/JBWS1303TestCase.java
branches/jbossws-1.0/src/test/java/org/jboss/test/ws/jaxrpc/jbws1303/ServerHandler.java
Log:
[JBWS-1303] Unmarshall issue with xsi:type specified bean property
Modified: branches/jbossws-1.0/src/main/java/org/jboss/ws/utils/DOMWriter.java
===================================================================
--- branches/jbossws-1.0/src/main/java/org/jboss/ws/utils/DOMWriter.java 2006-10-17
11:10:30 UTC (rev 1236)
+++ branches/jbossws-1.0/src/main/java/org/jboss/ws/utils/DOMWriter.java 2006-10-17
12:35:24 UTC (rev 1237)
@@ -291,6 +291,14 @@
{
String nsURI = getNamespaceURI(atPrefix, element, rootNode);
nsMap.put(atPrefix, nsURI);
+
+ // xsi:type='ns1:SubType', xsi:type='xsd:string'
+ if (atName.equals(atPrefix + ":type") &&
nsURI.equals("http://www.w3.org/2001/XMLSchema-instance") &&
atValue.indexOf(":") > 0)
+ {
+ String typePrefix = atValue.substring(0,
atValue.indexOf(":"));
+ String typeURI = getNamespaceURI(typePrefix, element, rootNode);
+ nsMap.put(typePrefix, typeURI);
+ }
}
out.print(" " + atName + "='" + atValue +
"'");
Modified:
branches/jbossws-1.0/src/test/java/org/jboss/test/ws/jaxrpc/jbws1303/JBWS1303TestCase.java
===================================================================
---
branches/jbossws-1.0/src/test/java/org/jboss/test/ws/jaxrpc/jbws1303/JBWS1303TestCase.java 2006-10-17
11:10:30 UTC (rev 1236)
+++
branches/jbossws-1.0/src/test/java/org/jboss/test/ws/jaxrpc/jbws1303/JBWS1303TestCase.java 2006-10-17
12:35:24 UTC (rev 1237)
@@ -61,11 +61,6 @@
public void testEndpoint() throws Exception
{
- if (true)
- {
- System.out.println("FIXME: JBWS-1303");
- return;
- }
Lastmod lastmod = new Lastmod("yesterday");
LastmodResponse lastmodRes = port.lastmod(lastmod);
assertEquals("yesterday", lastmodRes.getTimeChanged());
Modified:
branches/jbossws-1.0/src/test/java/org/jboss/test/ws/jaxrpc/jbws1303/ServerHandler.java
===================================================================
---
branches/jbossws-1.0/src/test/java/org/jboss/test/ws/jaxrpc/jbws1303/ServerHandler.java 2006-10-17
11:10:30 UTC (rev 1236)
+++
branches/jbossws-1.0/src/test/java/org/jboss/test/ws/jaxrpc/jbws1303/ServerHandler.java 2006-10-17
12:35:24 UTC (rev 1237)
@@ -27,8 +27,11 @@
import javax.xml.rpc.handler.soap.SOAPMessageContext;
import javax.xml.soap.MessageFactory;
import javax.xml.soap.SOAPElement;
+import javax.xml.soap.SOAPEnvelope;
import javax.xml.soap.SOAPMessage;
+import org.jboss.ws.Constants;
+
public class ServerHandler extends GenericHandler
{
public QName[] getHeaders()
@@ -37,11 +40,11 @@
}
/**
- * <env:Envelope
xmlns:env='http://schemas.xmlsoap.org/soap/envelope/'>
+ * <env:Envelope
xmlns:env='http://schemas.xmlsoap.org/soap/envelope/'
xmlns:xsd='http://www.w3.org/2001/XMLSchema'>
* <env:Header/>
* <env:Body>
* <lastmodResponse xmlns='http://netid.msu.edu:8080/lastmod.pl'>
- * <TimeChanged
xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
xsi:type='string'>yesterday</TimeChanged>
+ * <TimeChanged
xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
xsi:type='xsd:string'>yesterday</TimeChanged>
* </lastmodResponse>
* </env:Body>
* </env:Envelope>
@@ -51,11 +54,13 @@
try
{
SOAPMessage soapMessage = MessageFactory.newInstance().createMessage();
+ SOAPEnvelope soapEnvelope = soapMessage.getSOAPPart().getEnvelope();
+ soapEnvelope.addNamespaceDeclaration(Constants.PREFIX_XSD,
Constants.NS_SCHEMA_XSD);
SOAPElement bodyElement =
soapMessage.getSOAPBody().addChildElement("lastmodResponse");
bodyElement.setAttribute("xmlns",
"http://netid.msu.edu:8080/lastmod.pl");
SOAPElement soapElement = bodyElement.addChildElement("TimeChanged");
- soapElement.addNamespaceDeclaration("xsi",
"http://www.w3.org/2001/XMLSchema-instance");
- soapElement.setAttribute("xsi:type", "string");
+ soapElement.addNamespaceDeclaration(Constants.PREFIX_XSI,
Constants.NS_SCHEMA_XSI);
+ soapElement.setAttribute("xsi:type", "xsd:string");
soapElement.setValue("yesterday");
((SOAPMessageContext)msgContext).setMessage(soapMessage);
}