HI Ulhas, May be you need to check the CXFServlet transport for the same fixing. ;)
Willem. ulhasbhole wrote: > > 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; > } > } > > > > -- View this message in context: http://www.nabble.com/svn-commit%3A-r585445---in--incubator-cxf-trunk%3A-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--tf4639580.html#a13254799 Sent from the cxf-commits mailing list archive at Nabble.com.
