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 jl...@apache.org on 2014/11/18 18:25:47 UTC
hadoop git commit: HADOOP-11309. System class pattern package.Foo
should match package.Foo$Bar,
too. Contributed by Gera Shegalov (cherry picked from commit
b4ca7276902ad362f746ea997f7e977a7a6abd0e)
Repository: hadoop
Updated Branches:
refs/heads/branch-2 09df35e51 -> 5125a8e59
HADOOP-11309. System class pattern package.Foo should match package.Foo$Bar, too. Contributed by Gera Shegalov
(cherry picked from commit b4ca7276902ad362f746ea997f7e977a7a6abd0e)
Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo
Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/5125a8e5
Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/5125a8e5
Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/5125a8e5
Branch: refs/heads/branch-2
Commit: 5125a8e59ea7fa0680cab5cda60ddcc731f74f39
Parents: 09df35e
Author: Jason Lowe <jl...@apache.org>
Authored: Tue Nov 18 17:22:21 2014 +0000
Committer: Jason Lowe <jl...@apache.org>
Committed: Tue Nov 18 17:23:37 2014 +0000
----------------------------------------------------------------------
hadoop-common-project/hadoop-common/CHANGES.txt | 3 +++
.../hadoop/util/ApplicationClassLoader.java | 11 ++++++---
.../hadoop/util/TestApplicationClassLoader.java | 26 ++++++++++++++------
3 files changed, 29 insertions(+), 11 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hadoop/blob/5125a8e5/hadoop-common-project/hadoop-common/CHANGES.txt
----------------------------------------------------------------------
diff --git a/hadoop-common-project/hadoop-common/CHANGES.txt b/hadoop-common-project/hadoop-common/CHANGES.txt
index 875fd99..4935850 100644
--- a/hadoop-common-project/hadoop-common/CHANGES.txt
+++ b/hadoop-common-project/hadoop-common/CHANGES.txt
@@ -91,6 +91,9 @@ Release 2.7.0 - UNRELEASED
HADOOP-11311. Restrict uppercase key names from being created with JCEKS.
(wang)
+ HADOOP-11309. System class pattern package.Foo should match
+ package.Foo$Bar, too (Gera Shegalov via jlowe)
+
Release 2.6.0 - 2014-11-18
INCOMPATIBLE CHANGES
http://git-wip-us.apache.org/repos/asf/hadoop/blob/5125a8e5/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/util/ApplicationClassLoader.java
----------------------------------------------------------------------
diff --git a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/util/ApplicationClassLoader.java b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/util/ApplicationClassLoader.java
index b18997c..d2ab015 100644
--- a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/util/ApplicationClassLoader.java
+++ b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/util/ApplicationClassLoader.java
@@ -228,10 +228,13 @@ public class ApplicationClassLoader extends URLClassLoader {
c = c.substring(1);
result = false;
}
- if (c.endsWith(".") && canonicalName.startsWith(c)) {
- return result;
- } else if (canonicalName.equals(c)) {
- return result;
+ if (canonicalName.startsWith(c)) {
+ if ( c.endsWith(".") // package
+ || canonicalName.length() == c.length() // class
+ || canonicalName.length() > c.length() // nested
+ && canonicalName.charAt(c.length()) == '$' ) {
+ return result;
+ }
}
}
}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/5125a8e5/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/util/TestApplicationClassLoader.java
----------------------------------------------------------------------
diff --git a/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/util/TestApplicationClassLoader.java b/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/util/TestApplicationClassLoader.java
index 5d0e131..cc16493 100644
--- a/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/util/TestApplicationClassLoader.java
+++ b/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/util/TestApplicationClassLoader.java
@@ -90,15 +90,27 @@ public class TestApplicationClassLoader {
@Test
public void testIsSystemClass() {
- assertFalse(isSystemClass("org.example.Foo", null));
- assertTrue(isSystemClass("org.example.Foo", classes("org.example.Foo")));
- assertTrue(isSystemClass("/org.example.Foo", classes("org.example.Foo")));
- assertTrue(isSystemClass("org.example.Foo", classes("org.example.")));
- assertTrue(isSystemClass("net.example.Foo",
+ testIsSystemClassInternal("");
+ }
+
+ @Test
+ public void testIsSystemNestedClass() {
+ testIsSystemClassInternal("$Klass");
+ }
+
+ private void testIsSystemClassInternal(String nestedClass) {
+ assertFalse(isSystemClass("org.example.Foo" + nestedClass, null));
+ assertTrue(isSystemClass("org.example.Foo" + nestedClass,
+ classes("org.example.Foo")));
+ assertTrue(isSystemClass("/org.example.Foo" + nestedClass,
+ classes("org.example.Foo")));
+ assertTrue(isSystemClass("org.example.Foo" + nestedClass,
+ classes("org.example.")));
+ assertTrue(isSystemClass("net.example.Foo" + nestedClass,
classes("org.example.,net.example.")));
- assertFalse(isSystemClass("org.example.Foo",
+ assertFalse(isSystemClass("org.example.Foo" + nestedClass,
classes("-org.example.Foo,org.example.")));
- assertTrue(isSystemClass("org.example.Bar",
+ assertTrue(isSystemClass("org.example.Bar" + nestedClass,
classes("-org.example.Foo.,org.example.")));
}