[jboss-cvs] JBossAS SVN: r96178 - in projects/kernel/trunk/weld-int/src: main/java/org/jboss/kernel/weld/plugins/annotated and 13 other directories.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Mon Nov 9 11:05:05 EST 2009
Author: kabir.khan at jboss.com
Date: 2009-11-09 11:05:02 -0500 (Mon, 09 Nov 2009)
New Revision: 96178
Added:
projects/kernel/trunk/weld-int/src/main/java/org/jboss/kernel/weld/plugins/dependency/WeldKernelControllerContextActions.java
projects/kernel/trunk/weld-int/src/test/java/org/jboss/test/kernel/weld/mctowb/support/mc/PlainBean.java
projects/kernel/trunk/weld-int/src/test/java/org/jboss/test/kernel/weld/mctowb/support/mock/
projects/kernel/trunk/weld-int/src/test/java/org/jboss/test/kernel/weld/mctowb/support/mock/MockController.java
projects/kernel/trunk/weld-int/src/test/java/org/jboss/test/kernel/weld/mctowb/support/mock/MockKernel.java
projects/kernel/trunk/weld-int/src/test/java/org/jboss/test/kernel/weld/mctowb/support/mock/MockKernelMetaDataRepository.java
projects/kernel/trunk/weld-int/src/test/java/org/jboss/test/kernel/weld/mctowb/support/mock/MockWeldDescribeAction.java
projects/kernel/trunk/weld-int/src/test/java/org/jboss/test/kernel/weld/mctowb/support/mock/MockWeldKernelControllerContext.java
Removed:
projects/kernel/trunk/weld-int/src/main/java/org/jboss/kernel/weld/plugins/dependency/WeldControllerContextActions.java
projects/kernel/trunk/weld-int/src/main/java/org/jboss/kernel/weld/plugins/dependency/WeldRegisterWebBeanAction.java
Modified:
projects/kernel/trunk/weld-int/src/main/java/org/jboss/kernel/weld/metadata/api/annotations/WeldEnabled.java
projects/kernel/trunk/weld-int/src/main/java/org/jboss/kernel/weld/plugins/annotated/MDRAnnotatedTypeFactoryImpl.java
projects/kernel/trunk/weld-int/src/main/java/org/jboss/kernel/weld/plugins/dependency/WeldControllerInitializer.java
projects/kernel/trunk/weld-int/src/main/java/org/jboss/kernel/weld/plugins/dependency/WeldDescribeAction.java
projects/kernel/trunk/weld-int/src/main/java/org/jboss/kernel/weld/plugins/dependency/WeldInjector.java
projects/kernel/trunk/weld-int/src/main/java/org/jboss/kernel/weld/plugins/dependency/WeldKernelControllerContext.java
projects/kernel/trunk/weld-int/src/main/java/org/jboss/kernel/weld/plugins/weld/AnnotatedTypeWrapper.java
projects/kernel/trunk/weld-int/src/main/java/org/jboss/kernel/weld/plugins/weld/ExisitingInstanceFieldProducer.java
projects/kernel/trunk/weld-int/src/main/java/org/jboss/kernel/weld/plugins/weld/ExisitingInstanceMethodProducer.java
projects/kernel/trunk/weld-int/src/main/java/org/jboss/kernel/weld/plugins/weld/ExistingInstanceHolder.java
projects/kernel/trunk/weld-int/src/main/java/org/jboss/kernel/weld/plugins/weld/ExistingInstanceInjectionTarget.java
projects/kernel/trunk/weld-int/src/main/java/org/jboss/kernel/weld/plugins/weld/ExistingInstanceProducer.java
projects/kernel/trunk/weld-int/src/main/java/org/jboss/kernel/weld/plugins/weld/McBeanRegistryObserver.java
projects/kernel/trunk/weld-int/src/main/java/org/jboss/kernel/weld/plugins/weld/WeldFromMcRegistry.java
projects/kernel/trunk/weld-int/src/main/java/org/jboss/kernel/weld/spi/annotated/MDRAnnotatedTypeFactory.java
projects/kernel/trunk/weld-int/src/test/java/org/jboss/test/kernel/weld/AbstractWeldMcTest.java
projects/kernel/trunk/weld-int/src/test/java/org/jboss/test/kernel/weld/annotated/test/AnnotatedTypeTestCase.java
projects/kernel/trunk/weld-int/src/test/java/org/jboss/test/kernel/weld/bidirectional/test/BidirectionalWeldAndMcTestCase.java
projects/kernel/trunk/weld-int/src/test/java/org/jboss/test/kernel/weld/mctowb/support/mc/BeanWithSimpleWeldDependency.java
projects/kernel/trunk/weld-int/src/test/java/org/jboss/test/kernel/weld/mctowb/support/mc/LifecycleBean.java
projects/kernel/trunk/weld-int/src/test/java/org/jboss/test/kernel/weld/mctowb/support/mc/ThingBean.java
projects/kernel/trunk/weld-int/src/test/java/org/jboss/test/kernel/weld/mctowb/support/mc/ThingFieldProducer.java
projects/kernel/trunk/weld-int/src/test/java/org/jboss/test/kernel/weld/mctowb/support/mc/ThingMethodProducer.java
projects/kernel/trunk/weld-int/src/test/java/org/jboss/test/kernel/weld/mctowb/support/validateobserver/TestObserver.java
projects/kernel/trunk/weld-int/src/test/java/org/jboss/test/kernel/weld/mctowb/test/InjectMcBeansInWeldTestCase.java
projects/kernel/trunk/weld-int/src/test/java/org/jboss/test/kernel/weld/wbtomc/test/InjectWeldInMcBeansTestCase.java
projects/kernel/trunk/weld-int/src/test/java/org/jboss/test/kernel/weld/weldschema/test/WeldElementTestCase.java
Log:
[JBKERNEL-51] Add support for MC beans that are not installed as WeldKernelControllerContexts (i.e. part of weld deployment) to be used for injection into weld. These must have the @WeldEnabled annotation at bean level.
Modified: projects/kernel/trunk/weld-int/src/main/java/org/jboss/kernel/weld/metadata/api/annotations/WeldEnabled.java
===================================================================
--- projects/kernel/trunk/weld-int/src/main/java/org/jboss/kernel/weld/metadata/api/annotations/WeldEnabled.java 2009-11-09 15:29:20 UTC (rev 96177)
+++ projects/kernel/trunk/weld-int/src/main/java/org/jboss/kernel/weld/metadata/api/annotations/WeldEnabled.java 2009-11-09 16:05:02 UTC (rev 96178)
@@ -34,7 +34,7 @@
* @version $Revision: 1.1 $
*/
@Retention(RetentionPolicy.RUNTIME)
- at Target({ElementType.METHOD, ElementType.PARAMETER, ElementType.FIELD})
+ at Target({ElementType.TYPE})
public @interface WeldEnabled {
}
Modified: projects/kernel/trunk/weld-int/src/main/java/org/jboss/kernel/weld/plugins/annotated/MDRAnnotatedTypeFactoryImpl.java
===================================================================
--- projects/kernel/trunk/weld-int/src/main/java/org/jboss/kernel/weld/plugins/annotated/MDRAnnotatedTypeFactoryImpl.java 2009-11-09 15:29:20 UTC (rev 96177)
+++ projects/kernel/trunk/weld-int/src/main/java/org/jboss/kernel/weld/plugins/annotated/MDRAnnotatedTypeFactoryImpl.java 2009-11-09 16:05:02 UTC (rev 96178)
@@ -23,6 +23,10 @@
import javax.enterprise.inject.spi.AnnotatedType;
+import org.jboss.kernel.Kernel;
+import org.jboss.kernel.spi.dependency.KernelController;
+import org.jboss.kernel.spi.dependency.KernelControllerContext;
+import org.jboss.kernel.spi.metadata.KernelMetaDataRepository;
import org.jboss.kernel.weld.spi.annotated.MDRAnnotatedTypeFactory;
import org.jboss.metadata.spi.MetaData;
@@ -34,8 +38,19 @@
*/
public class MDRAnnotatedTypeFactoryImpl extends MDRAnnotatedTypeFactory
{
- public <T> AnnotatedType<T> getAnnotatedType(AnnotatedType<T> delegate, MetaData metaData)
+ public <T> AnnotatedType<T> decorateAnnotatedType(AnnotatedType<T> delegate, MetaData metaData)
{
return new MDRAnnotatedType<T>(delegate, metaData);
}
+
+ @Override
+ public <T> AnnotatedType<T> decorateAnnotatedType(AnnotatedType<T> delegate, KernelControllerContext context)
+ {
+ KernelController controller = (KernelController)context.getController();
+ Kernel kernel = controller.getKernel();
+ KernelMetaDataRepository repository = kernel.getMetaDataRepository();
+ MetaData metaData = repository.getMetaData(context);
+
+ return decorateAnnotatedType(delegate, metaData);
+ }
}
Deleted: projects/kernel/trunk/weld-int/src/main/java/org/jboss/kernel/weld/plugins/dependency/WeldControllerContextActions.java
===================================================================
--- projects/kernel/trunk/weld-int/src/main/java/org/jboss/kernel/weld/plugins/dependency/WeldControllerContextActions.java 2009-11-09 15:29:20 UTC (rev 96177)
+++ projects/kernel/trunk/weld-int/src/main/java/org/jboss/kernel/weld/plugins/dependency/WeldControllerContextActions.java 2009-11-09 16:05:02 UTC (rev 96178)
@@ -1,69 +0,0 @@
-/*
-* JBoss, Home of Professional Open Source.
-* Copyright 2006, Red Hat Middleware LLC, and individual contributors
-* as indicated by the @author tags. See the copyright.txt file in the
-* distribution for a full listing of individual contributors.
-*
-* This is free software; you can redistribute it and/or modify it
-* under the terms of the GNU Lesser General Public License as
-* published by the Free Software Foundation; either version 2.1 of
-* the License, or (at your option) any later version.
-*
-* This software is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-* Lesser General Public License for more details.
-*
-* You should have received a copy of the GNU Lesser General Public
-* License along with this software; if not, write to the Free
-* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
-*/
-package org.jboss.kernel.weld.plugins.dependency;
-
-import java.util.HashMap;
-import java.util.Map;
-
-import org.jboss.dependency.plugins.action.ControllerContextAction;
-import org.jboss.dependency.spi.ControllerState;
-import org.jboss.kernel.plugins.dependency.CreateDestroyLifecycleAction;
-import org.jboss.kernel.plugins.dependency.KernelControllerContextActions;
-import org.jboss.kernel.plugins.dependency.PreInstallAction;
-import org.jboss.kernel.plugins.dependency.StartStopLifecycleAction;
-
-/**
- * ControllerContextActions for contexts that need to interact with web beans
- *
- * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
- * @version $Revision: 1.1 $
- */
-public class WeldControllerContextActions extends KernelControllerContextActions
-{
- private static final WeldControllerContextActions INSTANCE;
- static
- {
- Map<ControllerState, ControllerContextAction> actions = new HashMap<ControllerState, ControllerContextAction>();
-
- actions.put(ControllerState.PRE_INSTALL, new PreInstallAction());
- actions.put(ControllerState.DESCRIBED, new WeldDescribeAction());
- actions.put(WeldRegisterWebBeanAction.STATE, new WeldRegisterWebBeanAction());
- actions.put(ControllerState.INSTANTIATED, new WeldInstantiateAction());
- actions.put(WeldPostConstructAction.STATE, new WeldPostConstructAction());
- actions.put(ControllerState.CONFIGURED, new WeldConfigureAction());
- actions.put(ControllerState.CREATE, new CreateDestroyLifecycleAction());
- actions.put(WeldPreDestroyAction.STATE, new WeldPreDestroyAction());
- actions.put(ControllerState.START, new StartStopLifecycleAction());
- actions.put(ControllerState.INSTALLED, new WeldInstallAction());
- INSTANCE = new WeldControllerContextActions(actions);
- }
-
- protected WeldControllerContextActions(Map<ControllerState, ControllerContextAction> actions)
- {
- super(actions);
- }
-
- public static WeldControllerContextActions getInstance()
- {
- return INSTANCE;
- }
-}
Modified: projects/kernel/trunk/weld-int/src/main/java/org/jboss/kernel/weld/plugins/dependency/WeldControllerInitializer.java
===================================================================
--- projects/kernel/trunk/weld-int/src/main/java/org/jboss/kernel/weld/plugins/dependency/WeldControllerInitializer.java 2009-11-09 15:29:20 UTC (rev 96177)
+++ projects/kernel/trunk/weld-int/src/main/java/org/jboss/kernel/weld/plugins/dependency/WeldControllerInitializer.java 2009-11-09 16:05:02 UTC (rev 96178)
@@ -34,7 +34,6 @@
{
static void initializeController(Controller controller)
{
- controller.addState(WeldRegisterWebBeanAction.STATE, ControllerState.INSTANTIATED);
controller.addState(WeldPostConstructAction.STATE, ControllerState.CONFIGURED);
controller.addState(WeldPreDestroyAction.STATE, ControllerState.START);
}
Modified: projects/kernel/trunk/weld-int/src/main/java/org/jboss/kernel/weld/plugins/dependency/WeldDescribeAction.java
===================================================================
--- projects/kernel/trunk/weld-int/src/main/java/org/jboss/kernel/weld/plugins/dependency/WeldDescribeAction.java 2009-11-09 15:29:20 UTC (rev 96177)
+++ projects/kernel/trunk/weld-int/src/main/java/org/jboss/kernel/weld/plugins/dependency/WeldDescribeAction.java 2009-11-09 16:05:02 UTC (rev 96178)
@@ -40,12 +40,21 @@
throw new IllegalArgumentException("context is not a WabBeansKernelControllerContext");
super.applyAnnotations(context);
-
+ applyWeldAnnotations((WeldKernelControllerContext)context);
+ }
+
+ protected void applyWeldAnnotations(WeldKernelControllerContext context)
+ {
@SuppressWarnings("unchecked")
- WeldInjector<?> weldInjector = new WeldInjector((WeldKernelControllerContext)context, context.getBeanInfo().getClassInfo().getType());
- ((WeldKernelControllerContext)context).setWeldInjector(weldInjector);
+ WeldInjector<?> weldInjector = new WeldInjector(context, getClazz(context));
+ context.setWeldInjector(weldInjector);
weldInjector.describe();
}
+
+ protected Class<?> getClazz(WeldKernelControllerContext context)
+ {
+ return context.getBeanInfo().getClassInfo().getType();
+ }
@Override
protected void cleanAnnotations(KernelControllerContext context)
Modified: projects/kernel/trunk/weld-int/src/main/java/org/jboss/kernel/weld/plugins/dependency/WeldInjector.java
===================================================================
--- projects/kernel/trunk/weld-int/src/main/java/org/jboss/kernel/weld/plugins/dependency/WeldInjector.java 2009-11-09 15:29:20 UTC (rev 96177)
+++ projects/kernel/trunk/weld-int/src/main/java/org/jboss/kernel/weld/plugins/dependency/WeldInjector.java 2009-11-09 16:05:02 UTC (rev 96178)
@@ -25,15 +25,11 @@
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
-import java.util.Set;
import javax.enterprise.context.NormalScope;
import javax.enterprise.context.spi.CreationalContext;
import javax.enterprise.inject.Produces;
import javax.enterprise.inject.Stereotype;
-import javax.enterprise.inject.spi.Annotated;
-import javax.enterprise.inject.spi.AnnotatedField;
-import javax.enterprise.inject.spi.AnnotatedMethod;
import javax.enterprise.inject.spi.AnnotatedType;
import javax.enterprise.inject.spi.InjectionPoint;
import javax.enterprise.inject.spi.InjectionTarget;
@@ -43,15 +39,11 @@
import org.jboss.beans.metadata.spi.BeanMetaData;
import org.jboss.beans.metadata.spi.DependencyMetaData;
import org.jboss.beans.metadata.spi.builder.BeanMetaDataBuilder;
-import org.jboss.kernel.Kernel;
import org.jboss.kernel.plugins.dependency.AbstractMetaDataVisitor;
-import org.jboss.kernel.spi.dependency.KernelController;
import org.jboss.kernel.spi.dependency.KernelControllerContext;
-import org.jboss.kernel.spi.metadata.KernelMetaDataRepository;
import org.jboss.kernel.weld.plugins.metadata.WeldDependencyMetaData;
import org.jboss.kernel.weld.spi.annotated.MDRAnnotatedTypeFactory;
import org.jboss.logging.Logger;
-import org.jboss.metadata.spi.MetaData;
/**
*
@@ -124,41 +116,6 @@
}
/**
- * Check if the bean has web beans annotations
- * @return true if bean has web beans annotations
- */
- boolean hasWebBeanAnnotations()
- {
- if (hasWebBeanAnnotations(type, AnnotationChecker.BINDING))
- return true;
-
- for (AnnotatedMethod<?> method : type.getMethods())
- {
- if (hasWebBeanAnnotations(method, AnnotationChecker.PRODUCER))
- return true;
- }
-
- for (AnnotatedField<?> method : type.getFields())
- {
- if (hasWebBeanAnnotations(method, AnnotationChecker.PRODUCER))
- return true;
- }
-
- return false;
- }
-
- boolean hasWebBeanAnnotations(Annotated annotated, AnnotationChecker checker)
- {
- Set<Annotation> annotations = annotated.getAnnotations();
- for (Annotation annotation : annotations)
- {
- if (checker.matches(annotation))
- return true;
- }
- return false;
- }
-
- /**
* Check if the bean should be constructed by web beans
*
* @return true if the bean should be constructed by web beans
@@ -176,11 +133,6 @@
*/
void describe()
{
- if (hasWebBeanAnnotations())
- {
- context.setAnnotatedType(type);
- }
-
AnnotationMetaDataVisitor annotationsVisitor = new AnnotationMetaDataVisitor(context);
annotationsVisitor.before();
try
@@ -326,15 +278,20 @@
private AnnotatedType<T> createMdrDecoratedAnnotatedType(Class<T> clazz)
{
AnnotatedType<T> type = context.getManager().createAnnotatedType(clazz);
-
- KernelController controller = (KernelController)context.getController();
- Kernel kernel = controller.getKernel();
- KernelMetaDataRepository repository = kernel.getMetaDataRepository();
- MetaData metaData = repository.getMetaData(context);
-
- return MDRAnnotatedTypeFactory.getInstance().getAnnotatedType(type, metaData);
+ return MDRAnnotatedTypeFactory.getInstance().decorateAnnotatedType(type, context);
}
+ /**
+ * Get the annotated type
+ * @return the annotated type
+ */
+ public AnnotatedType<T> getType()
+ {
+ return type;
+ }
+
+
+
class AnnotationMetaDataVisitor extends AbstractMetaDataVisitor
{
public AnnotationMetaDataVisitor(KernelControllerContext context)
Modified: projects/kernel/trunk/weld-int/src/main/java/org/jboss/kernel/weld/plugins/dependency/WeldKernelControllerContext.java
===================================================================
--- projects/kernel/trunk/weld-int/src/main/java/org/jboss/kernel/weld/plugins/dependency/WeldKernelControllerContext.java 2009-11-09 15:29:20 UTC (rev 96177)
+++ projects/kernel/trunk/weld-int/src/main/java/org/jboss/kernel/weld/plugins/dependency/WeldKernelControllerContext.java 2009-11-09 16:05:02 UTC (rev 96178)
@@ -52,7 +52,7 @@
*/
public WeldKernelControllerContext(BeanInfo info, BeanMetaData metaData, Object target, BeanManager manager)
{
- super(info, metaData, WeldControllerContextActions.getInstance(), target);
+ super(info, metaData, WeldKernelControllerContextActions.getInstance(), target);
if (manager == null)
throw new IllegalArgumentException("Null manager");
this.manager = manager;
@@ -80,7 +80,7 @@
*
* @param webBeansInjector the web beans injector
*/
- void setWeldInjector(WeldInjector<?> webBeansInjector)
+ public void setWeldInjector(WeldInjector<?> webBeansInjector)
{
this.webBeansInjector = webBeansInjector;
}
@@ -90,28 +90,8 @@
*
* @return the web beans injector
*/
- WeldInjector<?> getWeldInjector()
+ public WeldInjector<?> getWeldInjector()
{
return webBeansInjector;
}
-
- /**
- * Gets the annotated type. This is only set if the bean is a candidate for lookup from web beans
- *
- * @return the type, or null if not a candidate for lookup from web beans
- */
- public AnnotatedType<?> getAnnotatedType()
- {
- return type;
- }
-
- /**
- * Sets the annotated type. This should only be set if the bean is a candidate for lookup from web beans
- *
- * @param type the type
- */
- public void setAnnotatedType(AnnotatedType<?> type)
- {
- this.type = type;
- }
}
Added: projects/kernel/trunk/weld-int/src/main/java/org/jboss/kernel/weld/plugins/dependency/WeldKernelControllerContextActions.java
===================================================================
--- projects/kernel/trunk/weld-int/src/main/java/org/jboss/kernel/weld/plugins/dependency/WeldKernelControllerContextActions.java (rev 0)
+++ projects/kernel/trunk/weld-int/src/main/java/org/jboss/kernel/weld/plugins/dependency/WeldKernelControllerContextActions.java 2009-11-09 16:05:02 UTC (rev 96178)
@@ -0,0 +1,68 @@
+/*
+* JBoss, Home of Professional Open Source.
+* Copyright 2006, Red Hat Middleware LLC, and individual contributors
+* as indicated by the @author tags. See the copyright.txt file in the
+* distribution for a full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+package org.jboss.kernel.weld.plugins.dependency;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.jboss.dependency.plugins.action.ControllerContextAction;
+import org.jboss.dependency.spi.ControllerState;
+import org.jboss.kernel.plugins.dependency.CreateDestroyLifecycleAction;
+import org.jboss.kernel.plugins.dependency.KernelControllerContextActions;
+import org.jboss.kernel.plugins.dependency.PreInstallAction;
+import org.jboss.kernel.plugins.dependency.StartStopLifecycleAction;
+
+/**
+ * ControllerContextActions for contexts that need to interact with web beans
+ *
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @version $Revision: 1.1 $
+ */
+public class WeldKernelControllerContextActions extends KernelControllerContextActions
+{
+ private static final WeldKernelControllerContextActions INSTANCE;
+ static
+ {
+ Map<ControllerState, ControllerContextAction> actions = new HashMap<ControllerState, ControllerContextAction>();
+
+ actions.put(ControllerState.PRE_INSTALL, new PreInstallAction());
+ actions.put(ControllerState.DESCRIBED, new WeldDescribeAction());
+ actions.put(ControllerState.INSTANTIATED, new WeldInstantiateAction());
+ actions.put(WeldPostConstructAction.STATE, new WeldPostConstructAction());
+ actions.put(ControllerState.CONFIGURED, new WeldConfigureAction());
+ actions.put(ControllerState.CREATE, new CreateDestroyLifecycleAction());
+ actions.put(WeldPreDestroyAction.STATE, new WeldPreDestroyAction());
+ actions.put(ControllerState.START, new StartStopLifecycleAction());
+ actions.put(ControllerState.INSTALLED, new WeldInstallAction());
+ INSTANCE = new WeldKernelControllerContextActions(actions);
+ }
+
+ protected WeldKernelControllerContextActions(Map<ControllerState, ControllerContextAction> actions)
+ {
+ super(actions);
+ }
+
+ public static WeldKernelControllerContextActions getInstance()
+ {
+ return INSTANCE;
+ }
+}
Deleted: projects/kernel/trunk/weld-int/src/main/java/org/jboss/kernel/weld/plugins/dependency/WeldRegisterWebBeanAction.java
===================================================================
--- projects/kernel/trunk/weld-int/src/main/java/org/jboss/kernel/weld/plugins/dependency/WeldRegisterWebBeanAction.java 2009-11-09 15:29:20 UTC (rev 96177)
+++ projects/kernel/trunk/weld-int/src/main/java/org/jboss/kernel/weld/plugins/dependency/WeldRegisterWebBeanAction.java 2009-11-09 16:05:02 UTC (rev 96178)
@@ -1,64 +0,0 @@
-/*
-* JBoss, Home of Professional Open Source.
-* Copyright 2006, Red Hat Middleware LLC, and individual contributors
-* as indicated by the @author tags. See the copyright.txt file in the
-* distribution for a full listing of individual contributors.
-*
-* This is free software; you can redistribute it and/or modify it
-* under the terms of the GNU Lesser General Public License as
-* published by the Free Software Foundation; either version 2.1 of
-* the License, or (at your option) any later version.
-*
-* This software is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-* Lesser General Public License for more details.
-*
-* You should have received a copy of the GNU Lesser General Public
-* License along with this software; if not, write to the Free
-* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
-*/
-package org.jboss.kernel.weld.plugins.dependency;
-
-import org.jboss.dependency.spi.ControllerState;
-import org.jboss.kernel.plugins.dependency.KernelControllerContextAction;
-import org.jboss.kernel.spi.dependency.InstantiateKernelControllerContextAware;
-import org.jboss.kernel.spi.dependency.KernelControllerContext;
-import org.jboss.kernel.spi.dependency.KernelControllerContextAware;
-import org.jboss.kernel.weld.plugins.weld.WeldFromMcRegistry;
-
-/**
- * ControllerContextAction to register an MC bean as a candidate for lookup from web beans.
- *
- * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
- * @version $Revision: 1.1 $
- */
-public class WeldRegisterWebBeanAction extends KernelControllerContextAction
-{
- final static ControllerState STATE = new ControllerState("REGISTER_WEB_BEAN");
-
- @Override
- protected void installActionInternal(KernelControllerContext context) throws Throwable
- {
- if (context instanceof WeldKernelControllerContext == false)
- throw new IllegalArgumentException("context is not a WabBeansKernelControllerContext");
-
- WeldFromMcRegistry.registerBean((WeldKernelControllerContext)context);
- }
-
- @Override
- protected void uninstallActionInternal(KernelControllerContext context)
- {
- if (context instanceof WeldKernelControllerContext == false)
- throw new IllegalArgumentException("context is not a WabBeansKernelControllerContext");
-
- WeldFromMcRegistry.unregisterBean((WeldKernelControllerContext)context);
- }
-
- protected Class<? extends KernelControllerContextAware> getActionAwareInterface()
- {
- return InstantiateKernelControllerContextAware.class;
- }
-
-}
Modified: projects/kernel/trunk/weld-int/src/main/java/org/jboss/kernel/weld/plugins/weld/AnnotatedTypeWrapper.java
===================================================================
--- projects/kernel/trunk/weld-int/src/main/java/org/jboss/kernel/weld/plugins/weld/AnnotatedTypeWrapper.java 2009-11-09 15:29:20 UTC (rev 96177)
+++ projects/kernel/trunk/weld-int/src/main/java/org/jboss/kernel/weld/plugins/weld/AnnotatedTypeWrapper.java 2009-11-09 16:05:02 UTC (rev 96178)
@@ -24,7 +24,8 @@
import javax.enterprise.inject.spi.AnnotatedType;
/**
- * The annotated type implementations in Weld do not i
+ * The annotated type implementations in Weld do not implement equals and hashCode,
+ * so wrap them so they can be used as keys in a map
*
* @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
* @version $Revision: 1.1 $
Modified: projects/kernel/trunk/weld-int/src/main/java/org/jboss/kernel/weld/plugins/weld/ExisitingInstanceFieldProducer.java
===================================================================
--- projects/kernel/trunk/weld-int/src/main/java/org/jboss/kernel/weld/plugins/weld/ExisitingInstanceFieldProducer.java 2009-11-09 15:29:20 UTC (rev 96177)
+++ projects/kernel/trunk/weld-int/src/main/java/org/jboss/kernel/weld/plugins/weld/ExisitingInstanceFieldProducer.java 2009-11-09 16:05:02 UTC (rev 96178)
@@ -27,7 +27,7 @@
import javax.enterprise.inject.CreationException;
import javax.enterprise.inject.spi.Producer;
-import org.jboss.kernel.weld.plugins.dependency.WeldKernelControllerContext;
+import org.jboss.kernel.spi.dependency.KernelControllerContext;
/**
*
@@ -38,7 +38,7 @@
{
private final Field field;
- ExisitingInstanceFieldProducer(Field field, Producer<T> delegate, WeldKernelControllerContext context)
+ ExisitingInstanceFieldProducer(Field field, Producer<T> delegate, KernelControllerContext context)
{
super(delegate, context);
this.field = field;
Modified: projects/kernel/trunk/weld-int/src/main/java/org/jboss/kernel/weld/plugins/weld/ExisitingInstanceMethodProducer.java
===================================================================
--- projects/kernel/trunk/weld-int/src/main/java/org/jboss/kernel/weld/plugins/weld/ExisitingInstanceMethodProducer.java 2009-11-09 15:29:20 UTC (rev 96177)
+++ projects/kernel/trunk/weld-int/src/main/java/org/jboss/kernel/weld/plugins/weld/ExisitingInstanceMethodProducer.java 2009-11-09 16:05:02 UTC (rev 96178)
@@ -27,7 +27,7 @@
import javax.enterprise.inject.CreationException;
import javax.enterprise.inject.spi.Producer;
-import org.jboss.kernel.weld.plugins.dependency.WeldKernelControllerContext;
+import org.jboss.kernel.spi.dependency.KernelControllerContext;
/**
*
@@ -38,7 +38,7 @@
{
private final Method method;
- ExisitingInstanceMethodProducer(Method method, Producer<T> delegate, WeldKernelControllerContext context)
+ ExisitingInstanceMethodProducer(Method method, Producer<T> delegate, KernelControllerContext context)
{
super(delegate, context);
this.method = method;
Modified: projects/kernel/trunk/weld-int/src/main/java/org/jboss/kernel/weld/plugins/weld/ExistingInstanceHolder.java
===================================================================
--- projects/kernel/trunk/weld-int/src/main/java/org/jboss/kernel/weld/plugins/weld/ExistingInstanceHolder.java 2009-11-09 15:29:20 UTC (rev 96177)
+++ projects/kernel/trunk/weld-int/src/main/java/org/jboss/kernel/weld/plugins/weld/ExistingInstanceHolder.java 2009-11-09 16:05:02 UTC (rev 96178)
@@ -25,7 +25,7 @@
import org.jboss.dependency.spi.ControllerState;
import org.jboss.dependency.spi.ControllerStateModel;
-import org.jboss.kernel.weld.plugins.dependency.WeldKernelControllerContext;
+import org.jboss.kernel.spi.dependency.KernelControllerContext;
/**
*
@@ -34,9 +34,9 @@
*/
public abstract class ExistingInstanceHolder<T>
{
- final WeldKernelControllerContext context;
+ final KernelControllerContext context;
- public ExistingInstanceHolder(WeldKernelControllerContext context)
+ public ExistingInstanceHolder(KernelControllerContext context)
{
if (context == null)
throw new IllegalArgumentException("Null context");
@@ -54,13 +54,15 @@
ControllerStateModel states = context.getController().getStates();
if (states.isBeforeState(context.getState(), ControllerState.INSTALLED))
{
- throw new ResolutionException(context + " for " + context.getAnnotatedType() + " has not reached the INSTALLED state");
+ throw new ResolutionException(context + " has not reached the INSTALLED state");
}
}
T target = (T)context.getTarget();
if (target == null)
- throw new ResolutionException("Context for " + context.getAnnotatedType() + " has an empty instance");
+ {
+ throw new ResolutionException(context + " has an empty instance");
+ }
return target;
}
Modified: projects/kernel/trunk/weld-int/src/main/java/org/jboss/kernel/weld/plugins/weld/ExistingInstanceInjectionTarget.java
===================================================================
--- projects/kernel/trunk/weld-int/src/main/java/org/jboss/kernel/weld/plugins/weld/ExistingInstanceInjectionTarget.java 2009-11-09 15:29:20 UTC (rev 96177)
+++ projects/kernel/trunk/weld-int/src/main/java/org/jboss/kernel/weld/plugins/weld/ExistingInstanceInjectionTarget.java 2009-11-09 16:05:02 UTC (rev 96178)
@@ -27,7 +27,7 @@
import javax.enterprise.inject.spi.InjectionPoint;
import javax.enterprise.inject.spi.InjectionTarget;
-import org.jboss.kernel.weld.plugins.dependency.WeldKernelControllerContext;
+import org.jboss.kernel.spi.dependency.KernelControllerContext;
/**
*
@@ -38,7 +38,7 @@
{
final InjectionTarget<T> injectionTarget;
- ExistingInstanceInjectionTarget(InjectionTarget<T> injectionTarget, WeldKernelControllerContext context)
+ ExistingInstanceInjectionTarget(InjectionTarget<T> injectionTarget, KernelControllerContext context)
{
super(context);
Modified: projects/kernel/trunk/weld-int/src/main/java/org/jboss/kernel/weld/plugins/weld/ExistingInstanceProducer.java
===================================================================
--- projects/kernel/trunk/weld-int/src/main/java/org/jboss/kernel/weld/plugins/weld/ExistingInstanceProducer.java 2009-11-09 15:29:20 UTC (rev 96177)
+++ projects/kernel/trunk/weld-int/src/main/java/org/jboss/kernel/weld/plugins/weld/ExistingInstanceProducer.java 2009-11-09 16:05:02 UTC (rev 96178)
@@ -26,7 +26,7 @@
import javax.enterprise.inject.spi.InjectionPoint;
import javax.enterprise.inject.spi.Producer;
-import org.jboss.kernel.weld.plugins.dependency.WeldKernelControllerContext;
+import org.jboss.kernel.spi.dependency.KernelControllerContext;
/**
*
@@ -37,7 +37,7 @@
{
private final Producer<T> delegate;
- ExistingInstanceProducer(Producer<T> delegate, WeldKernelControllerContext context)
+ ExistingInstanceProducer(Producer<T> delegate, KernelControllerContext context)
{
super(context);
this.delegate = delegate;
Modified: projects/kernel/trunk/weld-int/src/main/java/org/jboss/kernel/weld/plugins/weld/McBeanRegistryObserver.java
===================================================================
--- projects/kernel/trunk/weld-int/src/main/java/org/jboss/kernel/weld/plugins/weld/McBeanRegistryObserver.java 2009-11-09 15:29:20 UTC (rev 96177)
+++ projects/kernel/trunk/weld-int/src/main/java/org/jboss/kernel/weld/plugins/weld/McBeanRegistryObserver.java 2009-11-09 16:05:02 UTC (rev 96178)
@@ -29,6 +29,7 @@
import javax.enterprise.inject.InjectionException;
import javax.enterprise.inject.spi.AfterBeanDiscovery;
import javax.enterprise.inject.spi.AnnotatedType;
+import javax.enterprise.inject.spi.BeanManager;
import javax.enterprise.inject.spi.BeforeBeanDiscovery;
import javax.enterprise.inject.spi.Extension;
import javax.enterprise.inject.spi.InjectionTarget;
@@ -36,7 +37,7 @@
import javax.enterprise.inject.spi.ProcessProducer;
import javax.enterprise.inject.spi.Producer;
-import org.jboss.kernel.weld.plugins.dependency.WeldKernelControllerContext;
+import org.jboss.kernel.spi.dependency.KernelControllerContext;
import org.jboss.kernel.weld.plugins.dependency.UnsatisfiedDependencyRegistry;
/**
@@ -47,9 +48,10 @@
*/
public class McBeanRegistryObserver implements Extension
{
- public void addType(@Observes BeforeBeanDiscovery event)
+ public void addType(@Observes BeforeBeanDiscovery event, BeanManager beanManager)
{
- for (AnnotatedTypeWrapper typeWrapper : WeldFromMcRegistry.getTypes())
+ WeldFromMcRegistry.getInstance().initializeTypes(beanManager);
+ for (AnnotatedTypeWrapper typeWrapper : WeldFromMcRegistry.getInstance().getTypes())
{
event.addAnnotatedType(typeWrapper.getAnnotatedType());
}
@@ -58,7 +60,7 @@
public void processInjectionTarget(@Observes ProcessInjectionTarget<?> event)
{
AnnotatedType<?> type = event.getAnnotatedType();
- WeldKernelControllerContext context = WeldFromMcRegistry.getContext(type);
+ KernelControllerContext context = WeldFromMcRegistry.getInstance().getContext(type);
if (context != null)
{
InjectionTarget<?> target = event.getInjectionTarget();
@@ -71,7 +73,7 @@
public void processProducer(@Observes ProcessProducer<?, ?> event)
{
AnnotatedType<?> type = event.getAnnotatedMember().getDeclaringType();
- WeldKernelControllerContext context = WeldFromMcRegistry.getContext(type);
+ KernelControllerContext context = WeldFromMcRegistry.getInstance().getContext(type);
if (context != null)
{
Producer<?> producer = event.getProducer();
Modified: projects/kernel/trunk/weld-int/src/main/java/org/jboss/kernel/weld/plugins/weld/WeldFromMcRegistry.java
===================================================================
--- projects/kernel/trunk/weld-int/src/main/java/org/jboss/kernel/weld/plugins/weld/WeldFromMcRegistry.java 2009-11-09 15:29:20 UTC (rev 96177)
+++ projects/kernel/trunk/weld-int/src/main/java/org/jboss/kernel/weld/plugins/weld/WeldFromMcRegistry.java 2009-11-09 16:05:02 UTC (rev 96178)
@@ -23,70 +23,146 @@
import java.util.Collection;
import java.util.Collections;
+import java.util.Iterator;
import java.util.Map;
+import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
import javax.enterprise.inject.spi.AnnotatedType;
+import javax.enterprise.inject.spi.BeanManager;
+import org.jboss.kernel.Kernel;
+import org.jboss.kernel.spi.dependency.KernelController;
+import org.jboss.kernel.spi.dependency.KernelControllerContext;
+import org.jboss.kernel.spi.metadata.KernelMetaDataRepository;
+import org.jboss.kernel.weld.metadata.api.annotations.WeldEnabled;
import org.jboss.kernel.weld.plugins.dependency.WeldKernelControllerContext;
+import org.jboss.kernel.weld.spi.annotated.MDRAnnotatedTypeFactory;
+import org.jboss.metadata.spi.MetaData;
+import org.jboss.util.collection.ConcurrentSet;
/**
- * Registry of MC beans that should be accessible from web beans
+ * Singleton registry of MC beans that should be accessible from web beans
*
* @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
* @version $Revision: 1.1 $
*/
public class WeldFromMcRegistry
{
- //TODO need some way to register by controller and to determine which controller a beanmanager should look in
+ private final static WeldFromMcRegistry INSTANCE = new WeldFromMcRegistry();
/**
* Map of context and annotated type wrapper
*/
- private static final Map<WeldKernelControllerContext, AnnotatedTypeWrapper> typesByContext = new ConcurrentHashMap<WeldKernelControllerContext, AnnotatedTypeWrapper>();
+ private final Map<KernelControllerContext, AnnotatedTypeWrapper> typesByContext = new ConcurrentHashMap<KernelControllerContext, AnnotatedTypeWrapper>();
+ /**
+ * Map of contexts that have not yet been initialized with a type
+ */
+ private final Set<KernelControllerContext> contextsWithNoType = new ConcurrentSet<KernelControllerContext>();
+
/**
* Map of annotated type wrapper and context
*/
- private static final Map<AnnotatedTypeWrapper, WeldKernelControllerContext> contextsByType = new ConcurrentHashMap<AnnotatedTypeWrapper, WeldKernelControllerContext>();
+ private final Map<AnnotatedTypeWrapper, KernelControllerContext> contextsByType = new ConcurrentHashMap<AnnotatedTypeWrapper, KernelControllerContext>();
/**
- * Check if a context should be accessible from web beans, and if so register it as a web bean.
+ * Get the singleton
+ * @return the singleton instance
+ */
+ public static WeldFromMcRegistry getInstance()
+ {
+ return INSTANCE;
+ }
+
+ /**
+ * Check if a context has the @WeldEnabled annotation, and if so register it as a web bean.
*
* @param context the context to register in web beans
*/
- public static void registerBean(WeldKernelControllerContext context)
+ public void registerBean(KernelControllerContext context)
{
- AnnotatedType<?> type = context.getAnnotatedType();
+ if (context instanceof WeldKernelControllerContext)
+ registerBean(context, ((WeldKernelControllerContext)context).getWeldInjector().getType());
+ else
+ registerBean(context, null);
+ }
+
+ /**
+ * Check if a context has the @WeldEnabled annotation, and if so register it as a web bean.
+ *
+ * @param context the context to register in web beans
+ * @param type the annotated type of the context's bean
+ */
+ private void registerBean(KernelControllerContext context, AnnotatedType<?> type)
+ {
+ if (!hasWeldEnabledAnnotation(context, type))
+ return;
+
if (type != null)
{
AnnotatedTypeWrapper typeWrapper = new AnnotatedTypeWrapper(type);
typesByContext.put(context, typeWrapper);
contextsByType.put(typeWrapper, context);
}
+ else
+ {
+ contextsWithNoType.add(context);
+ }
}
/**
+ * Check if the bean has the WeldEnabled annotation
+ *
+ * @param context the kernel controller context
+ * @param type the annotated type
+ * @return true if bean has web beans annotations
+ */
+ private boolean hasWeldEnabledAnnotation(KernelControllerContext context, AnnotatedType<?> type)
+ {
+ if (type != null)
+ return type.getAnnotation(WeldEnabled.class) != null;
+
+ KernelController controller = (KernelController)context.getController();
+ Kernel kernel = controller.getKernel();
+ KernelMetaDataRepository repository = kernel.getMetaDataRepository();
+ MetaData metaData = repository.getMetaData(context);
+ return metaData.isAnnotationPresent(WeldEnabled.class);
+ }
+
+ /**
* Unregister an mc context as a web bean
*
* @param context the context to register in web beans
*/
- public static void unregisterBean(WeldKernelControllerContext context)
+ public void unregisterBean(KernelControllerContext context)
{
AnnotatedTypeWrapper typeWrapper = typesByContext.remove(context);
if (typeWrapper != null)
contextsByType.remove(typeWrapper);
}
+ public void initializeTypes(BeanManager beanManager)
+ {
+ for (Iterator<KernelControllerContext> it = contextsWithNoType.iterator() ; it.hasNext() ; )
+ {
+ KernelControllerContext ctx = it.next();
+ it.remove();
+ AnnotatedType<?> type = beanManager.createAnnotatedType(ctx.getBeanInfo().getClassInfo().getType());
+ type = MDRAnnotatedTypeFactory.getInstance().decorateAnnotatedType(type, ctx);
+ registerBean(ctx, type);
+ }
+ }
+
/**
* Get a copy of all the MC beans that should be registered as web beans
*/
- public static Collection<AnnotatedTypeWrapper> getTypes()
+ public Collection<AnnotatedTypeWrapper> getTypes()
{
return Collections.unmodifiableCollection(typesByContext.values());
}
- public static WeldKernelControllerContext getContext(AnnotatedType<?> type)
+ public KernelControllerContext getContext(AnnotatedType<?> type)
{
return contextsByType.get(new AnnotatedTypeWrapper(type));
}
Modified: projects/kernel/trunk/weld-int/src/main/java/org/jboss/kernel/weld/spi/annotated/MDRAnnotatedTypeFactory.java
===================================================================
--- projects/kernel/trunk/weld-int/src/main/java/org/jboss/kernel/weld/spi/annotated/MDRAnnotatedTypeFactory.java 2009-11-09 15:29:20 UTC (rev 96177)
+++ projects/kernel/trunk/weld-int/src/main/java/org/jboss/kernel/weld/spi/annotated/MDRAnnotatedTypeFactory.java 2009-11-09 16:05:02 UTC (rev 96178)
@@ -23,6 +23,7 @@
import javax.enterprise.inject.spi.AnnotatedType;
+import org.jboss.kernel.spi.dependency.KernelControllerContext;
import org.jboss.kernel.weld.plugins.annotated.MDRAnnotatedTypeFactoryImpl;
import org.jboss.metadata.spi.MetaData;
@@ -50,8 +51,17 @@
* Decorate an annotated type to understand MDR metadata
*
* @param delegate the type to decorate
- * @param metaData the MDR metadata for the bean
+ * @param metaData the MDR metadata for the bean for which we want to decorate the type
* @return the type decorated with MDR metadata
*/
- public abstract <T> AnnotatedType<T> getAnnotatedType(AnnotatedType<T> delegate, MetaData metaData);
+ public abstract <T> AnnotatedType<T> decorateAnnotatedType(AnnotatedType<T> delegate, MetaData metaData);
+
+ /**
+ * Decorate an annotated type to understand MDR metadata
+ *
+ * @param delegate the type to decorate
+ * @param context the Kernel controller context which contains the metadata
+ * @return the type decorated with MDR metadata
+ */
+ public abstract <T> AnnotatedType<T> decorateAnnotatedType(AnnotatedType<T> delegate, KernelControllerContext context);
}
Modified: projects/kernel/trunk/weld-int/src/test/java/org/jboss/test/kernel/weld/AbstractWeldMcTest.java
===================================================================
--- projects/kernel/trunk/weld-int/src/test/java/org/jboss/test/kernel/weld/AbstractWeldMcTest.java 2009-11-09 15:29:20 UTC (rev 96177)
+++ projects/kernel/trunk/weld-int/src/test/java/org/jboss/test/kernel/weld/AbstractWeldMcTest.java 2009-11-09 16:05:02 UTC (rev 96178)
@@ -33,7 +33,10 @@
import org.jboss.beans.info.spi.BeanAccessMode;
import org.jboss.beans.metadata.spi.BeanMetaData;
import org.jboss.beans.metadata.spi.builder.BeanMetaDataBuilder;
+import org.jboss.kernel.spi.dependency.KernelControllerContext;
+import org.jboss.kernel.weld.metadata.api.annotations.WeldEnabled;
import org.jboss.kernel.weld.plugins.dependency.WeldKernelControllerContext;
+import org.jboss.kernel.weld.plugins.weld.WeldFromMcRegistry;
import org.jboss.test.AbstractTestDelegate;
import org.jboss.test.kernel.junit.MicrocontainerTest;
@@ -154,18 +157,35 @@
}
/**
- * Create a WeldKernelControllerContext and deploy it into the microcontainer
+ * Create a WeldKernelControllerContext and deploy it into the microcontainer.
+ * This will also update the WeldFromMcRegistry as required, something that
+ * will be done by the deployers when running in AS
*
* @param beanMetaData the bean metadata to deploy
* @return the WeldKernelControllerContext
* @throws Exception if an error happened during deployment
*/
- protected WeldKernelControllerContext deploy(BeanMetaData beanMetaData) throws Exception
+ protected WeldKernelControllerContext deployContextAndRegister(BeanMetaData beanMetaData) throws Exception
{
- return getDelegate().deploy(beanMetaData);
+ WeldKernelControllerContext context = getDelegate().deploy(beanMetaData);
+ WeldFromMcRegistry.getInstance().registerBean(context);
+ WeldFromMcRegistry.getInstance().initializeTypes(getCurrentManager());
+ return context;
}
/**
+ * Undeploy a bean and remove it from the WeldFromMcRegistry. This will
+ * be done by the deployers when running in AS
+ *
+ * @param context the context
+ */
+ protected void undeployAndUnregister(KernelControllerContext context)
+ {
+ WeldFromMcRegistry.getInstance().unregisterBean(context);
+ super.undeploy(context);
+ }
+
+ /**
* Check that a collection has the expected size
*
* @param expected the expected size
@@ -199,6 +219,24 @@
return builder.getBeanMetaData();
}
+ /**
+ * Creates a bean metadata with the @WeldEnabled annotation
+ *
+ * @param name the name of the bean
+ * @param clazz the class of the bean
+ */
+ protected BeanMetaData createWeldEnabledBeanMetaData(String name, Class<?> clazz)
+ {
+ BeanMetaDataBuilder builder = BeanMetaDataBuilder.createBuilder(createBeanMetaData(name, clazz));
+ builder.addAnnotation("@" + WeldEnabled.class.getName());
+ return builder.getBeanMetaData();
+ }
+
+ /**
+ * Gets a weld instance that has been
+ * @param clazz the class we want to get an instance of
+ * @return the instance
+ */
protected <T> T getWeldBean(Class<T> clazz) throws Exception
{
Set<Bean<?>> beans = getCurrentManager().getBeans(clazz);
@@ -208,5 +246,6 @@
return bean.create(createCtx);
}
-
+
+
}
Modified: projects/kernel/trunk/weld-int/src/test/java/org/jboss/test/kernel/weld/annotated/test/AnnotatedTypeTestCase.java
===================================================================
--- projects/kernel/trunk/weld-int/src/test/java/org/jboss/test/kernel/weld/annotated/test/AnnotatedTypeTestCase.java 2009-11-09 15:29:20 UTC (rev 96177)
+++ projects/kernel/trunk/weld-int/src/test/java/org/jboss/test/kernel/weld/annotated/test/AnnotatedTypeTestCase.java 2009-11-09 16:05:02 UTC (rev 96178)
@@ -434,7 +434,7 @@
private <T> AnnotatedType<T> createAnnotatedType(Class<T> clazz, MetaData metadata) throws Exception
{
AnnotatedType<T> type = getCurrentManager().createAnnotatedType(clazz);
- return MDRAnnotatedTypeFactory.getInstance().getAnnotatedType(type, metadata);
+ return MDRAnnotatedTypeFactory.getInstance().decorateAnnotatedType(type, metadata);
}
private MetaData createMetaDataWithAnnotations(Class<?> clazz) throws Exception
@@ -520,7 +520,7 @@
component.addAnnotation(createTest2());
loader.addComponentMetaDataRetrieval(new FieldSignature(parent), component);
- return MDRAnnotatedTypeFactory.getInstance().getAnnotatedType(type, new MetaDataRetrievalToMetaDataBridge(loader));
+ return MDRAnnotatedTypeFactory.getInstance().decorateAnnotatedType(type, new MetaDataRetrievalToMetaDataBridge(loader));
}
Modified: projects/kernel/trunk/weld-int/src/test/java/org/jboss/test/kernel/weld/bidirectional/test/BidirectionalWeldAndMcTestCase.java
===================================================================
--- projects/kernel/trunk/weld-int/src/test/java/org/jboss/test/kernel/weld/bidirectional/test/BidirectionalWeldAndMcTestCase.java 2009-11-09 15:29:20 UTC (rev 96177)
+++ projects/kernel/trunk/weld-int/src/test/java/org/jboss/test/kernel/weld/bidirectional/test/BidirectionalWeldAndMcTestCase.java 2009-11-09 16:05:02 UTC (rev 96178)
@@ -52,8 +52,8 @@
{
initializeWeld(this.getClass().getPackage(), McBeanRegistryObserver.class, Middle.class);
- WeldKernelControllerContext firstContext = deploy(createBeanMetaData("First", First.class));
- WeldKernelControllerContext lastContext = deploy(createBeanMetaData("Last", Last.class));
+ WeldKernelControllerContext firstContext = deployContextAndRegister(createWeldEnabledBeanMetaData("First", First.class));
+ WeldKernelControllerContext lastContext = deployContextAndRegister(createWeldEnabledBeanMetaData("Last", Last.class));
try
{
deployInitializedWeld();
@@ -70,8 +70,9 @@
finally
{
undeployWeld();
- undeploy(firstContext);
- undeploy(lastContext);
+ undeployAndUnregister(firstContext);
+ undeployAndUnregister(lastContext);
+
}
}
@@ -79,7 +80,7 @@
{
initializeWeld(this.getClass().getPackage(), McBeanRegistryObserver.class, First.class, Last.class);
- WeldKernelControllerContext middleContext = deploy(createBeanMetaData("Middle", Middle.class));
+ WeldKernelControllerContext middleContext = deployContextAndRegister(createWeldEnabledBeanMetaData("Middle", Middle.class));
try
{
deployInitializedWeld();
@@ -94,7 +95,7 @@
finally
{
undeployWeld();
- undeploy(middleContext);
+ undeployAndUnregister(middleContext);
}
}
}
Modified: projects/kernel/trunk/weld-int/src/test/java/org/jboss/test/kernel/weld/mctowb/support/mc/BeanWithSimpleWeldDependency.java
===================================================================
--- projects/kernel/trunk/weld-int/src/test/java/org/jboss/test/kernel/weld/mctowb/support/mc/BeanWithSimpleWeldDependency.java 2009-11-09 15:29:20 UTC (rev 96177)
+++ projects/kernel/trunk/weld-int/src/test/java/org/jboss/test/kernel/weld/mctowb/support/mc/BeanWithSimpleWeldDependency.java 2009-11-09 16:05:02 UTC (rev 96178)
@@ -23,6 +23,7 @@
import javax.inject.Inject;
+import org.jboss.kernel.weld.metadata.api.annotations.WeldEnabled;
import org.jboss.test.kernel.weld.mctowb.support.wb.Simple;
/**
@@ -30,6 +31,7 @@
* @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
* @version $Revision: 1.1 $
*/
+ at WeldEnabled
public class BeanWithSimpleWeldDependency
{
@Inject
Modified: projects/kernel/trunk/weld-int/src/test/java/org/jboss/test/kernel/weld/mctowb/support/mc/LifecycleBean.java
===================================================================
--- projects/kernel/trunk/weld-int/src/test/java/org/jboss/test/kernel/weld/mctowb/support/mc/LifecycleBean.java 2009-11-09 15:29:20 UTC (rev 96177)
+++ projects/kernel/trunk/weld-int/src/test/java/org/jboss/test/kernel/weld/mctowb/support/mc/LifecycleBean.java 2009-11-09 16:05:02 UTC (rev 96178)
@@ -25,12 +25,15 @@
import javax.annotation.PreDestroy;
import javax.enterprise.inject.Default;
+import org.jboss.kernel.weld.metadata.api.annotations.WeldEnabled;
+
/**
*
* @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
* @version $Revision: 1.1 $
*/
@Default
+ at WeldEnabled
public class LifecycleBean
{
public static int postConstruct;
Added: projects/kernel/trunk/weld-int/src/test/java/org/jboss/test/kernel/weld/mctowb/support/mc/PlainBean.java
===================================================================
--- projects/kernel/trunk/weld-int/src/test/java/org/jboss/test/kernel/weld/mctowb/support/mc/PlainBean.java (rev 0)
+++ projects/kernel/trunk/weld-int/src/test/java/org/jboss/test/kernel/weld/mctowb/support/mc/PlainBean.java 2009-11-09 16:05:02 UTC (rev 96178)
@@ -0,0 +1,32 @@
+/*
+* JBoss, Home of Professional Open Source.
+* Copyright 2006, Red Hat Middleware LLC, and individual contributors
+* as indicated by the @author tags. See the copyright.txt file in the
+* distribution for a full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+package org.jboss.test.kernel.weld.mctowb.support.mc;
+
+/**
+ *
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @version $Revision: 1.1 $
+ */
+public class PlainBean
+{
+
+}
Modified: projects/kernel/trunk/weld-int/src/test/java/org/jboss/test/kernel/weld/mctowb/support/mc/ThingBean.java
===================================================================
--- projects/kernel/trunk/weld-int/src/test/java/org/jboss/test/kernel/weld/mctowb/support/mc/ThingBean.java 2009-11-09 15:29:20 UTC (rev 96177)
+++ projects/kernel/trunk/weld-int/src/test/java/org/jboss/test/kernel/weld/mctowb/support/mc/ThingBean.java 2009-11-09 16:05:02 UTC (rev 96178)
@@ -21,12 +21,15 @@
*/
package org.jboss.test.kernel.weld.mctowb.support.mc;
+import org.jboss.kernel.weld.metadata.api.annotations.WeldEnabled;
+
/**
*
* @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
* @version $Revision: 1.1 $
*/
@Thing
+ at WeldEnabled
public class ThingBean
{
Modified: projects/kernel/trunk/weld-int/src/test/java/org/jboss/test/kernel/weld/mctowb/support/mc/ThingFieldProducer.java
===================================================================
--- projects/kernel/trunk/weld-int/src/test/java/org/jboss/test/kernel/weld/mctowb/support/mc/ThingFieldProducer.java 2009-11-09 15:29:20 UTC (rev 96177)
+++ projects/kernel/trunk/weld-int/src/test/java/org/jboss/test/kernel/weld/mctowb/support/mc/ThingFieldProducer.java 2009-11-09 16:05:02 UTC (rev 96178)
@@ -23,11 +23,14 @@
import javax.enterprise.inject.Produces;
+import org.jboss.kernel.weld.metadata.api.annotations.WeldEnabled;
+
/**
*
* @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
* @version $Revision: 1.1 $
*/
+ at WeldEnabled
public class ThingFieldProducer
{
@Produces @Thing
Modified: projects/kernel/trunk/weld-int/src/test/java/org/jboss/test/kernel/weld/mctowb/support/mc/ThingMethodProducer.java
===================================================================
--- projects/kernel/trunk/weld-int/src/test/java/org/jboss/test/kernel/weld/mctowb/support/mc/ThingMethodProducer.java 2009-11-09 15:29:20 UTC (rev 96177)
+++ projects/kernel/trunk/weld-int/src/test/java/org/jboss/test/kernel/weld/mctowb/support/mc/ThingMethodProducer.java 2009-11-09 16:05:02 UTC (rev 96178)
@@ -23,11 +23,14 @@
import javax.enterprise.inject.Produces;
+import org.jboss.kernel.weld.metadata.api.annotations.WeldEnabled;
+
/**
*
* @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
* @version $Revision: 1.1 $
*/
+ at WeldEnabled
public class ThingMethodProducer
{
ThingBean thing = new ThingBean();
Added: projects/kernel/trunk/weld-int/src/test/java/org/jboss/test/kernel/weld/mctowb/support/mock/MockController.java
===================================================================
--- projects/kernel/trunk/weld-int/src/test/java/org/jboss/test/kernel/weld/mctowb/support/mock/MockController.java (rev 0)
+++ projects/kernel/trunk/weld-int/src/test/java/org/jboss/test/kernel/weld/mctowb/support/mock/MockController.java 2009-11-09 16:05:02 UTC (rev 96178)
@@ -0,0 +1,183 @@
+/*
+* JBoss, Home of Professional Open Source.
+* Copyright 2006, Red Hat Middleware LLC, and individual contributors
+* as indicated by the @author tags. See the copyright.txt file in the
+* distribution for a full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+package org.jboss.test.kernel.weld.mctowb.support.mock;
+
+import java.util.Set;
+
+import org.jboss.beans.metadata.spi.BeanMetaData;
+import org.jboss.dependency.spi.ControllerContext;
+import org.jboss.dependency.spi.ControllerState;
+import org.jboss.dependency.spi.ControllerStateModel;
+import org.jboss.kernel.Kernel;
+import org.jboss.kernel.spi.dependency.KernelController;
+import org.jboss.kernel.spi.dependency.KernelControllerContext;
+import org.jboss.kernel.spi.event.KernelEvent;
+import org.jboss.kernel.spi.event.KernelEventFilter;
+import org.jboss.kernel.spi.event.KernelEventListener;
+import org.jboss.util.JBossObject;
+import org.jboss.util.JBossStringBuilder;
+
+/**
+ *
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @version $Revision: 1.1 $
+ */
+public class MockController extends JBossObject implements KernelController
+{
+
+ public void addAlias(Object alias, Object original) throws Throwable
+ {
+ }
+
+ public void addState(ControllerState state, ControllerState before)
+ {
+ }
+
+ public void change(ControllerContext context, ControllerState state) throws Throwable
+ {
+ }
+
+ public void enableOnDemand(ControllerContext context) throws Throwable
+ {
+ }
+
+ public ControllerContext getContext(Object name, ControllerState state)
+ {
+ return null;
+ }
+
+ public Set<ControllerContext> getContextsByState(ControllerState state)
+ {
+ return null;
+ }
+
+ public ControllerContext getInstalledContext(Object name)
+ {
+ return null;
+ }
+
+ public Set<ControllerContext> getNotInstalled()
+ {
+ return null;
+ }
+
+ public ControllerStateModel getStates()
+ {
+ return null;
+ }
+
+ public void install(ControllerContext context) throws Throwable
+ {
+ }
+
+ public boolean isShutdown()
+ {
+ return false;
+ }
+
+ public void removeAlias(Object alias)
+ {
+ }
+
+ public void shutdown()
+ {
+ }
+
+ public ControllerContext uninstall(Object name)
+ {
+ return null;
+ }
+
+ public String toShortString()
+ {
+ return null;
+ }
+
+ public void toShortString(JBossStringBuilder buffer)
+ {
+ }
+
+ public void addInstantiatedContext(KernelControllerContext context)
+ {
+ }
+
+ public void addSupplies(KernelControllerContext context)
+ {
+ }
+
+ public KernelControllerContext getContextByClass(Class<?> clazz)
+ {
+ return null;
+ }
+
+ public Set<KernelControllerContext> getContexts(Class<?> clazz, ControllerState state)
+ {
+ return null;
+ }
+
+ public Set<KernelControllerContext> getInstantiatedContexts(Class<?> clazz)
+ {
+ return null;
+ }
+
+ public KernelControllerContext install(BeanMetaData metaData) throws Throwable
+ {
+ return null;
+ }
+
+ public KernelControllerContext install(BeanMetaData metaData, Object target) throws Throwable
+ {
+ return null;
+ }
+
+ public void removeInstantiatedContext(KernelControllerContext context)
+ {
+ }
+
+ public void removeSupplies(KernelControllerContext context)
+ {
+ }
+
+ public Kernel getKernel()
+ {
+ return new MockKernel();
+ }
+
+ public void setKernel(Kernel kernel) throws Throwable
+ {
+ }
+
+ public void fireKernelEvent(KernelEvent event)
+ {
+ }
+
+ public void registerListener(KernelEventListener listener, KernelEventFilter filter, Object handback)
+ throws Throwable
+ {
+ }
+
+ public void unregisterListener(KernelEventListener listener, KernelEventFilter filter, Object handback)
+ throws Throwable
+ {
+ }
+
+}
Added: projects/kernel/trunk/weld-int/src/test/java/org/jboss/test/kernel/weld/mctowb/support/mock/MockKernel.java
===================================================================
--- projects/kernel/trunk/weld-int/src/test/java/org/jboss/test/kernel/weld/mctowb/support/mock/MockKernel.java (rev 0)
+++ projects/kernel/trunk/weld-int/src/test/java/org/jboss/test/kernel/weld/mctowb/support/mock/MockKernel.java 2009-11-09 16:05:02 UTC (rev 96178)
@@ -0,0 +1,41 @@
+/*
+* JBoss, Home of Professional Open Source.
+* Copyright 2006, Red Hat Middleware LLC, and individual contributors
+* as indicated by the @author tags. See the copyright.txt file in the
+* distribution for a full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+package org.jboss.test.kernel.weld.mctowb.support.mock;
+
+import org.jboss.kernel.Kernel;
+import org.jboss.kernel.spi.metadata.KernelMetaDataRepository;
+
+/**
+ *
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @version $Revision: 1.1 $
+ */
+public class MockKernel extends Kernel
+{
+
+ @Override
+ public KernelMetaDataRepository getMetaDataRepository()
+ {
+ return new MockKernelMetaDataRepository();
+ }
+
+}
Added: projects/kernel/trunk/weld-int/src/test/java/org/jboss/test/kernel/weld/mctowb/support/mock/MockKernelMetaDataRepository.java
===================================================================
--- projects/kernel/trunk/weld-int/src/test/java/org/jboss/test/kernel/weld/mctowb/support/mock/MockKernelMetaDataRepository.java (rev 0)
+++ projects/kernel/trunk/weld-int/src/test/java/org/jboss/test/kernel/weld/mctowb/support/mock/MockKernelMetaDataRepository.java 2009-11-09 16:05:02 UTC (rev 96178)
@@ -0,0 +1,101 @@
+/*
+* JBoss, Home of Professional Open Source.
+* Copyright 2006, Red Hat Middleware LLC, and individual contributors
+* as indicated by the @author tags. See the copyright.txt file in the
+* distribution for a full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+package org.jboss.test.kernel.weld.mctowb.support.mock;
+
+import java.util.List;
+
+import org.jboss.dependency.spi.ControllerContext;
+import org.jboss.kernel.Kernel;
+import org.jboss.kernel.spi.event.KernelEvent;
+import org.jboss.kernel.spi.event.KernelEventFilter;
+import org.jboss.kernel.spi.event.KernelEventListener;
+import org.jboss.kernel.spi.metadata.KernelMetaDataRepository;
+import org.jboss.metadata.spi.MetaData;
+import org.jboss.metadata.spi.repository.MutableMetaDataRepository;
+import org.jboss.metadata.spi.retrieval.MetaDataRetrieval;
+import org.jboss.metadata.spi.scope.ScopeKey;
+
+/**
+ *
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @version $Revision: 1.1 $
+ */
+public class MockKernelMetaDataRepository implements KernelMetaDataRepository
+{
+
+ public void addMetaData(ControllerContext context)
+ {
+ }
+
+ public MetaDataRetrieval createMetaDataRetrieval(ControllerContext context, List<MetaDataRetrieval> retrievals)
+ {
+ return null;
+ }
+
+ public ScopeKey getFullScope(ControllerContext context)
+ {
+ return null;
+ }
+
+ public MetaData getMetaData(ControllerContext context)
+ {
+ return null;
+ }
+
+ public MutableMetaDataRepository getMetaDataRepository()
+ {
+ return null;
+ }
+
+ public ScopeKey getMutableScope(ControllerContext context)
+ {
+ return null;
+ }
+
+ public void removeMetaData(ControllerContext context)
+ {
+ }
+
+ public Kernel getKernel()
+ {
+ return null;
+ }
+
+ public void setKernel(Kernel kernel) throws Throwable
+ {
+ }
+
+ public void fireKernelEvent(KernelEvent event)
+ {
+ }
+
+ public void registerListener(KernelEventListener listener, KernelEventFilter filter, Object handback)
+ throws Throwable
+ {
+ }
+
+ public void unregisterListener(KernelEventListener listener, KernelEventFilter filter, Object handback)
+ throws Throwable
+ {
+ }
+
+}
Added: projects/kernel/trunk/weld-int/src/test/java/org/jboss/test/kernel/weld/mctowb/support/mock/MockWeldDescribeAction.java
===================================================================
--- projects/kernel/trunk/weld-int/src/test/java/org/jboss/test/kernel/weld/mctowb/support/mock/MockWeldDescribeAction.java (rev 0)
+++ projects/kernel/trunk/weld-int/src/test/java/org/jboss/test/kernel/weld/mctowb/support/mock/MockWeldDescribeAction.java 2009-11-09 16:05:02 UTC (rev 96178)
@@ -0,0 +1,51 @@
+/*
+* JBoss, Home of Professional Open Source.
+* Copyright 2006, Red Hat Middleware LLC, and individual contributors
+* as indicated by the @author tags. See the copyright.txt file in the
+* distribution for a full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+package org.jboss.test.kernel.weld.mctowb.support.mock;
+
+import org.jboss.kernel.weld.plugins.dependency.WeldDescribeAction;
+import org.jboss.kernel.weld.plugins.dependency.WeldKernelControllerContext;
+
+/**
+ *
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @version $Revision: 1.1 $
+ */
+public class MockWeldDescribeAction extends WeldDescribeAction
+{
+ Class<?> clazz;
+
+ public MockWeldDescribeAction(Class<?> clazz)
+ {
+ this.clazz = clazz;
+ }
+
+ @Override
+ public void applyWeldAnnotations(WeldKernelControllerContext context)
+ {
+ super.applyWeldAnnotations(context);
+ }
+
+ protected Class<?> getClazz(WeldKernelControllerContext context)
+ {
+ return clazz;
+ }
+}
Added: projects/kernel/trunk/weld-int/src/test/java/org/jboss/test/kernel/weld/mctowb/support/mock/MockWeldKernelControllerContext.java
===================================================================
--- projects/kernel/trunk/weld-int/src/test/java/org/jboss/test/kernel/weld/mctowb/support/mock/MockWeldKernelControllerContext.java (rev 0)
+++ projects/kernel/trunk/weld-int/src/test/java/org/jboss/test/kernel/weld/mctowb/support/mock/MockWeldKernelControllerContext.java 2009-11-09 16:05:02 UTC (rev 96178)
@@ -0,0 +1,49 @@
+/*
+* JBoss, Home of Professional Open Source.
+* Copyright 2006, Red Hat Middleware LLC, and individual contributors
+* as indicated by the @author tags. See the copyright.txt file in the
+* distribution for a full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+package org.jboss.test.kernel.weld.mctowb.support.mock;
+
+import javax.enterprise.inject.spi.BeanManager;
+
+import org.jboss.beans.info.spi.BeanInfo;
+import org.jboss.beans.metadata.spi.BeanMetaData;
+import org.jboss.dependency.spi.Controller;
+import org.jboss.kernel.weld.plugins.dependency.WeldKernelControllerContext;
+
+/**
+ *
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @version $Revision: 1.1 $
+ */
+public class MockWeldKernelControllerContext extends WeldKernelControllerContext
+{
+ public MockWeldKernelControllerContext(BeanInfo info, BeanMetaData metaData, Object target, BeanManager manager)
+ {
+ super(info, metaData, target, manager);
+ }
+
+ @Override
+ public Controller getController()
+ {
+ return new MockController();
+ }
+
+}
Modified: projects/kernel/trunk/weld-int/src/test/java/org/jboss/test/kernel/weld/mctowb/support/validateobserver/TestObserver.java
===================================================================
--- projects/kernel/trunk/weld-int/src/test/java/org/jboss/test/kernel/weld/mctowb/support/validateobserver/TestObserver.java 2009-11-09 15:29:20 UTC (rev 96177)
+++ projects/kernel/trunk/weld-int/src/test/java/org/jboss/test/kernel/weld/mctowb/support/validateobserver/TestObserver.java 2009-11-09 16:05:02 UTC (rev 96178)
@@ -22,6 +22,7 @@
package org.jboss.test.kernel.weld.mctowb.support.validateobserver;
import javax.enterprise.event.Observes;
+import javax.enterprise.inject.spi.BeanManager;
import javax.enterprise.inject.spi.BeforeBeanDiscovery;
import javax.enterprise.inject.spi.Extension;
import javax.enterprise.inject.spi.ProcessInjectionTarget;
@@ -38,9 +39,9 @@
public static boolean invoked;
@Override
- public void addType(@Observes BeforeBeanDiscovery event)
+ public void addType(@Observes BeforeBeanDiscovery event, BeanManager beanManager)
{
- super.addType(event);
+ super.addType(event, beanManager);
invoked = true;
}
Modified: projects/kernel/trunk/weld-int/src/test/java/org/jboss/test/kernel/weld/mctowb/test/InjectMcBeansInWeldTestCase.java
===================================================================
--- projects/kernel/trunk/weld-int/src/test/java/org/jboss/test/kernel/weld/mctowb/test/InjectMcBeansInWeldTestCase.java 2009-11-09 15:29:20 UTC (rev 96177)
+++ projects/kernel/trunk/weld-int/src/test/java/org/jboss/test/kernel/weld/mctowb/test/InjectMcBeansInWeldTestCase.java 2009-11-09 16:05:02 UTC (rev 96178)
@@ -29,6 +29,7 @@
import junit.framework.TestSuite;
import org.jboss.dependency.spi.ControllerState;
+import org.jboss.kernel.spi.dependency.KernelControllerContext;
import org.jboss.kernel.weld.plugins.dependency.WeldKernelControllerContext;
import org.jboss.kernel.weld.plugins.weld.AnnotatedTypeWrapper;
import org.jboss.kernel.weld.plugins.weld.McBeanRegistryObserver;
@@ -36,9 +37,12 @@
import org.jboss.test.kernel.weld.AbstractWeldMcTest;
import org.jboss.test.kernel.weld.mctowb.support.mc.BeanWithSimpleWeldDependency;
import org.jboss.test.kernel.weld.mctowb.support.mc.LifecycleBean;
+import org.jboss.test.kernel.weld.mctowb.support.mc.PlainBean;
import org.jboss.test.kernel.weld.mctowb.support.mc.ThingBean;
import org.jboss.test.kernel.weld.mctowb.support.mc.ThingFieldProducer;
import org.jboss.test.kernel.weld.mctowb.support.mc.ThingMethodProducer;
+import org.jboss.test.kernel.weld.mctowb.support.mock.MockWeldDescribeAction;
+import org.jboss.test.kernel.weld.mctowb.support.mock.MockWeldKernelControllerContext;
import org.jboss.test.kernel.weld.mctowb.support.validateobserver.TestObserver;
import org.jboss.test.kernel.weld.mctowb.support.wb.DependsOnBeanWithSimpleWeldDependency;
import org.jboss.test.kernel.weld.mctowb.support.wb.LifecycleBeanConsumerA;
@@ -100,28 +104,28 @@
public void testWeldFromMcRegistry() throws Exception
{
initializeWeld();
- WeldKernelControllerContext context = deploy(createBeanMetaData("thing", ThingBean.class));
+ WeldKernelControllerContext context = deployContextAndRegister(createBeanMetaData("thing", ThingBean.class));
try
{
- Collection<AnnotatedTypeWrapper> types = WeldFromMcRegistry.getTypes();
+ Collection<AnnotatedTypeWrapper> types = WeldFromMcRegistry.getInstance().getTypes();
assertSize(1, types);
AnnotatedType<ThingBean> type = getCurrentManager().createAnnotatedType(ThingBean.class);
- WeldKernelControllerContext found = WeldFromMcRegistry.getContext(type);
+ KernelControllerContext found = WeldFromMcRegistry.getInstance().getContext(type);
assertNotNull(found);
assertSame(context, found);
}
finally
{
undeployWeld();
- undeploy(context);
+ undeployAndUnregister(context);
}
}
public void testInjectMcBeanIntoField() throws Exception
{
initializeWeld(this.getClass().getPackage(), McBeanRegistryObserver.class, ThingField.class);
- WeldKernelControllerContext context = deploy(createBeanMetaData("thing", ThingBean.class));
+ WeldKernelControllerContext context = deployContextAndRegister(createBeanMetaData("thing", ThingBean.class));
try
{
ThingBean thing = assertBean("thing", ThingBean.class);
@@ -133,7 +137,7 @@
finally
{
undeployWeld();
- undeploy(context);
+ undeployAndUnregister(context);
}
}
@@ -141,7 +145,7 @@
public void testInjectMcBeanIntoConstructor() throws Exception
{
initializeWeld(this.getClass().getPackage(), McBeanRegistryObserver.class, ThingConstructor.class);
- WeldKernelControllerContext context = deploy(createBeanMetaData("thing", ThingBean.class));
+ WeldKernelControllerContext context = deployContextAndRegister(createBeanMetaData("thing", ThingBean.class));
try
{
ThingBean thing = assertBean("thing", ThingBean.class);
@@ -153,14 +157,14 @@
finally
{
undeployWeld();
- undeploy(context);
+ undeployAndUnregister(context);
}
}
public void testInjectMcMethodProducedBeanIntoField() throws Exception
{
initializeWeld(this.getClass().getPackage(), McBeanRegistryObserver.class, ThingField.class);
- WeldKernelControllerContext context = deploy(createBeanMetaData("thing", ThingMethodProducer.class));
+ WeldKernelControllerContext context = deployContextAndRegister(createBeanMetaData("thing", ThingMethodProducer.class));
try
{
ThingMethodProducer thing = assertBean("thing", ThingMethodProducer.class);
@@ -172,14 +176,14 @@
finally
{
undeployWeld();
- undeploy(context);
+ undeployAndUnregister(context);
}
}
public void testInjectMcMethodProducedBeanIntoConstructor() throws Exception
{
initializeWeld(this.getClass().getPackage(), McBeanRegistryObserver.class, ThingConstructor.class);
- WeldKernelControllerContext context = deploy(createBeanMetaData("thing", ThingMethodProducer.class));
+ WeldKernelControllerContext context = deployContextAndRegister(createBeanMetaData("thing", ThingMethodProducer.class));
try
{
ThingMethodProducer thing = assertBean("thing", ThingMethodProducer.class);
@@ -191,14 +195,14 @@
finally
{
undeployWeld();
- undeploy(context);
+ undeployAndUnregister(context);
}
}
public void testInjectMcFieldProducedBeanIntoField() throws Exception
{
initializeWeld(this.getClass().getPackage(), McBeanRegistryObserver.class, ThingField.class);
- WeldKernelControllerContext context = deploy(createBeanMetaData("thing", ThingFieldProducer.class));
+ WeldKernelControllerContext context = deployContextAndRegister(createBeanMetaData("thing", ThingFieldProducer.class));
try
{
ThingFieldProducer thing = assertBean("thing", ThingFieldProducer.class);
@@ -210,14 +214,14 @@
finally
{
undeployWeld();
- undeploy(context);
+ undeployAndUnregister(context);
}
}
public void testInjectMcFieldProducedBeanIntoConstructor() throws Exception
{
initializeWeld(this.getClass().getPackage(), McBeanRegistryObserver.class, ThingConstructor.class);
- WeldKernelControllerContext context = deploy(createBeanMetaData("thing", ThingFieldProducer.class));
+ WeldKernelControllerContext context = deployContextAndRegister(createBeanMetaData("thing", ThingFieldProducer.class));
try
{
ThingFieldProducer thing = assertBean("thing", ThingFieldProducer.class);
@@ -229,7 +233,7 @@
finally
{
undeployWeld();
- undeploy(context);
+ undeployAndUnregister(context);
}
}
@@ -238,7 +242,7 @@
initializeWeld(this.getClass().getPackage(), McBeanRegistryObserver.class, LifecycleBeanConsumerA.class, LifecycleBeanConsumerB.class);
LifecycleBean.postConstruct = 0;
LifecycleBean.preDestroy = 0;
- WeldKernelControllerContext context = deploy(createBeanMetaData("bean", LifecycleBean.class));
+ WeldKernelControllerContext context = deployContextAndRegister(createBeanMetaData("bean", LifecycleBean.class));
try
{
LifecycleBean bean = assertBean("bean", LifecycleBean.class);
@@ -260,22 +264,24 @@
undeployWeld();
assertEquals(0, LifecycleBean.preDestroy);
assertEquals(1, LifecycleBean.postConstruct);
- undeploy(context);
+ undeployAndUnregister(context);
assertEquals(1, LifecycleBean.preDestroy);
assertEquals(1, LifecycleBean.postConstruct);
}
}
- public void testInjectionOnlyHappensOnceForExistingInstance() throws Exception
+ public void testInjectionOnlyHappensOnceForExistingInstance() throws Throwable
{
initializeWeld(this.getClass().getPackage(), McBeanRegistryObserver.class, DependsOnBeanWithSimpleWeldDependency.class, Simple.class);
//Add a context manually so that it seems that it is installed as far as weld is concerned
BeanWithSimpleWeldDependency bean = new BeanWithSimpleWeldDependency();
Simple simple = bean.getSimple();
- WeldKernelControllerContext context = new WeldKernelControllerContext(null, createBeanMetaData("NotReallyDeployed :-)", BeanWithSimpleWeldDependency.class), bean, getCurrentManager());
+ MockWeldKernelControllerContext context = new MockWeldKernelControllerContext(null, createBeanMetaData("NotReallyDeployed :-)", BeanWithSimpleWeldDependency.class), bean, getCurrentManager());
+ new MockWeldDescribeAction(BeanWithSimpleWeldDependency.class).applyWeldAnnotations(context);
+
context.setState(ControllerState.INSTALLED);
- context.setAnnotatedType(getCurrentManager().createAnnotatedType(BeanWithSimpleWeldDependency.class));
- WeldFromMcRegistry.registerBean(context);
+
+ WeldFromMcRegistry.getInstance().registerBean(context);
try
{
deployInitializedWeld();
@@ -289,8 +295,44 @@
finally
{
undeployWeld();
- WeldFromMcRegistry.unregisterBean(context);
+ WeldFromMcRegistry.getInstance().unregisterBean(context);
}
}
+ public void testMcEnabledViaMetaData() throws Exception
+ {
+ initializeWeld(this.getClass().getPackage(), McBeanRegistryObserver.class);
+ WeldKernelControllerContext context = deployContextAndRegister(createWeldEnabledBeanMetaData("bean", PlainBean.class));
+ try
+ {
+ PlainBean plain = assertBean("bean", PlainBean.class);
+ deployInitializedWeld();
+
+ PlainBean weldBean = getWeldBean(PlainBean.class);
+ assertEquals(plain, weldBean);
+ }
+ finally
+ {
+ undeployWeld();
+ undeployAndUnregister(context);
+ }
+ }
+
+
+ public void testNotMcEnabled() throws Exception
+ {
+ initializeWeld(this.getClass().getPackage(), McBeanRegistryObserver.class);
+ WeldKernelControllerContext context = deployContextAndRegister(createBeanMetaData("bean", PlainBean.class));
+ try
+ {
+ assertBean("bean", PlainBean.class);
+ deployInitializedWeld();
+ assertEmpty(getCurrentManager().getBeans(PlainBean.class));
+ }
+ finally
+ {
+ undeployWeld();
+ undeployAndUnregister(context);
+ }
+ }
}
Modified: projects/kernel/trunk/weld-int/src/test/java/org/jboss/test/kernel/weld/wbtomc/test/InjectWeldInMcBeansTestCase.java
===================================================================
--- projects/kernel/trunk/weld-int/src/test/java/org/jboss/test/kernel/weld/wbtomc/test/InjectWeldInMcBeansTestCase.java 2009-11-09 15:29:20 UTC (rev 96177)
+++ projects/kernel/trunk/weld-int/src/test/java/org/jboss/test/kernel/weld/wbtomc/test/InjectWeldInMcBeansTestCase.java 2009-11-09 16:05:02 UTC (rev 96178)
@@ -164,7 +164,7 @@
public void testInjectFromWeldToMcInitializer() throws Exception
{
- WeldKernelControllerContext context = deploy(createBeanMetaData("McBean", McBeanInitializerMethod.class));
+ WeldKernelControllerContext context = deployContextAndRegister(createBeanMetaData("McBean", McBeanInitializerMethod.class));
McBeanInitializerMethod bean = null;
try
{
@@ -174,14 +174,14 @@
}
finally
{
- undeploy(context);
+ undeployAndUnregister(context);
}
assertNull(bean.getBean());
}
public void testInjectFromWeldToMcField() throws Exception
{
- WeldKernelControllerContext context = deploy(createBeanMetaData("McBean", McBean.class));
+ WeldKernelControllerContext context = deployContextAndRegister(createBeanMetaData("McBean", McBean.class));
McBean bean = null;
try
{
@@ -192,7 +192,7 @@
}
finally
{
- undeploy(context);
+ undeployAndUnregister(context);
}
assertNull(bean.getBean());
}
@@ -216,7 +216,7 @@
public void testInjectFromWeldToMcMcConstructorNoParams() throws Exception
{
- WeldKernelControllerContext context = deploy(createBeanMetaData("McBean", McBeanMcConstructor.class));
+ WeldKernelControllerContext context = deployContextAndRegister(createBeanMetaData("McBean", McBeanMcConstructor.class));
McBeanMcConstructor bean = null;
try
{
@@ -226,18 +226,18 @@
}
finally
{
- undeploy(context);
+ undeployAndUnregister(context);
}
assertNull(bean.getBean());
}
public void testInjectFromWeldToMcMcConstructorWithParams() throws Exception
{
- WeldKernelControllerContext contextSimple = deploy(createBeanMetaData("Simple", Simple.class));
+ WeldKernelControllerContext contextSimple = deployContextAndRegister(createBeanMetaData("Simple", Simple.class));
BeanMetaDataBuilder builder = BeanMetaDataBuilder.createBuilder("McBean", McBeanMcConstructor.class.getName());
builder.addConstructorParameter(Simple.class.getName(), builder.createInject("Simple"));
- WeldKernelControllerContext context = deploy(builder.getBeanMetaData());
+ WeldKernelControllerContext context = deployContextAndRegister(builder.getBeanMetaData());
try
@@ -251,14 +251,14 @@
}
finally
{
- undeploy(context);
- undeploy(contextSimple);
+ undeployAndUnregister(context);
+ undeployAndUnregister(contextSimple);
}
}
public void testConstructorMissingDependencies() throws Exception
{
- WeldKernelControllerContext context = deploy(createBeanMetaData("McBean", MissingDependenciesConstructorBean.class));
+ WeldKernelControllerContext context = deployContextAndRegister(createBeanMetaData("McBean", MissingDependenciesConstructorBean.class));
try
{
@@ -268,13 +268,13 @@
}
finally
{
- undeploy(context);
+ undeployAndUnregister(context);
}
}
public void testFieldMissingDependencies() throws Exception
{
- WeldKernelControllerContext context = deploy(createBeanMetaData("McBean", MissingDependenciesFieldBean.class));
+ WeldKernelControllerContext context = deployContextAndRegister(createBeanMetaData("McBean", MissingDependenciesFieldBean.class));
try
{
@@ -284,13 +284,13 @@
}
finally
{
- undeploy(context);
+ undeployAndUnregister(context);
}
}
public void testDependenciesNotDuplicated() throws Throwable
{
- WeldKernelControllerContext context = deploy(createBeanMetaData("McBean", McBean.class));
+ WeldKernelControllerContext context = deployContextAndRegister(createBeanMetaData("McBean", McBean.class));
try
{
assertNotNull(context.getBeanMetaData().getDepends());
@@ -315,13 +315,13 @@
}
finally
{
- undeploy(context);
+ undeployAndUnregister(context);
}
}
public void testPostConstructAndPreDestroy() throws Exception
{
- WeldKernelControllerContext context = deploy(createBeanMetaData("McBean", McBeanWithPostConstructAndPreDestroy.class));
+ WeldKernelControllerContext context = deployContextAndRegister(createBeanMetaData("McBean", McBeanWithPostConstructAndPreDestroy.class));
McBeanWithPostConstructAndPreDestroy bean = null;
try
{
@@ -332,7 +332,7 @@
}
finally
{
- undeploy(context);
+ undeployAndUnregister(context);
}
assertNull(bean.getBean());
assertTrue(bean.isPreDestroyCalled());
@@ -360,7 +360,7 @@
property.setAnnotations(propertyAnns);
metaData.addProperty(property);
- WeldKernelControllerContext context = deploy(metaData);
+ WeldKernelControllerContext context = deployContextAndRegister(metaData);
McBeanAnnotationsFromMetaData bean = null;
try
{
@@ -371,7 +371,7 @@
}
finally
{
- undeploy(context);
+ undeployAndUnregister(context);
}
}
Modified: projects/kernel/trunk/weld-int/src/test/java/org/jboss/test/kernel/weld/weldschema/test/WeldElementTestCase.java
===================================================================
--- projects/kernel/trunk/weld-int/src/test/java/org/jboss/test/kernel/weld/weldschema/test/WeldElementTestCase.java 2009-11-09 15:29:20 UTC (rev 96177)
+++ projects/kernel/trunk/weld-int/src/test/java/org/jboss/test/kernel/weld/weldschema/test/WeldElementTestCase.java 2009-11-09 16:05:02 UTC (rev 96178)
@@ -22,7 +22,6 @@
package org.jboss.test.kernel.weld.weldschema.test;
import java.net.URL;
-import java.util.List;
import java.util.Set;
import junit.framework.Test;
More information about the jboss-cvs-commits
mailing list