From f89c99bee37103772b4009fea14387fa92f9da98 Mon Sep 17 00:00:00 2001
From: Nicolas Capponi <nicolas.capponi@forgerock.com>
Date: Tue, 08 Oct 2013 16:12:52 +0000
Subject: [PATCH] OPENDJ-346 Consider using java.util.ServiceLoader for loading extensions and requesting transport implementations

---
 opendj3/opendj-ldap-sdk/src/main/java/com/forgerock/opendj/util/StaticUtils.java |   16 +++++++++++-----
 1 files changed, 11 insertions(+), 5 deletions(-)

diff --git a/opendj3/opendj-ldap-sdk/src/main/java/com/forgerock/opendj/util/StaticUtils.java b/opendj3/opendj-ldap-sdk/src/main/java/com/forgerock/opendj/util/StaticUtils.java
index 1c5f81e..30f05e4 100644
--- a/opendj3/opendj-ldap-sdk/src/main/java/com/forgerock/opendj/util/StaticUtils.java
+++ b/opendj3/opendj-ldap-sdk/src/main/java/com/forgerock/opendj/util/StaticUtils.java
@@ -2264,15 +2264,17 @@
      * <p>
      * The provider is loaded using the {@code ServiceLoader} facility.
      *
-     * @param <P> type of provider
+     * @param <P>
+     *            type of provider
      * @param providerClass
-     *          class of provider
+     *            class of provider
      * @param requestedProvider
      *            name of provider to use, or {@code null} if no specific
      *            provider is requested.
      * @param classLoader
      *            class loader to use to load the provider, or {@code null} to
-     *            use the default class loader.
+     *            use the default class loader (the context class loader of the
+     *            current thread).
      * @return a provider
      * @throws ProviderNotFoundException
      *             if no provider is available or if the provider requested
@@ -2280,8 +2282,12 @@
      */
     public static <P extends Provider> P getProvider(final Class<P> providerClass, final String requestedProvider,
             final ClassLoader classLoader) {
-
-        ServiceLoader<P> loader = ServiceLoader.load(providerClass, classLoader);
+        ServiceLoader<P> loader = null;
+        if (classLoader == null) {
+            loader = ServiceLoader.load(providerClass);
+        } else {
+            loader = ServiceLoader.load(providerClass, classLoader);
+        }
         StringBuilder providersFound = new StringBuilder();
         for (P provider : loader) {
             if (providersFound.length() > 0) {

--
Gitblit v1.10.0