You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by gp...@apache.org on 2011/07/23 15:06:15 UTC

svn commit: r1150100 - in /myfaces/extensions/cdi/trunk/core: api/src/main/java/org/apache/myfaces/extensions/cdi/core/api/provider/ api/src/main/java/org/apache/myfaces/extensions/cdi/core/api/startup/ impl/src/main/java/org/apache/myfaces/extensions/...

Author: gpetracek
Date: Sat Jul 23 13:06:13 2011
New Revision: 1150100

URL: http://svn.apache.org/viewvc?rev=1150100&view=rev
Log:
EXTCDI-198 and EXTCDI-209 cleanup

Modified:
    myfaces/extensions/cdi/trunk/core/api/src/main/java/org/apache/myfaces/extensions/cdi/core/api/provider/ServiceProvider.java
    myfaces/extensions/cdi/trunk/core/api/src/main/java/org/apache/myfaces/extensions/cdi/core/api/provider/ServiceProviderContext.java
    myfaces/extensions/cdi/trunk/core/api/src/main/java/org/apache/myfaces/extensions/cdi/core/api/startup/CodiStartupBroadcaster.java
    myfaces/extensions/cdi/trunk/core/impl/src/main/java/org/apache/myfaces/extensions/cdi/core/impl/config/AbstractConfiguredValueResolver.java
    myfaces/extensions/cdi/trunk/core/impl/src/main/java/org/apache/myfaces/extensions/cdi/core/impl/config/ServiceLoaderResolver.java
    myfaces/extensions/cdi/trunk/core/impl/src/main/java/org/apache/myfaces/extensions/cdi/core/impl/provider/DefaultServiceProviderContext.java
    myfaces/extensions/cdi/trunk/core/impl/src/main/java/org/apache/myfaces/extensions/cdi/core/impl/provider/SimpleServiceProviderContext.java
    myfaces/extensions/cdi/trunk/core/impl/src/main/java/org/apache/myfaces/extensions/cdi/core/impl/provider/spi/EditableServiceProviderContext.java
    myfaces/extensions/cdi/trunk/core/impl/src/test/java/org/apache/myfaces/extensions/cdi/core/test/impl/serviceloader/ServiceProviderTest.java

Modified: myfaces/extensions/cdi/trunk/core/api/src/main/java/org/apache/myfaces/extensions/cdi/core/api/provider/ServiceProvider.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/cdi/trunk/core/api/src/main/java/org/apache/myfaces/extensions/cdi/core/api/provider/ServiceProvider.java?rev=1150100&r1=1150099&r2=1150100&view=diff
==============================================================================
--- myfaces/extensions/cdi/trunk/core/api/src/main/java/org/apache/myfaces/extensions/cdi/core/api/provider/ServiceProvider.java (original)
+++ myfaces/extensions/cdi/trunk/core/api/src/main/java/org/apache/myfaces/extensions/cdi/core/api/provider/ServiceProvider.java Sat Jul 23 13:06:13 2011
@@ -116,13 +116,17 @@ public abstract class ServiceProvider<T>
 
     public static <S> List<S> loadServices(Class<S> serviceType)
     {
-        ServiceProviderContext<S> serviceProviderContext =
-                ClassUtils.tryToInstantiateClass(SERVICE_PROVIDER_CONTEXT_CLASS);
+        ServiceProviderContext serviceProviderContext = createServiceProviderContext(serviceType);
 
         return loadServices(serviceType, serviceProviderContext);
     }
 
-    public static <S> List<S> loadServices(Class<S> serviceType, ServiceProviderContext<S> serviceProviderContext)
+    public static <S> ServiceProviderContext createServiceProviderContext(Class<S> serviceType)
+    {
+        return ClassUtils.tryToInstantiateClass(SERVICE_PROVIDER_CONTEXT_CLASS);
+    }
+
+    public static <S> List<S> loadServices(Class<S> serviceType, ServiceProviderContext serviceProviderContext)
     {
         //no fallback - would be possible via an add-on and a custom ServiceProvider
         ServiceProvider<S> serviceProvider = getServiceProvider(serviceType, serviceProviderContext);

Modified: myfaces/extensions/cdi/trunk/core/api/src/main/java/org/apache/myfaces/extensions/cdi/core/api/provider/ServiceProviderContext.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/cdi/trunk/core/api/src/main/java/org/apache/myfaces/extensions/cdi/core/api/provider/ServiceProviderContext.java?rev=1150100&r1=1150099&r2=1150100&view=diff
==============================================================================
--- myfaces/extensions/cdi/trunk/core/api/src/main/java/org/apache/myfaces/extensions/cdi/core/api/provider/ServiceProviderContext.java (original)
+++ myfaces/extensions/cdi/trunk/core/api/src/main/java/org/apache/myfaces/extensions/cdi/core/api/provider/ServiceProviderContext.java Sat Jul 23 13:06:13 2011
@@ -24,11 +24,11 @@ import javax.enterprise.inject.Typed;
  * @author Gerhard Petracek
  */
 @Typed()
-public abstract class ServiceProviderContext<T>
+public interface ServiceProviderContext
 {
     /**
      * Allows to provide a custom {@link ClassLoader}
      * @return the class-loader which should be used for the first try
      */
-    public abstract ClassLoader getClassLoader();
+    ClassLoader getClassLoader();
 }

Modified: myfaces/extensions/cdi/trunk/core/api/src/main/java/org/apache/myfaces/extensions/cdi/core/api/startup/CodiStartupBroadcaster.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/cdi/trunk/core/api/src/main/java/org/apache/myfaces/extensions/cdi/core/api/startup/CodiStartupBroadcaster.java?rev=1150100&r1=1150099&r2=1150100&view=diff
==============================================================================
--- myfaces/extensions/cdi/trunk/core/api/src/main/java/org/apache/myfaces/extensions/cdi/core/api/startup/CodiStartupBroadcaster.java (original)
+++ myfaces/extensions/cdi/trunk/core/api/src/main/java/org/apache/myfaces/extensions/cdi/core/api/startup/CodiStartupBroadcaster.java Sat Jul 23 13:06:13 2011
@@ -77,13 +77,13 @@ public abstract class CodiStartupBroadca
 
         List<StartupEventBroadcaster> startupEventBroadcasterList =
                 ServiceProvider.loadServices(StartupEventBroadcaster.class,
-                        new ServiceProviderContext<StartupEventBroadcaster>() {
-                    @Override
-                    public ClassLoader getClassLoader()
-                    {
-                        return classLoader;
-                    }
-                });
+                        new ServiceProviderContext()
+                        {
+                            public ClassLoader getClassLoader()
+                            {
+                                return classLoader;
+                            }
+                        });
 
         List<Class<? extends StartupEventBroadcaster>> filter = broadcasterFilter.get(classLoader);
         if (filter == null)

Modified: myfaces/extensions/cdi/trunk/core/impl/src/main/java/org/apache/myfaces/extensions/cdi/core/impl/config/AbstractConfiguredValueResolver.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/cdi/trunk/core/impl/src/main/java/org/apache/myfaces/extensions/cdi/core/impl/config/AbstractConfiguredValueResolver.java?rev=1150100&r1=1150099&r2=1150100&view=diff
==============================================================================
--- myfaces/extensions/cdi/trunk/core/impl/src/main/java/org/apache/myfaces/extensions/cdi/core/impl/config/AbstractConfiguredValueResolver.java (original)
+++ myfaces/extensions/cdi/trunk/core/impl/src/main/java/org/apache/myfaces/extensions/cdi/core/impl/config/AbstractConfiguredValueResolver.java Sat Jul 23 13:06:13 2011
@@ -20,8 +20,8 @@ package org.apache.myfaces.extensions.cd
 
 import org.apache.myfaces.extensions.cdi.core.api.activation.ClassDeactivator;
 import org.apache.myfaces.extensions.cdi.core.api.config.ConfiguredValueResolver;
+import org.apache.myfaces.extensions.cdi.core.api.provider.ServiceProvider;
 import org.apache.myfaces.extensions.cdi.core.api.util.ClassUtils;
-import org.apache.myfaces.extensions.cdi.core.impl.provider.DefaultServiceProvider;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -39,7 +39,7 @@ public abstract class AbstractConfigured
     protected AbstractConfiguredValueResolver()
     {
         List<ClassDeactivator> serviceLoader =
-                DefaultServiceProvider.loadServices(ClassDeactivator.class);
+                ServiceProvider.loadServices(ClassDeactivator.class);
 
         for(ClassDeactivator currentInstance : serviceLoader)
         {

Modified: myfaces/extensions/cdi/trunk/core/impl/src/main/java/org/apache/myfaces/extensions/cdi/core/impl/config/ServiceLoaderResolver.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/cdi/trunk/core/impl/src/main/java/org/apache/myfaces/extensions/cdi/core/impl/config/ServiceLoaderResolver.java?rev=1150100&r1=1150099&r2=1150100&view=diff
==============================================================================
--- myfaces/extensions/cdi/trunk/core/impl/src/main/java/org/apache/myfaces/extensions/cdi/core/impl/config/ServiceLoaderResolver.java (original)
+++ myfaces/extensions/cdi/trunk/core/impl/src/main/java/org/apache/myfaces/extensions/cdi/core/impl/config/ServiceLoaderResolver.java Sat Jul 23 13:06:13 2011
@@ -20,8 +20,10 @@ package org.apache.myfaces.extensions.cd
 
 import org.apache.myfaces.extensions.cdi.core.api.InvocationOrder;
 import org.apache.myfaces.extensions.cdi.core.api.config.ConfiguredValueDescriptor;
-import org.apache.myfaces.extensions.cdi.core.impl.provider.DefaultServiceProvider;
+import org.apache.myfaces.extensions.cdi.core.api.provider.ServiceProvider;
+import org.apache.myfaces.extensions.cdi.core.api.provider.ServiceProviderContext;
 import org.apache.myfaces.extensions.cdi.core.impl.provider.DefaultServiceProviderContext;
+import org.apache.myfaces.extensions.cdi.core.impl.provider.spi.EditableServiceProviderContext;
 
 import javax.enterprise.inject.Typed;
 import java.util.List;
@@ -41,18 +43,50 @@ public class ServiceLoaderResolver exten
     public <K, T> List<T> resolveInstances(ConfiguredValueDescriptor<K, T> descriptor)
     {
         List<T> result = new ArrayList<T>();
-        Class targetType = descriptor.getTargetType();
+        final Class targetType = descriptor.getTargetType();
         if(Modifier.isAbstract(targetType.getModifiers()) || Modifier.isInterface(targetType.getModifiers()))
         {
             @SuppressWarnings({"unchecked"})
-            List<T> services = DefaultServiceProvider.loadServices(targetType, new DefaultServiceProviderContext()
+            List<T> services = ServiceProvider.loadServices(targetType, new EditableServiceProviderContext<T>()
             {
-                @Override
+                private ServiceProviderContext serviceProviderContext =
+                        ServiceProvider.createServiceProviderContext(targetType);
+
+                public T postConstruct(T instance)
+                {
+                    if(serviceProviderContext instanceof EditableServiceProviderContext)
+                    {
+                        return ((EditableServiceProviderContext<T>)serviceProviderContext)
+                                .postConstruct(instance);
+                    }
+                    return instance;
+                }
+
                 public boolean filterService(Class serviceClass)
                 {
+                    if(serviceProviderContext instanceof EditableServiceProviderContext &&
+                            !(serviceProviderContext instanceof DefaultServiceProviderContext))
+                    {
+                        return ((EditableServiceProviderContext<T>)serviceProviderContext)
+                                .filterService(serviceClass);
+                    }
                     //do nothing
                     return false;
                 }
+
+                public void preInstallServices(List<Class<?>> foundServiceClasses)
+                {
+                    if(serviceProviderContext instanceof EditableServiceProviderContext)
+                    {
+                        ((EditableServiceProviderContext<T>)serviceProviderContext)
+                                .preInstallServices(foundServiceClasses);
+                    }
+                }
+
+                public ClassLoader getClassLoader()
+                {
+                    return serviceProviderContext.getClassLoader();
+                }
             });
 
             for(T currentInstance : services)

Modified: myfaces/extensions/cdi/trunk/core/impl/src/main/java/org/apache/myfaces/extensions/cdi/core/impl/provider/DefaultServiceProviderContext.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/cdi/trunk/core/impl/src/main/java/org/apache/myfaces/extensions/cdi/core/impl/provider/DefaultServiceProviderContext.java?rev=1150100&r1=1150099&r2=1150100&view=diff
==============================================================================
--- myfaces/extensions/cdi/trunk/core/impl/src/main/java/org/apache/myfaces/extensions/cdi/core/impl/provider/DefaultServiceProviderContext.java (original)
+++ myfaces/extensions/cdi/trunk/core/impl/src/main/java/org/apache/myfaces/extensions/cdi/core/impl/provider/DefaultServiceProviderContext.java Sat Jul 23 13:06:13 2011
@@ -26,7 +26,6 @@ import org.apache.myfaces.extensions.cdi
 
 import java.util.Collections;
 import java.util.List;
-import org.apache.myfaces.extensions.cdi.core.api.provider.ServiceProviderContext;
 
 import javax.enterprise.inject.Typed;
 
@@ -35,14 +34,13 @@ import javax.enterprise.inject.Typed;
  */
 @Typed
 public class DefaultServiceProviderContext<T>
-        extends ServiceProviderContext<T> implements EditableServiceProviderContext<T>
+        implements EditableServiceProviderContext<T>
 {
     protected boolean deploymentFinished = false;
 
     /**
      * {@inheritDoc}
      */
-    @Override
     public ClassLoader getClassLoader()
     {
         return ClassUtils.getClassLoader(null);

Modified: myfaces/extensions/cdi/trunk/core/impl/src/main/java/org/apache/myfaces/extensions/cdi/core/impl/provider/SimpleServiceProviderContext.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/cdi/trunk/core/impl/src/main/java/org/apache/myfaces/extensions/cdi/core/impl/provider/SimpleServiceProviderContext.java?rev=1150100&r1=1150099&r2=1150100&view=diff
==============================================================================
--- myfaces/extensions/cdi/trunk/core/impl/src/main/java/org/apache/myfaces/extensions/cdi/core/impl/provider/SimpleServiceProviderContext.java (original)
+++ myfaces/extensions/cdi/trunk/core/impl/src/main/java/org/apache/myfaces/extensions/cdi/core/impl/provider/SimpleServiceProviderContext.java Sat Jul 23 13:06:13 2011
@@ -27,7 +27,7 @@ import javax.enterprise.inject.Typed;
  * @author Gerhard Petracek
  */
 @Typed()
-public class SimpleServiceProviderContext<T> extends ServiceProviderContext<T>
+public class SimpleServiceProviderContext implements ServiceProviderContext
 {
     /**
      * {@inheritDoc}

Modified: myfaces/extensions/cdi/trunk/core/impl/src/main/java/org/apache/myfaces/extensions/cdi/core/impl/provider/spi/EditableServiceProviderContext.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/cdi/trunk/core/impl/src/main/java/org/apache/myfaces/extensions/cdi/core/impl/provider/spi/EditableServiceProviderContext.java?rev=1150100&r1=1150099&r2=1150100&view=diff
==============================================================================
--- myfaces/extensions/cdi/trunk/core/impl/src/main/java/org/apache/myfaces/extensions/cdi/core/impl/provider/spi/EditableServiceProviderContext.java (original)
+++ myfaces/extensions/cdi/trunk/core/impl/src/main/java/org/apache/myfaces/extensions/cdi/core/impl/provider/spi/EditableServiceProviderContext.java Sat Jul 23 13:06:13 2011
@@ -18,6 +18,8 @@
  */
 package org.apache.myfaces.extensions.cdi.core.impl.provider.spi;
 
+import org.apache.myfaces.extensions.cdi.core.api.provider.ServiceProviderContext;
+
 import javax.enterprise.inject.Typed;
 import java.util.List;
 
@@ -26,7 +28,7 @@ import java.util.List;
  */
 @Typed()
 //TODO
-public interface EditableServiceProviderContext<T>
+public interface EditableServiceProviderContext<T> extends ServiceProviderContext
 {
     T postConstruct(T instance);
 

Modified: myfaces/extensions/cdi/trunk/core/impl/src/test/java/org/apache/myfaces/extensions/cdi/core/test/impl/serviceloader/ServiceProviderTest.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/cdi/trunk/core/impl/src/test/java/org/apache/myfaces/extensions/cdi/core/test/impl/serviceloader/ServiceProviderTest.java?rev=1150100&r1=1150099&r2=1150100&view=diff
==============================================================================
--- myfaces/extensions/cdi/trunk/core/impl/src/test/java/org/apache/myfaces/extensions/cdi/core/test/impl/serviceloader/ServiceProviderTest.java (original)
+++ myfaces/extensions/cdi/trunk/core/impl/src/test/java/org/apache/myfaces/extensions/cdi/core/test/impl/serviceloader/ServiceProviderTest.java Sat Jul 23 13:06:13 2011
@@ -69,7 +69,7 @@ public class ServiceProviderTest
     public void testExtensionsWithDefaultServiceProviderWithSimple()
     {
         List<Extension> extensionList =
-                ServiceProvider.loadServices(Extension.class, new SimpleServiceProviderContext<Extension>());
+                ServiceProvider.loadServices(Extension.class, new SimpleServiceProviderContext());
         Assert.assertEquals(extensionList.size(), 3);
 
         Iterator<Extension> iterator = extensionList.iterator();
@@ -92,7 +92,7 @@ public class ServiceProviderTest
     @SuppressWarnings({"unchecked"})
     public void testExtensionsWithSimpleServiceProvider()
     {
-        List<Extension> extensionList = new SimpleServiceProvider(Extension.class, new SimpleServiceProviderContext<Extension>()) {
+        List<Extension> extensionList = new SimpleServiceProvider(Extension.class, new SimpleServiceProviderContext()) {
             @Override
             public List<Extension> loadServiceImplementations()
             {