You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by dk...@apache.org on 2007/10/18 21:55:08 UTC

svn commit: r586106 - in /incubator/cxf/trunk: rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/ rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/interceptors/ systests/src/test/java/org/apache/cxf/systest/provider/

Author: dkulp
Date: Thu Oct 18 12:55:07 2007
New Revision: 586106

URL: http://svn.apache.org/viewvc?rev=586106&view=rev
Log:
Throw fault if JAXB exception could not be mapped.   Call saveChanges before sending SAAJ message

Modified:
    incubator/cxf/trunk/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/JAXBSchemaInitializer.java
    incubator/cxf/trunk/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/Messages.properties
    incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/interceptors/DispatchOutDatabindingInterceptor.java
    incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/provider/HWSoapMessageProvider.java
    incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/provider/ProviderRPCClientServerTest.java
    incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/provider/TestSOAPHandler.java

Modified: incubator/cxf/trunk/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/JAXBSchemaInitializer.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/JAXBSchemaInitializer.java?rev=586106&r1=586105&r2=586106&view=diff
==============================================================================
--- incubator/cxf/trunk/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/JAXBSchemaInitializer.java (original)
+++ incubator/cxf/trunk/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/JAXBSchemaInitializer.java Thu Oct 18 12:55:07 2007
@@ -21,12 +21,16 @@
 
 import java.lang.reflect.Field;
 import java.util.Iterator;
+import java.util.logging.Logger;
 
 import javax.xml.namespace.QName;
 
 import com.sun.xml.bind.v2.runtime.JAXBContextImpl;
 import com.sun.xml.bind.v2.runtime.JaxBeanInfo;
 
+import org.apache.cxf.common.i18n.Message;
+import org.apache.cxf.common.logging.LogUtils;
+import org.apache.cxf.interceptor.Fault;
 import org.apache.cxf.service.ServiceModelVisitor;
 import org.apache.cxf.service.model.FaultInfo;
 import org.apache.cxf.service.model.MessagePartInfo;
@@ -46,6 +50,7 @@
  * Walks the service model and sets up the element/type names.
  */
 class JAXBSchemaInitializer extends ServiceModelVisitor {
+    private static final Logger LOG = LogUtils.getLogger(JAXBSchemaInitializer.class);
 
     private XmlSchemaCollection schemas;
     private JAXBContextImpl context;
@@ -196,6 +201,9 @@
             QName name = (QName)fault.getProperty("elementName");
             part.setElementQName(name);           
             JaxBeanInfo<?> beanInfo = context.getBeanInfo(cls);
+            if (beanInfo == null) {
+                throw new Fault(new Message("NO_BEAN_INFO", LOG, cls.getName()));
+            }
             SchemaInfo schemaInfo = null;
             for (SchemaInfo s : serviceInfo.getSchemas()) {
                 if (s.getNamespaceURI().equals(part.getElementQName().getNamespaceURI())

Modified: incubator/cxf/trunk/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/Messages.properties
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/Messages.properties?rev=586106&r1=586105&r2=586106&view=diff
==============================================================================
--- incubator/cxf/trunk/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/Messages.properties (original)
+++ incubator/cxf/trunk/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/Messages.properties Thu Oct 18 12:55:07 2007
@@ -22,8 +22,10 @@
 SCHEMA_NOT_RESOLVED = Could not resolve URI: {0}
 UNKNOWN_SOURCE = Marshalling Error, unrecognized source {0}.
 MARSHAL_ERROR = Marshalling Error: {0}
-UNMARSHAL_ERROR = Unmarshalling Error : {0} 
+UNMARSHAL_ERROR = Unmarshalling Error: {0} 
 UNKNOWN_ELEMENT_NAME = Could not determine the element name for {0}.
 UNKNOWN_PACKAGE_NS = No package info found for class {0}. Cannot lookup default schema namespace.
 SCHEMA_GEN_EXC = Could not generate schemas.
 CREATED_JAXB_CONTEXT = Created JAXBContext "{0}" with classes {1}.
+NO_BEAN_INFO = Could not find JAXB information for bean class {0} in context.   Make sure it follows JAXB conventions.
+ 
\ No newline at end of file

Modified: incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/interceptors/DispatchOutDatabindingInterceptor.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/interceptors/DispatchOutDatabindingInterceptor.java?rev=586106&r1=586105&r2=586106&view=diff
==============================================================================
--- incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/interceptors/DispatchOutDatabindingInterceptor.java (original)
+++ incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/interceptors/DispatchOutDatabindingInterceptor.java Thu Oct 18 12:55:07 2007
@@ -250,7 +250,7 @@
                         message.put(Message.PROTOCOL_HEADERS, heads);
                     }
                     
-                    //soapMessage.saveChanges();
+                    soapMessage.saveChanges();
                     Iterator<MimeHeader> smh = CastUtils.cast(soapMessage.getMimeHeaders().getAllHeaders());
                     while (smh.hasNext()) {
                         MimeHeader head = smh.next();

Modified: incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/provider/HWSoapMessageProvider.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/provider/HWSoapMessageProvider.java?rev=586106&r1=586105&r2=586106&view=diff
==============================================================================
--- incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/provider/HWSoapMessageProvider.java (original)
+++ incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/provider/HWSoapMessageProvider.java Thu Oct 18 12:55:07 2007
@@ -22,7 +22,6 @@
 
 import javax.jws.HandlerChain;
 import javax.xml.namespace.QName;
-import javax.xml.soap.AttachmentPart;
 import javax.xml.soap.MessageFactory;
 import javax.xml.soap.SOAPBody;
 import javax.xml.soap.SOAPMessage;
@@ -76,15 +75,9 @@
                 response = sayHiResponse;
             } else if (n.getLocalName().equals(greetMe.getLocalPart())) {
                 response = greetMeResponse;
-            } else if (n.getLocalName().equals("sayHiWAttach")) {
-                MessageFactory factory = MessageFactory.newInstance();            
-                InputStream is = getClass().getResourceAsStream("resources/sayHiRpcLiteralResp.xml");
-                response = factory.createMessage(null, is);
-                is.close();
-                
-                AttachmentPart ap1 = response.createAttachmentPart();
-                ap1.setContent("Return Attachment content", "text/plain");
-                response.addAttachmentPart(ap1);
+            } else {
+                response = request;
+                //response.writeTo(System.out);
             }
         } catch (Exception ex) {
             ex.printStackTrace();

Modified: incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/provider/ProviderRPCClientServerTest.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/provider/ProviderRPCClientServerTest.java?rev=586106&r1=586105&r2=586106&view=diff
==============================================================================
--- incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/provider/ProviderRPCClientServerTest.java (original)
+++ incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/provider/ProviderRPCClientServerTest.java Thu Oct 18 12:55:07 2007
@@ -55,13 +55,16 @@
         AttachmentPart ap1 = msg.createAttachmentPart();
         ap1.setContent("Attachment content", "text/plain");
         msg.addAttachmentPart(ap1);
+        AttachmentPart ap2 = msg.createAttachmentPart();
+        ap2.setContent("Attachment content - Part 2", "text/plain");
+        msg.addAttachmentPart(ap2);
         
         SOAPConnection con = conFac.createConnection();
         URL endpoint = new URL("http://localhost:9008/SOAPServiceProviderRPCLit/SoapPortProviderRPCLit1");
         SOAPMessage response = con.call(msg, endpoint); 
         QName sayHiResp = new QName("http://apache.org/hello_world_rpclit", "sayHiResponse");
         assertNotNull(response.getSOAPBody().getChildElements(sayHiResp));
-        assertEquals(1, response.countAttachments());
+        assertEquals(2, response.countAttachments());
     }
 
     private void doGreeterRPCLit(SOAPServiceRPCLit service, QName portName, int count) throws Exception {

Modified: incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/provider/TestSOAPHandler.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/provider/TestSOAPHandler.java?rev=586106&r1=586105&r2=586106&view=diff
==============================================================================
--- incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/provider/TestSOAPHandler.java (original)
+++ incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/provider/TestSOAPHandler.java Thu Oct 18 12:55:07 2007
@@ -55,8 +55,9 @@
                         Object elem2 = it2.next();
                         if (elem2 instanceof SOAPElement) {
                             String value = ((SOAPElement)elem2).getValue();
-                            if (value.indexOf("Milestone-0") >= 0
-                                || value.indexOf("TestGreetMeResponseServerLogicalHandler") >= 0) {
+                            if (value != null 
+                                && (value.indexOf("Milestone-0") >= 0
+                                || value.indexOf("TestGreetMeResponseServerLogicalHandler") >= 0)) {
                                 value = value + "ServerSOAPHandler";
                                 ((SOAPElement)elem2).setValue(value);
                             }