Return-Path: Delivered-To: apmail-cxf-commits-archive@www.apache.org Received: (qmail 27323 invoked from network); 19 Dec 2008 18:17:41 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 19 Dec 2008 18:17:41 -0000 Received: (qmail 26612 invoked by uid 500); 19 Dec 2008 18:17:54 -0000 Delivered-To: apmail-cxf-commits-archive@cxf.apache.org Received: (qmail 26563 invoked by uid 500); 19 Dec 2008 18:17:54 -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 26554 invoked by uid 99); 19 Dec 2008 18:17:53 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 19 Dec 2008 10:17:53 -0800 X-ASF-Spam-Status: No, hits=0.0 required=10.0 tests= 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, 19 Dec 2008 18:17:34 +0000 Received: by eris.apache.org (Postfix, from userid 65534) id A6E5B23888E7; Fri, 19 Dec 2008 10:17:14 -0800 (PST) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r728088 - in /cxf/branches/2.1.x-fixes: ./ rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/ rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/interceptor/ rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/ rt/frontend/... Date: Fri, 19 Dec 2008 18:17:14 -0000 To: commits@cxf.apache.org From: sergeyb@apache.org X-Mailer: svnmailer-1.0.8 Message-Id: <20081219181714.A6E5B23888E7@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: sergeyb Date: Fri Dec 19 10:17:13 2008 New Revision: 728088 URL: http://svn.apache.org/viewvc?rev=728088&view=rev Log: Merged revisions 728070 via svnmerge from https://svn.apache.org/repos/asf/cxf/trunk ........ r728070 | sergeyb | 2008-12-19 17:13:01 +0000 (Fri, 19 Dec 2008) | 1 line JAXRS : fixing UriInfoImpl ........ Modified: cxf/branches/2.1.x-fixes/ (props changed) cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/UriInfoImpl.java cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/interceptor/JAXRSInInterceptor.java cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/HttpUtils.java cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/impl/UriInfoImplTest.java cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/utils/HttpUtilsTest.java Propchange: cxf/branches/2.1.x-fixes/ ------------------------------------------------------------------------------ --- svn:mergeinfo (original) +++ svn:mergeinfo Fri Dec 19 10:17:13 2008 @@ -1 +1 @@ -/cxf/trunk:686333-686363,686764,686820,687096,687194,687363,687387,687463,687543,687722,687798,687814,687817,687891,687910,687914,688086,688102,688133,688596,688735,688870,689572,689596,689855,689924,690067,690289,691246,691271,691295,691338,691355,691488,691602,691646,691706,691728,692116,692157,692310,692466,692499,693653,693819,694179,694263,694417,694716,694744,694747,694795,694869,694981,694987,694993,695041,695096,695396,695484,695537,695552,695561,695619,695684,695835,695840,695868,695935,695977,696016,696094,696433,696720,697085,697868,698128,699289,700261,700507,700602,700981,701316,701783,701830,701862,702187,702205-702248,702267,702547,702561,702580,702602,702609,702616,702653,702656,702957,703191,703239,703309,703501,703513,703548,704584,704937,704997,705150,705235,705274,705340,705446,705548,705614,705692,705708,706482,706631,706675,706900,706909,707034,707089,707100,707902,708035,708044,708074,708410,708417,708550,708554,709353-709354,709425,710076,710150,71015 4,711193,711388,711410,711490,711635,711949,711975,712194,712198,712238,712272,712299,712312,712670,712893,713082,713095-713096,713099,713584,713597,713737,713804,713899,714167-714168,714245,714255,717937-717961,718281-718448,718565,718620,718640,718665,718970,719017,719210,719215-719218,719222-719273,719305,719327-719680,720053,720119-720218,720238,720293-720316,720497,721221,721241,721501,722117,722129,722412,722988,723024,723338,723378,723716-723791,724333-724372,724433-724438,724449,724481,724485,724668,724780,724782,724785,724793,724795,724940,725071,725316,725332,725335,725348,725364,725418,725425-725426,725455,725506,725554,725562,725651,725671,725688,725754,725773,725799,725839,726342,726524,726631,726634,726637,726639,726692,726724,726769,726992,727096,727445,727521,727568,727692,727754,727781,727792 +/cxf/trunk:686333-686363,686764,686820,687096,687194,687363,687387,687463,687543,687722,687798,687814,687817,687891,687910,687914,688086,688102,688133,688596,688735,688870,689572,689596,689855,689924,690067,690289,691246,691271,691295,691338,691355,691488,691602,691646,691706,691728,692116,692157,692310,692466,692499,693653,693819,694179,694263,694417,694716,694744,694747,694795,694869,694981,694987,694993,695041,695096,695396,695484,695537,695552,695561,695619,695684,695835,695840,695868,695935,695977,696016,696094,696433,696720,697085,697868,698128,699289,700261,700507,700602,700981,701316,701783,701830,701862,702187,702205-702248,702267,702547,702561,702580,702602,702609,702616,702653,702656,702957,703191,703239,703309,703501,703513,703548,704584,704937,704997,705150,705235,705274,705340,705446,705548,705614,705692,705708,706482,706631,706675,706900,706909,707034,707089,707100,707902,708035,708044,708074,708410,708417,708550,708554,709353-709354,709425,710076,710150,71015 4,711193,711388,711410,711490,711635,711949,711975,712194,712198,712238,712272,712299,712312,712670,712893,713082,713095-713096,713099,713584,713597,713737,713804,713899,714167-714168,714245,714255,717937-717961,718281-718448,718565,718620,718640,718665,718970,719017,719210,719215-719218,719222-719273,719305,719327-719680,720053,720119-720218,720238,720293-720316,720497,721221,721241,721501,722117,722129,722412,722988,723024,723338,723378,723716-723791,724333-724372,724433-724438,724449,724481,724485,724668,724780,724782,724785,724793,724795,724940,725071,725316,725332,725335,725348,725364,725418,725425-725426,725455,725506,725554,725562,725651,725671,725688,725754,725773,725799,725839,726342,726524,726631,726634,726637,726639,726692,726724,726769,726992,727096,727445,727521,727568,727692,727754,727781,727792,728070 Propchange: cxf/branches/2.1.x-fixes/ ------------------------------------------------------------------------------ Binary property 'svnmerge-integrated' - no diff available. Modified: cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/UriInfoImpl.java URL: http://svn.apache.org/viewvc/cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/UriInfoImpl.java?rev=728088&r1=728087&r2=728088&view=diff ============================================================================== --- cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/UriInfoImpl.java (original) +++ cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/UriInfoImpl.java Fri Dec 19 10:17:13 2008 @@ -44,10 +44,8 @@ } public URI getAbsolutePath() { - String address = getBaseUri().toString(); - address = address.endsWith("/") ? address.substring(0, address.length() - 1) - : address; - return URI.create(address + getPath()); + String path = getAbsolutePathAsString(); + return URI.create(path); } public UriBuilder getAbsolutePathBuilder() { @@ -55,7 +53,7 @@ } public URI getBaseUri() { - URI u = URI.create(getEndpointAddress()); + URI u = URI.create(HttpUtils.getEndpointAddress(message)); return HttpUtils.toAbsoluteUri(u, message); } @@ -69,8 +67,7 @@ public String getPath(boolean decode) { - String path = (String)message.get(Message.REQUEST_URI); - return decode ? JAXRSUtils.uriDecode(path) : path; + return doGetPath(decode, true); } public List getPathSegments() { @@ -91,12 +88,13 @@ decode); } - //TODO : check the fragment as well public URI getRequestUri() { + String path = getAbsolutePathAsString(); String queries = (String)message.get(Message.QUERY_STRING); - return URI.create(getEndpointAddress() - + message.get(Message.REQUEST_URI) - + (queries == null ? "" : "?" + queries)); + if (queries != null) { + path += "?" + queries; + } + return URI.create(path); } public UriBuilder getRequestUriBuilder() { @@ -108,7 +106,6 @@ } public MultivaluedMap getPathParameters(boolean decode) { - // this needs to be changed MetadataMap values = new MetadataMap(); for (Map.Entry> entry : templateParams.entrySet()) { if (entry.getKey().equals(URITemplate.FINAL_MATCH_GROUP)) { @@ -121,13 +118,6 @@ return values; } - protected String getEndpointAddress() { - String value = message.getExchange().getDestination().getAddress() - .getAddress().getValue(); - - return value; - } - public List getAncestorResourceURIs() { // TODO Auto-generated method stub return null; @@ -143,6 +133,7 @@ return null; } + public String getPathExtension() { // TODO Auto-generated method stub return null; @@ -152,4 +143,18 @@ // TODO Auto-generated method stub return null; } + + private String doGetPath(boolean decode, boolean addSlash) { + String path = HttpUtils.getPathToMatch(message, addSlash); + return decode ? JAXRSUtils.uriDecode(path) : path; + } + + private String getAbsolutePathAsString() { + String address = getBaseUri().toString(); + String path = doGetPath(true, false); + if (path.startsWith("/") && address.endsWith("/")) { + address = address.substring(0, address.length() - 1); + } + return address + path; + } } Modified: cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/interceptor/JAXRSInInterceptor.java URL: http://svn.apache.org/viewvc/cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/interceptor/JAXRSInInterceptor.java?rev=728088&r1=728087&r2=728088&view=diff ============================================================================== --- cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/interceptor/JAXRSInInterceptor.java (original) +++ cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/interceptor/JAXRSInInterceptor.java Fri Dec 19 10:17:13 2008 @@ -99,7 +99,7 @@ requestContentType = "*/*"; } - String rawPath = HttpUtils.getPathToMatch(message); + String rawPath = HttpUtils.getPathToMatch(message, true); //1. Matching target resource class Service service = message.getExchange().get(Service.class); Modified: cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/HttpUtils.java URL: http://svn.apache.org/viewvc/cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/HttpUtils.java?rev=728088&r1=728087&r2=728088&view=diff ============================================================================== --- cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/HttpUtils.java (original) +++ cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/HttpUtils.java Fri Dec 19 10:17:13 2008 @@ -59,36 +59,41 @@ return u; } - public static String getPathToMatch(Message m) { - + public static String getPathToMatch(Message m, boolean addSlash) { String requestAddress = (String)m.get(Message.REQUEST_URI); String baseAddress = getBaseAddress(m); - - return getPathToMatch(requestAddress, baseAddress); + return getPathToMatch(requestAddress, baseAddress, addSlash); } + public static String getBaseAddress(Message m) { try { - String address = null; - Destination d = m.getExchange().getDestination(); - if (d instanceof ServletDestination) { - address = ((ServletDestination)d).getEndpointInfo().getAddress(); - } else { - address = d.getAddress().getAddress().getValue(); - } - return new URL(address).getPath(); + String endpointAddress = getEndpointAddress(m); + return new URL(endpointAddress).getPath(); } catch (MalformedURLException ex) { return (String)m.get(Message.BASE_PATH); } } - public static String getPathToMatch(String path, String address) { + public static String getEndpointAddress(Message m) { + String address = null; + Destination d = m.getExchange().getDestination(); + if (d instanceof ServletDestination) { + address = ((ServletDestination)d).getEndpointInfo().getAddress(); + } else { + address = d.getAddress().getAddress().getValue(); + } + + return address; + } + + public static String getPathToMatch(String path, String address, boolean addSlash) { int ind = path.indexOf(address); if (ind == 0) { path = path.substring(ind + address.length()); } - if (!path.startsWith("/")) { + if (addSlash && !path.startsWith("/")) { path = "/" + path; } Modified: cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/impl/UriInfoImplTest.java URL: http://svn.apache.org/viewvc/cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/impl/UriInfoImplTest.java?rev=728088&r1=728087&r2=728088&view=diff ============================================================================== --- cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/impl/UriInfoImplTest.java (original) +++ cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/impl/UriInfoImplTest.java Fri Dec 19 10:17:13 2008 @@ -25,11 +25,12 @@ import org.apache.cxf.jaxrs.model.URITemplate; import org.apache.cxf.message.Exchange; import org.apache.cxf.message.Message; -import org.apache.cxf.transport.Destination; -import org.apache.cxf.ws.addressing.AttributedURIType; -import org.apache.cxf.ws.addressing.EndpointReferenceType; +import org.apache.cxf.message.MessageImpl; +import org.apache.cxf.service.model.EndpointInfo; +import org.apache.cxf.transport.servlet.ServletDestination; import org.easymock.classextension.EasyMock; import org.easymock.classextension.IMocksControl; + import org.junit.Assert; import org.junit.Before; import org.junit.Test; @@ -84,7 +85,7 @@ @Test public void testGetRequestURI() { - UriInfo u = new UriInfoImpl(mockMessage("http://localhost:8080/baz", "/bar", "n=1%202"), + UriInfo u = new UriInfoImpl(mockMessage("http://localhost:8080/baz/bar", "/baz/bar", "n=1%202"), null); assertEquals("Wrong request uri", "http://localhost:8080/baz/bar?n=1%202", @@ -132,11 +133,10 @@ @Test public void testGetBaseUri() { - UriInfoImpl u = new UriInfoImpl(mockMessage("http://localhost:8080/baz", "/bar"), - null); + UriInfoImpl u = new UriInfoImpl(mockMessage("http://localhost:8080/baz", null), null); assertEquals("Wrong base path", "http://localhost:8080/baz", u.getBaseUri().toString()); - u = new UriInfoImpl(mockMessage("http://localhost:8080/baz/", "/bar"), + u = new UriInfoImpl(mockMessage("http://localhost:8080/baz/", null), null); assertEquals("Wrong base path", "http://localhost:8080/baz/", u.getBaseUri().toString()); @@ -145,17 +145,28 @@ @Test public void testGetPath() { - UriInfoImpl u = new UriInfoImpl(mockMessage("http://localhost:8080/baz", "/bar"), + UriInfoImpl u = new UriInfoImpl(mockMessage("http://localhost:8080/bar/baz", + "/baz"), null); - assertEquals("Wrong path", "/bar", u.getPath()); + assertEquals("Wrong path", "/baz", u.getPath()); - u = new UriInfoImpl(mockMessage("http://localhost:8080/baz", "/bar%201"), + u = new UriInfoImpl(mockMessage("http://localhost:8080/bar/baz", + "/bar/baz"), null); + assertEquals("Wrong path", "/", u.getPath()); + + u = new UriInfoImpl(mockMessage("http://localhost:8080/bar/baz/", + "/bar/baz/"), null); + assertEquals("Wrong path", "/", u.getPath()); + + u = new UriInfoImpl(mockMessage("http://localhost:8080/baz", "/baz/bar%201"), null); assertEquals("Wrong path", "/bar 1", u.getPath()); - u = new UriInfoImpl(mockMessage("http://localhost:8080/baz", "/bar%201"), + u = new UriInfoImpl(mockMessage("http://localhost:8080/baz", "/baz/bar%201"), null); assertEquals("Wrong path", "/bar%201", u.getPath(false)); + + } private Message mockMessage(String baseAddress, String pathInfo) { @@ -168,23 +179,19 @@ private Message mockMessage(String baseAddress, String pathInfo, String query, String fragment) { + Message m = new MessageImpl(); control.reset(); - Message m = control.createMock(Message.class); Exchange e = control.createMock(Exchange.class); - m.getExchange(); - EasyMock.expectLastCall().andReturn(e); - Destination d = control.createMock(Destination.class); + m.setExchange(e); + ServletDestination d = control.createMock(ServletDestination.class); e.getDestination(); - EasyMock.expectLastCall().andReturn(d); - EndpointReferenceType epr = new EndpointReferenceType(); - epr.setAddress(new AttributedURIType()); - epr.getAddress().setValue(baseAddress); - d.getAddress(); - EasyMock.expectLastCall().andReturn(epr); - m.get(Message.REQUEST_URI); - EasyMock.expectLastCall().andReturn(pathInfo); - m.get(Message.QUERY_STRING); - EasyMock.expectLastCall().andReturn(query); + EasyMock.expectLastCall().andReturn(d).anyTimes(); + EndpointInfo epr = new EndpointInfo(); + epr.setAddress(baseAddress); + d.getEndpointInfo(); + EasyMock.expectLastCall().andReturn(epr).anyTimes(); + m.put(Message.REQUEST_URI, pathInfo); + m.put(Message.QUERY_STRING, query); control.replay(); return m; } Modified: cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/utils/HttpUtilsTest.java URL: http://svn.apache.org/viewvc/cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/utils/HttpUtilsTest.java?rev=728088&r1=728087&r2=728088&view=diff ============================================================================== --- cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/utils/HttpUtilsTest.java (original) +++ cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/utils/HttpUtilsTest.java Fri Dec 19 10:17:13 2008 @@ -26,13 +26,13 @@ @Test public void testUpdatePath() { - assertEquals("/", HttpUtils.getPathToMatch("/", "/")); - assertEquals("/", HttpUtils.getPathToMatch("/", "/bar")); - assertEquals("/bar", HttpUtils.getPathToMatch("/bar", "/")); + assertEquals("/", HttpUtils.getPathToMatch("/", "/", true)); + assertEquals("/", HttpUtils.getPathToMatch("/", "/bar", true)); + assertEquals("/bar", HttpUtils.getPathToMatch("/bar", "/", true)); - assertEquals("/", HttpUtils.getPathToMatch("/bar", "/bar")); - assertEquals("/bar", HttpUtils.getPathToMatch("/baz/bar", "/baz")); - assertEquals("/baz/bar/foo/", HttpUtils.getPathToMatch("/baz/bar/foo/", "/bar")); + assertEquals("/", HttpUtils.getPathToMatch("/bar", "/bar", true)); + assertEquals("/bar", HttpUtils.getPathToMatch("/baz/bar", "/baz", true)); + assertEquals("/baz/bar/foo/", HttpUtils.getPathToMatch("/baz/bar/foo/", "/bar", true)); }