hadoop-common-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Masatake Iwasaki (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (HADOOP-11613) Remove httpclient dependency from hadoop-azure
Date Fri, 19 Feb 2016 08:58:18 GMT

    [ https://issues.apache.org/jira/browse/HADOOP-11613?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15153941#comment-15153941
] 

Masatake Iwasaki commented on HADOOP-11613:
-------------------------------------------

While looking the related code, I felt that we should not maintain own utils to encode/decode
URI components as far as possible.

{{URIUtil.encodePath}} is used to compose URI. I think [URIBuilder|https://hc.apache.org/httpcomponents-client-ga/httpclient/apidocs/org/apache/http/client/utils/URIBuilder.html]
(or [UriBuilder|http://docs.oracle.com/javaee/7/api/javax/ws/rs/core/UriBuilder.html] which
is already used in hadoop-azure) is the right tool for this. URIBuilder internally uses [URLEncodedUtils|https://github.com/apache/httpclient/blob/4.5.x/httpclient/src/main/java/org/apache/http/client/utils/URLEncodedUtils.java]
which looks like up-to-date version of URIUtil. I tried to replace existing code like

{code}
@@ -135,13 +136,9 @@ private static String convertUriToDecodedString(URI uri) {

   private static URI convertKeyToEncodedUri(String key) {
     try {
-      String encodedKey = URIUtil.encodePath(key);
-      URI uri = new URI(encodedKey);
-      return uri;
+      return new URIBuilder().setPath(key).build();
     } catch (URISyntaxException e) {
       throw new AssertionError("Failed to encode key: " + key);
-    } catch (URIException e) {
-      throw new AssertionError("Failed to encode key: " + key);
     }
   }

@@ -150,8 +147,8 @@ public CloudBlobContainerWrapper getContainerReference(String name)
       throws URISyntaxException, StorageException {
     String fullUri;
     try {
-      fullUri = baseUriString + "/" + URIUtil.encodePath(name);
-    } catch (URIException e) {
+      fullUri = new URIBuilder(baseUriString + "/" + name).toString();
+    } catch (URISyntaxException e) {
       throw new RuntimeException("problem encoding fullUri", e);
     }

@@ -255,8 +252,8 @@ private String fullUriString(String relativePath, boolean withTrailingSlash)
{
       }

       try {
-        fullUri = baseUri + URIUtil.encodePath(relativePath);
-      } catch (URIException e) {
+        fullUri = new URIBuilder(baseUri + relativePath).toString();
+      } catch (URISyntaxException e) {
         throw new RuntimeException("problem encoding fullUri", e);
       }
{code}

but some unit tests failed due to this. still digging.


> Remove httpclient dependency from hadoop-azure
> ----------------------------------------------
>
>                 Key: HADOOP-11613
>                 URL: https://issues.apache.org/jira/browse/HADOOP-11613
>             Project: Hadoop Common
>          Issue Type: Sub-task
>            Reporter: Akira AJISAKA
>            Assignee: Brahma Reddy Battula
>              Labels: BB2015-05-TBR
>         Attachments: HADOOP-11613-001.patch, HADOOP-11613-002.patch, HADOOP-11613-003.patch,
HADOOP-11613.004.patch, HADOOP-11613.05.patch, HADOOP-11613.06.patch, HADOOP-11613.patch
>
>
> Remove httpclient dependency from MockStorageInterface.java.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Mime
View raw message