You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@synapse.apache.org by ve...@apache.org on 2016/06/05 13:09:12 UTC

svn commit: r1746908 - in /synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml: ConfigurationFactoryAndSerializerFinder.java MediatorFactoryFinder.java MediatorSerializerFinder.java StartupFinder.java

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);
             }
         }
     }