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 2009/04/16 23:36:55 UTC

svn commit: r765773 [2/2] - in /cxf/trunk: common/common/src/main/java/org/apache/cxf/staxutils/ rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/saaj/ rt/core/src/main/java/org/apache/cxf/attachment/ rt/core/src/main/java/org/apache/cxf/data...

Added: cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/JaxwsResponseCallback.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/JaxwsResponseCallback.java?rev=765773&view=auto
==============================================================================
--- cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/JaxwsResponseCallback.java (added)
+++ cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/JaxwsResponseCallback.java Thu Apr 16 21:36:54 2009
@@ -0,0 +1,62 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, 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.cxf.jaxws;
+
+import java.util.Map;
+import java.util.concurrent.ExecutionException;
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.TimeoutException;
+
+import javax.xml.ws.Response;
+
+import org.apache.cxf.endpoint.ClientCallback;
+
+class JaxwsResponseCallback<T> implements Response<T> {
+    ClientCallback callback;
+    public JaxwsResponseCallback(ClientCallback cb) {
+        callback = cb;
+    }
+    
+    public Map<String, Object> getContext() {
+        try {
+            return callback.getResponseContext();
+        } catch (Exception ex) {
+            return null;
+        }
+    }
+    public boolean cancel(boolean mayInterruptIfRunning) {
+        return callback.cancel(mayInterruptIfRunning);
+    }
+    @SuppressWarnings("unchecked")
+    public T get() throws InterruptedException, ExecutionException {
+        return (T)callback.get()[0];
+    }
+    @SuppressWarnings("unchecked")
+    public T get(long timeout, TimeUnit unit) throws InterruptedException,
+        ExecutionException, TimeoutException {
+        return (T)callback.get(timeout, unit)[0];
+    }
+    public boolean isCancelled() {
+        return callback.isCancelled();
+    }
+    public boolean isDone() {
+        return callback.isDone();
+    }
+}
\ No newline at end of file

Propchange: cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/JaxwsResponseCallback.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/JaxwsResponseCallback.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Modified: cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/Messages.properties
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/Messages.properties?rev=765773&r1=765772&r2=765773&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/Messages.properties (original)
+++ cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/Messages.properties Thu Apr 16 21:36:54 2009
@@ -17,25 +17,7 @@
 #    specific language governing permissions and limitations
 #    under the License.
 #
-#
-#WEBSERVICE_ANNOTATION_NOT_PRESENT_MSG = Implementor or SEI is not annotated with WebService annotation
-#SEI_NOT_IMPLEMENTED_MSG = Implementor does not implement required SEI
-#METHOD_NOT_DEFINED_MSG = Method {0} is not defined in SEI
-##SERVER_BINDING_ACTIVATION_FAILURE_MSG = Failed to publish endpoint - server binding could not be activated
-#ENDPOINT_ALREADY_PUBLISHED_MSG = Endpoint is already published
-#ENDPOINT_INACTIVE_MSG = Endpoint is not active
-#ENDPOINT_ALREADY_REGISTERED_MSG = Endpoint is already registered
-#ENDPOINT_ACTIVE_MSG = Can't unregister active endpoint
-#BINDING_INCOMPATIBLE_CONTEXT_EXC = Server context does not contain address information compatible with binding.
-#BINDING_INCOMPATIBLE_ADDRESS_EXC = Address is incompatible with binding.
-#BINDING_FACTORY_MISSING_EXC = Could not find binding for {0}
-#ENDPOINT_INVOCATION_FAILED = SEI Method {0} raised exception.  See exception for details.
-#BINDING_PROVIDER_METHOD_EXC = BindingProvider method {0} failed.
-#ASYNC_HANDLER_TIMEDOUT_EXC = AsyncHandler did not complete time.
-#BINDING_ID_NOT_IDENTICAL_MSG = BindingType in the impl class is not identical to the one in WSDL.
-#DISPATCH_INVOKE_EXC = Dispatch of {0} raised exception.  See exception for details.
-#WSDL_DESCRIPTION_URI_MSG = Failed to set context property javax.xml.ws.wsdl.description as URI. A URL will be used instead.
-#WSDL_DESCRIPTION_URL_MSG = Failed to set context property javax.xml.ws.wsdl.description as URL.
+
 
 UNSUPPORTED_API_EXC = Method {0} is not supported yet.
 PORT_NAME_NULL_EXC = Port name must not be null.
@@ -52,4 +34,6 @@
 
 ENDPOINT_NOT_PUBLISHED = Endpoint has not been published yet. 
 ENDPOINTREFERENCE_TYPE_NOT_SUPPORTED = Class type {0} is not a subclass of EndpointReference or the Endpoint implementation does not support EndpointReferences of this type.
-GET_ENDPOINTREFERENCE_UNSUPPORTED_BINDING = getEndpointReference not support binding HTTP Binding.
\ No newline at end of file
+GET_ENDPOINTREFERENCE_UNSUPPORTED_BINDING = getEndpointReference not support binding HTTP Binding.
+
+DISPATCH_OBJECT_NOT_SUPPORTED = {0} is not valid in {1} mode with {2} binding.

Modified: cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/ServiceImpl.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/ServiceImpl.java?rev=765773&r1=765772&r2=765773&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/ServiceImpl.java (original)
+++ cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/ServiceImpl.java Thu Apr 16 21:36:54 2009
@@ -586,8 +586,10 @@
         for (AbstractFeature af : clientFac.getFeatures()) {
             af.initialize(client, bus);
         }
-        
-        Dispatch<T> disp = new DispatchImpl<T>(bus, client, mode, type, getExecutor());
+        if (executor != null) {
+            client.getEndpoint().setExecutor(executor);
+        }
+        Dispatch<T> disp = new DispatchImpl<T>(client, mode, type);
         configureObject(disp);
 
         return disp;
@@ -621,7 +623,9 @@
 
         AbstractServiceFactoryBean sf = null;
         try {
-            sf = createDispatchService(new JAXBDataBinding(context));
+            JAXBDataBinding db = new JAXBDataBinding(context);
+            db.setUnwrapJAXBElement(false);
+            sf = createDispatchService(db);
         } catch (ServiceConstructionException e) {
             throw new WebServiceException(e);
         }
@@ -630,8 +634,11 @@
         for (AbstractFeature af : clientFac.getFeatures()) {
             af.initialize(client, bus);
         }
-        Dispatch<Object> disp = new DispatchImpl<Object>(bus, client, mode, 
-                                                         context, Object.class, getExecutor());
+        if (executor != null) {
+            client.getEndpoint().setExecutor(executor);
+        }
+        Dispatch<Object> disp = new DispatchImpl<Object>(client, mode, 
+                                                         context, Object.class);
         configureObject(disp);
 
         return disp;

Modified: cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/logical/LogicalHandlerOutInterceptor.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/logical/LogicalHandlerOutInterceptor.java?rev=765773&r1=765772&r2=765773&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/logical/LogicalHandlerOutInterceptor.java (original)
+++ cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/logical/LogicalHandlerOutInterceptor.java Thu Apr 16 21:36:54 2009
@@ -29,6 +29,8 @@
 import javax.xml.ws.Binding;
 
 import org.w3c.dom.Document;
+import org.w3c.dom.DocumentFragment;
+import org.w3c.dom.Element;
 import org.w3c.dom.Node;
 
 import org.apache.cxf.endpoint.Endpoint;
@@ -40,6 +42,7 @@
 import org.apache.cxf.phase.Phase;
 import org.apache.cxf.phase.PhaseInterceptorChain;
 import org.apache.cxf.staxutils.StaxUtils;
+import org.apache.cxf.staxutils.W3CDOMStreamReader;
 import org.apache.cxf.staxutils.W3CDOMStreamWriter;
 import org.apache.cxf.transport.MessageObserver;
 
@@ -67,7 +70,7 @@
             XMLStreamWriter origWriter = message.getContent(XMLStreamWriter.class);
             Document document = XMLUtils.newDocument();
             message.setContent(Node.class, document);
-            W3CDOMStreamWriter writer = new W3CDOMStreamWriter(document);
+            W3CDOMStreamWriter writer = new W3CDOMStreamWriter(document.createDocumentFragment());
         
             // Replace stax writer with DomStreamWriter
             message.setContent(XMLStreamWriter.class, writer);        
@@ -112,6 +115,16 @@
                 origMessage = message.getContent(SOAPMessage.class);
                 message.setContent(XMLStreamReader.class, reader);
                 message.removeContent(SOAPMessage.class);
+            } else if (domWriter.getCurrentFragment() != null) {
+                DocumentFragment frag = domWriter.getCurrentFragment();
+                Node nd = frag.getFirstChild();
+                while (nd != null && !(nd instanceof Element)) {
+                    nd = nd.getNextSibling();
+                }
+                Source source = new DOMSource(nd);
+                message.setContent(Source.class, source);
+                message.setContent(XMLStreamReader.class,
+                                   new W3CDOMStreamReader(domWriter.getCurrentFragment()));
             } else if (domWriter.getDocument().getDocumentElement() != null) {
                 Source source = new DOMSource(domWriter.getDocument());
                 message.setContent(Source.class, source);

Modified: cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/logical/LogicalMessageImpl.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/logical/LogicalMessageImpl.java?rev=765773&r1=765772&r2=765773&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/logical/LogicalMessageImpl.java (original)
+++ cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/logical/LogicalMessageImpl.java Thu Apr 16 21:36:54 2009
@@ -190,7 +190,8 @@
 
     public void setPayload(Source s) {       
         Message message = msgContext.getWrappedMessage();
-        Service.Mode mode = msgContext.getWrappedMessage().getExchange().get(Service.Mode.class);
+        Service.Mode mode = (Service.Mode)msgContext.getWrappedMessage()
+            .getContextualProperty(Service.Mode.class.getName());
         if (mode != null) {
             if (message instanceof SoapMessage) {
                 if (mode == Service.Mode.MESSAGE) {

Modified: cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/interceptors/WrapperClassOutInterceptor.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/interceptors/WrapperClassOutInterceptor.java?rev=765773&r1=765772&r2=765773&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/interceptors/WrapperClassOutInterceptor.java (original)
+++ cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/interceptors/WrapperClassOutInterceptor.java Thu Apr 16 21:36:54 2009
@@ -113,8 +113,9 @@
                 }
 
                 message.setContent(List.class, newObjs);
+            } catch (Fault f) {
+                throw f;
             } catch (Exception e) {
-                e.printStackTrace();
                 throw new Fault(e);
             }
             

Modified: cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/support/DummyImpl.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/support/DummyImpl.java?rev=765773&r1=765772&r2=765773&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/support/DummyImpl.java (original)
+++ cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/support/DummyImpl.java Thu Apr 16 21:36:54 2009
@@ -18,13 +18,11 @@
  */
 package org.apache.cxf.jaxws.support;
 
+import javax.jws.soap.SOAPBinding;
+import javax.jws.soap.SOAPBinding.ParameterStyle;
+
 // this class do nothing here, just for a dispatch impl
-public class DummyImpl {
-//    public void invokeOneWay(Object o) {
-//        
-//    }
-//    
-//    public Object invoke(Object o) {
-//        return null;
-//    }
+@SOAPBinding(parameterStyle = ParameterStyle.BARE)
+public interface DummyImpl {
+
 }

Modified: cxf/trunk/systests/src/test/java/org/apache/cxf/systest/dispatch/DispatchClientServerTest.java
URL: http://svn.apache.org/viewvc/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/dispatch/DispatchClientServerTest.java?rev=765773&r1=765772&r2=765773&view=diff
==============================================================================
--- cxf/trunk/systests/src/test/java/org/apache/cxf/systest/dispatch/DispatchClientServerTest.java (original)
+++ cxf/trunk/systests/src/test/java/org/apache/cxf/systest/dispatch/DispatchClientServerTest.java Thu Apr 16 21:36:54 2009
@@ -36,6 +36,7 @@
 import javax.xml.ws.Response;
 import javax.xml.ws.Service;
 
+import org.w3c.dom.Document;
 import org.w3c.dom.Node;
 
 import org.xml.sax.InputSource;
@@ -45,6 +46,8 @@
 import org.apache.cxf.bus.spring.SpringBusFactory;
 import org.apache.cxf.helpers.DOMUtils;
 import org.apache.cxf.helpers.XMLUtils;
+import org.apache.cxf.interceptor.LoggingInInterceptor;
+import org.apache.cxf.interceptor.LoggingOutInterceptor;
 import org.apache.cxf.testutil.common.AbstractBusClientServerTestBase;
 import org.apache.cxf.testutil.common.AbstractBusTestServerBase;
 import org.apache.hello_world_soap_http.GreeterImpl;
@@ -86,6 +89,12 @@
     public static void startServers() throws Exception {
         assertTrue("server did not launch correctly", launchServer(Server.class));
     }
+    
+    @org.junit.Before
+    public void setUp() {
+        BusFactory.getDefaultBus().getOutInterceptors().add(new LoggingOutInterceptor());
+        BusFactory.getDefaultBus().getInInterceptors().add(new LoggingInInterceptor());
+    }
 
     @Test
     public void testSOAPMessage() throws Exception {
@@ -210,6 +219,7 @@
     
     @Test
     public void testDOMSourcePAYLOAD() throws Exception {
+        
         /*URL wsdl = getClass().getResource("/wsdl/hello_world.wsdl");
         assertNotNull(wsdl);
 
@@ -232,8 +242,15 @@
         
         assertNotNull(domResMsg);
         String expected = "Hello TestSOAPInputMessage";
-        assertEquals("Response should be : Hello TestSOAPInputMessage", expected, domResMsg.getNode()
-            .getTextContent().trim());
+        
+        Node node = domResMsg.getNode();
+        assertNotNull(node);
+        if (node instanceof Document) {
+            node = ((Document)node).getDocumentElement();
+        }
+        String content = node.getTextContent();
+        assertNotNull(content);
+        assertEquals("Response should be : Hello TestSOAPInputMessage", expected, content.trim());
 
         InputStream is1 = getClass().getResourceAsStream("resources/GreetMeDocLiteralReq1.xml");
         SOAPMessage soapReqMsg1 = MessageFactory.newInstance().createMessage(null, is1);
@@ -251,8 +268,16 @@
         DOMSource domRespMsg2 = (DOMSource)response.get();
         assertNotNull(domRespMsg2);
         String expected2 = "Hello TestSOAPInputMessage2";
-        assertEquals("Response should be : Hello TestSOAPInputMessage2", expected2, domRespMsg2.getNode()
-            .getTextContent().trim());
+        
+        node = domRespMsg2.getNode();
+        assertNotNull(node);
+        if (node instanceof Document) {
+            node = ((Document)node).getDocumentElement();
+        }
+        content = node.getTextContent();
+        assertNotNull(content);
+
+        assertEquals("Response should be : Hello TestSOAPInputMessage2", expected2, content.trim());
 
         InputStream is3 = getClass().getResourceAsStream("resources/GreetMeDocLiteralReq3.xml");
         SOAPMessage soapReqMsg3 = MessageFactory.newInstance().createMessage(null, is3);

Modified: cxf/trunk/systests/src/test/java/org/apache/cxf/systest/handlers/DispatchHandlerInvocationTest.java
URL: http://svn.apache.org/viewvc/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/handlers/DispatchHandlerInvocationTest.java?rev=765773&r1=765772&r2=765773&view=diff
==============================================================================
--- cxf/trunk/systests/src/test/java/org/apache/cxf/systest/handlers/DispatchHandlerInvocationTest.java (original)
+++ cxf/trunk/systests/src/test/java/org/apache/cxf/systest/handlers/DispatchHandlerInvocationTest.java Thu Apr 16 21:36:54 2009
@@ -191,7 +191,7 @@
             disp.invoke(soapReq);
             fail("Did not get expected exception");
         } catch (SOAPFaultException e) {
-            assertTrue("Did not get expected exception message",  e.getMessage()
+            assertTrue("Did not get expected exception message: " + e.getMessage(),  e.getMessage()
                        .indexOf("is not valid in PAYLOAD mode with SOAP/HTTP binding") > -1);
         }
     }