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()
{