Author: gnodet
Date: Tue Jan  3 15:42:53 2012
New Revision: 1226832

URL: http://svn.apache.org/viewvc?rev=1226832&view=rev
Log:
Add support for stax implementation in ibm jre

Modified:
    
servicemix/smx4/specs/trunk/stax-api-1.0/src/main/java/javax/xml/stream/FactoryLocator.java
    
servicemix/smx4/specs/trunk/stax-api-1.0/src/main/java/javax/xml/stream/XMLEventFactory.java
    
servicemix/smx4/specs/trunk/stax-api-1.0/src/main/java/javax/xml/stream/XMLInputFactory.java
    
servicemix/smx4/specs/trunk/stax-api-1.0/src/main/java/javax/xml/stream/XMLOutputFactory.java

Modified: 
servicemix/smx4/specs/trunk/stax-api-1.0/src/main/java/javax/xml/stream/FactoryLocator.java
URL: 
http://svn.apache.org/viewvc/servicemix/smx4/specs/trunk/stax-api-1.0/src/main/java/javax/xml/stream/FactoryLocator.java?rev=1226832&r1=1226831&r2=1226832&view=diff
==============================================================================
--- 
servicemix/smx4/specs/trunk/stax-api-1.0/src/main/java/javax/xml/stream/FactoryLocator.java
 (original)
+++ 
servicemix/smx4/specs/trunk/stax-api-1.0/src/main/java/javax/xml/stream/FactoryLocator.java
 Tue Jan  3 15:42:53 2012
@@ -20,6 +20,7 @@ import java.io.InputStream;
 import java.io.File;
 import java.io.FileInputStream;
 
+import java.util.Arrays;
 import java.util.Properties;
 import java.io.BufferedReader;
 import java.io.InputStreamReader;
@@ -46,13 +47,13 @@ class FactoryLocator {
                return locate(factoryId, null);
        }
 
-       static Object locate(String factoryId, String altClassName)
+       static Object locate(String factoryId, String[] altClassName)
                        throws FactoryConfigurationError {
                return locate(factoryId, altClassName,
                               Thread.currentThread().getContextClassLoader());
        }
 
-       static Object locate(String factoryId, String altClassName,
+       static Object locate(String factoryId, String[] altClassName,
                          ClassLoader classLoader) throws 
FactoryConfigurationError {
         try {
             // If we are deployed into an OSGi environment, leverage it
@@ -120,6 +121,22 @@ class FactoryLocator {
                return loadFactory(altClassName, classLoader);
        }
 
+    private static Object loadFactory(String[] classNames, ClassLoader 
classLoader)
+            throws FactoryConfigurationError {
+        for (String className : classNames) {
+            try {
+                Class factoryClass = classLoader == null ? 
Class.forName(className)
+                        : classLoader.loadClass(className);
+
+                return factoryClass.newInstance();
+            } catch (Exception x) {
+            }
+        }
+        throw new FactoryConfigurationError("Requested factory "
+                + Arrays.asList(classNames).toString()
+                + " could not be instantiated");
+    }
+
        private static Object loadFactory(String className, ClassLoader 
classLoader)
                        throws FactoryConfigurationError {
                try {

Modified: 
servicemix/smx4/specs/trunk/stax-api-1.0/src/main/java/javax/xml/stream/XMLEventFactory.java
URL: 
http://svn.apache.org/viewvc/servicemix/smx4/specs/trunk/stax-api-1.0/src/main/java/javax/xml/stream/XMLEventFactory.java?rev=1226832&r1=1226831&r2=1226832&view=diff
==============================================================================
--- 
servicemix/smx4/specs/trunk/stax-api-1.0/src/main/java/javax/xml/stream/XMLEventFactory.java
 (original)
+++ 
servicemix/smx4/specs/trunk/stax-api-1.0/src/main/java/javax/xml/stream/XMLEventFactory.java
 Tue Jan  3 15:42:53 2012
@@ -43,12 +43,15 @@ public abstract class XMLEventFactory {
 
        public static XMLEventFactory newInstance()
                        throws FactoryConfigurationError {
-            return 
(XMLEventFactory)FactoryLocator.locate("javax.xml.stream.XMLEventFactory", 
"com.sun.xml.internal.stream.events.XMLEventFactoryImpl");
+            return 
(XMLEventFactory)FactoryLocator.locate("javax.xml.stream.XMLEventFactory",
+                    new String[] { 
"com.sun.xml.internal.stream.events.XMLEventFactoryImpl", 
"com.ibm.xml.xlxp.api.stax.XMLEventFactoryImpl" });
        }
 
        public static XMLEventFactory newInstance(String factoryId,
                        ClassLoader classLoader) throws 
FactoryConfigurationError {
-            return (XMLEventFactory)FactoryLocator.locate(factoryId, 
"com.sun.xml.internal.stream.events.XMLEventFactoryImpl", classLoader);
+            return (XMLEventFactory)FactoryLocator.locate(factoryId,
+                    new String[] { 
"com.sun.xml.internal.stream.events.XMLEventFactoryImpl", 
"com.ibm.xml.xlxp.api.stax.XMLEventFactoryImpl" },
+                    classLoader);
        }
 
        public abstract void setLocation(Location location);

Modified: 
servicemix/smx4/specs/trunk/stax-api-1.0/src/main/java/javax/xml/stream/XMLInputFactory.java
URL: 
http://svn.apache.org/viewvc/servicemix/smx4/specs/trunk/stax-api-1.0/src/main/java/javax/xml/stream/XMLInputFactory.java?rev=1226832&r1=1226831&r2=1226832&view=diff
==============================================================================
--- 
servicemix/smx4/specs/trunk/stax-api-1.0/src/main/java/javax/xml/stream/XMLInputFactory.java
 (original)
+++ 
servicemix/smx4/specs/trunk/stax-api-1.0/src/main/java/javax/xml/stream/XMLInputFactory.java
 Tue Jan  3 15:42:53 2012
@@ -38,13 +38,16 @@ public abstract class XMLInputFactory {
        public static XMLInputFactory newInstance()
                        throws FactoryConfigurationError {
                // We'll assume the XMLInputFactory from the RI as a backup.
-               return 
(XMLInputFactory)FactoryLocator.locate("javax.xml.stream.XMLInputFactory", 
"com.sun.xml.internal.stream.XMLInputFactoryImpl");
+               return 
(XMLInputFactory)FactoryLocator.locate("javax.xml.stream.XMLInputFactory",
+                new String[] { 
"com.sun.xml.internal.stream.XMLInputFactoryImpl", 
"com.ibm.xml.xlxp.api.stax.XMLInputFactoryImpl" });
        }
 
        public static XMLInputFactory newInstance(java.lang.String factoryId,
                        java.lang.ClassLoader classLoader) throws 
FactoryConfigurationError {
                // We'll assume the XMLInputFactory from the RI as a backup.
-               return (XMLInputFactory)FactoryLocator.locate(factoryId, 
"com.sun.xml.internal.stream.XMLInputFactoryImpl", classLoader);
+               return (XMLInputFactory)FactoryLocator.locate(factoryId,
+                new String[] { 
"com.sun.xml.internal.stream.XMLInputFactoryImpl", 
"com.ibm.xml.xlxp.api.stax.XMLInputFactoryImpl" },
+                classLoader);
        }
 
        public abstract XMLStreamReader createXMLStreamReader(java.io.Reader 
reader)

Modified: 
servicemix/smx4/specs/trunk/stax-api-1.0/src/main/java/javax/xml/stream/XMLOutputFactory.java
URL: 
http://svn.apache.org/viewvc/servicemix/smx4/specs/trunk/stax-api-1.0/src/main/java/javax/xml/stream/XMLOutputFactory.java?rev=1226832&r1=1226831&r2=1226832&view=diff
==============================================================================
--- 
servicemix/smx4/specs/trunk/stax-api-1.0/src/main/java/javax/xml/stream/XMLOutputFactory.java
 (original)
+++ 
servicemix/smx4/specs/trunk/stax-api-1.0/src/main/java/javax/xml/stream/XMLOutputFactory.java
 Tue Jan  3 15:42:53 2012
@@ -26,12 +26,15 @@ public abstract class XMLOutputFactory {
        
        public static XMLOutputFactory newInstance()
                        throws FactoryConfigurationError {
-               return (XMLOutputFactory) 
FactoryLocator.locate("javax.xml.stream.XMLOutputFactory", 
"com.sun.xml.internal.stream.XMLOutputFactoryImpl");
+               return (XMLOutputFactory) 
FactoryLocator.locate("javax.xml.stream.XMLOutputFactory",
+                new String[] { 
"com.sun.xml.internal.stream.XMLOutputFactoryImpl", 
"com.ibm.xml.xlxp.api.stax.XMLOutputFactoryImpl" });
        }
 
        public static XMLInputFactory newInstance(String factoryId,
                        java.lang.ClassLoader classLoader) throws 
FactoryConfigurationError {
-               return (XMLInputFactory) FactoryLocator.locate(factoryId, 
"com.sun.xml.internal.stream.XMLOutputFactoryImpl", classLoader);
+               return (XMLInputFactory) FactoryLocator.locate(factoryId,
+                new String[] { 
"com.sun.xml.internal.stream.XMLOutputFactoryImpl", 
"com.ibm.xml.xlxp.api.stax.XMLOutputFactoryImpl" },
+                classLoader);
        }
 
        public abstract XMLStreamWriter createXMLStreamWriter(java.io.Writer 
stream)


Reply via email to