[jboss-cvs] JBossAS SVN: r76911 - in projects/microcontainer/trunk: dependency/src/main/org/jboss/dependency/plugins/graph and 5 other directories.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Mon Aug 11 08:42:15 EDT 2008
Author: alesj
Date: 2008-08-11 08:42:15 -0400 (Mon, 11 Aug 2008)
New Revision: 76911
Added:
projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractSearchValueMetaData.java
Removed:
projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/annotations/SearchValueMetaData.java
Modified:
projects/microcontainer/trunk/dependency/src/main/org/jboss/dependency/plugins/AbstractScopeInfo.java
projects/microcontainer/trunk/dependency/src/main/org/jboss/dependency/plugins/graph/Search.java
projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractClassLoaderMetaData.java
projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractConstructorMetaData.java
projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractParameterMetaData.java
projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractPropertyMetaData.java
projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/policy/AbstractBindingMetaData.java
projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/annotations/SearchPropertyAnnotationPlugin.java
projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/annotations/ValueUtil.java
projects/microcontainer/trunk/kernel/src/resources/main/schema/bean-deployer_2_0.xsd
projects/microcontainer/trunk/kernel/src/resources/main/schema/jboss-beans-common_2_0.xsd
projects/microcontainer/trunk/kernel/src/resources/tests/org/jboss/test/kernel/deployment/test/ScopingOverrideTestCase.xml
Log:
Add @Search as XML notion as well - still experimental.
Change ScopingOverride test to use it.
Modified: projects/microcontainer/trunk/dependency/src/main/org/jboss/dependency/plugins/AbstractScopeInfo.java
===================================================================
--- projects/microcontainer/trunk/dependency/src/main/org/jboss/dependency/plugins/AbstractScopeInfo.java 2008-08-11 07:33:40 UTC (rev 76910)
+++ projects/microcontainer/trunk/dependency/src/main/org/jboss/dependency/plugins/AbstractScopeInfo.java 2008-08-11 12:42:15 UTC (rev 76911)
@@ -90,8 +90,6 @@
scopeKey.addScope(CommonLevels.INSTANCE, name.toString());
if (className != null)
scopeKey.addScope(CommonLevels.CLASS, className);
- // todo - some other level
- scopeKey.addScope(CommonLevels.WORK, String.valueOf(hashCode()));
setScope(scopeKey);
setMutableScope(new ScopeKey(CommonLevels.INSTANCE, name.toString()));
}
Modified: projects/microcontainer/trunk/dependency/src/main/org/jboss/dependency/plugins/graph/Search.java
===================================================================
--- projects/microcontainer/trunk/dependency/src/main/org/jboss/dependency/plugins/graph/Search.java 2008-08-11 07:33:40 UTC (rev 76910)
+++ projects/microcontainer/trunk/dependency/src/main/org/jboss/dependency/plugins/graph/Search.java 2008-08-11 12:42:15 UTC (rev 76911)
@@ -25,12 +25,14 @@
import org.jboss.dependency.spi.graph.LookupStrategy;
import org.jboss.dependency.spi.graph.SearchInfo;
+import org.jboss.xb.annotations.JBossXmlEnum;
/**
* Search enum.
*
* @author <a href="mailto:ales.justin at jboss.com">Ales Justin</a>
*/
+ at JBossXmlEnum(ignoreCase = true)
public enum Search implements SearchInfo
{
DEFAULT(new DefaultSearchInfoWrapper()),
Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractClassLoaderMetaData.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractClassLoaderMetaData.java 2008-08-11 07:33:40 UTC (rev 76910)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractClassLoaderMetaData.java 2008-08-11 12:42:15 UTC (rev 76911)
@@ -81,6 +81,7 @@
({
@XmlElement(name="bean", type=AbstractBeanMetaData.class),
@XmlElement(name="inject", type=AbstractDependencyValueMetaData.class),
+ @XmlElement(name="search", type= AbstractSearchValueMetaData.class),
@XmlElement(name="null", type=AbstractValueMetaData.class)
})
public void setClassLoader(ValueMetaData classloader)
Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractConstructorMetaData.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractConstructorMetaData.java 2008-08-11 07:33:40 UTC (rev 76910)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractConstructorMetaData.java 2008-08-11 12:42:15 UTC (rev 76911)
@@ -123,6 +123,7 @@
@XmlElement(name="set", type=AbstractSetMetaData.class),
@XmlElement(name="value", type=StringValueMetaData.class),
@XmlElement(name="inject", type=AbstractInjectionValueMetaData.class),
+ @XmlElement(name="search", type= AbstractSearchValueMetaData.class),
@XmlElement(name="value-factory", type=AbstractValueFactoryMetaData.class)
})
public void setValue(ValueMetaData value)
Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractParameterMetaData.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractParameterMetaData.java 2008-08-11 07:33:40 UTC (rev 76910)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractParameterMetaData.java 2008-08-11 12:42:15 UTC (rev 76911)
@@ -174,6 +174,7 @@
@XmlElement(name="array", type=AbstractArrayMetaData.class),
@XmlElement(name="collection", type=AbstractCollectionMetaData.class),
@XmlElement(name="inject", type=AbstractInjectionValueMetaData.class),
+ @XmlElement(name="search", type= AbstractSearchValueMetaData.class),
@XmlElement(name="list", type=AbstractListMetaData.class),
@XmlElement(name="map", type=AbstractMapMetaData.class),
@XmlElement(name="null", type=AbstractValueMetaData.class),
Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractPropertyMetaData.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractPropertyMetaData.java 2008-08-11 07:33:40 UTC (rev 76910)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractPropertyMetaData.java 2008-08-11 12:42:15 UTC (rev 76911)
@@ -186,6 +186,7 @@
@XmlElement(name="array", type=AbstractArrayMetaData.class),
@XmlElement(name="collection", type=AbstractCollectionMetaData.class),
@XmlElement(name="inject", type=AbstractInjectionValueMetaData.class),
+ @XmlElement(name="search", type= AbstractSearchValueMetaData.class),
@XmlElement(name="list", type=AbstractListMetaData.class),
@XmlElement(name="map", type=AbstractMapMetaData.class),
@XmlElement(name="set", type=AbstractSetMetaData.class),
Copied: projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractSearchValueMetaData.java (from rev 76841, projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/annotations/SearchValueMetaData.java)
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractSearchValueMetaData.java (rev 0)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractSearchValueMetaData.java 2008-08-11 12:42:15 UTC (rev 76911)
@@ -0,0 +1,214 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2006, JBoss Inc., and individual contributors as indicated
+* by the @authors tag. See the copyright.txt 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.beans.metadata.plugins;
+
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlAnyElement;
+
+import org.jboss.beans.metadata.spi.MetaDataVisitor;
+import org.jboss.beans.metadata.spi.ValueMetaData;
+import org.jboss.dependency.plugins.AbstractDependencyItem;
+import org.jboss.dependency.plugins.graph.Search;
+import org.jboss.dependency.spi.Controller;
+import org.jboss.dependency.spi.ControllerContext;
+import org.jboss.dependency.spi.ControllerState;
+import org.jboss.dependency.spi.DependencyItem;
+import org.jboss.dependency.spi.dispatch.AttributeDispatchContext;
+import org.jboss.dependency.spi.graph.GraphController;
+import org.jboss.reflect.spi.TypeInfo;
+import org.jboss.util.JBossStringBuilder;
+import org.jboss.xb.annotations.JBossXmlAttribute;
+import org.jboss.managed.api.annotation.ManagementProperty;
+
+/**
+ * Search value metadata - TODO - still experimental
+ *
+ * @author <a href="mailto:ales.justin at jboss.com">Ales Justin</a>
+ */
+ at XmlType(name="searchType")
+public class AbstractSearchValueMetaData extends AbstractValueMetaData
+{
+ /** The serialVersionUID */
+ private static final long serialVersionUID = 1L;
+
+ private ControllerState state;
+ private org.jboss.dependency.plugins.graph.Search search;
+ private String property;
+
+ private ControllerContext context;
+
+ // Used in JBossXB
+ public AbstractSearchValueMetaData()
+ {
+ }
+
+ public AbstractSearchValueMetaData(Object value, ControllerState state, Search search, String property)
+ {
+ super(value);
+ if (search == null)
+ throw new IllegalArgumentException("Null search type");
+
+ this.state = state;
+ this.search = search;
+ this.property = property;
+ }
+
+ public Object getValue(TypeInfo info, ClassLoader cl) throws Throwable
+ {
+ // we're here, so it must be GraphController instance
+ Controller controller = context.getController();
+ GraphController gc = (GraphController)controller;
+
+ ControllerState dependentState = state;
+ if (dependentState == null)
+ dependentState = ControllerState.INSTALLED;
+ ControllerContext context = gc.getContext(getUnderlyingValue(), dependentState, search);
+
+ Object result;
+ if (property != null && property.length() > 0)
+ {
+ if (context instanceof AttributeDispatchContext)
+ {
+ AttributeDispatchContext adc = (AttributeDispatchContext)context;
+ result = adc.get(property);
+ }
+ else
+ throw new IllegalArgumentException(
+ "Cannot use property attribute, context is not AttributeDispatchContext: " + context +
+ ", metadata: " + this);
+ }
+ else
+ {
+ result = context.getTarget();
+ }
+
+ return info != null ? info.convertValue(result) : result;
+ }
+
+ public void initialVisit(MetaDataVisitor visitor)
+ {
+ context = visitor.getControllerContext();
+
+ super.initialVisit(visitor);
+ }
+
+ public void describeVisit(MetaDataVisitor visitor)
+ {
+ Object name = context.getName();
+ Object iDependOn = getUnderlyingValue();
+
+ ControllerState whenRequired = visitor.getContextState();
+ ControllerState dependentState = state;
+ if (dependentState == null)
+ dependentState = ControllerState.INSTALLED;
+
+ DependencyItem item = new SearchDependencyItem(name, iDependOn, whenRequired, dependentState);
+ visitor.addDependency(item);
+
+ super.describeVisit(visitor);
+ }
+
+ @XmlAttribute(name="bean")
+ @JBossXmlAttribute(type=String.class)
+ public void setValue(Object value)
+ {
+ super.setValue(value);
+ }
+
+ @XmlAnyElement
+ @ManagementProperty(ignored = true)
+ public void setValueObject(Object value)
+ {
+ if (value == null)
+ setValue(null);
+ else if (value instanceof ValueMetaData)
+ setValue(value);
+ else
+ setValue(new AbstractValueMetaData(value));
+ }
+
+ @XmlAttribute
+ public void setState(ControllerState state)
+ {
+ this.state = state;
+ }
+
+ @XmlAttribute(name = "type")
+ public void setSearch(Search search)
+ {
+ this.search = search;
+ }
+
+ @XmlAttribute
+ public void setProperty(String property)
+ {
+ this.property = property;
+ }
+
+ public void toString(JBossStringBuilder buffer)
+ {
+ super.toString(buffer);
+ buffer.append("search=").append(search);
+ }
+
+ public void toShortString(JBossStringBuilder buffer)
+ {
+ super.toShortString(buffer);
+ buffer.append("search=").append(search);
+ }
+
+ private class SearchDependencyItem extends AbstractDependencyItem
+ {
+ private SearchDependencyItem(Object name, Object iDependOn, ControllerState whenRequired, ControllerState dependentState)
+ {
+ super(name, iDependOn, whenRequired, dependentState);
+ }
+
+ public boolean resolve(Controller controller)
+ {
+ if (controller instanceof GraphController)
+ {
+ GraphController gc = (GraphController)controller;
+ ControllerContext context = gc.getContext(getIDependOn(), getDependentState(), search);
+ if (context != null)
+ {
+ setIDependOn(context.getName());
+ addDependsOnMe(controller, context);
+ setResolved(true);
+ }
+ else
+ {
+ setResolved(false);
+ }
+ return isResolved();
+ }
+ return false;
+ }
+
+ protected void toHumanReadableString(StringBuilder builder)
+ {
+ super.toHumanReadableString(builder);
+ builder.append("search=").append(search);
+ }
+ }
+}
Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/policy/AbstractBindingMetaData.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/policy/AbstractBindingMetaData.java 2008-08-11 07:33:40 UTC (rev 76910)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/policy/AbstractBindingMetaData.java 2008-08-11 12:42:15 UTC (rev 76911)
@@ -22,7 +22,6 @@
package org.jboss.beans.metadata.plugins.policy;
import java.io.Serializable;
-
import javax.xml.bind.annotation.XmlAnyElement;
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlElement;
@@ -39,6 +38,7 @@
import org.jboss.beans.metadata.plugins.AbstractSetMetaData;
import org.jboss.beans.metadata.plugins.AbstractValueFactoryMetaData;
import org.jboss.beans.metadata.plugins.AbstractValueMetaData;
+import org.jboss.beans.metadata.plugins.AbstractSearchValueMetaData;
import org.jboss.beans.metadata.plugins.StringValueMetaData;
import org.jboss.beans.metadata.plugins.ThisValueMetaData;
import org.jboss.beans.metadata.plugins.ValueMetaDataAware;
@@ -94,6 +94,7 @@
@XmlElement(name="array", type=AbstractArrayMetaData.class),
@XmlElement(name="collection", type=AbstractCollectionMetaData.class),
@XmlElement(name="inject", type=AbstractInjectionValueMetaData.class),
+ @XmlElement(name="search", type= AbstractSearchValueMetaData.class),
@XmlElement(name="list", type=AbstractListMetaData.class),
@XmlElement(name="map", type=AbstractMapMetaData.class),
@XmlElement(name="null", type=AbstractValueMetaData.class),
Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/annotations/SearchPropertyAnnotationPlugin.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/annotations/SearchPropertyAnnotationPlugin.java 2008-08-11 07:33:40 UTC (rev 76910)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/annotations/SearchPropertyAnnotationPlugin.java 2008-08-11 12:42:15 UTC (rev 76911)
@@ -21,13 +21,8 @@
*/
package org.jboss.kernel.plugins.annotations;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Arrays;
-
import org.jboss.beans.metadata.api.annotations.Search;
import org.jboss.beans.metadata.spi.ValueMetaData;
-import org.jboss.dependency.spi.ControllerState;
/**
* Search value annotation plugin.
@@ -38,17 +33,6 @@
{
public final static SearchPropertyAnnotationPlugin INSTANCE = new SearchPropertyAnnotationPlugin();
- private static final Map<String, org.jboss.dependency.plugins.graph.Search> types;
-
- static
- {
- types = new HashMap<String,org.jboss.dependency.plugins.graph.Search>();
- for (org.jboss.dependency.plugins.graph.Search search : org.jboss.dependency.plugins.graph.Search.values())
- {
- types.put(search.getType().toUpperCase(), search);
- }
- }
-
protected SearchPropertyAnnotationPlugin()
{
super(Search.class);
@@ -56,23 +40,6 @@
public ValueMetaData createValueMetaData(Search search)
{
- String searchType = search.type();
- org.jboss.dependency.plugins.graph.Search type = types.get(searchType.toUpperCase());
- if (type == null)
- throw new IllegalArgumentException("No such search type: " + searchType + ", available: " + Arrays.toString(org.jboss.dependency.plugins.graph.Search.values()));
-
- ControllerState state = null;
- if (isAttributePresent(search.dependentState()))
- state = new ControllerState(search.dependentState());
- String property= null;
- if (isAttributePresent(search.property()))
- property = search.property();
-
- return new SearchValueMetaData(
- search.bean(),
- state,
- type,
- property
- );
+ return ValueUtil.createValueMetaData(search);
}
}
\ No newline at end of file
Deleted: projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/annotations/SearchValueMetaData.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/annotations/SearchValueMetaData.java 2008-08-11 07:33:40 UTC (rev 76910)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/annotations/SearchValueMetaData.java 2008-08-11 12:42:15 UTC (rev 76911)
@@ -1,165 +0,0 @@
-/*
-* JBoss, Home of Professional Open Source
-* Copyright 2006, JBoss Inc., and individual contributors as indicated
-* by the @authors tag. See the copyright.txt 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.plugins.annotations;
-
-import org.jboss.beans.metadata.plugins.AbstractValueMetaData;
-import org.jboss.beans.metadata.spi.MetaDataVisitor;
-import org.jboss.dependency.plugins.AbstractDependencyItem;
-import org.jboss.dependency.plugins.graph.Search;
-import org.jboss.dependency.spi.Controller;
-import org.jboss.dependency.spi.ControllerContext;
-import org.jboss.dependency.spi.ControllerState;
-import org.jboss.dependency.spi.DependencyItem;
-import org.jboss.dependency.spi.dispatch.AttributeDispatchContext;
-import org.jboss.dependency.spi.graph.GraphController;
-import org.jboss.reflect.spi.TypeInfo;
-import org.jboss.util.JBossStringBuilder;
-
-/**
- * Search value metadata.
- *
- * @author <a href="mailto:ales.justin at jboss.com">Ales Justin</a>
- */
-public class SearchValueMetaData extends AbstractValueMetaData
-{
- /** The serialVersionUID */
- private static final long serialVersionUID = 1L;
-
- private ControllerState state;
- private org.jboss.dependency.plugins.graph.Search search;
- private String property;
-
- private ControllerContext context;
-
- public SearchValueMetaData(Object value, ControllerState state, Search search, String property)
- {
- super(value);
- if (search == null)
- throw new IllegalArgumentException("Null search type");
-
- this.state = state;
- this.search = search;
- this.property = property;
- }
-
- public Object getValue(TypeInfo info, ClassLoader cl) throws Throwable
- {
- // we're here, so it must be GraphController instance
- Controller controller = context.getController();
- GraphController gc = (GraphController)controller;
-
- ControllerState dependentState = state;
- if (dependentState == null)
- dependentState = ControllerState.INSTALLED;
- ControllerContext context = gc.getContext(getUnderlyingValue(), dependentState, search);
-
- Object result;
- if (property != null && property.length() > 0)
- {
- if (context instanceof AttributeDispatchContext)
- {
- AttributeDispatchContext adc = (AttributeDispatchContext)context;
- result = adc.get(property);
- }
- else
- throw new IllegalArgumentException(
- "Cannot use property attribute, context is not AttributeDispatchContext: " + context +
- ", metadata: " + this);
- }
- else
- {
- result = context.getTarget();
- }
-
- return info != null ? info.convertValue(result) : result;
- }
-
- public void initialVisit(MetaDataVisitor visitor)
- {
- context = visitor.getControllerContext();
-
- super.initialVisit(visitor);
- }
-
- public void describeVisit(MetaDataVisitor visitor)
- {
- Object name = context.getName();
- Object iDependOn = getUnderlyingValue();
-
- ControllerState whenRequired = visitor.getContextState();
- ControllerState dependentState = state;
- if (dependentState == null)
- dependentState = ControllerState.INSTALLED;
-
- DependencyItem item = new SearchDependencyItem(name, iDependOn, whenRequired, dependentState);
- visitor.addDependency(item);
-
- super.describeVisit(visitor);
- }
-
- public void toString(JBossStringBuilder buffer)
- {
- super.toString(buffer);
- buffer.append("search=").append(search);
- }
-
- public void toShortString(JBossStringBuilder buffer)
- {
- super.toShortString(buffer);
- buffer.append("search=").append(search);
- }
-
- private class SearchDependencyItem extends AbstractDependencyItem
- {
- private SearchDependencyItem(Object name, Object iDependOn, ControllerState whenRequired, ControllerState dependentState)
- {
- super(name, iDependOn, whenRequired, dependentState);
- }
-
- public boolean resolve(Controller controller)
- {
- if (controller instanceof GraphController)
- {
- GraphController gc = (GraphController)controller;
- ControllerContext context = gc.getContext(getIDependOn(), getDependentState(), search);
- if (context != null)
- {
- setIDependOn(context.getName());
- addDependsOnMe(controller, context);
- setResolved(true);
- }
- else
- {
- setResolved(false);
- }
- return isResolved();
- }
- return false;
- }
-
- protected void toHumanReadableString(StringBuilder builder)
- {
- super.toHumanReadableString(builder);
- builder.append("search=").append(search);
- }
- }
-}
Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/annotations/ValueUtil.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/annotations/ValueUtil.java 2008-08-11 07:33:40 UTC (rev 76910)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/annotations/ValueUtil.java 2008-08-11 12:42:15 UTC (rev 76911)
@@ -23,6 +23,9 @@
import java.util.List;
import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Map;
+import java.util.HashMap;
import org.jboss.beans.metadata.api.annotations.Inject;
import org.jboss.beans.metadata.api.annotations.NullValue;
@@ -32,12 +35,14 @@
import org.jboss.beans.metadata.api.annotations.Value;
import org.jboss.beans.metadata.api.annotations.ValueFactory;
import org.jboss.beans.metadata.api.annotations.JavaBeanValue;
+import org.jboss.beans.metadata.api.annotations.Search;
import org.jboss.beans.metadata.api.model.FromContext;
import org.jboss.beans.metadata.spi.ValueMetaData;
import org.jboss.beans.metadata.spi.ParameterMetaData;
import org.jboss.beans.metadata.plugins.AbstractInjectionValueMetaData;
import org.jboss.beans.metadata.plugins.AbstractValueFactoryMetaData;
import org.jboss.beans.metadata.plugins.AbstractParameterMetaData;
+import org.jboss.beans.metadata.plugins.AbstractSearchValueMetaData;
import org.jboss.dependency.spi.ControllerState;
/**
@@ -47,6 +52,18 @@
*/
final class ValueUtil
{
+ /** The search types */
+ private static final Map<String, org.jboss.dependency.plugins.graph.Search> types;
+
+ static
+ {
+ types = new HashMap<String,org.jboss.dependency.plugins.graph.Search>();
+ for (org.jboss.dependency.plugins.graph.Search search : org.jboss.dependency.plugins.graph.Search.values())
+ {
+ types.put(search.getType().toUpperCase(), search);
+ }
+ }
+
/**
* Does value already exist.
*
@@ -242,4 +259,32 @@
factory.setWhenRequiredState(new ControllerState(annotation.whenRequiredState()));
return factory;
}
+
+ /**
+ * Create search value meta data.
+ *
+ * @param annotation the annotation
+ * @return search meta data
+ */
+ static ValueMetaData createValueMetaData(Search annotation)
+ {
+ String searchType = annotation.type();
+ org.jboss.dependency.plugins.graph.Search type = types.get(searchType.toUpperCase());
+ if (type == null)
+ throw new IllegalArgumentException("No such search type: " + searchType + ", available: " + Arrays.toString(org.jboss.dependency.plugins.graph.Search.values()));
+
+ ControllerState state = null;
+ if (isAttributePresent(annotation.dependentState()))
+ state = new ControllerState(annotation.dependentState());
+ String property = null;
+ if (isAttributePresent(annotation.property()))
+ property = annotation.property();
+
+ return new AbstractSearchValueMetaData(
+ annotation.bean(),
+ state,
+ type,
+ property
+ );
+ }
}
Modified: projects/microcontainer/trunk/kernel/src/resources/main/schema/bean-deployer_2_0.xsd
===================================================================
--- projects/microcontainer/trunk/kernel/src/resources/main/schema/bean-deployer_2_0.xsd 2008-08-11 07:33:40 UTC (rev 76910)
+++ projects/microcontainer/trunk/kernel/src/resources/main/schema/bean-deployer_2_0.xsd 2008-08-11 12:42:15 UTC (rev 76911)
@@ -83,6 +83,11 @@
<xsd:extension base="injectionType"/>
</xsd:complexContent>
</xsd:complexType>
+ <xsd:complexType name="searchType">
+ <xsd:complexContent>
+ <xsd:extension base="searchType"/>
+ </xsd:complexContent>
+ </xsd:complexType>
<xsd:complexType name="valueFactoryType">
<xsd:complexContent>
<xsd:extension base="valueFactoryType"/>
Modified: projects/microcontainer/trunk/kernel/src/resources/main/schema/jboss-beans-common_2_0.xsd
===================================================================
--- projects/microcontainer/trunk/kernel/src/resources/main/schema/jboss-beans-common_2_0.xsd 2008-08-11 07:33:40 UTC (rev 76910)
+++ projects/microcontainer/trunk/kernel/src/resources/main/schema/jboss-beans-common_2_0.xsd 2008-08-11 12:42:15 UTC (rev 76911)
@@ -411,6 +411,23 @@
<xsd:attribute name="fromContext" type="contextType" use="optional"/>
</xsd:complexType>
+ <xsd:complexType name="searchType">
+ <xsd:annotation>
+ <xsd:documentation>
+ <![CDATA[
+ e.g. Search injection - by scope.
+ <bean name="InjectedIntoMe" ...>
+ <property name="transactionManager"><search bean="someTMbean" type="top"/></property>
+ </bean>
+ ]]>
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:attribute name="bean" type="xsd:string" use="required"/>
+ <xsd:attribute name="property" type="xsd:string" use="optional"/>
+ <xsd:attribute name="state" type="controllerStateType" use="optional"/>
+ <xsd:attribute name="type" type="searchTypeType" use="required"/>
+ </xsd:complexType>
+
<xsd:complexType name="valueFactoryType">
<xsd:annotation>
<xsd:documentation>
@@ -1068,6 +1085,31 @@
</xsd:restriction>
</xsd:simpleType>
+ <xsd:simpleType name="searchTypeType">
+ <xsd:annotation>
+ <xsd:documentation>
+ <![CDATA[
+ You can set the search lookup by type:
+ Valid values include:
+ DEFAULT,
+ LOCAL,
+ TOP,
+ PARENT_ONLY,
+ PARENT,
+ DEPTH,
+ LEAVES,
+ WIDTH,
+ CHILD_ONLY_DEPTH,
+ CHILD_ONLY_LEAVES,
+ CHILD_ONLY_WIDTH
+ ]]>
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction base="xsd:string">
+ <xsd:whiteSpace value="collapse"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
<xsd:simpleType name="optionType">
<xsd:annotation>
<xsd:documentation>
Modified: projects/microcontainer/trunk/kernel/src/resources/tests/org/jboss/test/kernel/deployment/test/ScopingOverrideTestCase.xml
===================================================================
--- projects/microcontainer/trunk/kernel/src/resources/tests/org/jboss/test/kernel/deployment/test/ScopingOverrideTestCase.xml 2008-08-11 07:33:40 UTC (rev 76910)
+++ projects/microcontainer/trunk/kernel/src/resources/tests/org/jboss/test/kernel/deployment/test/ScopingOverrideTestCase.xml 2008-08-11 12:42:15 UTC (rev 76911)
@@ -6,7 +6,7 @@
<bean name="deploy1" class="org.jboss.test.kernel.deployment.support.SimpleObjectWithBean">
<annotation>@org.jboss.metadata.plugins.scope.ApplicationScope("testApp")</annotation>
<annotation>@org.jboss.metadata.plugins.scope.DeploymentScope("deployment1")</annotation>
- <property name="simpleBean"><inject bean="simple"/></property>
+ <property name="simpleBean"><search bean="simple" type="local"/></property>
</bean>
<bean name="deploy2" class="org.jboss.test.kernel.deployment.support.SimpleObjectWithBean">
@@ -15,8 +15,15 @@
<property name="simpleBean"><inject bean="simple"/></property>
</bean>
+ <bean name="simple2" class="org.jboss.test.kernel.deployment.support.SimpleBeanImpl">
+ <annotation>@org.jboss.beans.metadata.api.annotations.Aliases({"simple"})</annotation>
+ <constructor>
+ <parameter>main</parameter>
+ </constructor>
+ </bean>
- <bean name="simple" class="org.jboss.test.kernel.deployment.support.SimpleBeanImpl">
+ <bean name="simple1" class="org.jboss.test.kernel.deployment.support.SimpleBeanImpl">
+ <annotation>@org.jboss.beans.metadata.api.annotations.Aliases({"simple"})</annotation>
<annotation>@org.jboss.metadata.plugins.scope.ApplicationScope("testApp")</annotation>
<annotation>@org.jboss.metadata.plugins.scope.DeploymentScope("deployment1")</annotation>
<constructor>
@@ -24,10 +31,4 @@
</constructor>
</bean>
- <bean name="simple" class="org.jboss.test.kernel.deployment.support.SimpleBeanImpl">
- <constructor>
- <parameter>main</parameter>
- </constructor>
- </bean>
-
</deployment>
More information about the jboss-cvs-commits
mailing list