You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@servicemix.apache.org by dk...@apache.org on 2012/10/19 17:57:03 UTC

svn commit: r1400142 - in /servicemix/smx4/specs/trunk: jaxp-api-1.4/src/main/java/javax/xml/datatype/ jaxp-api-1.4/src/main/java/javax/xml/parsers/ jaxp-api-1.4/src/main/java/javax/xml/transform/ jaxp-api-1.4/src/main/java/org/xml/sax/helpers/ jaxws-a...

Author: dkulp
Date: Fri Oct 19 15:57:02 2012
New Revision: 1400142

URL: http://svn.apache.org/viewvc?rev=1400142&view=rev
Log:
[SMX4-1265] Be much more careful about having the class.getClassLoader() calls return null.

Modified:
    servicemix/smx4/specs/trunk/jaxp-api-1.4/src/main/java/javax/xml/datatype/FactoryFinder.java
    servicemix/smx4/specs/trunk/jaxp-api-1.4/src/main/java/javax/xml/parsers/FactoryFinder.java
    servicemix/smx4/specs/trunk/jaxp-api-1.4/src/main/java/javax/xml/transform/FactoryFinder.java
    servicemix/smx4/specs/trunk/jaxp-api-1.4/src/main/java/org/xml/sax/helpers/XMLReaderFactory.java
    servicemix/smx4/specs/trunk/jaxws-api-2.0/src/main/java/javax/xml/ws/spi/FactoryFinder.java
    servicemix/smx4/specs/trunk/jaxws-api-2.1/src/main/java/javax/xml/ws/spi/FactoryFinder.java
    servicemix/smx4/specs/trunk/jaxws-api-2.2/src/main/java/javax/xml/ws/spi/FactoryFinder.java
    servicemix/smx4/specs/trunk/saaj-api-1.3/pom.xml
    servicemix/smx4/specs/trunk/saaj-api-1.3/src/main/java/javax/xml/soap/FactoryFinder.java

Modified: servicemix/smx4/specs/trunk/jaxp-api-1.4/src/main/java/javax/xml/datatype/FactoryFinder.java
URL: http://svn.apache.org/viewvc/servicemix/smx4/specs/trunk/jaxp-api-1.4/src/main/java/javax/xml/datatype/FactoryFinder.java?rev=1400142&r1=1400141&r2=1400142&view=diff
==============================================================================
--- servicemix/smx4/specs/trunk/jaxp-api-1.4/src/main/java/javax/xml/datatype/FactoryFinder.java (original)
+++ servicemix/smx4/specs/trunk/jaxp-api-1.4/src/main/java/javax/xml/datatype/FactoryFinder.java Fri Oct 19 15:57:02 2012
@@ -123,10 +123,16 @@ final class FactoryFinder {
             // if we have no Context ClassLoader
             // so use the current ClassLoader
             classLoader = FactoryFinder.class.getClassLoader();
-            if (debug) debugPrintln(
+            if (debug && classLoader != null) debugPrintln(
                 "Using the class loader of FactoryFinder: "
                 + classLoader);                
         }
+        if (classLoader == null) {
+            classLoader = ClassLoader.getSystemClassLoader();
+            if (debug && classLoader != null) { 
+                debugPrintln("Using the system class loader");
+            }
+        }        
                     
         return classLoader;
     }
@@ -188,7 +194,12 @@ final class FactoryFinder {
 
         try {
             // If we are deployed into an OSGi environment, leverage it
-            Class factoryClass = FactoryFinder.class.getClassLoader().loadClass(factoryId);
+            Class factoryClass;
+            if (FactoryFinder.class.getClassLoader() != null) {
+                factoryClass = FactoryFinder.class.getClassLoader().loadClass(factoryId);
+            } else {
+                factoryClass = Class.forName(factoryId);
+            }
             Class spiClass = org.apache.servicemix.specs.locator.OsgiLocator.locate(factoryClass, factoryId);
             if (spiClass != null) {
                 return spiClass.newInstance();
@@ -271,12 +282,18 @@ final class FactoryFinder {
             // If no provider found then try the current ClassLoader
             if (is == null) {
                 cl = FactoryFinder.class.getClassLoader();
+                if (cl == null) {
+                    cl = ClassLoader.getSystemClassLoader();
+                }
                 is = SecuritySupport.getResourceAsStream(cl, serviceId);
             }
         } else {
             // No Context ClassLoader, try the current
             // ClassLoader
             cl = FactoryFinder.class.getClassLoader();
+            if (cl == null) {
+                cl = ClassLoader.getSystemClassLoader();
+            }
             is = SecuritySupport.getResourceAsStream(cl, serviceId);
         }
 

Modified: servicemix/smx4/specs/trunk/jaxp-api-1.4/src/main/java/javax/xml/parsers/FactoryFinder.java
URL: http://svn.apache.org/viewvc/servicemix/smx4/specs/trunk/jaxp-api-1.4/src/main/java/javax/xml/parsers/FactoryFinder.java?rev=1400142&r1=1400141&r2=1400142&view=diff
==============================================================================
--- servicemix/smx4/specs/trunk/jaxp-api-1.4/src/main/java/javax/xml/parsers/FactoryFinder.java (original)
+++ servicemix/smx4/specs/trunk/jaxp-api-1.4/src/main/java/javax/xml/parsers/FactoryFinder.java Fri Oct 19 15:57:02 2012
@@ -155,15 +155,24 @@ final class FactoryFinder {
             // if we have no Context ClassLoader
             // so use the current ClassLoader
             classLoader = FactoryFinder.class.getClassLoader();
+            if (classLoader == null) {
+                classLoader = ClassLoader.getSystemClassLoader();
+            }
         }
 
         if (debug) dPrint("find factoryId =" + factoryId);
         
         try {
             // If we are deployed into an OSGi environment, leverage it
-            Class factoryClass = FactoryFinder.class.getClassLoader().loadClass(factoryId);
+            Class factoryClass;
+            if (FactoryFinder.class.getClassLoader() != null) {
+                factoryClass = FactoryFinder.class.getClassLoader().loadClass(factoryId);
+            } else {
+                factoryClass = Class.forName(factoryId);
+            }
             Class spiClass = org.apache.servicemix.specs.locator.OsgiLocator.locate(factoryClass, factoryId);
             if (spiClass != null) {
+                if (debug) dPrint("found osgi factory = " + spiClass.getName());
                 return spiClass.newInstance();
             }
         } catch (Throwable e) {
@@ -244,12 +253,18 @@ final class FactoryFinder {
             // If no provider found then try the current ClassLoader
             if (is == null) {
                 cl = FactoryFinder.class.getClassLoader();
+                if (cl == null) {
+                    cl = ClassLoader.getSystemClassLoader();
+                }
                 is = SecuritySupport.getResourceAsStream(cl, serviceId);
             }
         } else {
             // No Context ClassLoader, try the current
             // ClassLoader
             cl = FactoryFinder.class.getClassLoader();
+            if (cl == null) {
+                cl = ClassLoader.getSystemClassLoader();
+            }
             is = SecuritySupport.getResourceAsStream(cl, serviceId);
         }
 

Modified: servicemix/smx4/specs/trunk/jaxp-api-1.4/src/main/java/javax/xml/transform/FactoryFinder.java
URL: http://svn.apache.org/viewvc/servicemix/smx4/specs/trunk/jaxp-api-1.4/src/main/java/javax/xml/transform/FactoryFinder.java?rev=1400142&r1=1400141&r2=1400142&view=diff
==============================================================================
--- servicemix/smx4/specs/trunk/jaxp-api-1.4/src/main/java/javax/xml/transform/FactoryFinder.java (original)
+++ servicemix/smx4/specs/trunk/jaxp-api-1.4/src/main/java/javax/xml/transform/FactoryFinder.java Fri Oct 19 15:57:02 2012
@@ -155,13 +155,22 @@ final class FactoryFinder {
             // if we have no Context ClassLoader
             // so use the current ClassLoader
             classLoader = FactoryFinder.class.getClassLoader();
+            if (classLoader == null) {
+                classLoader = ClassLoader.getSystemClassLoader();
+            }
+            
         }
 
         if (debug) dPrint("find factoryId =" + factoryId);
         
         try {
             // If we are deployed into an OSGi environment, leverage it
-            Class factoryClass = FactoryFinder.class.getClassLoader().loadClass(factoryId);
+            Class factoryClass;
+            if (FactoryFinder.class.getClassLoader() != null) {
+                factoryClass = FactoryFinder.class.getClassLoader().loadClass(factoryId);
+            } else {
+                factoryClass = Class.forName(factoryId);
+            }
             Class spiClass = org.apache.servicemix.specs.locator.OsgiLocator.locate(factoryClass, factoryId);
             if (spiClass != null) {
                 return spiClass.newInstance();
@@ -244,12 +253,18 @@ final class FactoryFinder {
             // If no provider found then try the current ClassLoader
             if (is == null) {
                 cl = FactoryFinder.class.getClassLoader();
+                if (cl == null) {
+                    cl = ClassLoader.getSystemClassLoader();
+                }
                 is = SecuritySupport.getResourceAsStream(cl, serviceId);
             }
         } else {
             // No Context ClassLoader, try the current
             // ClassLoader
             cl = FactoryFinder.class.getClassLoader();
+            if (cl == null) {
+                cl = ClassLoader.getSystemClassLoader();
+            }
             is = SecuritySupport.getResourceAsStream(cl, serviceId);
         }
 

Modified: servicemix/smx4/specs/trunk/jaxp-api-1.4/src/main/java/org/xml/sax/helpers/XMLReaderFactory.java
URL: http://svn.apache.org/viewvc/servicemix/smx4/specs/trunk/jaxp-api-1.4/src/main/java/org/xml/sax/helpers/XMLReaderFactory.java?rev=1400142&r1=1400141&r2=1400142&view=diff
==============================================================================
--- servicemix/smx4/specs/trunk/jaxp-api-1.4/src/main/java/org/xml/sax/helpers/XMLReaderFactory.java (original)
+++ servicemix/smx4/specs/trunk/jaxp-api-1.4/src/main/java/org/xml/sax/helpers/XMLReaderFactory.java Fri Oct 19 15:57:02 2012
@@ -141,12 +141,18 @@ final public class XMLReaderFactory
                 // If no provider found then try the current ClassLoader
                 if (is == null) {
                     cl = XMLReaderFactory.class.getClassLoader();
+                    if (cl == null) {
+                        cl = ClassLoader.getSystemClassLoader();
+                    }
                     is = SecuritySupport.getResourceAsStream(cl, service);
                 }
             } else {
                 // No Context ClassLoader or JDK 1.1 so try the current
                 // ClassLoader
                 cl = XMLReaderFactory.class.getClassLoader();
+                if (cl == null) {
+                    cl = ClassLoader.getSystemClassLoader();
+                }
                 is = SecuritySupport.getResourceAsStream(cl, service);
             }
             

Modified: servicemix/smx4/specs/trunk/jaxws-api-2.0/src/main/java/javax/xml/ws/spi/FactoryFinder.java
URL: http://svn.apache.org/viewvc/servicemix/smx4/specs/trunk/jaxws-api-2.0/src/main/java/javax/xml/ws/spi/FactoryFinder.java?rev=1400142&r1=1400141&r2=1400142&view=diff
==============================================================================
--- servicemix/smx4/specs/trunk/jaxws-api-2.0/src/main/java/javax/xml/ws/spi/FactoryFinder.java (original)
+++ servicemix/smx4/specs/trunk/jaxws-api-2.0/src/main/java/javax/xml/ws/spi/FactoryFinder.java Fri Oct 19 15:57:02 2012
@@ -76,6 +76,9 @@ class FactoryFinder {
                     } catch (NoSuchMethodException e) {
                         // Assume that we are running JDK 1.1, use the current ClassLoader
                         debugPrintln("assuming JDK 1.1");
+                        if (FactoryFinder.class.getClassLoader() == null) {
+                            return ClassLoader.getSystemClassLoader();
+                        }
                         return FactoryFinder.class.getClassLoader();
                     }
 
@@ -171,7 +174,12 @@ class FactoryFinder {
                     
 			        try {
 			            // If we are deployed into an OSGi environment, leverage it
-                        Class factoryClass = FactoryFinder.class.getClassLoader().loadClass(iFactoryId);
+                        Class factoryClass;
+                        if (FactoryFinder.class.getClassLoader() == null) {
+                            factoryClass = Class.forName(iFactoryId);
+                        } else {
+                            factoryClass = FactoryFinder.class.getClassLoader().loadClass(iFactoryId);
+                        }
                         Class spiClass = org.apache.servicemix.specs.locator.OsgiLocator.locate(factoryClass, iFactoryId);
 			            if (spiClass != null) {
 			                return spiClass.newInstance();

Modified: servicemix/smx4/specs/trunk/jaxws-api-2.1/src/main/java/javax/xml/ws/spi/FactoryFinder.java
URL: http://svn.apache.org/viewvc/servicemix/smx4/specs/trunk/jaxws-api-2.1/src/main/java/javax/xml/ws/spi/FactoryFinder.java?rev=1400142&r1=1400141&r2=1400142&view=diff
==============================================================================
--- servicemix/smx4/specs/trunk/jaxws-api-2.1/src/main/java/javax/xml/ws/spi/FactoryFinder.java (original)
+++ servicemix/smx4/specs/trunk/jaxws-api-2.1/src/main/java/javax/xml/ws/spi/FactoryFinder.java Fri Oct 19 15:57:02 2012
@@ -76,6 +76,9 @@ class FactoryFinder {
                     } catch (NoSuchMethodException e) {
                         // Assume that we are running JDK 1.1, use the current ClassLoader
                         debugPrintln("assuming JDK 1.1");
+                        if (FactoryFinder.class.getClassLoader() == null) {
+                            return ClassLoader.getSystemClassLoader();
+                        }
                         return FactoryFinder.class.getClassLoader();
                     }
 
@@ -171,7 +174,12 @@ class FactoryFinder {
                     
 			        try {
 			            // If we are deployed into an OSGi environment, leverage it
-                        Class factoryClass = FactoryFinder.class.getClassLoader().loadClass(iFactoryId);
+                        Class factoryClass;
+                        if (FactoryFinder.class.getClassLoader() == null) {
+                            factoryClass = Class.forName(iFactoryId);
+                        } else {
+                            factoryClass = FactoryFinder.class.getClassLoader().loadClass(iFactoryId);
+                        }
                         Class spiClass = org.apache.servicemix.specs.locator.OsgiLocator.locate(factoryClass, iFactoryId);
 			            if (spiClass != null) {
 			                return spiClass.newInstance();

Modified: servicemix/smx4/specs/trunk/jaxws-api-2.2/src/main/java/javax/xml/ws/spi/FactoryFinder.java
URL: http://svn.apache.org/viewvc/servicemix/smx4/specs/trunk/jaxws-api-2.2/src/main/java/javax/xml/ws/spi/FactoryFinder.java?rev=1400142&r1=1400141&r2=1400142&view=diff
==============================================================================
--- servicemix/smx4/specs/trunk/jaxws-api-2.2/src/main/java/javax/xml/ws/spi/FactoryFinder.java (original)
+++ servicemix/smx4/specs/trunk/jaxws-api-2.2/src/main/java/javax/xml/ws/spi/FactoryFinder.java Fri Oct 19 15:57:02 2012
@@ -78,6 +78,9 @@ class FactoryFinder {
                     } catch (NoSuchMethodException e) {
                         // Assume that we are running JDK 1.1, use the current ClassLoader
                         debugPrintln("assuming JDK 1.1");
+                        if (FactoryFinder.class.getClassLoader() == null) {
+                            return ClassLoader.getSystemClassLoader();
+                        }
                         return FactoryFinder.class.getClassLoader();
                     }
 

Modified: servicemix/smx4/specs/trunk/saaj-api-1.3/pom.xml
URL: http://svn.apache.org/viewvc/servicemix/smx4/specs/trunk/saaj-api-1.3/pom.xml?rev=1400142&r1=1400141&r2=1400142&view=diff
==============================================================================
--- servicemix/smx4/specs/trunk/saaj-api-1.3/pom.xml (original)
+++ servicemix/smx4/specs/trunk/saaj-api-1.3/pom.xml Fri Oct 19 15:57:02 2012
@@ -24,13 +24,13 @@
     <parent>
         <groupId>org.apache.servicemix.specs</groupId>
         <artifactId>specs</artifactId>
-        <version>2.2-SNAPSHOT</version>
+        <version>2.1-SNAPSHOT</version>
     </parent>
 
     <groupId>org.apache.servicemix.specs</groupId>
     <artifactId>org.apache.servicemix.specs.saaj-api-1.3</artifactId>
     <packaging>bundle</packaging>
-    <version>2.2-SNAPSHOT</version>
+    <version>2.1-SNAPSHOT</version>
     <name>Apache ServiceMix :: Specs :: SAAJ API 1.3</name>
 
     <dependencies>

Modified: servicemix/smx4/specs/trunk/saaj-api-1.3/src/main/java/javax/xml/soap/FactoryFinder.java
URL: http://svn.apache.org/viewvc/servicemix/smx4/specs/trunk/saaj-api-1.3/src/main/java/javax/xml/soap/FactoryFinder.java?rev=1400142&r1=1400141&r2=1400142&view=diff
==============================================================================
--- servicemix/smx4/specs/trunk/saaj-api-1.3/src/main/java/javax/xml/soap/FactoryFinder.java (original)
+++ servicemix/smx4/specs/trunk/saaj-api-1.3/src/main/java/javax/xml/soap/FactoryFinder.java Fri Oct 19 15:57:02 2012
@@ -55,6 +55,9 @@ class FactoryFinder {
             }
             if (factory == null) {
                 classloader = FactoryFinder.class.getClassLoader();
+                if (classloader == null) {
+                    classloader = ClassLoader.getSystemClassLoader();
+                }
                 factory = classloader.loadClass(factoryClassName);
             }
             return factory.newInstance();
@@ -216,7 +219,7 @@ class FactoryFinder {
             inputstream = classloader.getResourceAsStream(factoryResource);
         }
 
-        if (inputstream == null) {
+        if (inputstream == null && FactoryFinder.class.getClassLoader() != null) {
             inputstream =
                     FactoryFinder.class.getClassLoader().getResourceAsStream(
                             factoryResource);