Author: veithen
Date: Sun Jun  5 13:09:12 2016
New Revision: 1746908

URL: http://svn.apache.org/viewvc?rev=1746908&view=rev
Log:
SYNAPSE-485: Replace the use of sun.misc.Service with java.util.ServiceLoader. 
Patch provided by Auke Schrijnen.

Modified:
    
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/ConfigurationFactoryAndSerializerFinder.java
    
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/MediatorFactoryFinder.java
    
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/MediatorSerializerFinder.java
    
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/StartupFinder.java

Modified: 
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/ConfigurationFactoryAndSerializerFinder.java
URL: 
http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/ConfigurationFactoryAndSerializerFinder.java?rev=1746908&r1=1746907&r2=1746908&view=diff
==============================================================================
--- 
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/ConfigurationFactoryAndSerializerFinder.java
 (original)
+++ 
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/ConfigurationFactoryAndSerializerFinder.java
 Sun Jun  5 13:09:12 2016
@@ -26,16 +26,15 @@ import org.apache.commons.logging.LogFac
 import org.apache.synapse.SynapseException;
 import org.apache.synapse.config.SynapseConfiguration;
 import org.apache.synapse.config.XMLToObjectMapper;
-import sun.misc.Service;
 
 import javax.xml.namespace.QName;
 import javax.xml.stream.XMLStreamException;
 
-import java.io.OutputStream;
 import java.util.HashMap;
 import java.util.Iterator;
 import java.util.Map;
 import java.util.Properties;
+import java.util.ServiceLoader;
 
 /**
  * This class is based on J2SE Service Provider model
@@ -106,22 +105,22 @@ public class ConfigurationFactoryAndSeri
         initialized = true;
     }
     /**
-     * Register plugable mediator factories from the classpath
+     * Register pluggable mediator factories from the classpath
      * <p/>
      * This looks for JAR files containing a META-INF/services that adheres to 
the following
-     * http://java.sun.com/j2se/1.3/docs/guide/jar/jar.html#Service%20Provider
+     * https://docs.oracle.com/javase/tutorial/ext/basics/spi.html
      */
     private static void registerExtensions() {
 
+        Iterator<ConfigurationFactory> factories = 
ServiceLoader.load(ConfigurationFactory.class).iterator();
         // register MediatorFactory extensions
-        Iterator it = Service.providers(ConfigurationFactory.class);
-        while (it.hasNext()) {
-            ConfigurationFactory cf = (ConfigurationFactory) it.next();
-            QName tag = cf.getTagQName();
-            factoryMap.put(tag, cf.getClass());
-            serializerMap.put(tag, cf.getSerializerClass());
+        while (factories.hasNext()) {
+            ConfigurationFactory factory = factories.next();
+            QName tag = factory.getTagQName();
+            factoryMap.put(tag, factory.getClass());
+            serializerMap.put(tag, factory.getSerializerClass());
             if (log.isDebugEnabled()) {
-                log.debug("Added MediatorFactory " + cf.getClass() + " to 
handle " + tag);
+                log.debug("Added MediatorFactory " + factory.getClass() + " to 
handle " + tag);
             }
         }
     }

Modified: 
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/MediatorFactoryFinder.java
URL: 
http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/MediatorFactoryFinder.java?rev=1746908&r1=1746907&r2=1746908&view=diff
==============================================================================
--- 
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/MediatorFactoryFinder.java
 (original)
+++ 
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/MediatorFactoryFinder.java
 Sun Jun  5 13:09:12 2016
@@ -28,13 +28,13 @@ import org.apache.synapse.SynapseExcepti
 import org.apache.synapse.Mediator;
 import org.apache.synapse.config.XMLToObjectMapper;
 import org.apache.synapse.config.xml.eventing.EventPublisherMediatorFactory;
-import sun.misc.Service;
 
 import javax.xml.namespace.QName;
 import java.util.HashMap;
 import java.util.Iterator;
 import java.util.Map;
 import java.util.Properties;
+import java.util.ServiceLoader;
 
 /**
  *
@@ -133,18 +133,18 @@ public class MediatorFactoryFinder imple
      * Register pluggable mediator factories from the classpath
      *
      * This looks for JAR files containing a META-INF/services that adheres to 
the following
-     * http://java.sun.com/j2se/1.3/docs/guide/jar/jar.html#Service%20Provider
+     * https://docs.oracle.com/javase/tutorial/ext/basics/spi.html
      */
     private static void registerExtensions() {
 
         // register MediatorFactory extensions
-        Iterator it = Service.providers(MediatorFactory.class);
-        while (it.hasNext()) {
-            MediatorFactory mf = (MediatorFactory) it.next();
-            QName tag = mf.getTagQName();
-            factoryMap.put(tag, mf.getClass());
+        Iterator<MediatorFactory> factories = 
ServiceLoader.load(MediatorFactory.class).iterator();
+        while (factories.hasNext()) {
+            MediatorFactory factory = factories.next();
+            QName tag = factory.getTagQName();
+            factoryMap.put(tag, factory.getClass());
             if (log.isDebugEnabled()) {
-                log.debug("Added MediatorFactory " + mf.getClass() + " to 
handle " + tag);
+                log.debug("Added MediatorFactory " + factory.getClass() + " to 
handle " + tag);
             }
         }
     }

Modified: 
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/MediatorSerializerFinder.java
URL: 
http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/MediatorSerializerFinder.java?rev=1746908&r1=1746907&r2=1746908&view=diff
==============================================================================
--- 
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/MediatorSerializerFinder.java
 (original)
+++ 
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/MediatorSerializerFinder.java
 Sun Jun  5 13:09:12 2016
@@ -25,11 +25,11 @@ import org.apache.synapse.SynapseExcepti
 import org.apache.synapse.Mediator;
 import org.apache.synapse.config.xml.eventing.EventPublisherMediatorSerializer;
 import org.apache.synapse.mediators.builtin.RespondMediator;
-import sun.misc.Service;
 
 import java.util.HashMap;
 import java.util.Iterator;
 import java.util.Map;
+import java.util.ServiceLoader;
 
 public class MediatorSerializerFinder {
 
@@ -108,26 +108,27 @@ public class MediatorSerializerFinder {
      * Register pluggable mediator serializers from the classpath
      *
      * This looks for JAR files containing a META-INF/services that adheres to 
the following
-     * http://java.sun.com/j2se/1.3/docs/guide/jar/jar.html#Service%20Provider
+     * https://docs.oracle.com/javase/tutorial/ext/basics/spi.html
      */
     private void registerExtensions() {
         if (log.isDebugEnabled()) {
             log.debug("Registering mediator extensions found in the 
classpath.. ");
         }
         // register MediatorSerializer extensions
-        Iterator it = Service.providers(MediatorSerializer.class);
-        while (it.hasNext()) {
-            MediatorSerializer ms = (MediatorSerializer) it.next();
-            String name = ms.getMediatorClassName();
+        Iterator<MediatorSerializer> serializers = 
ServiceLoader.load(MediatorSerializer.class).iterator();
+
+        while (serializers.hasNext()) {
+            MediatorSerializer serializer = serializers.next();
+            String name = serializer.getMediatorClassName();
             try {
-                serializerMap.put(name, ms.getClass().newInstance());
+                serializerMap.put(name, serializer.getClass().newInstance());
             } catch (InstantiationException e) {
-                handleException("Error instantiating mediator serializer : " + 
ms);
+                handleException("Error instantiating mediator serializer : " + 
serializer);
             } catch (IllegalAccessException e) {
-                handleException("Error instantiating mediator serializer : " + 
ms);
+                handleException("Error instantiating mediator serializer : " + 
serializer);
             }
             if (log.isDebugEnabled()) {
-                log.debug("Added MediatorSerializer " + 
ms.getClass().getName() + " to handle " + name);
+                log.debug("Added MediatorSerializer " + 
serializer.getClass().getName() + " to handle " + name);
             }
         }
     }

Modified: 
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/StartupFinder.java
URL: 
http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/StartupFinder.java?rev=1746908&r1=1746907&r2=1746908&view=diff
==============================================================================
--- 
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/StartupFinder.java
 (original)
+++ 
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/StartupFinder.java
 Sun Jun  5 13:09:12 2016
@@ -23,6 +23,7 @@ import java.util.HashMap;
 import java.util.Iterator;
 import java.util.Map;
 import java.util.Properties;
+import java.util.ServiceLoader;
 
 import javax.xml.namespace.QName;
 
@@ -34,8 +35,6 @@ import org.apache.synapse.Startup;
 import org.apache.synapse.config.XMLToObjectMapper;
 import org.apache.synapse.startup.quartz.SimpleQuartzFactory;
 
-import sun.misc.Service;
-
 public class StartupFinder implements XMLToObjectMapper {
 
     private static final Log log = LogFactory
@@ -100,27 +99,22 @@ public class StartupFinder implements XM
     }
 
     /**
-     * Register pluggable mediator factories from the classpath
+     * Register pluggable startup factories from the classpath
      * <p/>
-     * This looks for JAR files containing a META-INF/services that adheres to
-     * the following
-     * http://java.sun.com/j2se/1.3/docs/guide/jar/jar.html#Service%20Provider
+     * This looks for JAR files containing a META-INF/services that adheres to 
the following
+     * https://docs.oracle.com/javase/tutorial/ext/basics/spi.html
      */
     private static void registerExtensions() {
 
-        // log.debug("Registering mediator extensions found in the classpath : 
"
-        // + System.getResource("java.class.path"));
-
         // register MediatorFactory extensions
-        Iterator<?> it = Service.providers(StartupFactory.class);
-        while (it.hasNext()) {
-            StartupFactory sf = (StartupFactory) it.next();
-            QName tag = sf.getTagQName();
-            factoryMap.put(tag, sf.getClass());
-            serializerMap.put(tag, sf.getSerializerClass());
+        Iterator<StartupFactory> factories = 
ServiceLoader.load(StartupFactory.class).iterator();
+        while (factories.hasNext()) {
+            StartupFactory factory = factories.next();
+            QName tag = factory.getTagQName();
+            factoryMap.put(tag, factory.getClass());
+            serializerMap.put(tag, factory.getSerializerClass());
             if (log.isDebugEnabled()) {
-                log.debug("Added StartupFactory " + sf.getClass()
-                        + " to handle " + tag);
+                log.debug("Added StartupFactory " + factory.getClass() + " to 
handle " + tag);
             }
         }
     }


Reply via email to