[jboss-cvs] JBossAS SVN: r64447 - in projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel: plugins/dependency and 2 other directories.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Fri Aug 3 07:16:54 EDT 2007
Author: alesj
Date: 2007-08-03 07:16:54 -0400 (Fri, 03 Aug 2007)
New Revision: 64447
Modified:
projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/annotations/AbstractAdaptersAnnotationPlugin.java
projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/annotations/AbstractAnnotationPlugin.java
projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/annotations/AbstractParameterAnnotationPlugin.java
projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/annotations/AliasesAnnotationPlugin.java
projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/annotations/AnnotationPlugin.java
projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/annotations/BasicBeanAnnotationAdapter.java
projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/annotations/BeanAnnotationAdapter.java
projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/annotations/CallbackAnnotationPlugin.java
projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/annotations/ClassFactoryAnnotationPlugin.java
projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/annotations/ConstructorParameterAnnotationPlugin.java
projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/annotations/ConstructorValueAnnotationPlugin.java
projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/annotations/DemandsAnnotationPlugin.java
projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/annotations/DependsAnnotationPlugin.java
projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/annotations/ExternalInstallationAnnotationPlugin.java
projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/annotations/FactoryMethodAnnotationPlugin.java
projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/annotations/InstallationParameterAnnotationPlugin.java
projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/annotations/LifecycleParameterAnnotationPlugin.java
projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/annotations/PropertyAnnotationPlugin.java
projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/annotations/PropertyAware.java
projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/annotations/SupplysAnnotationPlugin.java
projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/dependency/AbstractKernelControllerContext.java
projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/dependency/DescribeAction.java
projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/spi/dependency/KernelControllerContext.java
projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/spi/dependency/helpers/UnmodifiableKernelControllerContext.java
Log:
Added applyMetaData() to KernelControllerContext.
Direct introduction of MetaDataVisitor into AnnotationPlugin.
Reusing existing AbstractMetaDataVisitor from AbstractKernelControllerContext + flag on already applied annotations.
Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/annotations/AbstractAdaptersAnnotationPlugin.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/annotations/AbstractAdaptersAnnotationPlugin.java 2007-08-03 10:03:17 UTC (rev 64446)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/annotations/AbstractAdaptersAnnotationPlugin.java 2007-08-03 11:16:54 UTC (rev 64447)
@@ -45,5 +45,4 @@
throw new IllegalArgumentException("Annotation adapters are empty!");
this.adapters.addAll(Arrays.asList(adapters));
}
-
}
Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/annotations/AbstractAnnotationPlugin.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/annotations/AbstractAnnotationPlugin.java 2007-08-03 10:03:17 UTC (rev 64446)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/annotations/AbstractAnnotationPlugin.java 2007-08-03 11:16:54 UTC (rev 64447)
@@ -27,17 +27,12 @@
import java.util.Arrays;
import java.util.Collections;
import java.util.HashSet;
-import java.util.Iterator;
import java.util.List;
import java.util.Set;
-import java.util.Stack;
import org.jboss.beans.metadata.spi.BeanMetaData;
import org.jboss.beans.metadata.spi.MetaDataVisitor;
import org.jboss.beans.metadata.spi.MetaDataVisitorNode;
-import org.jboss.dependency.spi.CallbackItem;
-import org.jboss.dependency.spi.ControllerState;
-import org.jboss.dependency.spi.DependencyItem;
import org.jboss.kernel.spi.dependency.KernelControllerContext;
import org.jboss.metadata.spi.retrieval.AnnotationItem;
import org.jboss.metadata.spi.retrieval.MetaDataRetrieval;
@@ -102,156 +97,35 @@
return false;
}
- protected void internalApplyAnnotation(T info, MetaDataRetrieval retrieval, C annotation, KernelControllerContext context) throws Throwable
+ protected List<? extends MetaDataVisitorNode> internalApplyAnnotation(T info, MetaDataRetrieval retrieval, C annotation, KernelControllerContext context) throws Throwable
{
- internalApplyAnnotation(info, annotation, context);
+ return internalApplyAnnotation(info, annotation, context);
}
- protected void internalApplyAnnotation(T info, C annotation, KernelControllerContext context) throws Throwable
+ protected List<? extends MetaDataVisitorNode> internalApplyAnnotation(T info, C annotation, KernelControllerContext context) throws Throwable
{
- internalApplyAnnotation(info, annotation, context.getBeanMetaData());
+ return internalApplyAnnotation(info, annotation, context.getBeanMetaData());
}
- protected void internalApplyAnnotation(T info, C annotation, BeanMetaData beanMetaData) throws Throwable
+ protected List<? extends MetaDataVisitorNode> internalApplyAnnotation(T info, C annotation, BeanMetaData beanMetaData) throws Throwable
{
+ return Collections.emptyList();
}
- public final void applyAnnotation(T info, MetaDataRetrieval retrieval, KernelControllerContext context) throws Throwable
+ public final void applyAnnotation(T info, MetaDataRetrieval retrieval, MetaDataVisitor visitor) throws Throwable
{
- // todo - match multiple annotations?
AnnotationItem<C> item = retrieval.retrieveAnnotation(getAnnotation());
- if (item == null || isMetaDataAlreadyPresent(info, item.getAnnotation(), context))
+ if (item == null || isMetaDataAlreadyPresent(info, item.getAnnotation(), visitor.getControllerContext()))
return;
- internalApplyAnnotation(info, retrieval, item.getAnnotation(), context);
- }
-
- protected void executeVisit(KernelControllerContext context, MetaDataVisitorNode node)
- {
- MetaDataVisitor visitor = getMetaDataVisitor(context);
- node.initialVisit(visitor);
- node.describeVisit(visitor);
- }
-
- protected MetaDataVisitor getMetaDataVisitor(KernelControllerContext context)
- {
- return new PluginMetaDataVisitor(context);
- }
-
- protected class PluginMetaDataVisitor implements MetaDataVisitor
- {
- private ControllerState contextState = ControllerState.INSTANTIATED;
- private KernelControllerContext context;
- private Stack<MetaDataVisitorNode> visitorNodeStack;
-
- public PluginMetaDataVisitor(KernelControllerContext context)
+ List<? extends MetaDataVisitorNode> nodes = internalApplyAnnotation(info, retrieval, item.getAnnotation(), visitor.getControllerContext());
+ if (nodes != null && nodes.isEmpty() == false)
{
- this.context = context;
- this.visitorNodeStack = new Stack<MetaDataVisitorNode>();
- // add bean meta data
- this.visitorNodeStack.add(context.getBeanMetaData());
- }
-
- public KernelControllerContext getControllerContext()
- {
- return context;
- }
-
- public ControllerState getContextState()
- {
- return contextState;
- }
-
- public void setContextState(ControllerState contextState)
- {
- this.contextState = contextState;
- }
-
- public void addDependency(DependencyItem dependency)
- {
- context.getDependencyInfo().addIDependOn(dependency);
- }
-
- public void addInstallCallback(CallbackItem callback)
- {
- context.getDependencyInfo().addInstallItem(callback);
- }
-
- public void addUninstallCallback(CallbackItem callback)
- {
- context.getDependencyInfo().addUninstallItem(callback);
- }
-
- public void initialVisit(MetaDataVisitorNode node)
- {
- visitorNodeStack.push(node);
- try
+ for(MetaDataVisitorNode node : nodes)
{
- boolean trace = log.isTraceEnabled();
- if (trace)
- log.trace("Initial visit node " + node);
-
- // Visit the children of this node
- Iterator children = node.getChildren();
- if (children != null)
- {
- ControllerState restoreState = contextState;
- while (children.hasNext())
- {
- MetaDataVisitorNode child = (MetaDataVisitorNode) children.next();
- try
- {
- child.initialVisit(this);
- }
- finally
- {
- contextState = restoreState;
- }
- }
- }
+ node.initialVisit(visitor);
+ node.describeVisit(visitor);
}
- finally
- {
- visitorNodeStack.pop();
- }
}
-
- public void describeVisit(MetaDataVisitorNode node)
- {
- visitorNodeStack.push(node);
- try
- {
- boolean trace = log.isTraceEnabled();
- if (trace)
- log.trace("Describe visit node " + node);
-
- // Visit the children of this node
- Iterator children = node.getChildren();
- if (children != null)
- {
- ControllerState restoreState = contextState;
- while (children.hasNext())
- {
- MetaDataVisitorNode child = (MetaDataVisitorNode) children.next();
- try
- {
- child.describeVisit(this);
- }
- finally
- {
- contextState = restoreState;
- }
- }
- }
- }
- finally
- {
- visitorNodeStack.pop();
- }
- }
-
- public Stack<MetaDataVisitorNode> visitorNodeStack()
- {
- return visitorNodeStack;
- }
}
+
}
\ No newline at end of file
Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/annotations/AbstractParameterAnnotationPlugin.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/annotations/AbstractParameterAnnotationPlugin.java 2007-08-03 10:03:17 UTC (rev 64446)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/annotations/AbstractParameterAnnotationPlugin.java 2007-08-03 11:16:54 UTC (rev 64447)
@@ -24,6 +24,7 @@
import java.lang.annotation.Annotation;
import java.lang.annotation.ElementType;
import java.util.ArrayList;
+import java.util.Collections;
import java.util.List;
import org.jboss.beans.metadata.plugins.AbstractParameterMetaData;
@@ -64,12 +65,12 @@
protected abstract ParameterInfo[] getParameters(T info);
- protected void handleParameterlessInfo(T info, C annotation, KernelControllerContext context)
+ protected List<? extends MetaDataVisitorNode> handleParameterlessInfo(T info, C annotation, KernelControllerContext context)
{
- handleParameterlessInfo(info, annotation, context.getBeanMetaData());
+ return handleParameterlessInfo(info, annotation, context.getBeanMetaData());
}
- protected abstract void handleParameterlessInfo(T info, C annotation, BeanMetaData beanMetaData);
+ protected abstract List<? extends MetaDataVisitorNode> handleParameterlessInfo(T info, C annotation, BeanMetaData beanMetaData);
protected P createParametrizedMetaData(T info, C annotation, KernelControllerContext context)
{
@@ -99,13 +100,12 @@
protected abstract void setParameterizedMetaData(P parameterizedMetaData, BeanMetaData beanMetaData);
@SuppressWarnings("unchecked")
- protected void internalApplyAnnotation(T info, MetaDataRetrieval retrieval, C annotation, KernelControllerContext context) throws Throwable
+ protected List<? extends MetaDataVisitorNode> internalApplyAnnotation(T info, MetaDataRetrieval retrieval, C annotation, KernelControllerContext context) throws Throwable
{
ParameterInfo[] parameters = getParameters(info);
if (parameters == null || parameters.length == 0)
{
- handleParameterlessInfo(info, annotation, context);
- return;
+ return handleParameterlessInfo(info, annotation, context);
}
TypeInfo[] typeInfos = new TypeInfo[parameters.length];
@@ -149,7 +149,7 @@
parameterizedMetaData.setParameters(pmds);
if (parameterizedMetaData instanceof MetaDataVisitorNode == false)
throw new IllegalArgumentException("ParameterizedMetaData not MetaDataVisitor: " + parameterizedMetaData);
- executeVisit(context, (MetaDataVisitorNode)parameterizedMetaData);
+ return Collections.singletonList((MetaDataVisitorNode)parameterizedMetaData);
}
}
Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/annotations/AliasesAnnotationPlugin.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/annotations/AliasesAnnotationPlugin.java 2007-08-03 10:03:17 UTC (rev 64446)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/annotations/AliasesAnnotationPlugin.java 2007-08-03 11:16:54 UTC (rev 64447)
@@ -22,9 +22,11 @@
package org.jboss.kernel.plugins.annotations;
import java.util.Set;
+import java.util.List;
import org.jboss.beans.metadata.plugins.annotations.Aliases;
import org.jboss.beans.metadata.spi.BeanMetaData;
+import org.jboss.beans.metadata.spi.MetaDataVisitorNode;
import org.jboss.reflect.spi.ClassInfo;
import org.jboss.kernel.spi.dependency.KernelControllerContext;
import org.jboss.dependency.spi.Controller;
@@ -40,7 +42,7 @@
super(Aliases.class);
}
- protected void internalApplyAnnotation(ClassInfo info, Aliases annotation, KernelControllerContext context) throws Throwable
+ protected List<? extends MetaDataVisitorNode> internalApplyAnnotation(ClassInfo info, Aliases annotation, KernelControllerContext context) throws Throwable
{
BeanMetaData beanMetaData = context.getBeanMetaData();
Set<Object> aliases = beanMetaData.getAliases();
@@ -57,5 +59,7 @@
controller.addAlias(alias, beanMetaData.getName());
}
}
+ // no metadata added
+ return null;
}
}
Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/annotations/AnnotationPlugin.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/annotations/AnnotationPlugin.java 2007-08-03 10:03:17 UTC (rev 64446)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/annotations/AnnotationPlugin.java 2007-08-03 11:16:54 UTC (rev 64447)
@@ -25,7 +25,7 @@
import java.lang.annotation.ElementType;
import java.util.Set;
-import org.jboss.kernel.spi.dependency.KernelControllerContext;
+import org.jboss.beans.metadata.spi.MetaDataVisitor;
import org.jboss.metadata.spi.retrieval.MetaDataRetrieval;
import org.jboss.reflect.spi.AnnotatedInfo;
@@ -40,5 +40,5 @@
Set<ElementType> getSupportedTypes();
- void applyAnnotation(T info, MetaDataRetrieval retrieval, KernelControllerContext context) throws Throwable;
+ void applyAnnotation(T info, MetaDataRetrieval retrieval, MetaDataVisitor visitor) throws Throwable;
}
Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/annotations/BasicBeanAnnotationAdapter.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/annotations/BasicBeanAnnotationAdapter.java 2007-08-03 10:03:17 UTC (rev 64446)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/annotations/BasicBeanAnnotationAdapter.java 2007-08-03 11:16:54 UTC (rev 64447)
@@ -30,6 +30,7 @@
import org.jboss.beans.info.spi.BeanInfo;
import org.jboss.beans.info.spi.PropertyInfo;
+import org.jboss.beans.metadata.spi.MetaDataVisitor;
import org.jboss.kernel.Kernel;
import org.jboss.kernel.plugins.config.Configurator;
import org.jboss.kernel.spi.dependency.KernelControllerContext;
@@ -153,8 +154,9 @@
}
}
- public void applyAnnotations(KernelControllerContext context) throws Throwable
+ public void applyAnnotations(MetaDataVisitor visitor) throws Throwable
{
+ KernelControllerContext context = visitor.getControllerContext();
Kernel kernel = context.getKernel();
KernelMetaDataRepository repository = kernel.getMetaDataRepository();
MetaDataRetrieval retrieval = repository.getMetaDataRetrieval(context);
@@ -165,7 +167,7 @@
// class
ClassInfo classInfo = info.getClassInfo();
for(AnnotationPlugin plugin : classAnnotationPlugins)
- plugin.applyAnnotation(classInfo, retrieval, context);
+ plugin.applyAnnotation(classInfo, retrieval, visitor);
// constructors
Set<ConstructorInfo> constructors = info.getConstructors();
@@ -178,7 +180,7 @@
if (cmdr != null)
{
for(AnnotationPlugin plugin : constructorAnnotationPlugins)
- plugin.applyAnnotation(ci, cmdr, context);
+ plugin.applyAnnotation(ci, cmdr, visitor);
}
}
}
@@ -197,7 +199,7 @@
if (cmdr != null)
{
for(AnnotationPlugin plugin : propertyAnnotationPlugins)
- plugin.applyAnnotation(pi, cmdr, context);
+ plugin.applyAnnotation(pi, cmdr, visitor);
}
}
}
@@ -214,7 +216,7 @@
if (cmdr != null)
{
for(AnnotationPlugin plugin : methodAnnotationPlugins)
- plugin.applyAnnotation(mi, cmdr, context);
+ plugin.applyAnnotation(mi, cmdr, visitor);
}
}
}
@@ -232,7 +234,7 @@
if (cmdr != null)
{
for(AnnotationPlugin plugin : methodAnnotationPlugins)
- plugin.applyAnnotation(smi, cmdr, context);
+ plugin.applyAnnotation(smi, cmdr, visitor);
}
}
}
@@ -249,7 +251,7 @@
if (cmdr != null)
{
for(AnnotationPlugin plugin : fieldAnnotationPlugins)
- plugin.applyAnnotation(fi, cmdr, context);
+ plugin.applyAnnotation(fi, cmdr, visitor);
}
}
}
Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/annotations/BeanAnnotationAdapter.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/annotations/BeanAnnotationAdapter.java 2007-08-03 10:03:17 UTC (rev 64446)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/annotations/BeanAnnotationAdapter.java 2007-08-03 11:16:54 UTC (rev 64447)
@@ -21,7 +21,7 @@
*/
package org.jboss.kernel.plugins.annotations;
-import org.jboss.kernel.spi.dependency.KernelControllerContext;
+import org.jboss.beans.metadata.spi.MetaDataVisitor;
/**
* @author <a href="mailto:ales.justin at jboss.com">Ales Justin</a>
@@ -31,8 +31,8 @@
/**
* Apply the annotations.
*
- * @param context the context
+ * @param visitor the visitor
* @throws Throwable for any error
*/
- void applyAnnotations(KernelControllerContext context) throws Throwable;
+ void applyAnnotations(MetaDataVisitor visitor) throws Throwable;
}
Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/annotations/CallbackAnnotationPlugin.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/annotations/CallbackAnnotationPlugin.java 2007-08-03 10:03:17 UTC (rev 64446)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/annotations/CallbackAnnotationPlugin.java 2007-08-03 11:16:54 UTC (rev 64447)
@@ -23,12 +23,14 @@
import java.lang.annotation.Annotation;
import java.lang.annotation.ElementType;
+import java.util.Collections;
import java.util.List;
import java.util.Set;
import org.jboss.beans.metadata.plugins.AbstractBeanMetaData;
import org.jboss.beans.metadata.plugins.AbstractCallbackMetaData;
import org.jboss.beans.metadata.spi.CallbackMetaData;
+import org.jboss.beans.metadata.spi.MetaDataVisitorNode;
import org.jboss.dependency.spi.CallbackItem;
import org.jboss.dependency.spi.DependencyInfo;
import org.jboss.kernel.spi.dependency.KernelControllerContext;
@@ -70,13 +72,13 @@
protected abstract Set<CallbackItem> getCallbacks(DependencyInfo dependency);
- protected void internalApplyAnnotation(T info, C annotation, KernelControllerContext context)
+ protected List<? extends MetaDataVisitorNode> internalApplyAnnotation(T info, C annotation, KernelControllerContext context)
{
AbstractBeanMetaData beanMetaData = (AbstractBeanMetaData)context.getBeanMetaData();
List<CallbackMetaData> callbacks = getCallbacks(beanMetaData);
AbstractCallbackMetaData callback = createCallback(info, annotation);
callbacks.add(callback);
- executeVisit(context, callback);
+ return Collections.singletonList(callback);
}
protected abstract AbstractCallbackMetaData createCallback(T info, C annotation);
Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/annotations/ClassFactoryAnnotationPlugin.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/annotations/ClassFactoryAnnotationPlugin.java 2007-08-03 10:03:17 UTC (rev 64446)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/annotations/ClassFactoryAnnotationPlugin.java 2007-08-03 11:16:54 UTC (rev 64447)
@@ -23,6 +23,7 @@
import java.lang.annotation.ElementType;
import java.util.ArrayList;
+import java.util.Collections;
import java.util.List;
import org.jboss.beans.metadata.plugins.AbstractBeanMetaData;
@@ -31,6 +32,7 @@
import org.jboss.beans.metadata.plugins.annotations.Factory;
import org.jboss.beans.metadata.plugins.annotations.Value;
import org.jboss.beans.metadata.spi.BeanMetaData;
+import org.jboss.beans.metadata.spi.MetaDataVisitorNode;
import org.jboss.beans.metadata.spi.ParameterMetaData;
import org.jboss.kernel.spi.dependency.KernelControllerContext;
import org.jboss.reflect.spi.ClassInfo;
@@ -55,7 +57,7 @@
return beanMetaData.getConstructor() != null;
}
- protected void internalApplyAnnotation(ClassInfo info, Factory annotation, KernelControllerContext context) throws Throwable
+ protected List<? extends MetaDataVisitorNode> internalApplyAnnotation(ClassInfo info, Factory annotation, KernelControllerContext context) throws Throwable
{
AbstractBeanMetaData bean = (AbstractBeanMetaData)context.getBeanMetaData();
AbstractConstructorMetaData constructor = new AbstractConstructorMetaData();
@@ -81,6 +83,6 @@
constructor.setParameters(parameters);
}
bean.setConstructor(constructor);
- executeVisit(context, constructor);
+ return Collections.singletonList(constructor);
}
}
Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/annotations/ConstructorParameterAnnotationPlugin.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/annotations/ConstructorParameterAnnotationPlugin.java 2007-08-03 10:03:17 UTC (rev 64446)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/annotations/ConstructorParameterAnnotationPlugin.java 2007-08-03 11:16:54 UTC (rev 64447)
@@ -22,11 +22,13 @@
package org.jboss.kernel.plugins.annotations;
import java.lang.annotation.ElementType;
+import java.util.List;
import org.jboss.beans.metadata.plugins.AbstractBeanMetaData;
import org.jboss.beans.metadata.plugins.AbstractConstructorMetaData;
import org.jboss.beans.metadata.plugins.annotations.Constructor;
import org.jboss.beans.metadata.spi.BeanMetaData;
+import org.jboss.beans.metadata.spi.MetaDataVisitorNode;
import org.jboss.reflect.spi.ConstructorInfo;
import org.jboss.reflect.spi.ParameterInfo;
@@ -55,9 +57,10 @@
return info.getParameters();
}
- protected void handleParameterlessInfo(ConstructorInfo info, Constructor annotation, BeanMetaData beanMetaData)
+ protected List<MetaDataVisitorNode> handleParameterlessInfo(ConstructorInfo info, Constructor annotation, BeanMetaData beanMetaData)
{
// do nothing, default will be used
+ return null;
}
protected AbstractConstructorMetaData createParametrizedMetaData(ConstructorInfo info)
Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/annotations/ConstructorValueAnnotationPlugin.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/annotations/ConstructorValueAnnotationPlugin.java 2007-08-03 10:03:17 UTC (rev 64446)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/annotations/ConstructorValueAnnotationPlugin.java 2007-08-03 11:16:54 UTC (rev 64447)
@@ -22,12 +22,15 @@
package org.jboss.kernel.plugins.annotations;
import java.lang.annotation.Annotation;
+import java.util.Collections;
+import java.util.List;
import org.jboss.beans.metadata.plugins.AbstractBeanMetaData;
import org.jboss.beans.metadata.plugins.AbstractConstructorMetaData;
import org.jboss.beans.metadata.spi.BeanMetaData;
+import org.jboss.beans.metadata.spi.MetaDataVisitorNode;
+import org.jboss.kernel.spi.dependency.KernelControllerContext;
import org.jboss.reflect.spi.ClassInfo;
-import org.jboss.kernel.spi.dependency.KernelControllerContext;
/**
* @param <C> annotation type
@@ -45,7 +48,7 @@
return beanMetaData.getConstructor() != null;
}
- protected void internalApplyAnnotation(ClassInfo info, C annotation, KernelControllerContext context) throws Throwable
+ protected List<? extends MetaDataVisitorNode> internalApplyAnnotation(ClassInfo info, C annotation, KernelControllerContext context) throws Throwable
{
AbstractBeanMetaData beanMetaData = (AbstractBeanMetaData)context.getBeanMetaData();
AbstractConstructorMetaData constructor = new AbstractConstructorMetaData();
@@ -54,6 +57,6 @@
// reset, if present
beanMetaData.setBean(null);
context.setBeanInfo(null);
- executeVisit(context, constructor);
+ return Collections.singletonList(constructor);
}
}
Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/annotations/DemandsAnnotationPlugin.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/annotations/DemandsAnnotationPlugin.java 2007-08-03 10:03:17 UTC (rev 64446)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/annotations/DemandsAnnotationPlugin.java 2007-08-03 11:16:54 UTC (rev 64447)
@@ -21,19 +21,21 @@
*/
package org.jboss.kernel.plugins.annotations;
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.List;
import java.util.Set;
-import java.util.HashSet;
+import org.jboss.beans.metadata.plugins.AbstractBeanMetaData;
+import org.jboss.beans.metadata.plugins.AbstractDemandMetaData;
+import org.jboss.beans.metadata.plugins.annotations.Demand;
import org.jboss.beans.metadata.plugins.annotations.Demands;
-import org.jboss.beans.metadata.plugins.annotations.Demand;
-import org.jboss.beans.metadata.plugins.AbstractDemandMetaData;
-import org.jboss.beans.metadata.plugins.AbstractBeanMetaData;
+import org.jboss.beans.metadata.spi.BeanMetaData;
import org.jboss.beans.metadata.spi.DemandMetaData;
-import org.jboss.beans.metadata.spi.BeanMetaData;
-import org.jboss.beans.metadata.spi.MetaDataVisitor;
+import org.jboss.beans.metadata.spi.MetaDataVisitorNode;
+import org.jboss.dependency.spi.ControllerState;
+import org.jboss.kernel.spi.dependency.KernelControllerContext;
import org.jboss.reflect.spi.ClassInfo;
-import org.jboss.kernel.spi.dependency.KernelControllerContext;
-import org.jboss.dependency.spi.ControllerState;
/**
* @author <a href="mailto:ales.justin at jboss.com">Ales Justin</a>
@@ -45,7 +47,7 @@
super(Demands.class);
}
- protected void internalApplyAnnotation(ClassInfo info, Demands annotation, KernelControllerContext context)
+ protected List<? extends MetaDataVisitorNode> internalApplyAnnotation(ClassInfo info, Demands annotation, KernelControllerContext context)
{
BeanMetaData beanMetaData = context.getBeanMetaData();
Set<DemandMetaData> demands = beanMetaData.getDemands();
@@ -54,14 +56,14 @@
demands = new HashSet<DemandMetaData>();
((AbstractBeanMetaData)beanMetaData).setDemands(demands);
}
- MetaDataVisitor visitor = getMetaDataVisitor(context);
+ List<MetaDataVisitorNode> nodes = new ArrayList<MetaDataVisitorNode>();
for(Demand demand : annotation.value())
{
AbstractDemandMetaData admd = new AbstractDemandMetaData(demand.value());
admd.setWhenRequired(new ControllerState(demand.whenRequired()));
demands.add(admd);
- admd.initialVisit(visitor);
- admd.describeVisit(visitor);
+ nodes.add(admd);
}
+ return nodes;
}
}
Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/annotations/DependsAnnotationPlugin.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/annotations/DependsAnnotationPlugin.java 2007-08-03 10:03:17 UTC (rev 64446)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/annotations/DependsAnnotationPlugin.java 2007-08-03 11:16:54 UTC (rev 64447)
@@ -21,17 +21,19 @@
*/
package org.jboss.kernel.plugins.annotations;
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.List;
import java.util.Set;
-import java.util.HashSet;
+import org.jboss.beans.metadata.plugins.AbstractBeanMetaData;
import org.jboss.beans.metadata.plugins.AbstractDependencyMetaData;
-import org.jboss.beans.metadata.plugins.AbstractBeanMetaData;
import org.jboss.beans.metadata.plugins.annotations.Depends;
+import org.jboss.beans.metadata.spi.BeanMetaData;
import org.jboss.beans.metadata.spi.DependencyMetaData;
-import org.jboss.beans.metadata.spi.BeanMetaData;
-import org.jboss.beans.metadata.spi.MetaDataVisitor;
+import org.jboss.beans.metadata.spi.MetaDataVisitorNode;
+import org.jboss.kernel.spi.dependency.KernelControllerContext;
import org.jboss.reflect.spi.ClassInfo;
-import org.jboss.kernel.spi.dependency.KernelControllerContext;
/**
* @author <a href="mailto:ales.justin at jboss.com">Ales Justin</a>
@@ -43,7 +45,7 @@
super(Depends.class);
}
- protected void internalApplyAnnotation(ClassInfo info, Depends annotation, KernelControllerContext context)
+ protected List<? extends MetaDataVisitorNode> internalApplyAnnotation(ClassInfo info, Depends annotation, KernelControllerContext context)
{
BeanMetaData beanMetaData = context.getBeanMetaData();
Set<DependencyMetaData> dependencies = beanMetaData.getDepends();
@@ -52,13 +54,13 @@
dependencies = new HashSet<DependencyMetaData>();
((AbstractBeanMetaData)beanMetaData).setDepends(dependencies);
}
- MetaDataVisitor visitor = getMetaDataVisitor(context);
+ List<MetaDataVisitorNode> nodes = new ArrayList<MetaDataVisitorNode>();
for(String depends : annotation.value())
{
AbstractDependencyMetaData dependency = new AbstractDependencyMetaData(depends);
dependencies.add(dependency);
- dependency.initialVisit(visitor);
- dependency.describeVisit(visitor);
+ nodes.add(dependency);
}
+ return nodes;
}
}
Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/annotations/ExternalInstallationAnnotationPlugin.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/annotations/ExternalInstallationAnnotationPlugin.java 2007-08-03 10:03:17 UTC (rev 64446)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/annotations/ExternalInstallationAnnotationPlugin.java 2007-08-03 11:16:54 UTC (rev 64447)
@@ -31,6 +31,7 @@
import org.jboss.beans.metadata.plugins.annotations.Value;
import org.jboss.beans.metadata.spi.BeanMetaData;
import org.jboss.beans.metadata.spi.InstallMetaData;
+import org.jboss.beans.metadata.spi.MetaDataVisitorNode;
import org.jboss.beans.metadata.spi.ParameterMetaData;
import org.jboss.beans.metadata.spi.ValueMetaData;
import org.jboss.dependency.spi.ControllerState;
@@ -85,7 +86,7 @@
return installMetaData;
}
- protected void internalApplyAnnotation(ClassInfo info, C annotation, KernelControllerContext context) throws Throwable
+ protected List<? extends MetaDataVisitorNode> internalApplyAnnotation(ClassInfo info, C annotation, KernelControllerContext context) throws Throwable
{
BeanMetaData beanMetaData = context.getBeanMetaData();
List<InstallMetaData> existing = getExistingInstallMetaData(beanMetaData);
@@ -95,6 +96,7 @@
List<InstallMetaData> installs = getInstallMetaData(annotation);
if (installs != null && installs.isEmpty() == false)
{
+ List<MetaDataVisitorNode> nodes = new ArrayList<MetaDataVisitorNode>();
for(InstallMetaData install : installs)
{
boolean doAdd = true;
@@ -109,10 +111,12 @@
if (doAdd)
{
existing.add(install);
- executeVisit(context, install);
+ nodes.add(install);
}
}
+ return nodes;
}
+ return null;
}
protected static boolean isDifferent(InstallMetaData first, InstallMetaData second)
Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/annotations/FactoryMethodAnnotationPlugin.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/annotations/FactoryMethodAnnotationPlugin.java 2007-08-03 10:03:17 UTC (rev 64446)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/annotations/FactoryMethodAnnotationPlugin.java 2007-08-03 11:16:54 UTC (rev 64447)
@@ -22,11 +22,14 @@
package org.jboss.kernel.plugins.annotations;
import java.lang.annotation.ElementType;
+import java.util.List;
+import java.util.Collections;
import org.jboss.beans.metadata.plugins.AbstractBeanMetaData;
import org.jboss.beans.metadata.plugins.AbstractConstructorMetaData;
import org.jboss.beans.metadata.plugins.annotations.FactoryMethod;
import org.jboss.beans.metadata.spi.BeanMetaData;
+import org.jboss.beans.metadata.spi.MetaDataVisitorNode;
import org.jboss.reflect.spi.MethodInfo;
import org.jboss.reflect.spi.ParameterInfo;
@@ -55,9 +58,11 @@
return info.getParameters();
}
- protected void handleParameterlessInfo(MethodInfo info, FactoryMethod annotation, BeanMetaData beanMetaData)
+ protected List<? extends MetaDataVisitorNode> handleParameterlessInfo(MethodInfo info, FactoryMethod annotation, BeanMetaData beanMetaData)
{
- setParameterizedMetaData(createParametrizedMetaData(info, annotation, beanMetaData), beanMetaData);
+ AbstractConstructorMetaData constructorMetaData = createParametrizedMetaData(info, annotation, beanMetaData);
+ setParameterizedMetaData(constructorMetaData, beanMetaData);
+ return Collections.singletonList(constructorMetaData);
}
protected AbstractConstructorMetaData createParametrizedMetaData(MethodInfo info, FactoryMethod annotation, BeanMetaData beanMetaData)
Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/annotations/InstallationParameterAnnotationPlugin.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/annotations/InstallationParameterAnnotationPlugin.java 2007-08-03 10:03:17 UTC (rev 64446)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/annotations/InstallationParameterAnnotationPlugin.java 2007-08-03 11:16:54 UTC (rev 64447)
@@ -24,11 +24,13 @@
import java.lang.annotation.Annotation;
import java.lang.annotation.ElementType;
import java.util.List;
+import java.util.Collections;
import org.jboss.beans.metadata.plugins.AbstractInstallMetaData;
import org.jboss.beans.metadata.spi.BeanMetaData;
import org.jboss.beans.metadata.spi.InstallMetaData;
import org.jboss.beans.metadata.spi.ParameterMetaData;
+import org.jboss.beans.metadata.spi.MetaDataVisitorNode;
import org.jboss.reflect.spi.MethodInfo;
import org.jboss.reflect.spi.ParameterInfo;
@@ -81,8 +83,10 @@
return info.getParameters();
}
- protected void handleParameterlessInfo(MethodInfo info, C annotation, BeanMetaData beanMetaData)
+ protected List<? extends MetaDataVisitorNode> handleParameterlessInfo(MethodInfo info, C annotation, BeanMetaData beanMetaData)
{
- setParameterizedMetaData(createParametrizedMetaData(info, annotation), beanMetaData);
+ AbstractInstallMetaData parametrizedMetaData = createParametrizedMetaData(info, annotation);
+ setParameterizedMetaData(parametrizedMetaData, beanMetaData);
+ return Collections.singletonList(parametrizedMetaData);
}
}
Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/annotations/LifecycleParameterAnnotationPlugin.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/annotations/LifecycleParameterAnnotationPlugin.java 2007-08-03 10:03:17 UTC (rev 64446)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/annotations/LifecycleParameterAnnotationPlugin.java 2007-08-03 11:16:54 UTC (rev 64447)
@@ -23,10 +23,13 @@
import java.lang.annotation.Annotation;
import java.lang.annotation.ElementType;
+import java.util.List;
+import java.util.Collections;
import org.jboss.beans.metadata.plugins.AbstractBeanMetaData;
import org.jboss.beans.metadata.plugins.AbstractLifecycleMetaData;
import org.jboss.beans.metadata.spi.BeanMetaData;
+import org.jboss.beans.metadata.spi.MetaDataVisitorNode;
import org.jboss.reflect.spi.MethodInfo;
import org.jboss.reflect.spi.ParameterInfo;
@@ -69,10 +72,12 @@
return info.getParameters();
}
- protected void handleParameterlessInfo(MethodInfo info, C annotation, BeanMetaData beanMetaData)
+ protected List<? extends MetaDataVisitorNode> handleParameterlessInfo(MethodInfo info, C annotation, BeanMetaData beanMetaData)
{
AbstractBeanMetaData abmd = (AbstractBeanMetaData)beanMetaData;
- setLifecycleMetaData(abmd, createLifecycleMetaData(info.getName(), annotation));
+ AbstractLifecycleMetaData lifecycle = createLifecycleMetaData(info.getName(), annotation);
+ setLifecycleMetaData(abmd, lifecycle);
+ return Collections.singletonList(lifecycle);
}
protected AbstractLifecycleMetaData createParametrizedMetaData(MethodInfo info, C annotation)
Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/annotations/PropertyAnnotationPlugin.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/annotations/PropertyAnnotationPlugin.java 2007-08-03 10:03:17 UTC (rev 64446)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/annotations/PropertyAnnotationPlugin.java 2007-08-03 11:16:54 UTC (rev 64447)
@@ -23,13 +23,16 @@
import java.lang.annotation.Annotation;
import java.lang.annotation.ElementType;
+import java.util.Collections;
import java.util.HashSet;
+import java.util.List;
import java.util.Set;
import org.jboss.beans.info.spi.PropertyInfo;
import org.jboss.beans.metadata.plugins.AbstractBeanMetaData;
import org.jboss.beans.metadata.plugins.AbstractPropertyMetaData;
import org.jboss.beans.metadata.spi.BeanMetaData;
+import org.jboss.beans.metadata.spi.MetaDataVisitorNode;
import org.jboss.beans.metadata.spi.PropertyMetaData;
import org.jboss.beans.metadata.spi.ValueMetaData;
import org.jboss.kernel.spi.dependency.KernelControllerContext;
@@ -65,12 +68,12 @@
return false;
}
- protected void internalApplyAnnotation(PropertyInfo info, C annotation, KernelControllerContext context)
+ protected List<? extends MetaDataVisitorNode> internalApplyAnnotation(PropertyInfo info, C annotation, KernelControllerContext context)
{
Set<PropertyMetaData> properties = getProperties(context);
PropertyMetaData property = getPropertyMetaData(info, annotation, context);
properties.add(property);
- executeVisit(context, property);
+ return Collections.singletonList(property);
}
protected PropertyMetaData getPropertyMetaData(PropertyInfo info, C annotation, KernelControllerContext context)
Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/annotations/PropertyAware.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/annotations/PropertyAware.java 2007-08-03 10:03:17 UTC (rev 64446)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/annotations/PropertyAware.java 2007-08-03 11:16:54 UTC (rev 64447)
@@ -22,7 +22,7 @@
package org.jboss.kernel.plugins.annotations;
import org.jboss.beans.info.spi.PropertyInfo;
-import org.jboss.kernel.spi.dependency.KernelControllerContext;
+import org.jboss.beans.metadata.spi.MetaDataVisitor;
import org.jboss.metadata.spi.retrieval.MetaDataRetrieval;
/**
@@ -32,5 +32,5 @@
*/
public interface PropertyAware
{
- void applyAnnotation(PropertyInfo info, MetaDataRetrieval retrieval, KernelControllerContext context) throws Throwable;
+ void applyAnnotation(PropertyInfo info, MetaDataRetrieval retrieval, MetaDataVisitor visitor) throws Throwable;
}
Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/annotations/SupplysAnnotationPlugin.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/annotations/SupplysAnnotationPlugin.java 2007-08-03 10:03:17 UTC (rev 64446)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/annotations/SupplysAnnotationPlugin.java 2007-08-03 11:16:54 UTC (rev 64447)
@@ -23,12 +23,15 @@
import java.util.Set;
import java.util.HashSet;
+import java.util.List;
+import java.util.ArrayList;
import org.jboss.beans.metadata.plugins.AbstractSupplyMetaData;
import org.jboss.beans.metadata.plugins.AbstractBeanMetaData;
import org.jboss.beans.metadata.plugins.annotations.Supplys;
import org.jboss.beans.metadata.spi.BeanMetaData;
import org.jboss.beans.metadata.spi.SupplyMetaData;
+import org.jboss.beans.metadata.spi.MetaDataVisitorNode;
import org.jboss.reflect.spi.ClassInfo;
/**
@@ -41,7 +44,7 @@
super(Supplys.class);
}
- protected void internalApplyAnnotation(ClassInfo info, Supplys annotation, BeanMetaData beanMetaData)
+ protected List<? extends MetaDataVisitorNode> internalApplyAnnotation(ClassInfo info, Supplys annotation, BeanMetaData beanMetaData)
{
Set<SupplyMetaData> supplies = beanMetaData.getSupplies();
if (supplies == null)
@@ -49,9 +52,13 @@
supplies = new HashSet<SupplyMetaData>();
((AbstractBeanMetaData)beanMetaData).setSupplies(supplies);
}
+ List<MetaDataVisitorNode> nodes = new ArrayList<MetaDataVisitorNode>();
for(String supply : annotation.value())
{
- supplies.add(new AbstractSupplyMetaData(supply));
+ AbstractSupplyMetaData asmd = new AbstractSupplyMetaData(supply);
+ supplies.add(asmd);
+ nodes.add(asmd);
}
+ return nodes;
}
}
Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/dependency/AbstractKernelControllerContext.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/dependency/AbstractKernelControllerContext.java 2007-08-03 10:03:17 UTC (rev 64446)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/dependency/AbstractKernelControllerContext.java 2007-08-03 11:16:54 UTC (rev 64447)
@@ -42,6 +42,7 @@
import org.jboss.dependency.spi.DependencyItem;
import org.jboss.kernel.Kernel;
import org.jboss.kernel.plugins.config.Configurator;
+import org.jboss.kernel.plugins.annotations.BeanAnnotationAdapterFactory;
import org.jboss.kernel.spi.dependency.KernelController;
import org.jboss.kernel.spi.dependency.KernelControllerContext;
import org.jboss.kernel.spi.metadata.KernelMetaDataRepository;
@@ -79,6 +80,9 @@
/** Did we do a describeVisit */
protected boolean isDescribeProcessed;
+ /** Did we do the annotations check */
+ protected boolean areAnnotationsProcessed;
+
/** The scope */
protected ScopeKey scope;
@@ -273,8 +277,19 @@
return Configurator.getClassLoader(getBeanMetaData());
}
- protected abstract class AbstractMetaDataVistor implements MetaDataVisitor, PrivilegedAction<Object>
+ public void applyMetaData() throws Throwable
{
+ if (areAnnotationsProcessed == false)
+ {
+ // handle custom annotations
+ MetaDataVisitor annotationsVisitor = new AnnotationMetaDataVisitor(metaData);
+ BeanAnnotationAdapterFactory.getBeanAnnotationAdapter().applyAnnotations(annotationsVisitor);
+ areAnnotationsProcessed = true;
+ }
+ }
+
+ protected abstract class AbstractMetaDataVistor implements MetaDataVisitor
+ {
/**
* The current context for when the dependencies are required
*/
@@ -324,10 +339,54 @@
protected void internalInitialVisit(MetaDataVisitorNode node)
{
+ boolean trace = log.isTraceEnabled();
+ if (trace)
+ log.trace("Initial visit node " + node);
+
+ // Visit the children of this node
+ Iterator children = node.getChildren();
+ if (children != null)
+ {
+ ControllerState restoreState = contextState;
+ while (children.hasNext())
+ {
+ MetaDataVisitorNode child = (MetaDataVisitorNode) children.next();
+ try
+ {
+ child.initialVisit(this);
+ }
+ finally
+ {
+ contextState = restoreState;
+ }
+ }
+ }
}
protected void internalDescribeVisit(MetaDataVisitorNode node)
{
+ boolean trace = log.isTraceEnabled();
+ if (trace)
+ log.trace("Describe visit node " + node);
+
+ // Visit the children of this node
+ Iterator children = node.getChildren();
+ if (children != null)
+ {
+ ControllerState restoreState = contextState;
+ while (children.hasNext())
+ {
+ MetaDataVisitorNode child = (MetaDataVisitorNode) children.next();
+ try
+ {
+ child.describeVisit(this);
+ }
+ finally
+ {
+ contextState = restoreState;
+ }
+ }
+ }
}
public KernelControllerContext getControllerContext()
@@ -370,7 +429,7 @@
/**
* A visitor for the metadata that looks for dependencies.
*/
- protected class PreprocessMetaDataVisitor extends AbstractMetaDataVistor
+ protected class PreprocessMetaDataVisitor extends AbstractMetaDataVistor implements PrivilegedAction<Object>
{
/**
* Create a new MetaDataVisitor.
@@ -391,44 +450,12 @@
visitorNodeStack = null;
return null;
}
-
- /**
- * Visit a node
- *
- * @param node the node
- */
- protected void internalInitialVisit(MetaDataVisitorNode node)
- {
- boolean trace = log.isTraceEnabled();
- if (trace)
- log.trace("Initial visit node " + node);
-
- // Visit the children of this node
- Iterator children = node.getChildren();
- if (children != null)
- {
- ControllerState restoreState = contextState;
- while (children.hasNext())
- {
- MetaDataVisitorNode child = (MetaDataVisitorNode) children.next();
- try
- {
- child.initialVisit(this);
- }
- finally
- {
- contextState = restoreState;
- }
- }
- }
- }
-
}
/**
* A visitor for the metadata that looks for dependencies.
*/
- protected class DescribedMetaDataVisitor extends AbstractMetaDataVistor
+ protected class DescribedMetaDataVisitor extends AbstractMetaDataVistor implements PrivilegedAction<Object>
{
/**
* Create a new MetaDataVisitor.
@@ -449,36 +476,42 @@
visitorNodeStack = null;
return null;
}
+ }
- /**
- * Visit a node
- *
- * @param node the node
- */
- protected void internalDescribeVisit(MetaDataVisitorNode node)
+ /**
+ * A visitor for the annotation meta data.
+ */
+ protected class AnnotationMetaDataVisitor extends AbstractMetaDataVistor
+ {
+ public AnnotationMetaDataVisitor(BeanMetaData bmd)
{
- boolean trace = log.isTraceEnabled();
- if (trace)
- log.trace("Describe visit node " + node);
+ super(bmd);
+ }
- // Visit the children of this node
- Iterator children = node.getChildren();
- if (children != null)
+ public void initialVisit(MetaDataVisitorNode node)
+ {
+ visitorNodeStack.push(bmd);
+ try
{
- ControllerState restoreState = contextState;
- while (children.hasNext())
- {
- MetaDataVisitorNode child = (MetaDataVisitorNode) children.next();
- try
- {
- child.describeVisit(this);
- }
- finally
- {
- contextState = restoreState;
- }
- }
+ super.initialVisit(node);
}
+ finally
+ {
+ visitorNodeStack.pop();
+ }
}
+
+ public void describeVisit(MetaDataVisitorNode node)
+ {
+ visitorNodeStack.push(bmd);
+ try
+ {
+ super.describeVisit(node);
+ }
+ finally
+ {
+ visitorNodeStack.pop();
+ }
+ }
}
}
\ No newline at end of file
Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/dependency/DescribeAction.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/dependency/DescribeAction.java 2007-08-03 10:03:17 UTC (rev 64446)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/dependency/DescribeAction.java 2007-08-03 11:16:54 UTC (rev 64447)
@@ -28,7 +28,6 @@
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.plugins.annotations.BeanAnnotationAdapterFactory;
import org.jboss.metadata.spi.MetaData;
/**
@@ -58,8 +57,7 @@
dependencyItem.addDependency(context);
}
}
- // handle custom annotations
- BeanAnnotationAdapterFactory.getBeanAnnotationAdapter().applyAnnotations(context);
+ context.applyMetaData();
}
}
Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/spi/dependency/KernelControllerContext.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/spi/dependency/KernelControllerContext.java 2007-08-03 10:03:17 UTC (rev 64446)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/spi/dependency/KernelControllerContext.java 2007-08-03 11:16:54 UTC (rev 64447)
@@ -113,4 +113,12 @@
* @return true if context can be used for autowiring
*/
boolean isAutowireCandidate();
+
+ /**
+ * Do apply meta data.
+ * Hide details of applying annotations.
+ *
+ * @throws Throwable for any error
+ */
+ void applyMetaData() throws Throwable;
}
Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/spi/dependency/helpers/UnmodifiableKernelControllerContext.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/spi/dependency/helpers/UnmodifiableKernelControllerContext.java 2007-08-03 10:03:17 UTC (rev 64446)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/spi/dependency/helpers/UnmodifiableKernelControllerContext.java 2007-08-03 11:16:54 UTC (rev 64447)
@@ -126,4 +126,9 @@
{
delegate.set(name, value);
}
+
+ public void applyMetaData() throws Throwable
+ {
+ delegate.applyMetaData();
+ }
}
More information about the jboss-cvs-commits
mailing list