Return-Path: Delivered-To: apmail-cxf-commits-archive@www.apache.org Received: (qmail 84895 invoked from network); 24 Mar 2011 21:30:28 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.3) by minotaur.apache.org with SMTP; 24 Mar 2011 21:30:28 -0000 Received: (qmail 78748 invoked by uid 500); 24 Mar 2011 21:30:28 -0000 Delivered-To: apmail-cxf-commits-archive@cxf.apache.org Received: (qmail 78711 invoked by uid 500); 24 Mar 2011 21:30:28 -0000 Mailing-List: contact commits-help@cxf.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@cxf.apache.org Delivered-To: mailing list commits@cxf.apache.org Received: (qmail 78704 invoked by uid 99); 24 Mar 2011 21:30:28 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 24 Mar 2011 21:30:28 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=5.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 24 Mar 2011 21:30:22 +0000 Received: by eris.apache.org (Postfix, from userid 65534) id CEE5023889B9; Thu, 24 Mar 2011 21:29:59 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r1085152 - in /cxf/trunk/rt/transports: http-osgi/src/main/java/org/apache/cxf/transport/http_osgi/ http-osgi/src/main/resources/META-INF/cxf/osgi/ http-osgi/src/test/java/org/apache/cxf/transport/http_osgi/ http/src/main/java/org/apache/cx... Date: Thu, 24 Mar 2011 21:29:59 -0000 To: commits@cxf.apache.org From: cschneider@apache.org X-Mailer: svnmailer-1.0.8 Message-Id: <20110324212959.CEE5023889B9@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: cschneider Date: Thu Mar 24 21:29:58 2011 New Revision: 1085152 URL: http://svn.apache.org/viewvc?rev=1085152&view=rev Log: CXF-3419 Removed most of the osgi transport code Added: cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/servlet/BaseUrlHelper.java cxf/trunk/rt/transports/http/src/test/java/org/apache/cxf/transport/servlet/servicelist/ cxf/trunk/rt/transports/http/src/test/java/org/apache/cxf/transport/servlet/servicelist/BaseUrlHelperTest.java Removed: cxf/trunk/rt/transports/http-osgi/src/main/java/org/apache/cxf/transport/http_osgi/OsgiDestination.java cxf/trunk/rt/transports/http-osgi/src/main/java/org/apache/cxf/transport/http_osgi/OsgiServletController.java cxf/trunk/rt/transports/http-osgi/src/main/java/org/apache/cxf/transport/http_osgi/OsgiTransportFactory.java cxf/trunk/rt/transports/http-osgi/src/test/java/org/apache/cxf/transport/http_osgi/OsgiDestinationTest.java cxf/trunk/rt/transports/http-osgi/src/test/java/org/apache/cxf/transport/http_osgi/OsgiTransportFactoryTest.java cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/servlet/AbstractServletController.java Modified: cxf/trunk/rt/transports/http-osgi/src/main/java/org/apache/cxf/transport/http_osgi/OsgiServlet.java cxf/trunk/rt/transports/http-osgi/src/main/resources/META-INF/cxf/osgi/cxf-extension-osgi.xml cxf/trunk/rt/transports/http-osgi/src/test/java/org/apache/cxf/transport/http_osgi/OsgiServletTest.java cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/servlet/AbstractCXFServlet.java cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/servlet/ServletController.java cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/servlet/ServletTransportFactory.java cxf/trunk/rt/transports/http/src/test/java/org/apache/cxf/transport/servlet/ServletControllerTest.java Modified: cxf/trunk/rt/transports/http-osgi/src/main/java/org/apache/cxf/transport/http_osgi/OsgiServlet.java URL: http://svn.apache.org/viewvc/cxf/trunk/rt/transports/http-osgi/src/main/java/org/apache/cxf/transport/http_osgi/OsgiServlet.java?rev=1085152&r1=1085151&r2=1085152&view=diff ============================================================================== --- cxf/trunk/rt/transports/http-osgi/src/main/java/org/apache/cxf/transport/http_osgi/OsgiServlet.java (original) +++ cxf/trunk/rt/transports/http-osgi/src/main/java/org/apache/cxf/transport/http_osgi/OsgiServlet.java Thu Mar 24 21:29:58 2011 @@ -26,12 +26,13 @@ import javax.servlet.http.HttpServletRes import org.apache.cxf.transport.http.DestinationRegistry; import org.apache.cxf.transport.servlet.AbstractHTTPServlet; +import org.apache.cxf.transport.servlet.ServletController; import org.apache.cxf.transport.servlet.servicelist.ServiceListGeneratorServlet; public class OsgiServlet extends AbstractHTTPServlet { private DestinationRegistry destinationRegistry; - private OsgiServletController controller; + private ServletController controller; private HttpServlet serviceListGenerator; public OsgiServlet(DestinationRegistry destinationRegistry) { @@ -45,9 +46,9 @@ public class OsgiServlet extends Abstrac public void init(ServletConfig servletConfig) throws ServletException { super.init(servletConfig); - controller = new OsgiServletController(servletConfig, - this.destinationRegistry, - serviceListGenerator); + controller = new ServletController(this.destinationRegistry, + servletConfig, + serviceListGenerator); } @Override Modified: cxf/trunk/rt/transports/http-osgi/src/main/resources/META-INF/cxf/osgi/cxf-extension-osgi.xml URL: http://svn.apache.org/viewvc/cxf/trunk/rt/transports/http-osgi/src/main/resources/META-INF/cxf/osgi/cxf-extension-osgi.xml?rev=1085152&r1=1085151&r2=1085152&view=diff ============================================================================== --- cxf/trunk/rt/transports/http-osgi/src/main/resources/META-INF/cxf/osgi/cxf-extension-osgi.xml (original) +++ cxf/trunk/rt/transports/http-osgi/src/main/resources/META-INF/cxf/osgi/cxf-extension-osgi.xml Thu Mar 24 21:29:58 2011 @@ -24,12 +24,10 @@ http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/osgi http://www.springframework.org/schema/osgi/spring-osgi.xsd"> - - - Modified: cxf/trunk/rt/transports/http-osgi/src/test/java/org/apache/cxf/transport/http_osgi/OsgiServletTest.java URL: http://svn.apache.org/viewvc/cxf/trunk/rt/transports/http-osgi/src/test/java/org/apache/cxf/transport/http_osgi/OsgiServletTest.java?rev=1085152&r1=1085151&r2=1085152&view=diff ============================================================================== --- cxf/trunk/rt/transports/http-osgi/src/test/java/org/apache/cxf/transport/http_osgi/OsgiServletTest.java (original) +++ cxf/trunk/rt/transports/http-osgi/src/test/java/org/apache/cxf/transport/http_osgi/OsgiServletTest.java Thu Mar 24 21:29:58 2011 @@ -43,6 +43,7 @@ import org.apache.cxf.transport.Abstract import org.apache.cxf.transport.MessageObserver; import org.apache.cxf.transport.http.AbstractHTTPDestination; import org.apache.cxf.transport.http.DestinationRegistry; +import org.apache.cxf.transport.servlet.ServletController; import org.apache.cxf.transports.http.QueryHandler; import org.apache.cxf.transports.http.QueryHandlerRegistry; import org.apache.cxf.wsdl.http.AddressType; @@ -57,14 +58,14 @@ import org.junit.Test; public class OsgiServletTest extends Assert { - private final class TestOsgiServletController extends OsgiServletController { + private final class TestOsgiServletController extends ServletController { private boolean invokeDestinationCalled; private TestOsgiServletController(ServletConfig config, DestinationRegistry destinationRegistry, HttpServlet serviceListGenerator) { - super(config, destinationRegistry, serviceListGenerator); + super(destinationRegistry, config, serviceListGenerator); } @Override @@ -200,15 +201,15 @@ public class OsgiServletTest extends Ass @Test public void testInvokeRestful() throws Exception { setUpRequest(URI, null, -1); - EasyMock.expect(request.getContextPath()).andReturn(""); - EasyMock.expect(request.getServletPath()).andReturn("/cxf"); + //EasyMock.expect(request.getContextPath()).andReturn(""); + //EasyMock.expect(request.getServletPath()).andReturn("/cxf"); paths.add(PATH); EasyMock.expect(registry.getDestinationForPath(PATH)).andReturn(destination).anyTimes(); EasyMock.expect(registry.checkRestfulRequest(EasyMock.isA(String.class))).andReturn(destination); EasyMock.expect(destination.getMessageObserver()).andReturn(observer); endpoint.addExtensor(extensor); - extensor.setLocation(EasyMock.eq(ROOT + URI)); - EasyMock.expectLastCall(); + //extensor.setLocation(EasyMock.eq(ROOT + URI)); + //EasyMock.expectLastCall(); control.replay(); OsgiServlet servlet = new OsgiServlet(registry); @@ -234,10 +235,8 @@ public class OsgiServletTest extends Ass EasyMock.expect(registry.getDestinationForPath(path, true)).andReturn(destination); } - if (destinationCount == -1) { - EasyMock.expect(registry.getDestinationsPaths()).andReturn(paths).anyTimes(); - } else if (destinationCount >= 0) { - EasyMock.expect(registry.getDestinationsPaths()).andReturn(paths); + EasyMock.expect(registry.getDestinationsPaths()).andReturn(paths).anyTimes(); + if (destinationCount >= 0) { List destinations = new ArrayList(); for (int i = 0; i < destinationCount; i++) { Modified: cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/servlet/AbstractCXFServlet.java URL: http://svn.apache.org/viewvc/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/servlet/AbstractCXFServlet.java?rev=1085152&r1=1085151&r2=1085152&view=diff ============================================================================== --- cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/servlet/AbstractCXFServlet.java (original) +++ cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/servlet/AbstractCXFServlet.java Thu Mar 24 21:29:58 2011 @@ -35,6 +35,7 @@ import org.apache.cxf.BusFactory; import org.apache.cxf.common.logging.LogUtils; import org.apache.cxf.transport.DestinationFactory; import org.apache.cxf.transport.DestinationFactoryManager; +import org.apache.cxf.transport.http.DestinationRegistryImpl; import org.apache.cxf.transport.servlet.servicelist.ServiceListGeneratorServlet; @@ -47,9 +48,7 @@ public abstract class AbstractCXFServlet protected Bus bus; protected ServletTransportFactory servletTransportFactory; protected ServletController controller; - - private boolean disableAddressUpdates; - + public static Logger getLogger() { return LogUtils.getL7dLogger(AbstractCXFServlet.class); } @@ -61,9 +60,6 @@ public abstract class AbstractCXFServlet new ServletController(servletTransportFactory.getRegistry(), servletConfig, serviceListGeneratorServlet); - if (servletConfig.getInitParameter("disable-address-updates") == null) { - newController.setDisableAddressUpdates(disableAddressUpdates); - } return newController; } @@ -97,7 +93,9 @@ public abstract class AbstractCXFServlet protected DestinationFactory createServletTransportFactory() { if (servletTransportFactory == null) { - servletTransportFactory = new ServletTransportFactory(bus); + DestinationRegistryImpl registry = new DestinationRegistryImpl(); + servletTransportFactory = new ServletTransportFactory(registry); + servletTransportFactory.setBus(bus); } return servletTransportFactory; } @@ -153,10 +151,4 @@ public abstract class AbstractCXFServlet } } - // this makes it a bit easier to disable the address - // updates when creating servlets programmatically - public void setDisableAddressUpdates(boolean disableAddressUpdates) { - this.disableAddressUpdates = disableAddressUpdates; - } - } Added: cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/servlet/BaseUrlHelper.java URL: http://svn.apache.org/viewvc/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/servlet/BaseUrlHelper.java?rev=1085152&view=auto ============================================================================== --- cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/servlet/BaseUrlHelper.java (added) +++ cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/servlet/BaseUrlHelper.java Thu Mar 24 21:29:58 2011 @@ -0,0 +1,71 @@ +/** + * 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.transport.servlet; + +import javax.servlet.http.HttpServletRequest; + +import org.apache.cxf.transport.AbstractDestination; +import org.apache.cxf.wsdl.WSDLLibrary; +import org.apache.cxf.wsdl.http.AddressType; + +public final class BaseUrlHelper { + private BaseUrlHelper() { + } + + public static String getBaseURL(HttpServletRequest request) { + String reqPrefix = request.getRequestURL().toString(); + String pathInfo = request.getPathInfo() == null ? "" : request.getPathInfo(); + //fix for CXF-898 + if (!"/".equals(pathInfo) || reqPrefix.endsWith("/")) { + String basePath = request.getContextPath() + request.getServletPath(); + int index; + if (basePath.length() == 0) { + index = reqPrefix.indexOf(request.getRequestURI()); + } else { + index = reqPrefix.indexOf(basePath); + } + reqPrefix = reqPrefix.substring(0, index + basePath.length()); + } + return reqPrefix; + } + + public static void makeAddressesAbsolute(HttpServletRequest request, String baseAddress, + AbstractDestination[] destinations) { + for (AbstractDestination dest : destinations) { + String addr = dest.getEndpointInfo().getAddress(); + if (addr == null || addr.length() == 0) { + addr = "/"; + } + if (addr != null && !addr.startsWith("http")) { + String base = baseAddress == null ? BaseUrlHelper.getBaseURL(request) : baseAddress; + setAddress(dest, base + addr); + } + } + } + + public static void setAddress(AbstractDestination dest, String absAddress) { + synchronized (dest) { + dest.getEndpointInfo().setAddress(absAddress); + if (WSDLLibrary.isAvailable() + && dest.getEndpointInfo().getExtensor(AddressType.class) != null) { + dest.getEndpointInfo().getExtensor(AddressType.class).setLocation(absAddress); + } + } + } +} Modified: cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/servlet/ServletController.java URL: http://svn.apache.org/viewvc/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/servlet/ServletController.java?rev=1085152&r1=1085151&r2=1085152&view=diff ============================================================================== --- cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/servlet/ServletController.java (original) +++ cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/servlet/ServletController.java Thu Mar 24 21:29:58 2011 @@ -16,9 +16,13 @@ * specific language governing permissions and limitations * under the License. */ + package org.apache.cxf.transport.servlet; import java.io.IOException; +import java.io.OutputStream; +import java.util.Set; +import java.util.logging.Level; import java.util.logging.Logger; import javax.servlet.ServletConfig; @@ -37,15 +41,107 @@ import org.apache.cxf.transport.http.Des import org.apache.cxf.transports.http.QueryHandler; import org.apache.cxf.transports.http.QueryHandlerRegistry; -public class ServletController extends AbstractServletController { +public class ServletController { + protected static final String DEFAULT_LISTINGS_CLASSIFIER = "/services"; private static final Logger LOG = LogUtils.getL7dLogger(ServletController.class); + + protected boolean isHideServiceList; + protected boolean disableAddressUpdates; + protected String forcedBaseAddress; + protected String serviceListStyleSheet; + protected String title; + protected String serviceListRelativePath = DEFAULT_LISTINGS_CLASSIFIER; + protected ServletConfig servletConfig; + protected DestinationRegistry destinationRegistry; + protected HttpServlet serviceListGenerator; + + public ServletController(DestinationRegistry destinationRegistry, + ServletConfig config, + HttpServlet serviceListGenerator) { + this.servletConfig = config; + this.destinationRegistry = destinationRegistry; + this.serviceListGenerator = serviceListGenerator; + init(); + } - public ServletController(DestinationRegistry destinationRegistry, - ServletConfig config, - HttpServlet serviceListGenerator) { - super(config, destinationRegistry, serviceListGenerator); + public void setServiceListRelativePath(String relativePath) { + serviceListRelativePath = relativePath; } + public void setServiceListStyleSheet(String serviceListStyleSheet) { + this.serviceListStyleSheet = serviceListStyleSheet; + } + public void setTitle(String t) { + title = t; + } + + protected synchronized void updateDests(HttpServletRequest request) { + updateDests(request, false); + } + + protected void updateDests(HttpServletRequest request, boolean force) { + + String base = forcedBaseAddress == null ? BaseUrlHelper.getBaseURL(request) : forcedBaseAddress; + + String pathInfo = request.getPathInfo(); + if (pathInfo == null) { + pathInfo = "/"; + } + + Set paths = destinationRegistry.getDestinationsPaths(); + for (String path : paths) { + if (!force && pathInfo != null && !pathInfo.startsWith(path)) { + continue; + } + AbstractHTTPDestination d2 = destinationRegistry.getDestinationForPath(path); + String ad = d2.getEndpointInfo().getAddress(); + if (ad == null + && d2.getAddress() != null + && d2.getAddress().getAddress() != null) { + ad = d2.getAddress().getAddress().getValue(); + if (ad == null) { + ad = "/"; + } + } + if (ad != null + && (ad.equals(path))) { + if (disableAddressUpdates) { + request.setAttribute("org.apache.cxf.transport.endpoint.address", + base + path); + } else { + BaseUrlHelper.setAddress(d2, base + path); + } + } + } + } + + private void init() { + if (servletConfig == null) { + return; + } + + String hideServiceList = servletConfig.getInitParameter("hide-service-list-page"); + if (!StringUtils.isEmpty(hideServiceList)) { + this.isHideServiceList = Boolean.valueOf(hideServiceList); + } + String isDisableAddressUpdates = servletConfig.getInitParameter("disable-address-updates"); + if (!StringUtils.isEmpty(isDisableAddressUpdates)) { + this.disableAddressUpdates = Boolean.valueOf(isDisableAddressUpdates); + } + String isForcedBaseAddress = servletConfig.getInitParameter("base-address"); + if (!StringUtils.isEmpty(isForcedBaseAddress)) { + this.forcedBaseAddress = isForcedBaseAddress; + } + try { + serviceListGenerator.init(servletConfig); + } catch (ServletException e) { + throw new RuntimeException(e.getMessage(), e); + } + String serviceListPath = servletConfig.getInitParameter("service-list-path"); + if (!StringUtils.isEmpty(serviceListPath)) { + this.serviceListRelativePath = serviceListPath; + } + } public void invoke(HttpServletRequest request, HttpServletResponse res) throws ServletException { try { @@ -117,5 +213,59 @@ public class ServletController extends A } } + public void invokeDestination(final HttpServletRequest request, HttpServletResponse response, + AbstractHTTPDestination d) throws ServletException { + if (LOG.isLoggable(Level.FINE)) { + LOG.fine("Service http request on thread: " + Thread.currentThread()); + } + try { + d.invoke(servletConfig, servletConfig.getServletContext(), request, response); + } catch (IOException e) { + throw new ServletException(e); + } finally { + if (LOG.isLoggable(Level.FINE)) { + LOG.fine("Finished servicing http request on thread: " + Thread.currentThread()); + } + } + } + + protected QueryHandler findQueryHandler(QueryHandlerRegistry queryHandlerRegistry, + EndpointInfo ei, + String ctxUri, + String baseUri) { + if (queryHandlerRegistry == null) { + return null; + } + Iterable handlers = queryHandlerRegistry.getHandlers(); + for (QueryHandler qh : handlers) { + if (qh.isRecognizedQuery(baseUri, ctxUri, ei)) { + return qh; + } + } + return null; + } + + protected void respondUsingQueryHandler(QueryHandler selectedHandler, HttpServletResponse res, + EndpointInfo ei, String ctxUri, String baseUri) throws IOException, + ServletException { + res.setContentType(selectedHandler.getResponseContentType(baseUri, ctxUri)); + OutputStream out = res.getOutputStream(); + try { + selectedHandler.writeResponse(baseUri, ctxUri, ei, out); + out.flush(); + } catch (Exception e) { + LOG.warning(selectedHandler.getClass().getName() + + " Exception caught writing response: " + + e.getMessage()); + throw new ServletException(e); + } + } + + protected void generateNotFound(HttpServletRequest request, HttpServletResponse res) throws IOException { + res.setStatus(404); + res.setContentType("text/html"); + res.getWriter().write("No service was found."); + } + } Modified: cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/servlet/ServletTransportFactory.java URL: http://svn.apache.org/viewvc/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/servlet/ServletTransportFactory.java?rev=1085152&r1=1085151&r2=1085152&view=diff ============================================================================== --- cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/servlet/ServletTransportFactory.java (original) +++ cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/servlet/ServletTransportFactory.java Thu Mar 24 21:29:58 2011 @@ -21,8 +21,6 @@ package org.apache.cxf.transport.servlet; import java.io.IOException; -import java.util.Arrays; -import java.util.List; import javax.annotation.Resource; @@ -32,19 +30,13 @@ import org.apache.cxf.transport.Destinat import org.apache.cxf.transport.DestinationFactory; import org.apache.cxf.transport.http.AbstractHTTPDestination; import org.apache.cxf.transport.http.AbstractHTTPTransportFactory; +import org.apache.cxf.transport.http.DestinationRegistry; public class ServletTransportFactory extends AbstractHTTPTransportFactory implements DestinationFactory { - public ServletTransportFactory(Bus b) { - super.setBus(b); - List ids = Arrays.asList(new String[] { - "http://cxf.apache.org/transports/http", - "http://cxf.apache.org/transports/http/configuration", - "http://schemas.xmlsoap.org/wsdl/http", - "http://schemas.xmlsoap.org/wsdl/http/", - }); - this.setTransportIds(ids); + public ServletTransportFactory(DestinationRegistry registry) { + super(registry); } public ServletTransportFactory() { Modified: cxf/trunk/rt/transports/http/src/test/java/org/apache/cxf/transport/servlet/ServletControllerTest.java URL: http://svn.apache.org/viewvc/cxf/trunk/rt/transports/http/src/test/java/org/apache/cxf/transport/servlet/ServletControllerTest.java?rev=1085152&r1=1085151&r2=1085152&view=diff ============================================================================== --- cxf/trunk/rt/transports/http/src/test/java/org/apache/cxf/transport/servlet/ServletControllerTest.java (original) +++ cxf/trunk/rt/transports/http/src/test/java/org/apache/cxf/transport/servlet/ServletControllerTest.java Thu Mar 24 21:29:58 2011 @@ -57,7 +57,8 @@ public class ServletControllerTest exten EasyMock.expectLastCall().andReturn(""); req.getServletPath(); EasyMock.expectLastCall().andReturn(""); - + req.setAttribute("org.apache.cxf.transport.endpoint.address", "http://localhost:8080"); + EasyMock.expectLastCall().anyTimes(); req.getRequestURI(); EasyMock.expectLastCall().andReturn(requestUri).times(2); req.getParameter("stylesheet"); @@ -108,6 +109,8 @@ public class ServletControllerTest exten EasyMock.expectLastCall().andReturn("false"); req.getRequestURL(); EasyMock.expectLastCall().andReturn(new StringBuffer("http://localhost:8080/services")); + req.setAttribute("org.apache.cxf.transport.endpoint.address", "http://localhost:8080"); + EasyMock.expectLastCall().anyTimes(); registry.getDestinationsPaths(); EasyMock.expectLastCall().andReturn(Collections.emptySet()).atLeastOnce(); registry.getDestinationForPath("", true); @@ -153,90 +156,7 @@ public class ServletControllerTest exten sc.invoke(req, res); assertFalse(sc.invokeDestinationCalled()); } - - private String testGetBaseURL(String requestUrl, String contextPath, - String servletPath, String pathInfo) { - req.getRequestURL(); - EasyMock.expectLastCall().andReturn(new StringBuffer(requestUrl)); - - req.getContextPath(); - EasyMock.expectLastCall().andReturn(contextPath); - req.getServletPath(); - EasyMock.expectLastCall().andReturn(servletPath); - - req.getPathInfo(); - EasyMock.expectLastCall().andReturn(pathInfo).times(2); - - String basePath = contextPath + servletPath; - if (basePath.length() == 0) { - req.getRequestURI(); - EasyMock.expectLastCall().andReturn(pathInfo); - } - - EasyMock.replay(req); - return new ServletController(null, null, null).getBaseURL(req); - } - - @Test - public void testGetRequestURL() throws Exception { - String url = testGetBaseURL("http://localhost:8080/services/bar", - "", "/services", "/bar"); - assertEquals("http://localhost:8080/services", url); - } - - @Test - public void testGetRequestURL2() throws Exception { - String url = testGetBaseURL("http://localhost:8080/services/bar", - "/services", "", "/bar"); - assertEquals("http://localhost:8080/services", url); - } - - @Test - public void testGetRequestURL3() throws Exception { - String url = testGetBaseURL("http://localhost:8080/services/bar", - "", "", "/services/bar"); - assertEquals("http://localhost:8080", url); - } - - @Test - public void testGetRequestURLSingleMatrixParam() throws Exception { - String url = testGetBaseURL("http://localhost:8080/services/bar;a=b", - "", "/services", "/bar"); - assertEquals("http://localhost:8080/services", url); - } - - @Test - public void testGetRequestURLMultipleMatrixParam() throws Exception { - String url = testGetBaseURL("http://localhost:8080/services/bar;a=b;c=d;e=f", - "", "/services", "/bar"); - assertEquals("http://localhost:8080/services", url); - - } - - @Test - public void testGetRequestURLMultipleMatrixParam2() throws Exception { - String url = testGetBaseURL("http://localhost:8080/services/bar;a=b;c=d;e=f", - "", "/services", "/bar;a=b;c=d"); - assertEquals("http://localhost:8080/services", url); - - } - - @Test - public void testGetRequestURLMultipleMatrixParam3() throws Exception { - String url = testGetBaseURL("http://localhost:8080/services/bar;a=b;c=d;e=f", - "", "/services", "/bar;a=b"); - assertEquals("http://localhost:8080/services", url); - - } - - @Test - public void testGetRequestURLMultipleMatrixParam4() throws Exception { - String url = testGetBaseURL("http://localhost:8080/services/bar;a=b;c=d;e=f;", - "", "/services", "/bar;a=b"); - assertEquals("http://localhost:8080/services", url); - - } - + public static class TestServletController extends ServletController { private boolean invokeDestinationCalled; @@ -245,6 +165,10 @@ public class ServletControllerTest exten super(destinationRegistry, null, serviceListGenerator); } + public void setHideServiceList(boolean b) { + this.isHideServiceList = b; + } + @Override protected void updateDests(HttpServletRequest request) { } Added: cxf/trunk/rt/transports/http/src/test/java/org/apache/cxf/transport/servlet/servicelist/BaseUrlHelperTest.java URL: http://svn.apache.org/viewvc/cxf/trunk/rt/transports/http/src/test/java/org/apache/cxf/transport/servlet/servicelist/BaseUrlHelperTest.java?rev=1085152&view=auto ============================================================================== --- cxf/trunk/rt/transports/http/src/test/java/org/apache/cxf/transport/servlet/servicelist/BaseUrlHelperTest.java (added) +++ cxf/trunk/rt/transports/http/src/test/java/org/apache/cxf/transport/servlet/servicelist/BaseUrlHelperTest.java Thu Mar 24 21:29:58 2011 @@ -0,0 +1,109 @@ +/** + * 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.transport.servlet.servicelist; + +import javax.servlet.http.HttpServletRequest; + +import org.apache.cxf.transport.servlet.BaseUrlHelper; +import org.easymock.classextension.EasyMock; + +import org.junit.Assert; +import org.junit.Test; + +public class BaseUrlHelperTest { + private String testGetBaseURL(String requestUrl, String contextPath, + String servletPath, String pathInfo) { + HttpServletRequest req = EasyMock.createMock(HttpServletRequest.class); + req.getRequestURL(); + EasyMock.expectLastCall().andReturn(new StringBuffer(requestUrl)); + + req.getContextPath(); + EasyMock.expectLastCall().andReturn(contextPath); + req.getServletPath(); + EasyMock.expectLastCall().andReturn(servletPath); + + req.getPathInfo(); + EasyMock.expectLastCall().andReturn(pathInfo).times(2); + + String basePath = contextPath + servletPath; + if (basePath.length() == 0) { + req.getRequestURI(); + EasyMock.expectLastCall().andReturn(pathInfo); + } + + EasyMock.replay(req); + return BaseUrlHelper.getBaseURL(req); + } + + @Test + public void testGetRequestURL() throws Exception { + String url = testGetBaseURL("http://localhost:8080/services/bar", "", "/services", "/bar"); + Assert.assertEquals("http://localhost:8080/services", url); + } + + @Test + public void testGetRequestURL2() throws Exception { + String url = testGetBaseURL("http://localhost:8080/services/bar", "/services", "", "/bar"); + Assert.assertEquals("http://localhost:8080/services", url); + } + + @Test + public void testGetRequestURL3() throws Exception { + String url = testGetBaseURL("http://localhost:8080/services/bar", "", "", "/services/bar"); + Assert.assertEquals("http://localhost:8080", url); + } + + @Test + public void testGetRequestURLSingleMatrixParam() throws Exception { + String url = testGetBaseURL("http://localhost:8080/services/bar;a=b", "", "/services", "/bar"); + Assert.assertEquals("http://localhost:8080/services", url); + } + + @Test + public void testGetRequestURLMultipleMatrixParam() throws Exception { + String url = testGetBaseURL("http://localhost:8080/services/bar;a=b;c=d;e=f", + "", "/services", "/bar"); + Assert.assertEquals("http://localhost:8080/services", url); + + } + + @Test + public void testGetRequestURLMultipleMatrixParam2() throws Exception { + String url = testGetBaseURL("http://localhost:8080/services/bar;a=b;c=d;e=f", "", "/services", + "/bar;a=b;c=d"); + Assert.assertEquals("http://localhost:8080/services", url); + + } + + @Test + public void testGetRequestURLMultipleMatrixParam3() throws Exception { + String url = testGetBaseURL("http://localhost:8080/services/bar;a=b;c=d;e=f", "", "/services", + "/bar;a=b"); + Assert.assertEquals("http://localhost:8080/services", url); + + } + + @Test + public void testGetRequestURLMultipleMatrixParam4() throws Exception { + String url = testGetBaseURL("http://localhost:8080/services/bar;a=b;c=d;e=f;", "", "/services", + "/bar;a=b"); + Assert.assertEquals("http://localhost:8080/services", url); + + } +}