cxf-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From ulhasbh...@apache.org
Subject svn commit: r585445 - in /incubator/cxf/trunk: rt/core/src/main/java/org/apache/cxf/transport/http/ rt/transports/http-jetty/src/main/java/org/apache/cxf/transport/http_jetty/ systests/src/test/java/org/apache/cxf/systest/factory_pattern/
Date Wed, 17 Oct 2007 10:57:04 GMT
Author: ulhasbhole
Date: Wed Oct 17 03:57:01 2007
New Revision: 585445

URL: http://svn.apache.org/viewvc?rev=585445&view=rev
Log:
* Fix for JIRA CXF-1113 related to WSDLPublish and Default Servant.

Modified:
    incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/transport/http/WSDLQueryHandler.java
    incubator/cxf/trunk/rt/transports/http-jetty/src/main/java/org/apache/cxf/transport/http_jetty/JettyHTTPDestination.java
    incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/factory_pattern/MultiplexHttpAddressClientServerTest.java

Modified: incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/transport/http/WSDLQueryHandler.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/transport/http/WSDLQueryHandler.java?rev=585445&r1=585444&r2=585445&view=diff
==============================================================================
--- incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/transport/http/WSDLQueryHandler.java
(original)
+++ incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/transport/http/WSDLQueryHandler.java
Wed Oct 17 03:57:01 2007
@@ -358,7 +358,7 @@
             baseURI = url.getPath();
             int idx = baseURI.lastIndexOf('/');
             if (idx != -1) {
-                baseURI = baseURI.substring(0, idx + 1);
+                baseURI = baseURI.substring(0, idx);
             }
         }        
         return baseURI;

Modified: incubator/cxf/trunk/rt/transports/http-jetty/src/main/java/org/apache/cxf/transport/http_jetty/JettyHTTPDestination.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/transports/http-jetty/src/main/java/org/apache/cxf/transport/http_jetty/JettyHTTPDestination.java?rev=585445&r1=585444&r2=585445&view=diff
==============================================================================
--- incubator/cxf/trunk/rt/transports/http-jetty/src/main/java/org/apache/cxf/transport/http_jetty/JettyHTTPDestination.java
(original)
+++ incubator/cxf/trunk/rt/transports/http-jetty/src/main/java/org/apache/cxf/transport/http_jetty/JettyHTTPDestination.java
Wed Oct 17 03:57:01 2007
@@ -173,13 +173,21 @@
         }
     }
 
-    private synchronized void updateEndpointAddress(String addr) {
+    private String removeTrailingSeparator(String addr) {
+        if (addr.lastIndexOf('/') == addr.length() - 1) {
+            return addr.substring(0, addr.length() - 1);
+        } else {
+            return addr;
+        }
+    }
+    private synchronized String updateEndpointAddress(String addr) {
         // only update the EndpointAddress if the base path is equal
         // make sure we don't broke the get operation?parament query 
-        String address = endpointInfo.getAddress();
-        if (getBasePath(address).equals(getStem(getBasePath(addr)))) {
+        String address = removeTrailingSeparator(endpointInfo.getAddress());
+        if (getBasePath(address).equals(removeTrailingSeparator(getStem(getBasePath(addr)))))
{
             endpointInfo.setAddress(addr);
         }
+        return address;
     }
    
     protected void doService(HttpServletRequest req, HttpServletResponse resp) throws IOException
{
@@ -194,8 +202,9 @@
         }
         QueryHandlerRegistry queryHandlerRegistry = bus.getExtension(QueryHandlerRegistry.class);
         
-        if (null != req.getQueryString() && queryHandlerRegistry != null) {     
  
-            String requestURL = req.getRequestURL() + "?" + req.getQueryString();
+        if (null != req.getQueryString() && queryHandlerRegistry != null) {   
+            String reqAddr = req.getRequestURL().toString();
+            String requestURL =  reqAddr + "?" + req.getQueryString();
             String pathInfo = req.getPathInfo();                     
             for (QueryHandler qh : queryHandlerRegistry.getHandlers()) {
                 boolean recognized =
@@ -206,17 +215,21 @@
                                                                        contextMatchOnExact())
                     : qh.isRecognizedQuery(requestURL, pathInfo, endpointInfo);
                 if (recognized) {
-                    //replace the endpointInfo address with request url only for get wsdl
          
-                    updateEndpointAddress(req.getRequestURL().toString());   
-                    resp.setContentType(qh.getResponseContentType(requestURL, pathInfo));
-                    try {
-                        qh.writeResponse(requestURL, pathInfo, endpointInfo, resp.getOutputStream());
-                    } catch (Exception ex) {
-                        LOG.log(Level.WARNING, "writeResponse failed: ", ex);
+                    //replace the endpointInfo address with request url only for get wsdl
  
+                    synchronized (endpointInfo) {
+                        String oldAddress = updateEndpointAddress(reqAddr);   
+                        resp.setContentType(qh.getResponseContentType(requestURL, pathInfo));
+                        try {
+                            qh.writeResponse(requestURL, pathInfo, endpointInfo, resp.getOutputStream());
+                        } catch (Exception ex) {
+                            LOG.log(Level.WARNING, "writeResponse failed: ", ex);
+                        }
+                        endpointInfo.setAddress(oldAddress);
+                        resp.getOutputStream().flush();                     
+                        baseRequest.setHandled(true);
+                        return;    
                     }
-                    resp.getOutputStream().flush();                     
-                    baseRequest.setHandled(true);
-                    return;
+                    
                 }
             }
         }

Modified: incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/factory_pattern/MultiplexHttpAddressClientServerTest.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/factory_pattern/MultiplexHttpAddressClientServerTest.java?rev=585445&r1=585444&r2=585445&view=diff
==============================================================================
--- incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/factory_pattern/MultiplexHttpAddressClientServerTest.java
(original)
+++ incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/factory_pattern/MultiplexHttpAddressClientServerTest.java
Wed Oct 17 03:57:01 2007
@@ -20,9 +20,12 @@
 package org.apache.cxf.systest.factory_pattern;
 
 
+import java.io.BufferedReader;
+import java.io.InputStreamReader;
 import java.lang.reflect.InvocationHandler;
 import java.lang.reflect.Proxy;
 import java.net.URL;
+import java.net.URLConnection;
 import java.util.HashMap;
 import java.util.Map;
 
@@ -75,7 +78,7 @@
         Map<String, String> props = new HashMap<String, String>();    
         props.put("cxf.config.file", "org/apache/cxf/systest/factory_pattern/cxf.xml");
         assertTrue("server did not launch correctly",
-                   launchServer(Server.class, props, null));
+                   launchServer(Server.class, props, null, false));
     }
 
     
@@ -124,5 +127,44 @@
         firstChar = new URL(NumberFactoryImpl.NUMBER_SERVANT_ADDRESS_ROOT 
                                 + "103?wsdl").openStream().read();
         assertTrue("firstChar :" + String.valueOf(firstChar), firstChar == '<');
+    }
+    
+    @Test
+    public void testSoapAddressLocation() throws Exception {
+        
+        assertTrue("Should have received the soap:address location " 
+                   + NumberFactoryImpl.NUMBER_SERVANT_ADDRESS_ROOT, 
+                   checkSoapAddressLocation(NumberFactoryImpl.NUMBER_SERVANT_ADDRESS_ROOT));
+        assertTrue("Should have received the soap:address location " 
+                   + NumberFactoryImpl.NUMBER_SERVANT_ADDRESS_ROOT + "20", 
+                   checkSoapAddressLocation(NumberFactoryImpl.NUMBER_SERVANT_ADDRESS_ROOT
+ "20"));
+        assertTrue("Should have received the soap:address location " 
+                   + NumberFactoryImpl.NUMBER_SERVANT_ADDRESS_ROOT + "22", 
+                   checkSoapAddressLocation(NumberFactoryImpl.NUMBER_SERVANT_ADDRESS_ROOT
+ "22"));
+        assertTrue("Should have received the soap:address location " 
+                   + NumberFactoryImpl.NUMBER_SERVANT_ADDRESS_ROOT + "20", 
+                   checkSoapAddressLocation(NumberFactoryImpl.NUMBER_SERVANT_ADDRESS_ROOT
+ "20"));
+        assertTrue("Should have received the soap:address location " 
+                   + NumberFactoryImpl.NUMBER_SERVANT_ADDRESS_ROOT, 
+                   checkSoapAddressLocation(NumberFactoryImpl.NUMBER_SERVANT_ADDRESS_ROOT));
+    }
+    
+    private boolean checkSoapAddressLocation(String address) 
+        throws Exception {
+        URL url = new URL(address + "?wsdl");
+        
+        URLConnection urlConn = url.openConnection();
+        BufferedReader br = new BufferedReader(new InputStreamReader(urlConn.getInputStream()));
+        
+        while (br.ready()) {
+            String str = br.readLine();
+//            System.out.println(str);
+            if (str.contains("soap:address") 
+                && str.contains("location=" + "\"" + address + "\"")) {
+                System.out.println(str);
+                return  true;
+            }
+        }
+        return false;
     }
 }



Mime
View raw message