[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