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 13:43:32 UTC
svn commit: r1099421 - in /cxf/trunk/rt/frontend/jaxrs/src:
main/java/org/apache/cxf/jaxrs/utils/HttpUtils.java
test/java/org/apache/cxf/jaxrs/utils/HttpUtilsTest.java
Author: sergeyb
Date: Wed May 4 11:43:31 2011
New Revision: 1099421
URL: http://svn.apache.org/viewvc?rev=1099421&view=rev
Log:
[CXF-3478] Using Message.BASE_PATH when available for determining the endpoint address
Modified:
cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/HttpUtils.java
cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/utils/HttpUtilsTest.java
Modified: cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/HttpUtils.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/HttpUtils.java?rev=1099421&r1=1099420&r2=1099421&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/HttpUtils.java (original)
+++ cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/HttpUtils.java Wed May 4 11:43:31 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/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/utils/HttpUtilsTest.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/utils/HttpUtilsTest.java?rev=1099421&r1=1099420&r2=1099421&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/utils/HttpUtilsTest.java (original)
+++ cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/utils/HttpUtilsTest.java Wed May 4 11:43:31 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);
+ }
}