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 BF76CCD99 for ; Wed, 19 Jun 2013 12:32:01 +0000 (UTC) Received: (qmail 71249 invoked by uid 500); 19 Jun 2013 12:32:00 -0000 Delivered-To: apmail-cxf-commits-archive@cxf.apache.org Received: (qmail 71133 invoked by uid 500); 19 Jun 2013 12:32:00 -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 71121 invoked by uid 99); 19 Jun 2013 12:31:59 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 19 Jun 2013 12:31:59 +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; Wed, 19 Jun 2013 12:31:58 +0000 Received: from eris.apache.org (localhost [127.0.0.1]) by eris.apache.org (Postfix) with ESMTP id D137023888FE; Wed, 19 Jun 2013 12:31:38 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r1494587 - in /cxf/trunk/rt: frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/ frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/ frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/utils/ rs/client/src/main/java/org/apache/cxf/ja... Date: Wed, 19 Jun 2013 12:31:38 -0000 To: commits@cxf.apache.org From: sergeyb@apache.org X-Mailer: svnmailer-1.0.8-patched Message-Id: <20130619123138.D137023888FE@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: sergeyb Date: Wed Jun 19 12:31:37 2013 New Revision: 1494587 URL: http://svn.apache.org/r1494587 Log: Not encoding comma in queries, trying to encode non-encoded URLs when constructing WebClients Modified: cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/UriBuilderImpl.java 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 cxf/trunk/rt/rs/client/src/main/java/org/apache/cxf/jaxrs/client/AbstractClient.java cxf/trunk/rt/rs/client/src/main/java/org/apache/cxf/jaxrs/client/WebClient.java cxf/trunk/rt/rs/client/src/test/java/org/apache/cxf/jaxrs/client/WebClientTest.java Modified: cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/UriBuilderImpl.java URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/UriBuilderImpl.java?rev=1494587&r1=1494586&r2=1494587&view=diff ============================================================================== --- cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/UriBuilderImpl.java (original) +++ cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/UriBuilderImpl.java Wed Jun 19 12:31:37 2013 @@ -878,7 +878,7 @@ public class UriBuilderImpl extends UriB } } - private UriBuilder uriAsTemplate(String uri) { + public UriBuilder uriAsTemplate(String uri) { // This can be a start of replacing URI class Parser completely // but it can be too complicated, the following code is needed for now // to deal with URIs containing template variables. 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=1494587&r1=1494586&r2=1494587&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 Jun 19 12:31:37 2013 @@ -78,7 +78,7 @@ public final class HttpUtils { // there are more of such characters, ex, '*' but '*' is not affected by UrlEncode private static final String PATH_RESERVED_CHARACTERS = "=@/:!$&\'(),;~"; - private static final String QUERY_RESERVED_CHARACTERS = "?/"; + private static final String QUERY_RESERVED_CHARACTERS = "?/,"; private static final String CURRENT_PATH_SEGMENT = "."; private static final String PARENT_PATH_SEGMENT = ".."; 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=1494587&r1=1494586&r2=1494587&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 Jun 19 12:31:37 2013 @@ -45,6 +45,11 @@ public class HttpUtilsTest extends Asser } @Test + public void testCommaInQuery() { + assertEquals("a+,b", HttpUtils.queryEncode("a ,b")); + } + + @Test public void testRelativize() throws Exception { // http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6226081 URI a = new URI("file:/c:/abc/def/myDocument/doc.xml"); Modified: cxf/trunk/rt/rs/client/src/main/java/org/apache/cxf/jaxrs/client/AbstractClient.java URL: http://svn.apache.org/viewvc/cxf/trunk/rt/rs/client/src/main/java/org/apache/cxf/jaxrs/client/AbstractClient.java?rev=1494587&r1=1494586&r2=1494587&view=diff ============================================================================== --- cxf/trunk/rt/rs/client/src/main/java/org/apache/cxf/jaxrs/client/AbstractClient.java (original) +++ cxf/trunk/rt/rs/client/src/main/java/org/apache/cxf/jaxrs/client/AbstractClient.java Wed Jun 19 12:31:37 2013 @@ -100,8 +100,8 @@ public abstract class AbstractClient imp protected static final String REQUEST_CONTEXT = "RequestContext"; protected static final String RESPONSE_CONTEXT = "ResponseContext"; protected static final String KEEP_CONDUIT_ALIVE = "KeepConduitAlive"; + protected static final String HTTP_SCHEME = "http"; - private static final String HTTP_SCHEME = "http"; private static final String PROXY_PROPERTY = "jaxrs.proxy"; private static final String HEADER_SPLIT_PROPERTY = "org.apache.cxf.http.header.split"; Modified: cxf/trunk/rt/rs/client/src/main/java/org/apache/cxf/jaxrs/client/WebClient.java URL: http://svn.apache.org/viewvc/cxf/trunk/rt/rs/client/src/main/java/org/apache/cxf/jaxrs/client/WebClient.java?rev=1494587&r1=1494586&r2=1494587&view=diff ============================================================================== --- cxf/trunk/rt/rs/client/src/main/java/org/apache/cxf/jaxrs/client/WebClient.java (original) +++ cxf/trunk/rt/rs/client/src/main/java/org/apache/cxf/jaxrs/client/WebClient.java Wed Jun 19 12:31:37 2013 @@ -56,6 +56,7 @@ import org.apache.cxf.feature.Feature; import org.apache.cxf.helpers.CastUtils; import org.apache.cxf.interceptor.Fault; import org.apache.cxf.jaxrs.impl.ResponseImpl; +import org.apache.cxf.jaxrs.impl.UriBuilderImpl; import org.apache.cxf.jaxrs.model.ParameterType; import org.apache.cxf.jaxrs.model.URITemplate; import org.apache.cxf.jaxrs.utils.HttpUtils; @@ -79,7 +80,7 @@ public class WebClient extends AbstractC private static final String RESPONSE_TYPE = "response.type"; protected WebClient(String baseAddress) { - this(URI.create(baseAddress)); + this(convertStringToURI(baseAddress)); } protected WebClient(URI baseURI) { @@ -1178,6 +1179,20 @@ public class WebClient extends AbstractC return clientState; } + static URI convertStringToURI(String baseAddress) { + try { + return URI.create(baseAddress); + } catch (RuntimeException ex) { + // no need to check "https" scheme or indeed ':' + // as the relative address will not work as the base address + if (baseAddress.startsWith(HTTP_SCHEME)) { + return new UriBuilderImpl().uriAsTemplate(baseAddress).build(); + } else { + throw ex; + } + } + } + // Async related code, consider pushing most of it to AbstractClient public AsyncInvoker async() { return new AsyncInvokerImpl(); Modified: cxf/trunk/rt/rs/client/src/test/java/org/apache/cxf/jaxrs/client/WebClientTest.java URL: http://svn.apache.org/viewvc/cxf/trunk/rt/rs/client/src/test/java/org/apache/cxf/jaxrs/client/WebClientTest.java?rev=1494587&r1=1494586&r2=1494587&view=diff ============================================================================== --- cxf/trunk/rt/rs/client/src/test/java/org/apache/cxf/jaxrs/client/WebClientTest.java (original) +++ cxf/trunk/rt/rs/client/src/test/java/org/apache/cxf/jaxrs/client/WebClientTest.java Wed Jun 19 12:31:37 2013 @@ -81,6 +81,12 @@ public class WebClientTest extends Asser } @Test + public void testAddressNotEncoded() { + URI u = WebClient.create("http://localhost/somepath ").getCurrentURI(); + assertEquals("http://localhost/somepath%20", u.toString()); + } + + @Test public void testDoubleAsteriscs() { URI u = WebClient.create("http://foo").path("**").getCurrentURI(); assertEquals("http://foo/**", u.toString());