You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by se...@apache.org on 2010/09/26 23:22:05 UTC
svn commit: r1001521 - in /cxf/branches/2.2.x-fixes: ./
rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/
rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/
rt/transports/http/src/main/java/org/apache/cxf/transport/servlet/
systests/j...
Author: sergeyb
Date: Sun Sep 26 21:22:04 2010
New Revision: 1001521
URL: http://svn.apache.org/viewvc?rev=1001521&view=rev
Log:
Merged revisions 1001520 via svnmerge from
https://svn.apache.org/repos/asf/cxf/trunk
........
r1001520 | sergeyb | 2010-09-26 22:19:09 +0100 (Sun, 26 Sep 2010) | 1 line
[CXF-2997] : Prototyping the initial fix, setting a current base address as HttpServletRequest attribute
........
Added:
cxf/branches/2.2.x-fixes/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSOverlappingDestinationsTest.java
- copied unchanged from r1001520, cxf/trunk/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSOverlappingDestinationsTest.java
cxf/branches/2.2.x-fixes/systests/jaxrs/src/test/resources/jaxrs_many_destinations/
- copied from r1001520, cxf/trunk/systests/jaxrs/src/test/resources/jaxrs_many_destinations/
cxf/branches/2.2.x-fixes/systests/jaxrs/src/test/resources/jaxrs_many_destinations/WEB-INF/
- copied from r1001520, cxf/trunk/systests/jaxrs/src/test/resources/jaxrs_many_destinations/WEB-INF/
cxf/branches/2.2.x-fixes/systests/jaxrs/src/test/resources/jaxrs_many_destinations/WEB-INF/beans.xml
- copied unchanged from r1001520, cxf/trunk/systests/jaxrs/src/test/resources/jaxrs_many_destinations/WEB-INF/beans.xml
cxf/branches/2.2.x-fixes/systests/jaxrs/src/test/resources/jaxrs_many_destinations/WEB-INF/web.xml
- copied unchanged from r1001520, cxf/trunk/systests/jaxrs/src/test/resources/jaxrs_many_destinations/WEB-INF/web.xml
Modified:
cxf/branches/2.2.x-fixes/ (props changed)
cxf/branches/2.2.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/SecurityContextImpl.java
cxf/branches/2.2.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/HttpUtils.java
cxf/branches/2.2.x-fixes/rt/transports/http/src/main/java/org/apache/cxf/transport/servlet/AbstractCXFServlet.java
cxf/branches/2.2.x-fixes/rt/transports/http/src/main/java/org/apache/cxf/transport/servlet/ServletController.java
Propchange: cxf/branches/2.2.x-fixes/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Sun Sep 26 21:22:04 2010
@@ -1 +1 @@
-/cxf/trunk:998736
+/cxf/trunk:998736,1001520
Propchange: cxf/branches/2.2.x-fixes/
------------------------------------------------------------------------------
Binary property 'svnmerge-integrated' - no diff available.
Modified: cxf/branches/2.2.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/SecurityContextImpl.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.2.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/SecurityContextImpl.java?rev=1001521&r1=1001520&r2=1001521&view=diff
==============================================================================
--- cxf/branches/2.2.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/SecurityContextImpl.java (original)
+++ cxf/branches/2.2.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/SecurityContextImpl.java Sun Sep 26 21:22:04 2010
@@ -24,6 +24,7 @@ import java.security.Principal;
import javax.ws.rs.core.SecurityContext;
import org.apache.cxf.configuration.security.AuthorizationPolicy;
+import org.apache.cxf.jaxrs.utils.HttpUtils;
import org.apache.cxf.message.Message;
public class SecurityContextImpl implements SecurityContext {
@@ -50,8 +51,7 @@ public class SecurityContextImpl impleme
public boolean isSecure() {
- String value = m.getExchange().getDestination().getAddress()
- .getAddress().getValue();
+ String value = HttpUtils.getEndpointAddress(m);
return value.startsWith("https://");
}
Modified: cxf/branches/2.2.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/HttpUtils.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.2.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/HttpUtils.java?rev=1001521&r1=1001520&r2=1001521&view=diff
==============================================================================
--- cxf/branches/2.2.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/HttpUtils.java (original)
+++ cxf/branches/2.2.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/HttpUtils.java Sun Sep 26 21:22:04 2010
@@ -48,6 +48,7 @@ import org.apache.cxf.jaxrs.impl.HttpHea
import org.apache.cxf.jaxrs.impl.PathSegmentImpl;
import org.apache.cxf.jaxrs.model.ParameterType;
import org.apache.cxf.message.Message;
+import org.apache.cxf.service.model.EndpointInfo;
import org.apache.cxf.transport.Destination;
import org.apache.cxf.transport.http.AbstractHTTPDestination;
@@ -207,7 +208,11 @@ public final class HttpUtils {
Destination d = m.getExchange().getDestination();
if (d != null) {
if (d instanceof AbstractHTTPDestination) {
- address = ((AbstractHTTPDestination)d).getEndpointInfo().getAddress();
+ EndpointInfo ei = ((AbstractHTTPDestination)d).getEndpointInfo();
+ HttpServletRequest request = (HttpServletRequest)m.get(AbstractHTTPDestination.HTTP_REQUEST);
+ Object property = request != null
+ ? request.getAttribute("org.apache.cxf.transport.endpoint.address") : null;
+ address = property != null ? property.toString() : ei.getAddress();
} else {
address = d.getAddress().getAddress().getValue();
}
Modified: cxf/branches/2.2.x-fixes/rt/transports/http/src/main/java/org/apache/cxf/transport/servlet/AbstractCXFServlet.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.2.x-fixes/rt/transports/http/src/main/java/org/apache/cxf/transport/servlet/AbstractCXFServlet.java?rev=1001521&r1=1001520&r2=1001521&view=diff
==============================================================================
--- cxf/branches/2.2.x-fixes/rt/transports/http/src/main/java/org/apache/cxf/transport/servlet/AbstractCXFServlet.java (original)
+++ cxf/branches/2.2.x-fixes/rt/transports/http/src/main/java/org/apache/cxf/transport/servlet/AbstractCXFServlet.java Sun Sep 26 21:22:04 2010
@@ -46,6 +46,8 @@ public abstract class AbstractCXFServlet
protected ServletTransportFactory servletTransportFactory;
protected ServletController controller;
+ private boolean disableAddressUpdates;
+
public static Logger getLogger() {
return LogUtils.getL7dLogger(AbstractCXFServlet.class);
}
@@ -56,6 +58,10 @@ public abstract class AbstractCXFServlet
servletConfig,
this.getServletContext(),
bus);
+
+ if (servletConfig.getInitParameter("disable-address-updates") == null) {
+ newController.setDisableAddressUpdates(disableAddressUpdates);
+ }
return newController;
}
@@ -145,4 +151,10 @@ 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;
+ }
+
}
Modified: cxf/branches/2.2.x-fixes/rt/transports/http/src/main/java/org/apache/cxf/transport/servlet/ServletController.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.2.x-fixes/rt/transports/http/src/main/java/org/apache/cxf/transport/servlet/ServletController.java?rev=1001521&r1=1001520&r2=1001521&view=diff
==============================================================================
--- cxf/branches/2.2.x-fixes/rt/transports/http/src/main/java/org/apache/cxf/transport/servlet/ServletController.java (original)
+++ cxf/branches/2.2.x-fixes/rt/transports/http/src/main/java/org/apache/cxf/transport/servlet/ServletController.java Sun Sep 26 21:22:04 2010
@@ -77,9 +77,7 @@ public class ServletController extends A
}
protected synchronized void updateDests(HttpServletRequest request) {
- if (disableAddressUpdates) {
- return;
- }
+
String base = forcedBaseAddress == null ? getBaseURL(request) : forcedBaseAddress;
if (base.equals(lastBase)) {
@@ -97,12 +95,19 @@ public class ServletController extends A
if (ad != null
&& (ad.equals(path)
|| ad.equals(lastBase + path))) {
- d2.getEndpointInfo().setAddress(base + path);
- if (d2.getEndpointInfo().getExtensor(AddressType.class) != null) {
- d2.getEndpointInfo().getExtensor(AddressType.class).setLocation(base + path);
+ if (disableAddressUpdates) {
+ request.setAttribute("org.apache.cxf.transport.endpoint.address", base + path);
+ } else {
+ d2.getEndpointInfo().setAddress(base + path);
+ if (d2.getEndpointInfo().getExtensor(AddressType.class) != null) {
+ d2.getEndpointInfo().getExtensor(AddressType.class).setLocation(base + path);
+ }
}
}
}
+ if (disableAddressUpdates) {
+ return;
+ }
lastBase = base;
}