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 2011/05/04 14:19:41 UTC
svn commit: r1099428 - in /cxf/branches/2.3.x-fixes: ./
rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/HttpUtils.java
rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/utils/HttpUtilsTest.java
Author: sergeyb
Date: Wed May 4 12:19:41 2011
New Revision: 1099428
URL: http://svn.apache.org/viewvc?rev=1099428&view=rev
Log:
Merged revisions 1099421 via svnmerge from
https://svn.apache.org/repos/asf/cxf/trunk
........
r1099421 | sergeyb | 2011-05-04 12:43:31 +0100 (Wed, 04 May 2011) | 1 line
[CXF-3478] Using Message.BASE_PATH when available for determining the endpoint address
........
Modified:
cxf/branches/2.3.x-fixes/ (props changed)
cxf/branches/2.3.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/HttpUtils.java
cxf/branches/2.3.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/utils/HttpUtilsTest.java
Propchange: cxf/branches/2.3.x-fixes/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Wed May 4 12:19:41 2011
@@ -1 +1 @@
-/cxf/trunk:1094926,1094992,1095349,1095666,1097071,1097175,1097178,1097816
+/cxf/trunk:1094926,1094992,1095349,1095666,1097071,1097175,1097178,1097816,1099421
Propchange: cxf/branches/2.3.x-fixes/
------------------------------------------------------------------------------
Binary property 'svnmerge-integrated' - no diff available.
Modified: cxf/branches/2.3.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/HttpUtils.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.3.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/HttpUtils.java?rev=1099428&r1=1099427&r2=1099428&view=diff
==============================================================================
--- cxf/branches/2.3.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/HttpUtils.java (original)
+++ cxf/branches/2.3.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/HttpUtils.java Wed May 4 12:19:41 2011
@@ -20,9 +20,8 @@
package org.apache.cxf.jaxrs.utils;
import java.io.UnsupportedEncodingException;
-import java.net.MalformedURLException;
import java.net.URI;
-import java.net.URL;
+import java.net.URISyntaxException;
import java.net.URLEncoder;
import java.text.SimpleDateFormat;
import java.util.List;
@@ -212,8 +211,9 @@ public final class HttpUtils {
public static String getBaseAddress(Message m) {
String endpointAddress = getEndpointAddress(m);
try {
- return new URL(endpointAddress).getPath();
- } catch (MalformedURLException ex) {
+ String path = new URI(endpointAddress).getRawPath();
+ return path.length() == 0 ? "/" : path;
+ } catch (URISyntaxException ex) {
return endpointAddress == null ? "/" : endpointAddress;
}
}
@@ -229,7 +229,8 @@ public final class HttpUtils {
? request.getAttribute("org.apache.cxf.transport.endpoint.address") : null;
address = property != null ? property.toString() : ei.getAddress();
} else {
- address = d.getAddress().getAddress().getValue();
+ address = m.containsKey(Message.BASE_PATH)
+ ? (String)m.get(Message.BASE_PATH) : d.getAddress().getAddress().getValue();
}
} else {
address = (String)m.get(Message.ENDPOINT_ADDRESS);
Modified: cxf/branches/2.3.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/utils/HttpUtilsTest.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.3.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/utils/HttpUtilsTest.java?rev=1099428&r1=1099427&r2=1099428&view=diff
==============================================================================
--- cxf/branches/2.3.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/utils/HttpUtilsTest.java (original)
+++ cxf/branches/2.3.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/utils/HttpUtilsTest.java Wed May 4 12:19:41 2011
@@ -23,9 +23,12 @@ import javax.ws.rs.core.HttpHeaders;
import javax.ws.rs.core.Response;
import org.apache.cxf.jaxrs.model.ParameterType;
+import org.apache.cxf.message.Exchange;
import org.apache.cxf.message.ExchangeImpl;
import org.apache.cxf.message.Message;
import org.apache.cxf.message.MessageImpl;
+import org.apache.cxf.transport.Destination;
+import org.easymock.EasyMock;
import org.junit.Assert;
import org.junit.Test;
@@ -118,5 +121,35 @@ public class HttpUtilsTest extends Asser
assertEquals(Response.Status.BAD_REQUEST,
HttpUtils.getParameterFailureStatus(ParameterType.COOKIE));
}
+
+ @Test
+ public void testGetBaseAddressHttpUri() {
+ doTestGetBaseAddress("http://localhost:8080/store?query", "/store");
+ }
+
+ @Test
+ public void testGetBaseAddressHttpEncodedUri() {
+ doTestGetBaseAddress("http://localhost:8080/store%20?query", "/store%20");
+ }
+
+ @Test
+ public void testGetBaseAddressJmsUri() {
+ doTestGetBaseAddress("jms://topic", "/");
+ }
+ @Test
+ public void testGetBaseAddressWithoutScheme() {
+ doTestGetBaseAddress("/s", "/s");
+ }
+
+ private void doTestGetBaseAddress(String baseURI, String expected) {
+ Message m = new MessageImpl();
+ Exchange exchange = new ExchangeImpl();
+ m.setExchange(exchange);
+ Destination dest = EasyMock.createMock(Destination.class);
+ exchange.setDestination(dest);
+ m.put(Message.BASE_PATH, baseURI);
+ String address = HttpUtils.getBaseAddress(m);
+ assertEquals(expected, address);
+ }
}