[jboss-cvs] JBossAS SVN: r90889 - in projects/kernel/trunk/kernel/src: main/java/org/jboss/beans/metadata/spi/builder and 2 other directories.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Tue Jul 7 05:48:13 EDT 2009
Author: alesj
Date: 2009-07-07 05:48:13 -0400 (Tue, 07 Jul 2009)
New Revision: 90889
Modified:
projects/kernel/trunk/kernel/src/main/java/org/jboss/beans/metadata/plugins/builder/BeanMetaDataBuilderImpl.java
projects/kernel/trunk/kernel/src/main/java/org/jboss/beans/metadata/spi/builder/BeanMetaDataBuilder.java
projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/annotations/BeanAnnotationPlugin.java
projects/kernel/trunk/kernel/src/test/java/org/jboss/test/kernel/config/test/BeanMetaDataBuilderTestCase.java
Log:
[JBKERNEL-43]; add value factory support to BMDBuilder.
Modified: projects/kernel/trunk/kernel/src/main/java/org/jboss/beans/metadata/plugins/builder/BeanMetaDataBuilderImpl.java
===================================================================
--- projects/kernel/trunk/kernel/src/main/java/org/jboss/beans/metadata/plugins/builder/BeanMetaDataBuilderImpl.java 2009-07-07 09:44:53 UTC (rev 90888)
+++ projects/kernel/trunk/kernel/src/main/java/org/jboss/beans/metadata/plugins/builder/BeanMetaDataBuilderImpl.java 2009-07-07 09:48:13 UTC (rev 90889)
@@ -32,8 +32,8 @@
import org.jboss.beans.info.spi.BeanAccessMode;
import org.jboss.beans.metadata.api.model.AutowireType;
+import org.jboss.beans.metadata.api.model.FromContext;
import org.jboss.beans.metadata.api.model.InjectOption;
-import org.jboss.beans.metadata.api.model.FromContext;
import org.jboss.beans.metadata.plugins.AbstractAnnotationMetaData;
import org.jboss.beans.metadata.plugins.AbstractArrayMetaData;
import org.jboss.beans.metadata.plugins.AbstractBeanMetaData;
@@ -53,16 +53,19 @@
import org.jboss.beans.metadata.plugins.AbstractRelatedClassMetaData;
import org.jboss.beans.metadata.plugins.AbstractSetMetaData;
import org.jboss.beans.metadata.plugins.AbstractSupplyMetaData;
+import org.jboss.beans.metadata.plugins.AbstractValueFactoryMetaData;
import org.jboss.beans.metadata.plugins.AbstractValueMetaData;
import org.jboss.beans.metadata.plugins.DirectAnnotationMetaData;
import org.jboss.beans.metadata.plugins.StringValueMetaData;
import org.jboss.beans.metadata.plugins.ThisValueMetaData;
+import org.jboss.beans.metadata.plugins.AbstractParameterMetaData;
import org.jboss.beans.metadata.spi.AnnotationMetaData;
import org.jboss.beans.metadata.spi.BeanMetaData;
import org.jboss.beans.metadata.spi.BeanMetaDataFactory;
import org.jboss.beans.metadata.spi.ClassLoaderMetaData;
import org.jboss.beans.metadata.spi.DemandMetaData;
import org.jboss.beans.metadata.spi.DependencyMetaData;
+import org.jboss.beans.metadata.spi.ParameterMetaData;
import org.jboss.beans.metadata.spi.PropertyMetaData;
import org.jboss.beans.metadata.spi.RelatedClassMetaData;
import org.jboss.beans.metadata.spi.SupplyMetaData;
@@ -1023,6 +1026,20 @@
return new AbstractValueMetaData(value);
}
+ public ValueMetaData createValueFactory(Object bean, String method, ParameterMetaData... parameters)
+ {
+ AbstractValueFactoryMetaData value = new AbstractValueFactoryMetaData(bean, method);
+ value.setParameters(Arrays.asList(parameters));
+ return value;
+ }
+
+ public ParameterMetaData createParameter(ValueMetaData value, String type, int index)
+ {
+ ParameterMetaData parameter = new AbstractParameterMetaData(type, value);
+ parameter.setIndex(index);
+ return parameter;
+ }
+
public ValueMetaData createString(String type, String value)
{
StringValueMetaData result = new StringValueMetaData(value);
Modified: projects/kernel/trunk/kernel/src/main/java/org/jboss/beans/metadata/spi/builder/BeanMetaDataBuilder.java
===================================================================
--- projects/kernel/trunk/kernel/src/main/java/org/jboss/beans/metadata/spi/builder/BeanMetaDataBuilder.java 2009-07-07 09:44:53 UTC (rev 90888)
+++ projects/kernel/trunk/kernel/src/main/java/org/jboss/beans/metadata/spi/builder/BeanMetaDataBuilder.java 2009-07-07 09:48:13 UTC (rev 90889)
@@ -39,6 +39,7 @@
import org.jboss.beans.metadata.spi.ClassLoaderMetaData;
import org.jboss.beans.metadata.spi.ConstructorMetaData;
import org.jboss.beans.metadata.spi.LifecycleMetaData;
+import org.jboss.beans.metadata.spi.ParameterMetaData;
import org.jboss.beans.metadata.spi.PropertyMetaData;
import org.jboss.beans.metadata.spi.RelatedClassMetaData;
import org.jboss.beans.metadata.spi.ValueMetaData;
@@ -1887,6 +1888,98 @@
public abstract ValueMetaData createValue(Object value);
/**
+ * Create a value factory
+ *
+ * @param bean the other bean's name
+ * @param method the method's name
+ * @param parameter the parameter
+ * @return the value factory
+ */
+ public ValueMetaData createValueFactory(Object bean, String method, String parameter)
+ {
+ return createValueFactory(bean, method, createParameter(parameter, String.class.getName()));
+ }
+
+ /**
+ * Create a value factory
+ *
+ * @param bean the other bean's name
+ * @param method the method's name
+ * @param parameters the parameters
+ * @return the value factory
+ */
+ public abstract ValueMetaData createValueFactory(Object bean, String method, ParameterMetaData... parameters);
+
+ /**
+ * Create parameter.
+ *
+ * @param value the value
+ * @return new parameter metadata instance
+ */
+ public ParameterMetaData createParameter(Object value)
+ {
+ return createParameter(value, null);
+ }
+
+ /**
+ * Create parameter.
+ *
+ * @param value the value
+ * @param type the type
+ * @return new parameter metadata instance
+ */
+ public ParameterMetaData createParameter(Object value, String type)
+ {
+ return createParameter(value, type, -1);
+ }
+
+ /**
+ * Create parameter.
+ *
+ * @param value the value
+ * @param type the type
+ * @param index the index
+ * @return new parameter metadata instance
+ */
+ public ParameterMetaData createParameter(Object value, String type, int index)
+ {
+ return createParameter(createValue(value), type, index);
+ }
+
+ /**
+ * Create parameter.
+ *
+ * @param value the value
+ * @return new parameter metadata instance
+ */
+ public ParameterMetaData createParameter(ValueMetaData value)
+ {
+ return createParameter(value, null);
+ }
+
+ /**
+ * Create parameter.
+ *
+ * @param value the value
+ * @param type the type
+ * @return new parameter metadata instance
+ */
+ public ParameterMetaData createParameter(ValueMetaData value, String type)
+ {
+ return createParameter(value, type, -1);
+ }
+
+ /**
+ * Create parameter.
+ *
+ * @param value the value
+ * @param type the type
+ * @param index the index
+ * @return new parameter metadata instance
+ */
+ public abstract ParameterMetaData createParameter(ValueMetaData value, String type, int index);
+
+ /**
* Create a string value
*
* @param type the type to be converted into
Modified: projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/annotations/BeanAnnotationPlugin.java
===================================================================
--- projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/annotations/BeanAnnotationPlugin.java 2009-07-07 09:44:53 UTC (rev 90888)
+++ projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/annotations/BeanAnnotationPlugin.java 2009-07-07 09:48:13 UTC (rev 90889)
@@ -47,6 +47,8 @@
{
AbstractBeanMetaData abmd = checkIfNotAbstractBeanMetaDataSpecific(beanMetaData);
+ // TODO - add missing attributes
+
if (abmd.getAutowireType() == null)
abmd.setAutowireType(annotation.autowireType());
if (abmd.getMode() == null)
Modified: projects/kernel/trunk/kernel/src/test/java/org/jboss/test/kernel/config/test/BeanMetaDataBuilderTestCase.java
===================================================================
--- projects/kernel/trunk/kernel/src/test/java/org/jboss/test/kernel/config/test/BeanMetaDataBuilderTestCase.java 2009-07-07 09:44:53 UTC (rev 90888)
+++ projects/kernel/trunk/kernel/src/test/java/org/jboss/test/kernel/config/test/BeanMetaDataBuilderTestCase.java 2009-07-07 09:48:13 UTC (rev 90889)
@@ -26,6 +26,7 @@
import java.util.Collection;
import java.util.Collections;
import java.util.HashSet;
+import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
@@ -34,17 +35,19 @@
import org.jboss.beans.metadata.api.model.AutowireType;
import org.jboss.beans.metadata.api.model.FromContext;
import org.jboss.beans.metadata.plugins.AbstractBeanMetaData;
+import org.jboss.beans.metadata.plugins.AbstractDependencyValueMetaData;
+import org.jboss.beans.metadata.plugins.AbstractInjectionValueMetaData;
import org.jboss.beans.metadata.plugins.AbstractRelatedClassMetaData;
+import org.jboss.beans.metadata.plugins.AbstractValueFactoryMetaData;
import org.jboss.beans.metadata.plugins.InstallCallbackMetaData;
import org.jboss.beans.metadata.plugins.UninstallCallbackMetaData;
-import org.jboss.beans.metadata.plugins.AbstractDependencyValueMetaData;
-import org.jboss.beans.metadata.plugins.AbstractInjectionValueMetaData;
import org.jboss.beans.metadata.plugins.builder.BeanMetaDataBuilderFactory;
import org.jboss.beans.metadata.spi.AnnotationMetaData;
import org.jboss.beans.metadata.spi.BeanMetaData;
import org.jboss.beans.metadata.spi.BeanMetaDataFactory;
import org.jboss.beans.metadata.spi.CallbackMetaData;
import org.jboss.beans.metadata.spi.LifecycleMetaData;
+import org.jboss.beans.metadata.spi.ParameterMetaData;
import org.jboss.beans.metadata.spi.PropertyMetaData;
import org.jboss.beans.metadata.spi.RelatedClassMetaData;
import org.jboss.beans.metadata.spi.ValueMetaData;
@@ -1014,4 +1017,35 @@
assertEquals(ControllerState.CREATE, inject.getDependentState());
assertEquals(Search.CHILD_ONLY_DEPTH, inject.getSearch());
}
+
+ public void testValueFactory() throws Throwable
+ {
+ BeanMetaDataBuilder builder = BeanMetaDataBuilder.createBuilder("test");
+ ValueMetaData v1 = builder.createValueFactory("other", "somemethod1", "key");
+ builder.addPropertyMetaData("v1", v1);
+ ParameterMetaData p1 = builder.createParameter(123);
+ ParameterMetaData p2 = builder.createParameter(builder.createInject("third"), Long.class.getName(), 1);
+ ValueMetaData v2 = builder.createValueFactory("other", "somemethod2", p1, p2);
+ builder.addPropertyMetaData("v2", v2);
+ BeanMetaData bmd = builder.getBeanMetaData();
+
+ Set<PropertyMetaData> properties = bmd.getProperties();
+ assertNotNull(properties);
+ assertEquals(2, properties.size());
+ Iterator<PropertyMetaData> iter = properties.iterator();
+ // 1
+ PropertyMetaData pmd = iter.next();
+ ValueMetaData vmd = pmd.getValue();
+ AbstractValueFactoryMetaData vf = assertInstanceOf(vmd, AbstractValueFactoryMetaData.class, false);
+ assertEquals("other", vf.getValue());
+ assertTrue(vf.getMethod().startsWith("somemethod"));
+ assertEquals(Integer.parseInt(vf.getMethod().substring("somemethod".length())), vf.getParameters().size());
+ // 2
+ pmd = iter.next();
+ vmd = pmd.getValue();
+ vf = assertInstanceOf(vmd, AbstractValueFactoryMetaData.class, false);
+ assertEquals("other", vf.getValue());
+ assertTrue(vf.getMethod().startsWith("somemethod"));
+ assertEquals(Integer.parseInt(vf.getMethod().substring("somemethod".length())), vf.getParameters().size());
+ }
}
More information about the jboss-cvs-commits
mailing list