[Jboss-cvs] JBossAS SVN: r55947 - in projects/microcontainer/trunk/kernel/src/main/org/jboss: beans/metadata/plugins beans/metadata/spi kernel/plugins/dependency kernel/spi/dependency
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Tue Aug 15 08:58:42 EDT 2006
Author: alesj
Date: 2006-08-15 08:58:30 -0400 (Tue, 15 Aug 2006)
New Revision: 55947
Added:
projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/TypeProvider.java
Modified:
projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractBeanMetaData.java
projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/spi/MetaDataVisitor.java
projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/spi/MetaDataVisitorNode.java
projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/dependency/AbstractKernelController.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/KernelController.java
Log:
Preparing for revisit MD.
Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractBeanMetaData.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractBeanMetaData.java 2006-08-15 12:52:33 UTC (rev 55946)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractBeanMetaData.java 2006-08-15 12:58:30 UTC (rev 55947)
@@ -359,10 +359,6 @@
public Set<SupplyMetaData> getSupplies()
{
- if (supplies == null)
- {
- supplies = new HashSet<SupplyMetaData>();
- }
return supplies;
}
Added: projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/TypeProvider.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/TypeProvider.java 2006-08-15 12:52:33 UTC (rev 55946)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/TypeProvider.java 2006-08-15 12:58:30 UTC (rev 55947)
@@ -0,0 +1,15 @@
+/*
+ *
+ */
+
+package org.jboss.beans.metadata.plugins;
+
+/**
+ * @author <a href="mailto:ales.justin at genera-lynx.com">Ales Justin</a>
+ */
+public interface TypeProvider
+{
+
+ Class getType();
+
+}
Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/spi/MetaDataVisitor.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/spi/MetaDataVisitor.java 2006-08-15 12:52:33 UTC (rev 55946)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/spi/MetaDataVisitor.java 2006-08-15 12:58:30 UTC (rev 55947)
@@ -21,6 +21,8 @@
*/
package org.jboss.beans.metadata.spi;
+import java.util.Stack;
+
import org.jboss.dependency.spi.ControllerState;
import org.jboss.dependency.spi.DependencyItem;
import org.jboss.kernel.spi.dependency.KernelControllerContext;
@@ -67,4 +69,19 @@
* @param node the node
*/
void visit(MetaDataVisitorNode node);
+
+ /**
+ * Revisit the node
+ *
+ * @param node the node
+ */
+ void revisit(MetaDataVisitorNode node);
+
+ /**
+ * Current meta data visited branch
+ *
+ * @return stack of meta data objects in this branch
+ */
+ Stack visitorNodeStack();
+
}
Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/spi/MetaDataVisitorNode.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/spi/MetaDataVisitorNode.java 2006-08-15 12:52:33 UTC (rev 55946)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/spi/MetaDataVisitorNode.java 2006-08-15 12:58:30 UTC (rev 55947)
@@ -39,6 +39,13 @@
public void visit(MetaDataVisitor vistor);
/**
+ * Revisit the node
+ *
+ * @param vistor the visitor
+ */
+// public void revisit(MetaDataVisitor vistor);
+
+ /**
* Return the child nodes
*
* @return Iterator<MetaDataVisitorNode> or null if there aren't any
Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/dependency/AbstractKernelController.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/dependency/AbstractKernelController.java 2006-08-15 12:52:33 UTC (rev 55946)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/dependency/AbstractKernelController.java 2006-08-15 12:58:30 UTC (rev 55947)
@@ -89,6 +89,8 @@
List<KernelControllerContext> list = suppliers.get(name);
if (list != null && list.isEmpty() == false)
return list.get(0);
+ else if (name instanceof Class)
+ return getContextByClass((Class)name);
else
return null;
}
@@ -212,7 +214,7 @@
/**
* @return all instantiated contexts whose target is instance of this class clazz param
*/
- public Set<ControllerContext> getInstantiatedContexts(Class clazz)
+ public Set<KernelControllerContext> getInstantiatedContexts(Class clazz)
{
lockRead();
try
@@ -235,7 +237,7 @@
* add instantiated context into contextsByClass map
* look at all target's superclasses and interfaces
*/
- public void addInstantiatedContext(ControllerContext context)
+ public void addInstantiatedContext(KernelControllerContext context)
{
prepareToTraverse(context, true);
}
@@ -244,12 +246,12 @@
* remove instantiated context from contextsByClass map
* look at all target's superclasses and interfaces
*/
- public void removeInstantiatedContext(ControllerContext context)
+ public void removeInstantiatedContext(KernelControllerContext context)
{
prepareToTraverse(context, false);
}
- protected void prepareToTraverse(ControllerContext context, boolean addition)
+ protected void prepareToTraverse(KernelControllerContext context, boolean addition)
{
lockWrite();
try
@@ -273,7 +275,7 @@
* @param context context whose target is instance of clazz
* @param clazz current class to map context to
*/
- protected void traverseBean(ControllerContext context, Class clazz, boolean addition, boolean trace)
+ protected void traverseBean(KernelControllerContext context, Class clazz, boolean addition, boolean trace)
{
if (clazz == null || clazz == Object.class)
{
@@ -285,7 +287,7 @@
if (classContext == null)
{
classContext = new ClassContext();
- classContext.contexts = new HashSet<ControllerContext>();
+ classContext.contexts = new HashSet<KernelControllerContext>();
contextsByClass.put(clazz, classContext);
}
else if (classContext.used)
@@ -322,7 +324,23 @@
private class ClassContext
{
private boolean used;
- private Set<ControllerContext> contexts;
+ private Set<KernelControllerContext> contexts;
}
+ private KernelControllerContext getContextByClass(Class clazz)
+ {
+ Set<KernelControllerContext> contexts = getInstantiatedContexts(clazz);
+ int numberOfMatchingBeans = 0;
+ if (contexts != null)
+ {
+ numberOfMatchingBeans = contexts.size();
+ }
+ if (numberOfMatchingBeans != 1)
+ {
+ log.error("Should not be here, illegas size of matching contexts (" + numberOfMatchingBeans + ") - dependency failed! " + clazz);
+ return null;
+ }
+ return contexts.iterator().next();
+ }
+
}
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 2006-08-15 12:52:33 UTC (rev 55946)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/dependency/AbstractKernelControllerContext.java 2006-08-15 12:58:30 UTC (rev 55947)
@@ -25,6 +25,7 @@
import java.security.AccessController;
import java.security.PrivilegedAction;
import java.util.Iterator;
+import java.util.Stack;
import org.jboss.beans.info.spi.BeanInfo;
import org.jboss.beans.metadata.spi.BeanMetaData;
@@ -161,24 +162,69 @@
{
return accessContext;
}
-
+
+ protected abstract class AbstractMetaDataVistor implements MetaDataVisitor, PrivilegedAction<Object>
+ {
+ /** The current context for when the dependencies are required */
+ protected ControllerState contextState = ControllerState.INSTANTIATED;
+
+ /** The metadata */
+ protected BeanMetaData bmd;
+
+ /** Visited branch stack */
+ protected Stack visitorNodeStack;
+
+ protected AbstractMetaDataVistor(BeanMetaData bmd)
+ {
+ this.bmd = bmd;
+ }
+
+ public void visit(MetaDataVisitorNode node)
+ {
+ }
+
+ public void revisit(MetaDataVisitorNode node)
+ {
+ }
+
+ public KernelControllerContext getControllerContext()
+ {
+ return AbstractKernelControllerContext.this;
+ }
+
+ public ControllerState getContextState()
+ {
+ return contextState;
+ }
+
+ public void addDependency(DependencyItem dependency)
+ {
+ getDependencyInfo().addIDependOn(dependency);
+ }
+
+ public void setContextState(ControllerState contextState)
+ {
+ this.contextState = contextState;
+ }
+
+ public Stack visitorNodeStack()
+ {
+ return visitorNodeStack;
+ }
+
+ }
+
/**
* A visitor for the metadata that looks for dependencies.
*/
- protected class PreprocessMetaDataVisitor implements MetaDataVisitor, PrivilegedAction<Object>
+ protected class PreprocessMetaDataVisitor extends AbstractMetaDataVistor
{
- /** The current context for when the dependencies are required */
- private ControllerState contextState = ControllerState.INSTANTIATED;
-
- /** The metadata */
- private BeanMetaData bmd;
-
/**
* Create a new MetaDataVisitor.
*/
public PreprocessMetaDataVisitor(BeanMetaData bmd)
{
- this.bmd = bmd;
+ super(bmd);
}
/**
@@ -221,24 +267,66 @@
}
}
- public KernelControllerContext getControllerContext()
+ }
+
+ /**
+ * A visitor for the metadata that looks for dependencies.
+ */
+ protected class DescribedMetaDataVisitor extends AbstractMetaDataVistor
+ {
+ /**
+ * Create a new MetaDataVisitor.
+ */
+ public DescribedMetaDataVisitor(BeanMetaData bmd)
{
- return AbstractKernelControllerContext.this;
+ super(bmd);
+ this.visitorNodeStack = new Stack();
}
-
- public ControllerState getContextState()
+
+ /**
+ * Visit the bean metadata node, this is the starting point
+ */
+ public Object run()
{
- return contextState;
+ visitorNodeStack.push(bmd);
+ bmd.revisit(this);
+ visitorNodeStack.pop();
+ visitorNodeStack = null;
+ return null;
}
-
- public void addDependency(DependencyItem dependency)
+
+ /**
+ * Visit a node
+ *
+ * @param node the node
+ */
+ public void revisit(MetaDataVisitorNode node)
{
- getDependencyInfo().addIDependOn(dependency);
- }
+ boolean trace = log.isTraceEnabled();
+ if (trace)
+ log.trace("Revisit node " + node);
- public void setContextState(ControllerState contextState)
- {
- this.contextState = contextState;
+ // Visit the children of this node
+ Iterator children = node.getChildren();
+ if (children != null)
+ {
+ ControllerState restoreState = contextState;
+ while (children.hasNext())
+ {
+ MetaDataVisitorNode child = (MetaDataVisitorNode) children.next();
+ visitorNodeStack.push(child);
+ try
+ {
+// child.visit(this);
+ }
+ finally
+ {
+ contextState = restoreState;
+ 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 2006-08-15 12:52:33 UTC (rev 55946)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/dependency/DescribeAction.java 2006-08-15 12:58:30 UTC (rev 55947)
@@ -26,10 +26,8 @@
import java.util.Set;
import org.jboss.beans.info.spi.BeanInfo;
-import org.jboss.beans.metadata.plugins.AbstractSupplyMetaData;
import org.jboss.beans.metadata.spi.BeanMetaData;
import org.jboss.beans.metadata.spi.PropertyMetaData;
-import org.jboss.beans.metadata.spi.SupplyMetaData;
import org.jboss.dependency.plugins.AbstractDependencyItem;
import org.jboss.dependency.spi.ControllerContext;
import org.jboss.dependency.spi.ControllerState;
@@ -62,8 +60,6 @@
BeanInfo info = configurator.getBeanInfo(metaData);
context.setBeanInfo(info);
- addClassSuppliers(metaData, info);
-
info = addAnnotations(context, metaData, info);
DependencyInfo depends = context.getDependencyInfo();
@@ -178,31 +174,4 @@
return metaCtx;
}
- /**
- * Adds classes to supply for contextual injection.
- *
- * @param metaData
- * @param info
- */
- private void addClassSuppliers(BeanMetaData metaData, BeanInfo info)
- {
- traverseBeanClass(metaData, info.getClassInfo().getType());
- }
-
- private void traverseBeanClass(BeanMetaData metaData, Class clazz)
- {
- if (clazz == null || clazz == Object.class)
- {
- return;
- }
- Set<SupplyMetaData> supplies = metaData.getSupplies();
- supplies.add(new AbstractSupplyMetaData(clazz));
- traverseBeanClass(metaData, clazz.getSuperclass());
- Class[] intfaces = clazz.getInterfaces();
- for(Class intface : intfaces)
- {
- traverseBeanClass(metaData, intface);
- }
- }
-
}
\ No newline at end of file
Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/spi/dependency/KernelController.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/spi/dependency/KernelController.java 2006-08-15 12:52:33 UTC (rev 55946)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/spi/dependency/KernelController.java 2006-08-15 12:58:30 UTC (rev 55947)
@@ -25,7 +25,6 @@
import org.jboss.beans.metadata.spi.BeanMetaData;
import org.jboss.dependency.spi.Controller;
-import org.jboss.dependency.spi.ControllerContext;
import org.jboss.kernel.spi.KernelObject;
/**
@@ -77,17 +76,17 @@
/**
* @return all instantiated contexts whose target is instance of this class clazz param
*/
- Set<ControllerContext> getInstantiatedContexts(Class clazz);
+ Set<KernelControllerContext> getInstantiatedContexts(Class clazz);
/**
* add instantiated context into contextsByClass map
* look at all target's superclasses and interfaces
*/
- void addInstantiatedContext(ControllerContext context);
+ void addInstantiatedContext(KernelControllerContext context);
/**
* remove instantiated context from contextsByClass map
* look at all target's superclasses and interfaces
*/
- void removeInstantiatedContext(ControllerContext context);
+ void removeInstantiatedContext(KernelControllerContext context);
}
More information about the jboss-cvs-commits
mailing list