[jboss-cvs] JBossAS SVN: r64094 - in projects/microcontainer/trunk/kernel/src: main/org/jboss/beans/metadata/spi and 7 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Tue Jul 17 05:22:47 EDT 2007


Author: alesj
Date: 2007-07-17 05:22:47 -0400 (Tue, 17 Jul 2007)
New Revision: 64094

Added:
   projects/microcontainer/trunk/kernel/src/resources/tests/org/jboss/test/kernel/deployment/xml/test/BeanFactoryWithNameAware.xml
   projects/microcontainer/trunk/kernel/src/resources/tests/org/jboss/test/kernel/deployment/xml/test/BeanWithNameAware.xml
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/BeanMetaData.java
   projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/deployment/xml/BeanFactoryHandler.java
   projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/deployment/xml/BeanHandler.java
   projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/deployment/xml/BeanSchemaBinding.java
   projects/microcontainer/trunk/kernel/src/resources/main/schema/bean-deployer_1_0.xsd
   projects/microcontainer/trunk/kernel/src/resources/main/schema/bean-deployer_2_0.xsd
   projects/microcontainer/trunk/kernel/src/resources/tests/org/jboss/test/kernel/deployment/test/NamingBeanTestCase.xml
   projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/support/NameAwareBean.java
   projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/test/NamingBeanTestCase.java
   projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/BeanFactoryTestCase.java
   projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/BeanTestCase.java
Log:
JBMICROCONT-192; name-aware attribute --> defaults to setName method.

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	2007-07-17 06:20:39 UTC (rev 64093)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractBeanMetaData.java	2007-07-17 09:22:47 UTC (rev 64094)
@@ -71,6 +71,9 @@
    /** The name of this instance */
    protected String name;
 
+   /** The name aware flag */
+   protected boolean nameAware;
+
    /** The name method name */
    protected String nameMethod;
 
@@ -343,6 +346,21 @@
       flushJBossObjectCache();
    }
 
+   public boolean isNameAware()
+   {
+      return nameAware;
+   }
+
+   /**
+    * Set the name aware.
+    *
+    * @param nameAware the flag
+    */
+   public void setNameAware(boolean nameAware)
+   {
+      this.nameAware = nameAware;
+   }
+
    public String getNameMethod()
    {
       return nameMethod;

Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/spi/BeanMetaData.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/spi/BeanMetaData.java	2007-07-17 06:20:39 UTC (rev 64093)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/spi/BeanMetaData.java	2007-07-17 09:22:47 UTC (rev 64094)
@@ -56,6 +56,13 @@
    void setName(String name);
 
    /**
+    * Needs bean name injection.
+    *
+    * @return true for name injection
+    */
+   boolean isNameAware();
+
+   /**
     * Get the method to inject name.
     *
     * @return the name method name

Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/deployment/xml/BeanFactoryHandler.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/deployment/xml/BeanFactoryHandler.java	2007-07-17 06:20:39 UTC (rev 64093)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/deployment/xml/BeanFactoryHandler.java	2007-07-17 09:22:47 UTC (rev 64094)
@@ -61,6 +61,8 @@
             bean.setBeanClass(attrs.getValue(i));
          else if ("mode".equals(localName))
             bean.setMode(new ControllerMode(attrs.getValue(i)));
+         else if ("name-aware".equals(localName))
+            bean.setNameAware(Boolean.parseBoolean(attrs.getValue(i)));
          else if ("name-method".equals(localName))
             bean.setNameMethod(attrs.getValue(i));
       }
@@ -85,6 +87,11 @@
          if (constructor.getFactory() == null && constructor.getFactoryClass() == null)
             throw new IllegalArgumentException("BeanFactory should have a class attribute or the constructor element should have a either a factoryClass attribute or a factory element.");
       }
+      // check for default setName method.
+      if (bean.isNameAware() && bean.getNameMethod() == null)
+      {
+         bean.setNameMethod("setName");
+      }
       return bean;
    }
 }

Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/deployment/xml/BeanHandler.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/deployment/xml/BeanHandler.java	2007-07-17 06:20:39 UTC (rev 64093)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/deployment/xml/BeanHandler.java	2007-07-17 09:22:47 UTC (rev 64094)
@@ -68,6 +68,8 @@
             bean.setAutowireType(AutowireType.getInstance(attrs.getValue(i)));
          else if ("autowire-candidate".equals(localName))
             bean.setAutowireCandidate(Boolean.parseBoolean(attrs.getValue(i)));
+         else if ("name-aware".equals(localName))
+            bean.setNameAware(Boolean.parseBoolean(attrs.getValue(i)));
          else if ("name-method".equals(localName))
             bean.setNameMethod(attrs.getValue(i));
       }
@@ -89,6 +91,11 @@
          else if (constructor.getFactory() == null && constructor.getFactoryClass() == null)
             throw new IllegalArgumentException("Bean should have a class attribute or the constructor element should have one of a factoryClass attribute or a factory element, or embedded value.");
       }
+      // check for default setName method.
+      if (bean.isNameAware() && bean.getNameMethod() == null)
+      {
+         bean.setNameMethod("setName");
+      }
       return bean;
    }
 }

Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/deployment/xml/BeanSchemaBinding.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/deployment/xml/BeanSchemaBinding.java	2007-07-17 06:20:39 UTC (rev 64093)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/deployment/xml/BeanSchemaBinding.java	2007-07-17 09:22:47 UTC (rev 64094)
@@ -352,10 +352,23 @@
                   bean.setBean(attrs.getValue(i));
                else if ("mode".equals(localName))
                   bean.setMode(new ControllerMode(attrs.getValue(i)));
+               else if ("name-aware".equals(localName))
+                  bean.setNameAware(Boolean.parseBoolean(attrs.getValue(i)));
                else if ("name-method".equals(localName))
                   bean.setNameMethod(attrs.getValue(i));
             }
          }
+
+         public Object endElement(Object o, QName qName, ElementBinding element)
+         {
+            AbstractBeanMetaData bean = (AbstractBeanMetaData)o;
+            // check for default setName method.
+            if (bean.isNameAware() && bean.getNameMethod() == null)
+            {
+               bean.setNameMethod("setName");
+            }
+            return bean;
+         }
       });
 
       // beanfactory binding
@@ -379,10 +392,23 @@
                   bean.setBeanClass(attrs.getValue(i));
                else if ("mode".equals(localName))
                   bean.setMode(new ControllerMode(attrs.getValue(i)));
+               else if ("name-aware".equals(localName))
+                  bean.setNameAware(Boolean.parseBoolean(attrs.getValue(i)));
                else if ("name-method".equals(localName))
                   bean.setNameMethod(attrs.getValue(i));
             }
          }
+
+         public Object endElement(Object o, QName qName, ElementBinding element)
+         {
+            GenericBeanFactoryMetaData bean = (GenericBeanFactoryMetaData)o;
+            // check for default setName method.
+            if (bean.isNameAware() && bean.getNameMethod() == null)
+            {
+               bean.setNameMethod("setName");
+            }
+            return bean;
+         }
       });
 
       // bean has a classloader

Modified: projects/microcontainer/trunk/kernel/src/resources/main/schema/bean-deployer_1_0.xsd
===================================================================
--- projects/microcontainer/trunk/kernel/src/resources/main/schema/bean-deployer_1_0.xsd	2007-07-17 06:20:39 UTC (rev 64093)
+++ projects/microcontainer/trunk/kernel/src/resources/main/schema/bean-deployer_1_0.xsd	2007-07-17 09:22:47 UTC (rev 64094)
@@ -91,6 +91,7 @@
       <xsd:attribute name="name" type="xsd:string" use="optional"/>
       <xsd:attribute name="class" type="xsd:token" use="required"/>
       <xsd:attribute name="mode" type="controllerModeType" use="optional"/>
+      <xsd:attribute name="name-aware" type="xsd:boolean" use="optional"/>
       <xsd:attribute name="name-method" type="xsd:string" use="optional"/>
    </xsd:complexType>
 
@@ -157,6 +158,7 @@
       </xsd:sequence>
       <xsd:attribute name="name" type="xsd:string" use="optional"/>
       <xsd:attribute name="class" type="xsd:token" use="required"/>
+      <xsd:attribute name="name-aware" type="xsd:boolean" use="optional"/>
       <xsd:attribute name="name-method" type="xsd:string" use="optional"/>
    </xsd:complexType>
 

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	2007-07-17 06:20:39 UTC (rev 64093)
+++ projects/microcontainer/trunk/kernel/src/resources/main/schema/bean-deployer_2_0.xsd	2007-07-17 09:22:47 UTC (rev 64094)
@@ -110,6 +110,7 @@
       <xsd:attribute name="abstract" type="xsd:boolean" use="optional"/>
       <xsd:attribute name="autowire-type" type="autowireTypeType" use="optional"/>
       <xsd:attribute name="autowire-candidate" type="xsd:boolean" use="optional"/>
+      <xsd:attribute name="name-aware" type="xsd:boolean" use="optional"/>
       <xsd:attribute name="name-method" type="xsd:string" use="optional"/>
    </xsd:complexType>
 
@@ -180,6 +181,7 @@
       </xsd:sequence>
       <xsd:attribute name="name" type="xsd:string" use="optional"/>
       <xsd:attribute name="class" type="xsd:token" use="required"/>
+      <xsd:attribute name="name-aware" type="xsd:boolean" use="optional"/>
       <xsd:attribute name="name-method" type="xsd:string" use="optional"/>
    </xsd:complexType>
 

Modified: projects/microcontainer/trunk/kernel/src/resources/tests/org/jboss/test/kernel/deployment/test/NamingBeanTestCase.xml
===================================================================
--- projects/microcontainer/trunk/kernel/src/resources/tests/org/jboss/test/kernel/deployment/test/NamingBeanTestCase.xml	2007-07-17 06:20:39 UTC (rev 64093)
+++ projects/microcontainer/trunk/kernel/src/resources/tests/org/jboss/test/kernel/deployment/test/NamingBeanTestCase.xml	2007-07-17 09:22:47 UTC (rev 64094)
@@ -6,4 +6,8 @@
 
    <beanfactory name="factory" class="org.jboss.test.kernel.deployment.support.NameAwareBean" name-method="applyName" />
 
+   <bean name="set_name_bean" class="org.jboss.test.kernel.deployment.support.NameAwareBean" name-aware="true" />
+
+   <beanfactory name="set_name_factory" class="org.jboss.test.kernel.deployment.support.NameAwareBean" name-aware="true" />
+
 </deployment>

Added: projects/microcontainer/trunk/kernel/src/resources/tests/org/jboss/test/kernel/deployment/xml/test/BeanFactoryWithNameAware.xml
===================================================================
--- projects/microcontainer/trunk/kernel/src/resources/tests/org/jboss/test/kernel/deployment/xml/test/BeanFactoryWithNameAware.xml	                        (rev 0)
+++ projects/microcontainer/trunk/kernel/src/resources/tests/org/jboss/test/kernel/deployment/xml/test/BeanFactoryWithNameAware.xml	2007-07-17 09:22:47 UTC (rev 64094)
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<beanfactory xmlns="urn:jboss:bean-deployer:2.0" class="Dummy" name-aware="true" />

Added: projects/microcontainer/trunk/kernel/src/resources/tests/org/jboss/test/kernel/deployment/xml/test/BeanWithNameAware.xml
===================================================================
--- projects/microcontainer/trunk/kernel/src/resources/tests/org/jboss/test/kernel/deployment/xml/test/BeanWithNameAware.xml	                        (rev 0)
+++ projects/microcontainer/trunk/kernel/src/resources/tests/org/jboss/test/kernel/deployment/xml/test/BeanWithNameAware.xml	2007-07-17 09:22:47 UTC (rev 64094)
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<bean xmlns="urn:jboss:bean-deployer:2.0" class="Dummy" name-aware="true"/>

Modified: projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/support/NameAwareBean.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/support/NameAwareBean.java	2007-07-17 06:20:39 UTC (rev 64093)
+++ projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/support/NameAwareBean.java	2007-07-17 09:22:47 UTC (rev 64094)
@@ -35,6 +35,11 @@
       return name;
    }
 
+   public void setName(String name)
+   {
+      this.name = name;
+   }
+
    public void applyName(String name)
    {
       this.name = name;

Modified: projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/test/NamingBeanTestCase.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/test/NamingBeanTestCase.java	2007-07-17 06:20:39 UTC (rev 64093)
+++ projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/test/NamingBeanTestCase.java	2007-07-17 09:22:47 UTC (rev 64094)
@@ -55,5 +55,15 @@
       NameAwareBean b2 = (NameAwareBean)factory.createBean();
       assertNotNull(b2);
       assertEquals("factory", b2.getName());
+
+      NameAwareBean nsb = (NameAwareBean)getBean("set_name_bean");
+      assertNotNull(nsb);
+      assertEquals("set_name_bean", nsb.getName());
+
+      BeanFactory nsf = (BeanFactory)getBean("set_name_factory");
+      assertNotNull(nsf);
+      NameAwareBean b3 = (NameAwareBean)nsf.createBean();
+      assertNotNull(b3);
+      assertEquals("set_name_factory", b3.getName());
    }
 }

Modified: projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/BeanFactoryTestCase.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/BeanFactoryTestCase.java	2007-07-17 06:20:39 UTC (rev 64093)
+++ projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/BeanFactoryTestCase.java	2007-07-17 09:22:47 UTC (rev 64094)
@@ -705,6 +705,40 @@
       assertCallbacks(expected, factory.getUninstallCallbacks());
    }
 
+   public void testBeanFactoryWithNameAware() throws Exception
+   {
+      GenericBeanFactoryMetaData factory = unmarshalBeanFactory("BeanFactoryWithNameAware.xml");
+      assertTrue(factory.isNameAware());
+      assertNull(factory.getNameMethod());
+      PropertyMetaData property = factory.getProperty("nameMethod");
+      assertNotNull(property);
+      ValueMetaData value = property.getValue();
+      assertNotNull(value);
+      assertEquals("setName", value.getUnderlyingValue());
+      assertNull(factory.getName());
+      assertEquals(GenericBeanFactory.class.getName(), factory.getBean());
+      assertEquals("Dummy", factory.getBeanClass());
+      assertNull(factory.getMode());
+      assertNull(factory.getAnnotations());
+      assertNull(factory.getClassLoader());
+      assertNotNull(factory.getConstructor());
+      assertNull(factory.getProperty("constructor"));
+      assertNotNull(factory.getProperties());
+      assertNull(factory.getProperty("properties"));
+      assertNull(factory.getCreate());
+      assertNull(factory.getProperty("create"));
+      assertNull(factory.getStart());
+      assertNull(factory.getProperty("start"));
+      assertNull(factory.getStop());
+      assertNull(factory.getDestroy());
+      assertNull(factory.getDemands());
+      assertNull(factory.getSupplies());
+      assertNull(factory.getInstalls());
+      assertNull(factory.getUninstalls());
+      assertNull(factory.getInstallCallbacks());
+      assertNull(factory.getUninstallCallbacks());
+   }
+
    public void testBeanFactoryWithNameMethod() throws Exception
    {
       GenericBeanFactoryMetaData factory = unmarshalBeanFactory("BeanFactoryWithNameMethod.xml");

Modified: projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/BeanTestCase.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/BeanTestCase.java	2007-07-17 06:20:39 UTC (rev 64093)
+++ projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/xml/test/BeanTestCase.java	2007-07-17 09:22:47 UTC (rev 64094)
@@ -816,6 +816,31 @@
       assertNull(bean.getUninstallCallbacks());
    }
 
+   public void testBeanWithNameAware() throws Exception
+   {
+      AbstractBeanMetaData bean = unmarshalBean("BeanWithNameAware.xml");
+      assertTrue(bean.isNameAware());
+      assertEquals("setName", bean.getNameMethod());
+      assertNull(bean.getAutowireType());
+      assertNull(bean.getName());
+      assertEquals("Dummy", bean.getBean());
+      assertNull(bean.getMode());
+      assertNull(bean.getAnnotations());
+      assertNull(bean.getClassLoader());
+      assertNull(bean.getConstructor());
+      assertNull(bean.getProperties());
+      assertNull(bean.getCreate());
+      assertNull(bean.getStart());
+      assertNull(bean.getStop());
+      assertNull(bean.getDestroy());
+      assertNull(bean.getDemands());
+      assertNull(bean.getSupplies());
+      assertNull(bean.getInstalls());
+      assertNull(bean.getUninstalls());
+      assertNull(bean.getInstallCallbacks());
+      assertNull(bean.getUninstallCallbacks());
+   }
+
    public void testBeanWithNameMethod() throws Exception
    {
       AbstractBeanMetaData bean = unmarshalBean("BeanWithNameMethod.xml");




More information about the jboss-cvs-commits mailing list