You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by tb...@apache.org on 2015/05/28 15:44:49 UTC

ambari git commit: AMBARI-11468 - Views : ClassLoader conflict with com.sun.jersey classes (tbeerbower)

Repository: ambari
Updated Branches:
  refs/heads/trunk 8775fe29c -> 087d9003e


AMBARI-11468 - Views : ClassLoader conflict with com.sun.jersey classes (tbeerbower)


Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/087d9003
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/087d9003
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/087d9003

Branch: refs/heads/trunk
Commit: 087d9003ecf6af33890e4f48743d7237a30d6438
Parents: 8775fe2
Author: tbeerbower <tb...@hortonworks.com>
Authored: Thu May 28 09:44:23 2015 -0400
Committer: tbeerbower <tb...@hortonworks.com>
Committed: Thu May 28 09:44:37 2015 -0400

----------------------------------------------------------------------
 ambari-project/pom.xml                          | 18 ++++++++--------
 .../ambari/server/view/ViewClassLoader.java     |  8 ++++++-
 .../ambari/server/view/ViewClassLoaderTest.java | 22 +++++++++++++++-----
 3 files changed, 33 insertions(+), 15 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/087d9003/ambari-project/pom.xml
----------------------------------------------------------------------
diff --git a/ambari-project/pom.xml b/ambari-project/pom.xml
index b1db47b..528dbf4 100644
--- a/ambari-project/pom.xml
+++ b/ambari-project/pom.xml
@@ -301,12 +301,12 @@
       <dependency>
         <groupId>com.sun.jersey</groupId>
         <artifactId>jersey-core</artifactId>
-        <version>1.11</version>
+        <version>1.18</version>
       </dependency>
       <dependency>
         <groupId>com.sun.jersey</groupId>
         <artifactId>jersey-grizzly</artifactId>
-        <version>1.11</version>
+        <version>1.18</version>
       </dependency>
       <dependency>
         <groupId>org.codehaus.jackson</groupId>
@@ -341,17 +341,17 @@
       <dependency>
         <groupId>com.sun.jersey</groupId>
         <artifactId>jersey-bundle</artifactId>
-        <version>1.11</version>
+        <version>1.18</version>
       </dependency>
       <dependency>
         <groupId>com.sun.jersey</groupId>
         <artifactId>jersey-json</artifactId>
-        <version>1.11</version>
+        <version>1.18</version>
       </dependency>
       <dependency>
         <groupId>com.sun.jersey</groupId>
         <artifactId>jersey-server</artifactId>
-        <version>1.11</version>
+        <version>1.18</version>
       </dependency>
       <dependency>
         <groupId>com.sun.jersey</groupId>
@@ -361,23 +361,23 @@
       <dependency>
         <groupId>com.sun.jersey.contribs</groupId>
         <artifactId>jersey-multipart</artifactId>
-        <version>1.11</version>
+        <version>1.18</version>
       </dependency>
       <dependency>
         <groupId>com.sun.jersey.jersey-test-framework</groupId>
         <artifactId>jersey-test-framework-core</artifactId>
-        <version>1.11</version>
+        <version>1.18</version>
         <scope>test</scope>
       </dependency>
       <dependency>
         <groupId>com.sun.jersey.jersey-test-framework</groupId>
         <artifactId>jersey-test-framework-grizzly2</artifactId>
-        <version>1.11</version>
+        <version>1.18</version>
       </dependency>
       <dependency>
         <groupId>com.sun.jersey.contribs</groupId>
         <artifactId>jersey-guice</artifactId>
-        <version>1.11</version>
+        <version>1.18</version>
       </dependency>
       <dependency>
         <groupId>log4j</groupId>

http://git-wip-us.apache.org/repos/asf/ambari/blob/087d9003/ambari-server/src/main/java/org/apache/ambari/server/view/ViewClassLoader.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/view/ViewClassLoader.java b/ambari-server/src/main/java/org/apache/ambari/server/view/ViewClassLoader.java
index f339b9a..c90bcaa 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/view/ViewClassLoader.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/view/ViewClassLoader.java
@@ -71,10 +71,16 @@ public class ViewClassLoader extends WebAppClassLoader {
 
     WebAppContext webAppContext = new WebAppContext();
 
+    // add ambari classes as system classes
+    webAppContext.addSystemClass("org.apache.ambari.server.");
+    webAppContext.addSystemClass("org.apache.ambari.view.");
+
     // add com.google.inject as system classes to allow for injection in view components using the google annotation
     webAppContext.addSystemClass("com.google.inject.");
-    // add org.slf4j as system classes to avoid linkage errors
+
+    // add as system classes to avoid conflicts and linkage errors
     webAppContext.addSystemClass("org.slf4j.");
+    webAppContext.addSystemClass("com.sun.jersey.");
 
     // set the class loader settings from the configuration
     if (viewConfig != null) {

http://git-wip-us.apache.org/repos/asf/ambari/blob/087d9003/ambari-server/src/test/java/org/apache/ambari/server/view/ViewClassLoaderTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/view/ViewClassLoaderTest.java b/ambari-server/src/test/java/org/apache/ambari/server/view/ViewClassLoaderTest.java
index ed701fd..f831989 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/view/ViewClassLoaderTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/view/ViewClassLoaderTest.java
@@ -74,9 +74,12 @@ public class ViewClassLoaderTest {
     expect(parentClassLoader.getPackage("org.apache.ambari.server.view")).andReturn(null).anyTimes();
     expect(parentClassLoader.loadClass("java.lang.Object")).andReturn(parentClass).anyTimes();
     expect(parentClassLoader.loadClass("ParentClass")).andReturn(parentClass).once();
+    expect(parentClassLoader.loadClass("org.apache.ambari.server.controller.spi.ResourceProvider")).andReturn(parentClass).once();
+    expect(parentClassLoader.loadClass("org.apache.ambari.view.ViewContext")).andReturn(parentClass).once();
     expect(parentClassLoader.loadClass("javax.xml.parsers.SAXParserFactory")).andReturn(parentClass).once();
     expect(parentClassLoader.loadClass("com.google.inject.AbstractModule")).andReturn(parentClass).once();
     expect(parentClassLoader.loadClass("org.slf4j.LoggerFactory")).andReturn(parentClass).once();
+    expect(parentClassLoader.loadClass("com.sun.jersey.api.ConflictException")).andReturn(parentClass).once();
 
     replay(parentClassLoader, viewConfig);
 
@@ -87,33 +90,42 @@ public class ViewClassLoaderTest {
 
     ViewClassLoader classLoader = new ViewClassLoader(viewConfig, parentClassLoader, urls);
 
-    Class clazz = classLoader.loadClass("org.apache.ambari.server.view.ViewClassLoaderTest");
+    // should be loaded by parent loader
+    Class clazz = classLoader.loadClass("ParentClass");
 
     Assert.assertNotNull(clazz);
+    Assert.assertSame(parentClass, clazz);
 
-    clazz = classLoader.loadClass("ParentClass");
+    clazz = classLoader.loadClass("org.apache.ambari.server.controller.spi.ResourceProvider");
+
+    Assert.assertNotNull(clazz);
+    Assert.assertSame(parentClass, clazz);
+
+    clazz = classLoader.loadClass("org.apache.ambari.view.ViewContext");
 
     Assert.assertNotNull(clazz);
     Assert.assertSame(parentClass, clazz);
 
-    // should be loaded by parent loader
     clazz = classLoader.loadClass("javax.xml.parsers.SAXParserFactory");
 
     Assert.assertNotNull(clazz);
     Assert.assertSame(parentClass, clazz);
 
-    // should be loaded by parent loader
     clazz = classLoader.loadClass("com.google.inject.AbstractModule");
 
     Assert.assertNotNull(clazz);
     Assert.assertSame(parentClass, clazz);
 
-    // should be loaded by parent loader
     clazz = classLoader.loadClass("org.slf4j.LoggerFactory");
 
     Assert.assertNotNull(clazz);
     Assert.assertSame(parentClass, clazz);
 
+    clazz = classLoader.loadClass("com.sun.jersey.api.ConflictException");
+
+    Assert.assertNotNull(clazz);
+    Assert.assertSame(parentClass, clazz);
+
     verify(parentClassLoader, viewConfig);
   }