You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm@geronimo.apache.org by st...@apache.org on 2017/05/26 16:25:08 UTC

svn commit: r1796298 - in /geronimo/specs/trunk/geronimo-jcdi_2.0_spec/src/main/java/javax/enterprise/inject/spi: CDI.java CDIProvider.java

Author: struberg
Date: Fri May 26 16:25:08 2017
New Revision: 1796298

URL: http://svn.apache.org/viewvc?rev=1796298&view=rev
Log:
GERONIMO-6553 take CDIProvider with highest priority.

Modified:
    geronimo/specs/trunk/geronimo-jcdi_2.0_spec/src/main/java/javax/enterprise/inject/spi/CDI.java
    geronimo/specs/trunk/geronimo-jcdi_2.0_spec/src/main/java/javax/enterprise/inject/spi/CDIProvider.java

Modified: geronimo/specs/trunk/geronimo-jcdi_2.0_spec/src/main/java/javax/enterprise/inject/spi/CDI.java
URL: http://svn.apache.org/viewvc/geronimo/specs/trunk/geronimo-jcdi_2.0_spec/src/main/java/javax/enterprise/inject/spi/CDI.java?rev=1796298&r1=1796297&r2=1796298&view=diff
==============================================================================
--- geronimo/specs/trunk/geronimo-jcdi_2.0_spec/src/main/java/javax/enterprise/inject/spi/CDI.java (original)
+++ geronimo/specs/trunk/geronimo-jcdi_2.0_spec/src/main/java/javax/enterprise/inject/spi/CDI.java Fri May 26 16:25:08 2017
@@ -43,7 +43,26 @@ public abstract class CDI<T> implements
     {
         if (INSTANCE == null)
         {
-            INSTANCE = ServiceLoader.load(CDIProvider.class).iterator().next().getCDI();
+            synchronized (CDI.class)
+            {
+                if (INSTANCE == null)
+                {
+
+                    CDI<Object> highestCdi = null;
+                    int ordinal = -1;
+
+                    ServiceLoader<CDIProvider> cdiProviders = ServiceLoader.load(CDIProvider.class);
+                    for (CDIProvider cdiProvider : cdiProviders)
+                    {
+                        if (highestCdi == null || cdiProvider.getPriority() > ordinal)
+                        {
+                            highestCdi = cdiProvider.getCDI();
+                        }
+                    }
+
+                    INSTANCE = highestCdi;
+                }
+            }
         }
         return INSTANCE; //X TODO implement!
     }

Modified: geronimo/specs/trunk/geronimo-jcdi_2.0_spec/src/main/java/javax/enterprise/inject/spi/CDIProvider.java
URL: http://svn.apache.org/viewvc/geronimo/specs/trunk/geronimo-jcdi_2.0_spec/src/main/java/javax/enterprise/inject/spi/CDIProvider.java?rev=1796298&r1=1796297&r2=1796298&view=diff
==============================================================================
--- geronimo/specs/trunk/geronimo-jcdi_2.0_spec/src/main/java/javax/enterprise/inject/spi/CDIProvider.java (original)
+++ geronimo/specs/trunk/geronimo-jcdi_2.0_spec/src/main/java/javax/enterprise/inject/spi/CDIProvider.java Fri May 26 16:25:08 2017
@@ -25,7 +25,15 @@ package javax.enterprise.inject.spi;
  *
  * @since 1.1
  */
-public interface CDIProvider
+public interface CDIProvider extends Prioritized
 {
+    int DEFAULT_CDI_PROVIDER_PRIORITY = 0;
+
     CDI<Object> getCDI();
+
+    @Override
+    default int getPriority()
+    {
+        return DEFAULT_CDI_PROVIDER_PRIORITY;
+    }
 }