Return-Path: X-Original-To: apmail-cxf-commits-archive@www.apache.org Delivered-To: apmail-cxf-commits-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id ED7C44817 for ; Fri, 10 Jun 2011 09:23:30 +0000 (UTC) Received: (qmail 40783 invoked by uid 500); 10 Jun 2011 09:23:30 -0000 Delivered-To: apmail-cxf-commits-archive@cxf.apache.org Received: (qmail 40723 invoked by uid 500); 10 Jun 2011 09:23:30 -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 40715 invoked by uid 99); 10 Jun 2011 09:23:30 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 10 Jun 2011 09:23:30 +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; Fri, 10 Jun 2011 09:23:28 +0000 Received: by eris.apache.org (Postfix, from userid 65534) id 69AD723889E0; Fri, 10 Jun 2011 09:23:08 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r1134248 - in /cxf/trunk/rt/transports/http/src: main/java/org/apache/cxf/transport/servlet/ test/java/org/apache/cxf/transport/servlet/ Date: Fri, 10 Jun 2011 09:23:08 -0000 To: commits@cxf.apache.org From: sergeyb@apache.org X-Mailer: svnmailer-1.0.8 Message-Id: <20110610092308.69AD723889E0@eris.apache.org> Author: sergeyb Date: Fri Jun 10 09:23:07 2011 New Revision: 1134248 URL: http://svn.apache.org/viewvc?rev=1134248&view=rev Log: Some more refactoring of ServletController.updateDests Modified: cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/servlet/BaseUrlHelper.java cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/servlet/ServletController.java cxf/trunk/rt/transports/http/src/test/java/org/apache/cxf/transport/servlet/ServletControllerTest.java Modified: 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=1134248&r1=1134247&r2=1134248&view=diff ============================================================================== --- cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/servlet/BaseUrlHelper.java (original) +++ cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/servlet/BaseUrlHelper.java Fri Jun 10 09:23:07 2011 @@ -60,12 +60,10 @@ public final class BaseUrlHelper { } 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); - } + 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=1134248&r1=1134247&r2=1134248&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 Fri Jun 10 09:23:07 2011 @@ -21,7 +21,7 @@ package org.apache.cxf.transport.servlet import java.io.IOException; import java.io.OutputStream; -import java.util.Set; +import java.util.Collection; import java.util.logging.Level; import java.util.logging.Logger; @@ -44,6 +44,7 @@ import org.apache.cxf.transports.http.Qu public class ServletController { protected static final String DEFAULT_LISTINGS_CLASSIFIER = "/services"; private static final Logger LOG = LogUtils.getL7dLogger(ServletController.class); + private static final String HTTP_PREFIX = "http"; protected boolean isHideServiceList; protected boolean disableAddressUpdates; @@ -75,41 +76,41 @@ public class ServletController { title = t; } - protected synchronized void updateDests(HttpServletRequest request) { - updateDests(request, false); - } - - protected void updateDests(HttpServletRequest request, boolean force) { + protected void updateDests(HttpServletRequest request, AbstractHTTPDestination d) { 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; + if (d == null) { + Collection dests = destinationRegistry.getDestinations(); + for (AbstractHTTPDestination dest : dests) { + updateDestination(dest, request, base); } - AbstractHTTPDestination d2 = destinationRegistry.getDestinationForPath(path); - String ad = d2.getEndpointInfo().getAddress(); + } else { + updateDestination(d, request, base); + } + } + + protected void updateDestination(AbstractHTTPDestination d, + HttpServletRequest request, + String base) { + synchronized (d) { + String ad = d.getEndpointInfo().getAddress(); if (ad == null - && d2.getAddress() != null - && d2.getAddress().getAddress() != null) { - ad = d2.getAddress().getAddress().getValue(); + && d.getAddress() != null + && d.getAddress().getAddress() != null) { + ad = d.getAddress().getAddress().getValue(); if (ad == null) { ad = "/"; } } - if (ad != null - && (ad.equals(path))) { + // Using HTTP_PREFIX check is safe for ServletController + // URI.create(ad).isRelative() can be used - a bit more expensive though + if (ad != null && !ad.startsWith(HTTP_PREFIX)) { if (disableAddressUpdates) { request.setAttribute("org.apache.cxf.transport.endpoint.address", - base + path); + base + ad); } else { - BaseUrlHelper.setAddress(d2, base + path); + BaseUrlHelper.setAddress(d, base + ad); } } } @@ -153,7 +154,7 @@ public class ServletController { || request.getRequestURI().endsWith(serviceListRelativePath + "/") || StringUtils.isEmpty(pathInfo) || "/".equals(pathInfo))) { - updateDests(request, true); + updateDests(request, null); serviceListGenerator.service(request, res); } else { d = destinationRegistry.checkRestfulRequest(pathInfo); @@ -162,7 +163,7 @@ public class ServletController { + request.getRequestURL() + "'s Observer "); generateNotFound(request, res); } else { // the request should be a restful service request - updateDests(request); + updateDests(request, d); invokeDestination(request, res, d); } } @@ -185,7 +186,7 @@ public class ServletController { // update the EndPoint Address with request url if ("GET".equals(request.getMethod())) { - updateDests(request); + updateDests(request, d); } String ctxUri = request.getPathInfo(); @@ -200,7 +201,7 @@ public class ServletController { return; } } else { - updateDests(request); + updateDests(request, d); } invokeDestination(request, res, d); } finally { 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=1134248&r1=1134247&r2=1134248&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 Fri Jun 10 09:23:07 2011 @@ -170,7 +170,7 @@ public class ServletControllerTest exten } @Override - protected void updateDests(HttpServletRequest request) { + protected void updateDests(HttpServletRequest request, AbstractHTTPDestination d) { } @Override