You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by em...@apache.org on 2010/06/04 12:08:00 UTC

svn commit: r951348 - in /cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws: DispatchImpl.java ServiceImpl.java

Author: ema
Date: Fri Jun  4 10:07:59 2010
New Revision: 951348

URL: http://svn.apache.org/viewvc?rev=951348&view=rev
Log:
[CXF-2836]:Refactor code and fix the build

Modified:
    cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/DispatchImpl.java
    cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/ServiceImpl.java

Modified: cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/DispatchImpl.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/DispatchImpl.java?rev=951348&r1=951347&r2=951348&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/DispatchImpl.java (original)
+++ cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/DispatchImpl.java Fri Jun  4 10:07:59 2010
@@ -55,6 +55,7 @@ import javax.xml.ws.soap.SOAPFaultExcept
 import org.w3c.dom.Document;
 import org.w3c.dom.Element;
 
+import org.apache.cxf.binding.soap.model.SoapOperationInfo;
 import org.apache.cxf.binding.soap.saaj.SAAJInInterceptor;
 import org.apache.cxf.binding.soap.saaj.SAAJOutInterceptor;
 import org.apache.cxf.common.i18n.Message;
@@ -289,35 +290,32 @@ public class DispatchImpl<T> implements 
                     wsaEnabled = true; 
                 }
             }
-            if (wsaEnabled) {
-                QName dispatchedOpName = null;
-
+            Map<String, QName> payloadOPMap = 
+                createPayloadEleOpNameMap(client.getEndpoint().getBinding().getBindingInfo());
+            if (wsaEnabled && !payloadOPMap.isEmpty()) {
+                String payloadElementName = null;              
                 if (obj instanceof javax.xml.transform.Source) {
                     try {
                         XMLStreamReader reader = StaxUtils
                             .createXMLStreamReader((javax.xml.transform.Source)obj);
                         Document document = StaxUtils.read(reader);
-                        dispatchedOpName = getDispatchedOpName(document.getDocumentElement());
-                        if (dispatchedOpName != null) {
-                            createdSource = new StaxSource(StaxUtils.createXMLStreamReader(document));
-                        }
-                    } catch (Exception e) {
-                        createdSource = null;
-                        opName = null;
+                        createdSource = new StaxSource(StaxUtils.createXMLStreamReader(document));
+                        payloadElementName = getPayloadElementName(document.getDocumentElement());
+                    } catch (Exception e) {                        
                         // ignore, we are tring to get the operation name
                     }
                 }
                 if (obj instanceof SOAPMessage) {
-                    dispatchedOpName = getDispatchedOpName((SOAPMessage)obj);
+                    payloadElementName = getPayloadElementName((SOAPMessage)obj);
 
                 }
 
                 if (this.context != null) {
-                    dispatchedOpName = getDispatchedOpName(obj);
+                    payloadElementName = getPayloadElementName(obj);
                 }
 
-                if (dispatchedOpName != null) {
-
+                if (payloadElementName != null) {
+                    QName dispatchedOpName = payloadOPMap.get(payloadElementName);
                     BindingOperationInfo bop = client.getEndpoint().getBinding().getBindingInfo()
                         .getOperation(opName);
                     if (bop != null) {
@@ -375,12 +373,7 @@ public class DispatchImpl<T> implements 
         return client;
     }
     
-    @SuppressWarnings("unchecked")
-    private QName getDispatchedOpName(Element ele) {
-        String payLoadName = null;
-        Map<String, QName> map = (Map<String, QName>)client.getEndpoint().getEndpointInfo().getBinding()
-            .getProperty("payloadElementOpNameMap");
-        
+    private String getPayloadElementName(Element ele) {
         XMLStreamReader xmlreader = StaxUtils.createXMLStreamReader(ele);
         DepthXMLStreamReader reader = new DepthXMLStreamReader(xmlreader);
         try {
@@ -388,46 +381,35 @@ public class DispatchImpl<T> implements 
 
                 StaxUtils.skipToStartOfElement(reader);
 
-                payLoadName = reader.getName().toString();
+                return reader.getName().toString();
             }
             if (this.mode == Service.Mode.MESSAGE) {
                 StaxUtils.skipToStartOfElement(reader);
                 StaxUtils.toNextTag(reader,
                                     new QName("http://schemas.xmlsoap.org/soap/envelope/", "Body"));
                 reader.nextTag();
-                payLoadName = reader.getName().toString();
+                return reader.getName().toString();
             }
         } catch (XMLStreamException e) {
             // ignore
         }
-        if (map != null && payLoadName != null) {
-            return map.get(payLoadName);
-        }
         return null;
         
     }
     
     
-    @SuppressWarnings("unchecked")
-    private QName getDispatchedOpName(SOAPMessage soapMessage) {
-        String payLoadName = null;
-        Map<String, QName> map = (Map<String, QName>)client.getEndpoint().getEndpointInfo().getBinding()
-            .getProperty("payloadElementOpNameMap");
+    private String getPayloadElementName(SOAPMessage soapMessage) {
         try {            
             SOAPElement element  = (SOAPElement)soapMessage.getSOAPBody().getChildElements().next();
-            payLoadName = new QName(element.getNamespaceURI(), element.getLocalName()).toString(); 
+            return new QName(element.getNamespaceURI(), element.getLocalName()).toString();
         } catch (Exception e) {
             //ignore
         }
-        
-        if (map != null && payLoadName != null) {
-            return map.get(payLoadName);
-        }
         return null;
         
     }
     
-    private QName getDispatchedOpName(Object object) {
+    private String getPayloadElementName(Object object) {
         JAXBDataBinding dataBinding = new JAXBDataBinding();
         dataBinding.setContext(context);
         DataWriter<XMLStreamWriter> dbwriter = dataBinding.createWriter(XMLStreamWriter.class);
@@ -444,12 +426,36 @@ public class DispatchImpl<T> implements 
 
                 StaxUtils.skipToStartOfElement(reader);
 
-                return reader.getName();
+                return reader.getName().toString();
 
             }
         } catch (XMLStreamException e) {
             // ignore
         }
         return null;
-    }   
+    }
+    
+    private Map<String, QName> createPayloadEleOpNameMap(BindingInfo bindingInfo) {
+        Map<String, QName> payloadElementMap = new java.util.HashMap<String, QName>();
+        for (BindingOperationInfo bop : bindingInfo.getOperations()) {
+            SoapOperationInfo soi = (SoapOperationInfo)bop.getExtensor(SoapOperationInfo.class);
+            if (soi != null) {
+                if ("document".equals(soi.getStyle())) {
+                    // if doc
+                    if (bop.getOperationInfo().getInput() != null
+                        && !bop.getOperationInfo().getInput().getMessageParts().isEmpty()) {
+                        QName qn = bop.getOperationInfo().getInput().getMessagePartByIndex(0)
+                            .getElementQName();
+                        payloadElementMap.put(qn.toString(), bop.getOperationInfo().getName());
+                    }
+                } else if ("rpc".equals(soi.getStyle())) {
+                    // if rpc
+                    payloadElementMap.put(bop.getOperationInfo().getName().toString(), bop.getOperationInfo()
+                        .getName());
+                }
+            }
+        }
+        return payloadElementMap;
+    }
+    
 }

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=951348&r1=951347&r2=951348&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 Fri Jun  4 10:07:59 2010
@@ -51,14 +51,12 @@ import javax.xml.ws.WebServiceException;
 import javax.xml.ws.WebServiceFeature;
 import javax.xml.ws.handler.Handler;
 import javax.xml.ws.handler.HandlerResolver;
-import javax.xml.ws.soap.AddressingFeature;
 import javax.xml.ws.soap.SOAPBinding;
 import javax.xml.ws.spi.ServiceDelegate;
 
 import org.apache.cxf.Bus;
 import org.apache.cxf.BusException;
 import org.apache.cxf.binding.BindingFactoryManager;
-import org.apache.cxf.binding.soap.model.SoapOperationInfo;
 import org.apache.cxf.common.i18n.Message;
 import org.apache.cxf.common.logging.LogUtils;
 import org.apache.cxf.common.util.PackageUtils;
@@ -88,7 +86,6 @@ import org.apache.cxf.service.factory.Ab
 import org.apache.cxf.service.factory.ReflectionServiceFactoryBean;
 import org.apache.cxf.service.factory.ServiceConstructionException;
 import org.apache.cxf.service.model.BindingInfo;
-import org.apache.cxf.service.model.BindingOperationInfo;
 import org.apache.cxf.service.model.EndpointInfo;
 import org.apache.cxf.service.model.ServiceInfo;
 import org.apache.cxf.service.model.ServiceModelUtil;
@@ -629,19 +626,7 @@ public class ServiceImpl extends Service
         if (executor != null) {
             client.getEndpoint().setExecutor(executor);
         }
-        
-        //CXF-2836:create wsdlOperation name and payloadElement Map
-        boolean wsaFeature = false;
-        for (WebServiceFeature feature : features) {
-            if (feature instanceof AddressingFeature 
-                && ((AddressingFeature)feature).isEnabled()) {
-                wsaFeature = true;
-            }
-        }
-        if (wsaFeature) {
-            createPayloadEleOpNameMap(client.getEndpoint().getEndpointInfo().getBinding());
-        }
-        
+                
         Dispatch<T> disp = new DispatchImpl<T>(client, mode, type);
         configureObject(disp);
         return disp;
@@ -691,17 +676,7 @@ public class ServiceImpl extends Service
         if (executor != null) {
             client.getEndpoint().setExecutor(executor);
         }
-        //CXF-2836:create wsdlOperation name and payloadElement Map
-        boolean wsaFeature = false;
-        for (WebServiceFeature feature : features) {
-            if (feature instanceof AddressingFeature 
-                && ((AddressingFeature)feature).isEnabled()) {
-                wsaFeature = true;
-            }
-        }
-        if (wsaFeature) {
-            createPayloadEleOpNameMap(client.getEndpoint().getEndpointInfo().getBinding());
-        }        
+        
         Dispatch<Object> disp = new DispatchImpl<Object>(client, mode, 
                                                          context, Object.class);
         configureObject(disp);
@@ -732,31 +707,7 @@ public class ServiceImpl extends Service
         client.getOutInterceptors().addAll(clientFact.getOutInterceptors());
         client.getInFaultInterceptors().addAll(clientFact.getInFaultInterceptors());
         client.getOutFaultInterceptors().addAll(clientFact.getOutFaultInterceptors());
-    }
-
-    // Create payload element and operationName map
-    private void createPayloadEleOpNameMap(BindingInfo bindingInfo) {
-        Map<String, QName> payloadElementMap = new java.util.HashMap<String, QName>();
-        for (BindingOperationInfo bop : bindingInfo.getOperations()) {
-            SoapOperationInfo soi = (SoapOperationInfo)bop.getExtensor(SoapOperationInfo.class);
-            if (soi != null) {
-                if ("document".equals(soi.getStyle())) {
-                    // if doc
-                    if (bop.getOperationInfo().getInput() != null
-                        && !bop.getOperationInfo().getInput().getMessageParts().isEmpty()) {
-                        QName qn = bop.getOperationInfo().getInput().getMessagePartByIndex(0)
-                            .getElementQName();
-                        payloadElementMap.put(qn.toString(), bop.getOperationInfo().getName());
-                    }
-                } else if ("rpc".equals(soi.getStyle())) {
-                    // if rpc
-                    payloadElementMap.put(bop.getOperationInfo().getName().toString(), bop.getOperationInfo()
-                        .getName());
-                }
-            }
-        }
-        bindingInfo.setProperty("payloadElementOpNameMap", payloadElementMap);
-    }
+    }    
 }