You are viewing a plain text version of this content. The canonical link for it is here.
Posted to common-commits@hadoop.apache.org by cn...@apache.org on 2016/10/12 20:12:30 UTC
[13/52] [abbrv] hadoop git commit: YARN-5659. getPathFromYarnURL
should use standard methods. Contributed by Sergey Shelukhin.
YARN-5659. getPathFromYarnURL should use standard methods. Contributed by Sergey Shelukhin.
Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo
Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/459a4833
Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/459a4833
Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/459a4833
Branch: refs/heads/HADOOP-13037
Commit: 459a4833a90437a52787a41c2759a4b18cfe411c
Parents: ebd4f39
Author: Junping Du <ju...@apache.org>
Authored: Fri Oct 7 07:46:08 2016 -0700
Committer: Junping Du <ju...@apache.org>
Committed: Fri Oct 7 07:46:08 2016 -0700
----------------------------------------------------------------------
.../org/apache/hadoop/yarn/api/records/URL.java | 58 ++++++------
.../apache/hadoop/yarn/api/records/TestURL.java | 99 ++++++++++++++++++++
2 files changed, 130 insertions(+), 27 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hadoop/blob/459a4833/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/api/records/URL.java
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/api/records/URL.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/api/records/URL.java
index aa28585..19bfc32 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/api/records/URL.java
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/api/records/URL.java
@@ -18,11 +18,15 @@
package org.apache.hadoop.yarn.api.records;
+import com.google.common.annotations.VisibleForTesting;
+
import java.net.URI;
import java.net.URISyntaxException;
import org.apache.hadoop.classification.InterfaceAudience.Public;
+import org.apache.hadoop.classification.InterfaceAudience.Private;
import org.apache.hadoop.classification.InterfaceStability.Stable;
+import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.yarn.factory.providers.RecordFactoryProvider;
import org.apache.hadoop.yarn.util.Records;
@@ -52,7 +56,7 @@ public abstract class URL {
@Public
@Stable
public abstract String getScheme();
-
+
/**
* Set the scheme of the URL
* @param scheme scheme of the URL
@@ -68,7 +72,7 @@ public abstract class URL {
@Public
@Stable
public abstract String getUserInfo();
-
+
/**
* Set the user info of the URL.
* @param userInfo user info of the URL
@@ -84,7 +88,7 @@ public abstract class URL {
@Public
@Stable
public abstract String getHost();
-
+
/**
* Set the host of the URL.
* @param host host of the URL
@@ -100,7 +104,7 @@ public abstract class URL {
@Public
@Stable
public abstract int getPort();
-
+
/**
* Set the port of the URL
* @param port port of the URL
@@ -116,7 +120,7 @@ public abstract class URL {
@Public
@Stable
public abstract String getFile();
-
+
/**
* Set the file of the URL.
* @param file file of the URL
@@ -124,32 +128,20 @@ public abstract class URL {
@Public
@Stable
public abstract void setFile(String file);
-
+
@Public
@Stable
public Path toPath() throws URISyntaxException {
- String scheme = getScheme() == null ? "" : getScheme();
-
- String authority = "";
- if (getHost() != null) {
- authority = getHost();
- if (getUserInfo() != null) {
- authority = getUserInfo() + "@" + authority;
- }
- if (getPort() > 0) {
- authority += ":" + getPort();
- }
- }
-
- return new Path(
- (new URI(scheme, authority, getFile(), null, null)).normalize());
+ return new Path(new URI(getScheme(), getUserInfo(),
+ getHost(), getPort(), getFile(), null, null));
}
-
- @Public
- @Stable
- public static URL fromURI(URI uri) {
+
+
+ @Private
+ @VisibleForTesting
+ public static URL fromURI(URI uri, Configuration conf) {
URL url =
- RecordFactoryProvider.getRecordFactory(null).newRecordInstance(
+ RecordFactoryProvider.getRecordFactory(conf).newRecordInstance(
URL.class);
if (uri.getHost() != null) {
url.setHost(uri.getHost());
@@ -162,7 +154,19 @@ public abstract class URL {
url.setFile(uri.getPath());
return url;
}
-
+
+ @Public
+ @Stable
+ public static URL fromURI(URI uri) {
+ return fromURI(uri, null);
+ }
+
+ @Private
+ @VisibleForTesting
+ public static URL fromPath(Path path, Configuration conf) {
+ return fromURI(path.toUri(), conf);
+ }
+
@Public
@Stable
public static URL fromPath(Path path) {
http://git-wip-us.apache.org/repos/asf/hadoop/blob/459a4833/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/test/java/org/apache/hadoop/yarn/api/records/TestURL.java
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/test/java/org/apache/hadoop/yarn/api/records/TestURL.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/test/java/org/apache/hadoop/yarn/api/records/TestURL.java
new file mode 100644
index 0000000..b464eca
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/test/java/org/apache/hadoop/yarn/api/records/TestURL.java
@@ -0,0 +1,99 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.hadoop.yarn.api.records;
+
+import static org.junit.Assert.assertEquals;
+
+import org.apache.hadoop.conf.Configuration;
+import org.apache.hadoop.fs.Path;
+import org.apache.hadoop.yarn.conf.YarnConfiguration;
+import org.apache.hadoop.yarn.factories.RecordFactory;
+import org.junit.Test;
+
+/** Test for the URL class. */
+public class TestURL {
+
+ @Test
+ public void testConversion() throws Exception {
+ Configuration conf = new Configuration();
+ conf.set(YarnConfiguration.IPC_RECORD_FACTORY_CLASS,
+ RecordFactoryForTest.class.getName());
+ String[] pathStrs = new String[] {"/", ".", "foo/bar", "foo",
+ "/foo/bar/baz", "moo://bar/baz", "moo://bar:123/baz", "moo:///foo",
+ "moo://foo@bar:123/baz/foo", "moo://foo@bar/baz/foo", "moo://foo@bar",
+ "moo://foo:123"};
+ for (String s : pathStrs) {
+ Path path = new Path(s);
+ assertEquals(path, URL.fromPath(path, conf).toPath());
+ }
+
+ Path p = new Path("/foo/bar#baz");
+ assertEquals(p, URL.fromPath(p, conf).toPath());
+ }
+
+ /** Record factory that instantiates URLs for this test. */
+ public static class RecordFactoryForTest implements RecordFactory {
+ private static final RecordFactoryForTest SELF =
+ new RecordFactoryForTest();
+ @SuppressWarnings("unchecked")
+ @Override
+ public <T> T newRecordInstance(Class<T> clazz) {
+ return (T) new URLForTest();
+ }
+ public static RecordFactory get() {
+ return SELF;
+ }
+ }
+
+ /** URL fake for this test; sidesteps proto-URL dependency. */
+ public static class URLForTest extends URL {
+ private String scheme, userInfo, host, file;
+ private int port;
+ public String getScheme() {
+ return scheme;
+ }
+ public void setScheme(String scheme) {
+ this.scheme = scheme;
+ }
+ public String getUserInfo() {
+ return userInfo;
+ }
+ public void setUserInfo(String userInfo) {
+ this.userInfo = userInfo;
+ }
+ public String getHost() {
+ return host;
+ }
+ public void setHost(String host) {
+ this.host = host;
+ }
+ public String getFile() {
+ return file;
+ }
+ public void setFile(String file) {
+ this.file = file;
+ }
+ public int getPort() {
+ return port;
+ }
+ public void setPort(int port) {
+ this.port = port;
+ }
+ }
+
+}
---------------------------------------------------------------------
To unsubscribe, e-mail: common-commits-unsubscribe@hadoop.apache.org
For additional commands, e-mail: common-commits-help@hadoop.apache.org