[jboss-cvs] JBossAS SVN: r74003 - in projects/microcontainer/trunk/aop-mc-int/src: resources/tests/org/jboss/test/microcontainer/beans/test and 1 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Tue Jun 3 11:31:48 EDT 2008


Author: kabir.khan at jboss.com
Date: 2008-06-03 11:31:48 -0400 (Tue, 03 Jun 2008)
New Revision: 74003

Added:
   projects/microcontainer/trunk/aop-mc-int/src/resources/tests/org/jboss/test/microcontainer/beans/test/BeanMetaDataFactoryParserAopTestCaseNotAutomatic.xml
   projects/microcontainer/trunk/aop-mc-int/src/resources/tests/org/jboss/test/microcontainer/beans/test/BeanMetaDataFactoryParserDeploymentTestCaseNotAutomatic.xml
   projects/microcontainer/trunk/aop-mc-int/src/tests/org/jboss/test/microcontainer/beans/test/BeanMetaDataFactoryParserAopTestCase.java
   projects/microcontainer/trunk/aop-mc-int/src/tests/org/jboss/test/microcontainer/beans/test/BeanMetaDataFactoryParserDeploymentTestCase.java
   projects/microcontainer/trunk/aop-mc-int/src/tests/org/jboss/test/microcontainer/beans/test/BeanMetaDataFactoryParserTest.java
Modified:
   projects/microcontainer/trunk/aop-mc-int/src/main/org/jboss/aop/microcontainer/beans/metadata/AbstractAnnotationBeanMetaDataFactory.java
   projects/microcontainer/trunk/aop-mc-int/src/main/org/jboss/aop/microcontainer/beans/metadata/IntroductionBeanMetaDataFactory.java
   projects/microcontainer/trunk/aop-mc-int/src/main/org/jboss/aop/microcontainer/beans/metadata/PrecedenceBeanMetaDataFactory.java
Log:
[JBMICROCONT-297] Successive calls to getBeans() of the AOP BeanMetaDataFactories should yield beans with the same names

Modified: projects/microcontainer/trunk/aop-mc-int/src/main/org/jboss/aop/microcontainer/beans/metadata/AbstractAnnotationBeanMetaDataFactory.java
===================================================================
--- projects/microcontainer/trunk/aop-mc-int/src/main/org/jboss/aop/microcontainer/beans/metadata/AbstractAnnotationBeanMetaDataFactory.java	2008-06-03 14:50:30 UTC (rev 74002)
+++ projects/microcontainer/trunk/aop-mc-int/src/main/org/jboss/aop/microcontainer/beans/metadata/AbstractAnnotationBeanMetaDataFactory.java	2008-06-03 15:31:48 UTC (rev 74003)
@@ -83,8 +83,11 @@
    public List<BeanMetaData> getBeans()
    {
       ArrayList<BeanMetaData> result = new ArrayList<BeanMetaData>();
-      
-      BeanMetaDataBuilder builder = BeanMetaDataBuilder.createBuilder(GUID.asString(), getBeanClassName());
+      if (name == null)
+      {
+         name = GUID.asString();
+      }
+      BeanMetaDataBuilder builder = BeanMetaDataBuilder.createBuilder(name, getBeanClassName());
       builder.addPropertyMetaData("invisible", invisible);
       builder.addPropertyMetaData("expr", expr);
       builder.addPropertyMetaData("annotation", annotation);

Modified: projects/microcontainer/trunk/aop-mc-int/src/main/org/jboss/aop/microcontainer/beans/metadata/IntroductionBeanMetaDataFactory.java
===================================================================
--- projects/microcontainer/trunk/aop-mc-int/src/main/org/jboss/aop/microcontainer/beans/metadata/IntroductionBeanMetaDataFactory.java	2008-06-03 14:50:30 UTC (rev 74002)
+++ projects/microcontainer/trunk/aop-mc-int/src/main/org/jboss/aop/microcontainer/beans/metadata/IntroductionBeanMetaDataFactory.java	2008-06-03 15:31:48 UTC (rev 74003)
@@ -110,7 +110,6 @@
       ArrayList<BeanMetaData> result = new ArrayList<BeanMetaData>();
       
       //Add the Introduction
-      String name = getName();
       if (name == null)
       {
          name = GUID.asString();

Modified: projects/microcontainer/trunk/aop-mc-int/src/main/org/jboss/aop/microcontainer/beans/metadata/PrecedenceBeanMetaDataFactory.java
===================================================================
--- projects/microcontainer/trunk/aop-mc-int/src/main/org/jboss/aop/microcontainer/beans/metadata/PrecedenceBeanMetaDataFactory.java	2008-06-03 14:50:30 UTC (rev 74002)
+++ projects/microcontainer/trunk/aop-mc-int/src/main/org/jboss/aop/microcontainer/beans/metadata/PrecedenceBeanMetaDataFactory.java	2008-06-03 15:31:48 UTC (rev 74003)
@@ -60,7 +60,6 @@
       ArrayList<BeanMetaData> result = new ArrayList<BeanMetaData>();
       
       //Add the PrecedenceDef
-      String name = getName();
       if (name == null)
       {
          name = GUID.asString();

Added: projects/microcontainer/trunk/aop-mc-int/src/resources/tests/org/jboss/test/microcontainer/beans/test/BeanMetaDataFactoryParserAopTestCaseNotAutomatic.xml
===================================================================
--- projects/microcontainer/trunk/aop-mc-int/src/resources/tests/org/jboss/test/microcontainer/beans/test/BeanMetaDataFactoryParserAopTestCaseNotAutomatic.xml	                        (rev 0)
+++ projects/microcontainer/trunk/aop-mc-int/src/resources/tests/org/jboss/test/microcontainer/beans/test/BeanMetaDataFactoryParserAopTestCaseNotAutomatic.xml	2008-06-03 15:31:48 UTC (rev 74003)
@@ -0,0 +1,74 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<aop xmlns="urn:jboss:aop-beans:1.0">
+
+   <bean name="AspectManager" class="org.jboss.aop.AspectManager">
+      <constructor factoryClass="org.jboss.aop.AspectManager" factoryMethod="instance"/>
+   </bean>
+
+   <annotation expr="class(org.jboss.test.microcontainer.beans.POJO)" invisible="false">
+      @org.jboss.test.microcontainer.beans.Annotation1
+   </annotation>
+
+   <annotation-introduction expr="class(org.jboss.test.microcontainer.beans.POJO)" invisible="false">
+      @org.jboss.test.microcontainer.beans.Annotation1
+   </annotation-introduction>
+
+   <precedence xmlns="urn:jboss:aop-beans:1.0">
+      <interceptor-ref name="org.jboss.test.microcontainer.beans.TestInterceptor"/>
+      <advice aspect="org.jboss.test.microcontainer.beans.TestAspect" name="advice"/>
+   </precedence>
+
+   <introduction class="org.jboss.test.microcontainer.beans.POJO">
+      <mixin transient="true">
+         <interfaces>org.jboss.test.microcontainer.beans.MixinInterface</interfaces>
+         <class>org.jboss.test.microcontainer.beans.MixinImpl</class>
+      </mixin>
+   </introduction>
+
+   <pointcut name="NamedPointcut" expr="all(org.acme.POJO)"/>
+
+   <prepare expr="all(org.acme.POJO)"/>
+
+   <dynamic-cflow name="DynamicCFlow" class="org.jboss.test.microcontainer.beans.DynamicCFlowImpl"/>
+
+   <cflow-stack name="CFlow">
+      <not-called expr="void org.jboss.test.microcontainer.beans.test.CFlowTest->notCallPOJO(..)"/>
+      <called expr="void org.jboss.test.microcontainer.beans.test.CFlowTest->callPOJO(..)"/>
+   </cflow-stack>
+
+   <typedef name="TypeDef" expr="class(org.jboss.test.microcontainer.beans.POJO)"/>
+
+   <aspect class="org.jboss.test.microcontainer.beans.TestAspectWithProperty">
+      <property name="someProperty">This is only a test</property>
+   </aspect>
+
+   <interceptor class="org.jboss.test.microcontainer.beans.TestInterceptor"/>
+
+   <aspect class="org.jboss.test.microcontainer.beans.TestAspect"/>
+
+   <stack name="TestStack">
+      <advice aspect="org.jboss.test.microcontainer.beans.TestAspect" name="advice"/>
+   </stack>
+
+   <bind pointcut="execution(* org.jboss.test.microcontainer.beans.POJO->*(..))">
+      <advice aspect="org.jboss.test.microcontainer.beans.TestAspectWithProperty" name="advice"/>
+      <interceptor-ref name="org.jboss.test.microcontainer.beans.TestInterceptor"/>
+      <stack-ref name="TestStack"/>
+   </bind>
+
+   <arrayreplacement class="org.jboss.test.microcontainer.beans.woven.test.ClassWithArray"/>
+
+   <arraybind type="READ_WRITE">
+      <interceptor-ref name="org.jboss.test.microcontainer.beans.TestInterceptor"/>
+   </arraybind>
+
+   <metadata-loader tag="custom" class="org.jboss.test.microcontainer.beans.TestMetaDataLoader"/>
+
+   <metadata tag="custom" class="org.jboss.test.microcontainer.beans.POJO">
+      <data>custom1</data>
+   </metadata>
+
+   <declare-error name="DeclareError" expr="call(* org.acme.Foo->error(..))">Error!!!</declare-error>
+
+</aop>
\ No newline at end of file

Added: projects/microcontainer/trunk/aop-mc-int/src/resources/tests/org/jboss/test/microcontainer/beans/test/BeanMetaDataFactoryParserDeploymentTestCaseNotAutomatic.xml
===================================================================
--- projects/microcontainer/trunk/aop-mc-int/src/resources/tests/org/jboss/test/microcontainer/beans/test/BeanMetaDataFactoryParserDeploymentTestCaseNotAutomatic.xml	                        (rev 0)
+++ projects/microcontainer/trunk/aop-mc-int/src/resources/tests/org/jboss/test/microcontainer/beans/test/BeanMetaDataFactoryParserDeploymentTestCaseNotAutomatic.xml	2008-06-03 15:31:48 UTC (rev 74003)
@@ -0,0 +1,74 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<deployment xmlns="urn:jboss:bean-deployer:2.0">
+
+   <bean name="AspectManager" class="org.jboss.aop.AspectManager">
+      <constructor factoryClass="org.jboss.aop.AspectManager" factoryMethod="instance"/>
+   </bean>
+
+   <annotation xmlns="urn:jboss:aop-beans:1.0" expr="class(org.jboss.test.microcontainer.beans.POJO)" invisible="false">
+      @org.jboss.test.microcontainer.beans.Annotation1
+   </annotation>
+
+   <annotation-introduction xmlns="urn:jboss:aop-beans:1.0" expr="class(org.jboss.test.microcontainer.beans.POJO)" invisible="false">
+      @org.jboss.test.microcontainer.beans.Annotation1
+   </annotation-introduction>
+
+   <precedence xmlns="urn:jboss:aop-beans:1.0">
+      <interceptor-ref name="org.jboss.test.microcontainer.beans.TestInterceptor"/>
+      <advice aspect="org.jboss.test.microcontainer.beans.TestAspect" name="advice"/>
+   </precedence>
+
+   <introduction xmlns="urn:jboss:aop-beans:1.0" class="org.jboss.test.microcontainer.beans.POJO">
+      <mixin transient="true">
+         <interfaces>org.jboss.test.microcontainer.beans.MixinInterface</interfaces>
+         <class>org.jboss.test.microcontainer.beans.MixinImpl</class>
+      </mixin>
+   </introduction>
+
+   <pointcut xmlns="urn:jboss:aop-beans:1.0" name="NamedPointcut" expr="all(org.acme.POJO)"/>
+
+   <prepare xmlns="urn:jboss:aop-beans:1.0" expr="all(org.acme.POJO)"/>
+
+   <dynamic-cflow xmlns="urn:jboss:aop-beans:1.0" name="DynamicCFlow" class="org.jboss.test.microcontainer.beans.DynamicCFlowImpl"/>
+
+   <cflow-stack xmlns="urn:jboss:aop-beans:1.0" name="CFlow">
+      <not-called expr="void org.jboss.test.microcontainer.beans.test.CFlowTest->notCallPOJO(..)"/>
+      <called expr="void org.jboss.test.microcontainer.beans.test.CFlowTest->callPOJO(..)"/>
+   </cflow-stack>
+
+   <typedef xmlns="urn:jboss:aop-beans:1.0" name="TypeDef" expr="class(org.jboss.test.microcontainer.beans.POJO)"/>
+
+   <aspect xmlns="urn:jboss:aop-beans:1.0" class="org.jboss.test.microcontainer.beans.TestAspectWithProperty">
+      <property xmlns:mc="urn:jboss:bean-deployer:2.0" name="someProperty">This is only a test</property>
+   </aspect>
+
+   <interceptor xmlns="urn:jboss:aop-beans:1.0" class="org.jboss.test.microcontainer.beans.TestInterceptor"/>
+
+   <aspect xmlns="urn:jboss:aop-beans:1.0" class="org.jboss.test.microcontainer.beans.TestAspect"/>
+
+   <stack xmlns="urn:jboss:aop-beans:1.0" name="TestStack">
+      <advice aspect="org.jboss.test.microcontainer.beans.TestAspect" name="advice"/>
+   </stack>
+
+   <bind xmlns="urn:jboss:aop-beans:1.0" pointcut="execution(* org.jboss.test.microcontainer.beans.POJO->*(..))">
+      <advice aspect="org.jboss.test.microcontainer.beans.TestAspectWithProperty" name="advice"/>
+      <interceptor-ref name="org.jboss.test.microcontainer.beans.TestInterceptor"/>
+      <stack-ref name="TestStack"/>
+   </bind>
+
+   <arrayreplacement xmlns="urn:jboss:aop-beans:1.0" class="org.jboss.test.microcontainer.beans.woven.test.ClassWithArray"/>
+
+   <arraybind xmlns="urn:jboss:aop-beans:1.0" type="READ_WRITE">
+      <interceptor-ref name="org.jboss.test.microcontainer.beans.TestInterceptor"/>
+   </arraybind>
+
+   <metadata-loader xmlns="urn:jboss:aop-beans:1.0" tag="custom" class="org.jboss.test.microcontainer.beans.TestMetaDataLoader"/>
+
+   <metadata xmlns="urn:jboss:aop-beans:1.0" tag="custom" class="org.jboss.test.microcontainer.beans.POJO">
+      <data>custom1</data>
+   </metadata>
+
+   <declare-error xmlns="urn:jboss:aop-beans:1.0" name="DeclareError" expr="call(* org.acme.Foo->error(..))">Error!!!</declare-error>
+
+</deployment>

Added: projects/microcontainer/trunk/aop-mc-int/src/tests/org/jboss/test/microcontainer/beans/test/BeanMetaDataFactoryParserAopTestCase.java
===================================================================
--- projects/microcontainer/trunk/aop-mc-int/src/tests/org/jboss/test/microcontainer/beans/test/BeanMetaDataFactoryParserAopTestCase.java	                        (rev 0)
+++ projects/microcontainer/trunk/aop-mc-int/src/tests/org/jboss/test/microcontainer/beans/test/BeanMetaDataFactoryParserAopTestCase.java	2008-06-03 15:31:48 UTC (rev 74003)
@@ -0,0 +1,50 @@
+/*
+* JBoss, Home of Professional Open Source.
+* Copyright 2006, Red Hat Middleware LLC, and individual contributors
+* as indicated by the @author tags. See the copyright.txt file 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.test.microcontainer.beans.test;
+
+import junit.framework.Test;
+
+/**
+ * 
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @version $Revision: 1.1 $
+ */
+public class BeanMetaDataFactoryParserAopTestCase extends BeanMetaDataFactoryParserTest
+{
+
+   public BeanMetaDataFactoryParserAopTestCase(String name)
+   {
+      super(name);
+   }
+
+   public static Test suite()
+   {
+      return suite(BeanMetaDataFactoryParserAopTestCase.class);
+   }
+
+   @Override
+   protected String getFileName()
+   {
+      return "BeanMetaDataFactoryParserAopTestCaseNotAutomatic.xml";
+   }
+   
+}

Added: projects/microcontainer/trunk/aop-mc-int/src/tests/org/jboss/test/microcontainer/beans/test/BeanMetaDataFactoryParserDeploymentTestCase.java
===================================================================
--- projects/microcontainer/trunk/aop-mc-int/src/tests/org/jboss/test/microcontainer/beans/test/BeanMetaDataFactoryParserDeploymentTestCase.java	                        (rev 0)
+++ projects/microcontainer/trunk/aop-mc-int/src/tests/org/jboss/test/microcontainer/beans/test/BeanMetaDataFactoryParserDeploymentTestCase.java	2008-06-03 15:31:48 UTC (rev 74003)
@@ -0,0 +1,50 @@
+/*
+* JBoss, Home of Professional Open Source.
+* Copyright 2006, Red Hat Middleware LLC, and individual contributors
+* as indicated by the @author tags. See the copyright.txt file 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.test.microcontainer.beans.test;
+
+import junit.framework.Test;
+
+/**
+ * 
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @version $Revision: 1.1 $
+ */
+public class BeanMetaDataFactoryParserDeploymentTestCase extends BeanMetaDataFactoryParserTest
+{
+
+   public BeanMetaDataFactoryParserDeploymentTestCase(String name)
+   {
+      super(name);
+   }
+
+   public static Test suite()
+   {
+      return suite(BeanMetaDataFactoryParserDeploymentTestCase.class);
+   }
+
+   @Override
+   protected String getFileName()
+   {
+      return "BeanMetaDataFactoryParserDeploymentTestCaseNotAutomatic.xml";
+   }
+
+}

Added: projects/microcontainer/trunk/aop-mc-int/src/tests/org/jboss/test/microcontainer/beans/test/BeanMetaDataFactoryParserTest.java
===================================================================
--- projects/microcontainer/trunk/aop-mc-int/src/tests/org/jboss/test/microcontainer/beans/test/BeanMetaDataFactoryParserTest.java	                        (rev 0)
+++ projects/microcontainer/trunk/aop-mc-int/src/tests/org/jboss/test/microcontainer/beans/test/BeanMetaDataFactoryParserTest.java	2008-06-03 15:31:48 UTC (rev 74003)
@@ -0,0 +1,92 @@
+/*
+* JBoss, Home of Professional Open Source.
+* Copyright 2006, Red Hat Middleware LLC, and individual contributors
+* as indicated by the @author tags. See the copyright.txt file 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.test.microcontainer.beans.test;
+
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.jboss.beans.metadata.spi.BeanMetaData;
+import org.jboss.beans.metadata.spi.BeanMetaDataFactory;
+import org.jboss.kernel.spi.deployment.KernelDeployment;
+import org.jboss.test.aop.junit.AOPMicrocontainerTest;
+import org.jboss.xb.binding.Unmarshaller;
+import org.jboss.xb.binding.UnmarshallerFactory;
+import org.jboss.xb.binding.sunday.unmarshalling.SchemaBindingResolver;
+import org.jboss.xb.binding.sunday.unmarshalling.SingletonSchemaResolverFactory;
+
+
+/**
+ *
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @version $Revision: 1.1 $
+ */
+public abstract class BeanMetaDataFactoryParserTest extends AOPMicrocontainerTest
+{
+   public BeanMetaDataFactoryParserTest(String name)
+   {
+      super(name);
+   }
+
+   public void testNamesFromGetBeansRemainsTheSame() throws Exception
+   {
+      List<BeanMetaDataFactory> beanMetaDataFactories = loadBeanMetaDataFactories();
+      
+      List<BeanMetaData> names1 = loadBeans(beanMetaDataFactories);
+      assertTrue(10 < names1.size());
+      List<BeanMetaData> names2 = loadBeans(beanMetaDataFactories);
+      assertEquals(names1.size(), names2.size());
+      
+      for (int i = 0 ; i < names1.size() ; i++)
+      {
+         assertEquals("Wrong name for bean number " + i + " type1: " + names1.get(i).getBean() + " " + names2.get(i).getBean() , names1.get(i).getName(), names2.get(i).getName());
+      }
+      
+   }
+
+   private List<BeanMetaDataFactory> loadBeanMetaDataFactories() throws Exception
+   {
+      SchemaBindingResolver resolver = SingletonSchemaResolverFactory.getInstance().getSchemaBindingResolver();
+      UnmarshallerFactory factory = UnmarshallerFactory.newInstance();
+
+      Unmarshaller unmarshaller = factory.newUnmarshaller();
+      URL url = getClass().getResource(getFileName());
+      KernelDeployment deployment = (KernelDeployment) unmarshaller.unmarshal(url.toString(), resolver);
+      return deployment.getBeanFactories();
+   }
+   
+   private List<BeanMetaData> loadBeans(List<BeanMetaDataFactory> beanMetaDataFactories) throws Exception
+   {
+      List<BeanMetaData> beans = new ArrayList<BeanMetaData>(); 
+      for (BeanMetaDataFactory bmdf : beanMetaDataFactories)
+      {
+         for (BeanMetaData bmd : bmdf.getBeans())
+         {
+            beans.add(bmd);
+         }
+      }
+      return beans;
+   }
+   
+   
+   protected abstract String getFileName();
+}




More information about the jboss-cvs-commits mailing list