[jboss-svn-commits] JBossWS SVN: r615 - branches/jbossws-1.0/src/main/java/org/jboss/ws/jaxrpc/encoding

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Mon Jul 17 10:54:11 EDT 2006


Author: heiko.braun at jboss.com
Date: 2006-07-17 10:54:09 -0400 (Mon, 17 Jul 2006)
New Revision: 615

Modified:
   branches/jbossws-1.0/src/main/java/org/jboss/ws/jaxrpc/encoding/JAXBSerializer.java
Log:
different serialization strategy for exceptions

Modified: branches/jbossws-1.0/src/main/java/org/jboss/ws/jaxrpc/encoding/JAXBSerializer.java
===================================================================
--- branches/jbossws-1.0/src/main/java/org/jboss/ws/jaxrpc/encoding/JAXBSerializer.java	2006-07-14 17:14:36 UTC (rev 614)
+++ branches/jbossws-1.0/src/main/java/org/jboss/ws/jaxrpc/encoding/JAXBSerializer.java	2006-07-17 14:54:09 UTC (rev 615)
@@ -29,6 +29,7 @@
 import org.jboss.ws.jaxb.JAXBConstants;
 import org.jboss.ws.jaxb.JAXBMarshaller;
 import org.jboss.ws.jaxb.JBossXBMarshallerImpl;
+import org.jboss.ws.jaxb.XercesXSMarshallerImpl;
 import org.jboss.ws.metadata.jaxrpcmapping.JavaWsdlMapping;
 import org.w3c.dom.NamedNodeMap;
 
@@ -84,13 +85,26 @@
          // Get the jaxrpc-mapping.xml object graph
          JavaWsdlMapping jaxrpcMapping = serContext.getJavaWsdlMapping();
 
-         marshaller.setProperty(JAXBConstants.JAXB_XS_MODEL, model);
-         marshaller.setProperty(JAXBConstants.JAXB_TYPE_QNAME, xmlType);
-         marshaller.setProperty(JAXBConstants.JAXB_ROOT_QNAME, xmlName);
-         marshaller.setProperty(JAXBConstants.JAXB_JAVA_MAPPING, jaxrpcMapping);
+         StringWriter strwr = new StringWriter();
 
-         StringWriter strwr = new StringWriter();
-         marshaller.marshal(value, strwr);
+         // schemabinding marshaller is the default delegate
+         JAXBMarshaller delegate = marshaller;
+
+         if(value instanceof Exception)
+         {
+            // todo: CTS workaround for custom exceptions, clarify when Alexey is back
+            // causes NPE in MarshallerImpl:458
+            delegate = new XercesXSMarshallerImpl();
+         }
+
+         // marshalling context
+         delegate.setProperty(JAXBConstants.JAXB_XS_MODEL, model);
+         delegate.setProperty(JAXBConstants.JAXB_TYPE_QNAME, xmlType);
+         delegate.setProperty(JAXBConstants.JAXB_ROOT_QNAME, xmlName);
+         delegate.setProperty(JAXBConstants.JAXB_JAVA_MAPPING, jaxrpcMapping);
+
+         // marshall
+         delegate.marshal(value, strwr);
          xmlFragment = strwr.toString();
 
          log.debug("serialized: " + xmlFragment);




More information about the jboss-svn-commits mailing list