You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sirona.apache.org by ol...@apache.org on 2015/01/21 13:31:09 UTC

svn commit: r1653494 - in /incubator/sirona/trunk/core/src/main/java/org/apache/sirona: configuration/Configuration.java spi/DefaultSPI.java util/SironaServiceLoader.java

Author: olamy
Date: Wed Jan 21 12:31:08 2015
New Revision: 1653494

URL: http://svn.apache.org/r1653494
Log:
add wrapper on the top of ServiceLoader for 1.5 compliance

Added:
    incubator/sirona/trunk/core/src/main/java/org/apache/sirona/util/SironaServiceLoader.java
      - copied, changed from r1653493, incubator/sirona/trunk/core/src/main/java/org/apache/sirona/spi/DefaultSPI.java
Modified:
    incubator/sirona/trunk/core/src/main/java/org/apache/sirona/configuration/Configuration.java
    incubator/sirona/trunk/core/src/main/java/org/apache/sirona/spi/DefaultSPI.java

Modified: incubator/sirona/trunk/core/src/main/java/org/apache/sirona/configuration/Configuration.java
URL: http://svn.apache.org/viewvc/incubator/sirona/trunk/core/src/main/java/org/apache/sirona/configuration/Configuration.java?rev=1653494&r1=1653493&r2=1653494&view=diff
==============================================================================
--- incubator/sirona/trunk/core/src/main/java/org/apache/sirona/configuration/Configuration.java (original)
+++ incubator/sirona/trunk/core/src/main/java/org/apache/sirona/configuration/Configuration.java Wed Jan 21 12:31:08 2015
@@ -16,12 +16,13 @@
  */
 package org.apache.sirona.configuration;
 
+import org.apache.sirona.util.SironaServiceLoader;
+
 import java.util.Collections;
 import java.util.Comparator;
 import java.util.LinkedList;
 import java.util.List;
 import java.util.Properties;
-import java.util.ServiceLoader;
 import java.util.logging.Level;
 import java.util.logging.Logger;
 
@@ -47,7 +48,8 @@ public final class Configuration {
             if (classLoader == null) { // ServiceLoader fallbacks to it normally but ensure it is portable
                 classLoader = ClassLoader.getSystemClassLoader();
             }
-            for (final ConfigurationProvider provider : ServiceLoader.load(ConfigurationProvider.class, classLoader)) {
+            for (final ConfigurationProvider provider : SironaServiceLoader.load( ConfigurationProvider.class, //
+                                                                                  Configuration.class.getClassLoader() )) {
                 providers.add(provider);
             }
             Collections.sort(providers, Sorter.INSTANCE);

Modified: incubator/sirona/trunk/core/src/main/java/org/apache/sirona/spi/DefaultSPI.java
URL: http://svn.apache.org/viewvc/incubator/sirona/trunk/core/src/main/java/org/apache/sirona/spi/DefaultSPI.java?rev=1653494&r1=1653493&r2=1653494&view=diff
==============================================================================
--- incubator/sirona/trunk/core/src/main/java/org/apache/sirona/spi/DefaultSPI.java (original)
+++ incubator/sirona/trunk/core/src/main/java/org/apache/sirona/spi/DefaultSPI.java Wed Jan 21 12:31:08 2015
@@ -16,11 +16,11 @@
  */
 package org.apache.sirona.spi;
 
-import java.util.ServiceLoader;
+import org.apache.sirona.util.SironaServiceLoader;
 
 public class DefaultSPI implements SPI {
     @Override
     public <T> Iterable<T> find(final Class<T> api, final ClassLoader loader) {
-        return ServiceLoader.load(api, loader);
+        return SironaServiceLoader.load( api, loader );
     }
 }

Copied: incubator/sirona/trunk/core/src/main/java/org/apache/sirona/util/SironaServiceLoader.java (from r1653493, incubator/sirona/trunk/core/src/main/java/org/apache/sirona/spi/DefaultSPI.java)
URL: http://svn.apache.org/viewvc/incubator/sirona/trunk/core/src/main/java/org/apache/sirona/util/SironaServiceLoader.java?p2=incubator/sirona/trunk/core/src/main/java/org/apache/sirona/util/SironaServiceLoader.java&p1=incubator/sirona/trunk/core/src/main/java/org/apache/sirona/spi/DefaultSPI.java&r1=1653493&r2=1653494&rev=1653494&view=diff
==============================================================================
--- incubator/sirona/trunk/core/src/main/java/org/apache/sirona/spi/DefaultSPI.java (original)
+++ incubator/sirona/trunk/core/src/main/java/org/apache/sirona/util/SironaServiceLoader.java Wed Jan 21 12:31:08 2015
@@ -14,13 +14,37 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.sirona.spi;
+package org.apache.sirona.util;
 
-import java.util.ServiceLoader;
+import java.util.Iterator;
+
+/**
+ * This class is a wrapper on the top of ServiceLoader (reverting on internal impl if 1.6 not available)
+ *
+ * @since 0.3
+ */
+public class SironaServiceLoader<S>
+    implements Iterable<S>
+{
+
+    private Class<S> service;
+
+    private ClassLoader loader;
+
+    private SironaServiceLoader( Class<S> service, ClassLoader loader )
+    {
+        this.service = service;
+        this.loader = loader;
+    }
+
+    public static <S> SironaServiceLoader<S> load( Class<S> service, ClassLoader loader )
+    {
+        return new SironaServiceLoader<S>( service, loader );
+    }
 
-public class DefaultSPI implements SPI {
     @Override
-    public <T> Iterable<T> find(final Class<T> api, final ClassLoader loader) {
-        return ServiceLoader.load(api, loader);
+    public Iterator<S> iterator()
+    {
+        return java.util.ServiceLoader.load( this.service, this.loader ).iterator();
     }
 }