[jboss-cvs] JBossAS SVN: r71751 - in projects/microcontainer/trunk/aop-mc-int/src: resources/main/schema and 3 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Sun Apr 6 17:46:33 EDT 2008


Author: kabir.khan at jboss.com
Date: 2008-04-06 17:46:33 -0400 (Sun, 06 Apr 2008)
New Revision: 71751

Added:
   projects/microcontainer/trunk/aop-mc-int/src/main/org/jboss/aop/microcontainer/beans/metadata/MetaDataLoaderBeanMetaDataFactory.java
   projects/microcontainer/trunk/aop-mc-int/src/resources/tests/org/jboss/test/microcontainer/beans/test/ClassMetaDataAopTestCase.xml
   projects/microcontainer/trunk/aop-mc-int/src/resources/tests/org/jboss/test/microcontainer/beans/test/ClassMetaDataDeploymentTestCase.xml
   projects/microcontainer/trunk/aop-mc-int/src/resources/tests/org/jboss/test/microcontainer/beans/test/ClassMetaDataLoaderAopTestCase.xml
   projects/microcontainer/trunk/aop-mc-int/src/resources/tests/org/jboss/test/microcontainer/beans/test/ClassMetaDataLoaderDeploymentTestCase.xml
   projects/microcontainer/trunk/aop-mc-int/src/resources/tests/org/jboss/test/microcontainer/beans/test/ThrowawayMetaDataTest.xml
   projects/microcontainer/trunk/aop-mc-int/src/tests/org/jboss/test/microcontainer/beans/test/ClassMetaDataAopTestCase.java
   projects/microcontainer/trunk/aop-mc-int/src/tests/org/jboss/test/microcontainer/beans/test/ClassMetaDataDeploymentTestCase.java
   projects/microcontainer/trunk/aop-mc-int/src/tests/org/jboss/test/microcontainer/beans/test/ClassMetaDataLoaderAopTestCase.java
   projects/microcontainer/trunk/aop-mc-int/src/tests/org/jboss/test/microcontainer/beans/test/ClassMetaDataLoaderDeploymentTestCase.java
   projects/microcontainer/trunk/aop-mc-int/src/tests/org/jboss/test/microcontainer/beans/test/ClassMetaDataLoaderTest.java
   projects/microcontainer/trunk/aop-mc-int/src/tests/org/jboss/test/microcontainer/beans/test/ClassMetaDataTest.java
   projects/microcontainer/trunk/aop-mc-int/src/tests/org/jboss/test/microcontainer/beans/test/ThrowawayMetaDataTest.java
Modified:
   projects/microcontainer/trunk/aop-mc-int/src/main/org/jboss/aop/microcontainer/beans/metadata/AOPDeployment.java
   projects/microcontainer/trunk/aop-mc-int/src/main/org/jboss/aop/microcontainer/beans/metadata/DomainBeanMetaDataFactory.java
   projects/microcontainer/trunk/aop-mc-int/src/main/org/jboss/aop/microcontainer/beans/metadata/MetaDataBeanMetaDataFactory.java
   projects/microcontainer/trunk/aop-mc-int/src/resources/main/schema/aop-beans_1_0.xsd
   projects/microcontainer/trunk/aop-mc-int/src/resources/tests/org/jboss/test/microcontainer/beans/test/ClassMetaDataBeansTestCase.xml
   projects/microcontainer/trunk/aop-mc-int/src/resources/tests/org/jboss/test/microcontainer/beans/test/DomainSimpleAopTestCase.xml
   projects/microcontainer/trunk/aop-mc-int/src/resources/tests/org/jboss/test/microcontainer/beans/test/DomainSimpleBeansTestCase.xml
   projects/microcontainer/trunk/aop-mc-int/src/resources/tests/org/jboss/test/microcontainer/beans/test/DomainSimpleDeploymentTestCase.xml
   projects/microcontainer/trunk/aop-mc-int/src/tests/org/jboss/test/microcontainer/beans/POJO.java
   projects/microcontainer/trunk/aop-mc-int/src/tests/org/jboss/test/microcontainer/beans/TestClassMetaDataAspect.java
   projects/microcontainer/trunk/aop-mc-int/src/tests/org/jboss/test/microcontainer/beans/test/ClassMetaDataBeansTestCase.java
   projects/microcontainer/trunk/aop-mc-int/src/tests/org/jboss/test/microcontainer/beans/test/ClassMetaDataLoaderBeansTestCase.java
   projects/microcontainer/trunk/aop-mc-int/src/tests/org/jboss/test/microcontainer/beans/test/DomainSimpleTest.java
Log:
[JBAOP-468] Add <metadata> and <metadata-loader> support

Modified: projects/microcontainer/trunk/aop-mc-int/src/main/org/jboss/aop/microcontainer/beans/metadata/AOPDeployment.java
===================================================================
--- projects/microcontainer/trunk/aop-mc-int/src/main/org/jboss/aop/microcontainer/beans/metadata/AOPDeployment.java	2008-04-06 18:54:40 UTC (rev 71750)
+++ projects/microcontainer/trunk/aop-mc-int/src/main/org/jboss/aop/microcontainer/beans/metadata/AOPDeployment.java	2008-04-06 21:46:33 UTC (rev 71751)
@@ -35,6 +35,7 @@
 import org.jboss.managed.api.annotation.ManagementObject;
 import org.jboss.managed.api.annotation.ManagementProperties;
 import org.jboss.xb.annotations.JBossXmlSchema;
+import org.w3c.dom.Element;
 
 /**
  * 
@@ -72,6 +73,8 @@
       @XmlElement(name="lifecycle-instantiate", type=InstantiateLifecycleBeanMetaDataFactory.class),
       @XmlElement(name="lifecycle-preinstall", type=PreInstallLifecycleBeanMetaDataFactory.class),
       @XmlElement(name="lifecycle-start", type=StartLifecycleBeanMetaDataFactory.class),
+      @XmlElement(name="metadata", type=MetaDataBeanMetaDataFactory.class),
+      @XmlElement(name="metadata-loader", type=MetaDataLoaderBeanMetaDataFactory.class),
       @XmlElement(name="pointcut", type=NamedPointcutBeanMetaDataFactory.class),
       @XmlElement(name="precedence", type=PrecedenceBeanMetaDataFactory.class),
       @XmlElement(name="prepare", type=PrepareMetaDataFactory.class),
@@ -83,4 +86,17 @@
    {
       super.setBeanFactories(beanFactories);
    }
+   
+//   Element metadata;
+//   
+//   public Element getMetadata()
+//   {
+//      return metadata;
+//   }
+//   
+//   public void setMetadata(Element elements)
+//   {
+//      System.out.println("Hello");
+//      this.metadata = elements;
+//   }
 }

Modified: projects/microcontainer/trunk/aop-mc-int/src/main/org/jboss/aop/microcontainer/beans/metadata/DomainBeanMetaDataFactory.java
===================================================================
--- projects/microcontainer/trunk/aop-mc-int/src/main/org/jboss/aop/microcontainer/beans/metadata/DomainBeanMetaDataFactory.java	2008-04-06 18:54:40 UTC (rev 71750)
+++ projects/microcontainer/trunk/aop-mc-int/src/main/org/jboss/aop/microcontainer/beans/metadata/DomainBeanMetaDataFactory.java	2008-04-06 21:46:33 UTC (rev 71751)
@@ -89,10 +89,10 @@
       @XmlElement(name="arraybind", type=ArrayBindBeanMetaDataFactory.class),
       @XmlElement(name="aspect", type=AspectBeanMetaDataFactory.class),
       @XmlElement(name="bind", type=BindBeanMetaDataFactory.class),
+      @XmlElement(name="cflow-stack", type=CFlowStackBeanMetaDataFactory.class),
       @XmlElement(name="declare-error", type=DeclareErrorBeanMetaDataFactory.class),
       @XmlElement(name="declare-warning", type=DeclareWarningBeanMetaDataFactory.class),
       @XmlElement(name="dynamic-cflow", type=DynamicCflowBeanMetaDataFactory.class),
-      @XmlElement(name="cflow-stack", type=CFlowStackBeanMetaDataFactory.class),
       @XmlElement(name="interceptor", type=InterceptorBeanMetaDataFactory.class),
       @XmlElement(name="introduction", type=IntroductionBeanMetaDataFactory.class),
       @XmlElement(name="lifecycle-configure", type=ConfigureLifecycleBeanMetaDataFactory.class),
@@ -102,6 +102,8 @@
       @XmlElement(name="lifecycle-instantiate", type=InstantiateLifecycleBeanMetaDataFactory.class),
       @XmlElement(name="lifecycle-preinstall", type=PreInstallLifecycleBeanMetaDataFactory.class),
       @XmlElement(name="lifecycle-start", type=StartLifecycleBeanMetaDataFactory.class),
+      @XmlElement(name="metadata", type=MetaDataBeanMetaDataFactory.class),
+      @XmlElement(name="metadata-loader", type=MetaDataLoaderBeanMetaDataFactory.class),
       @XmlElement(name="pointcut", type=NamedPointcutBeanMetaDataFactory.class),
       @XmlElement(name="precedence", type=PrecedenceBeanMetaDataFactory.class),
       @XmlElement(name="prepare", type=PrepareMetaDataFactory.class),

Modified: projects/microcontainer/trunk/aop-mc-int/src/main/org/jboss/aop/microcontainer/beans/metadata/MetaDataBeanMetaDataFactory.java
===================================================================
--- projects/microcontainer/trunk/aop-mc-int/src/main/org/jboss/aop/microcontainer/beans/metadata/MetaDataBeanMetaDataFactory.java	2008-04-06 18:54:40 UTC (rev 71750)
+++ projects/microcontainer/trunk/aop-mc-int/src/main/org/jboss/aop/microcontainer/beans/metadata/MetaDataBeanMetaDataFactory.java	2008-04-06 21:46:33 UTC (rev 71751)
@@ -21,14 +21,24 @@
 */ 
 package org.jboss.aop.microcontainer.beans.metadata;
 
+import java.io.BufferedWriter;
+import java.io.StringWriter;
+import java.util.ArrayList;
 import java.util.List;
 
 import javax.xml.bind.annotation.XmlAnyElement;
 import javax.xml.bind.annotation.XmlAttribute;
 import javax.xml.bind.annotation.XmlNsForm;
 import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlType;
 
+import org.jboss.aop.microcontainer.beans.ClassMetaData;
+import org.jboss.beans.metadata.spi.BeanMetaData;
+import org.jboss.beans.metadata.spi.builder.BeanMetaDataBuilder;
+import org.jboss.util.id.GUID;
+import org.jboss.util.xml.DOMWriter;
 import org.jboss.xb.annotations.JBossXmlSchema;
+import org.w3c.dom.DOMException;
 import org.w3c.dom.Element;
 
 /**
@@ -38,6 +48,9 @@
  */
 @JBossXmlSchema(namespace="urn:jboss:aop-beans:1.0", elementFormDefault=XmlNsForm.QUALIFIED)
 @XmlRootElement(name="metadata")
+//Set a random proporder since we don't want to set any of the properties in GenericBeanFactoryMetaData in the
+//freeform xml contained in this element
+ at XmlType(name="metaDataType", propOrder={"non$$existant$$property"})
 public class MetaDataBeanMetaDataFactory extends AspectManagerAwareBeanMetaDataFactory
 {
    private static final long serialVersionUID = 1L;
@@ -45,8 +58,12 @@
    String tag;
    
    String clazz;
+
+   //It would have been nice to handle the normal metadata elements handled by the SimpleMetaDataElements in a typed
+   //way, but what if we have a custom metadata loader that expects elements with the same names?
+   List<Element> elements;
    
-   List<Element> elements;
+   String fullDocument;
 
    public String getTag()
    {
@@ -63,7 +80,7 @@
    {
       return clazz;
    }
-
+   
    @XmlAttribute(name="class")
    public void setClazz(String clazz)
    {
@@ -75,13 +92,64 @@
       return elements;
    }
 
-   @XmlAnyElement
+   @XmlAnyElement(lax=true)
    public void setElements(List<Element> elements)
    {
       this.elements = elements;
    }
+
+   @Override
+   public List<BeanMetaData> getBeans()
+   {
+      List<BeanMetaData> beans = new ArrayList<BeanMetaData>();
+      if (name == null)
+      {
+         name = GUID.asString();
+      }
+      BeanMetaDataBuilder builder = BeanMetaDataBuilder.createBuilder(name, ClassMetaData.class.getName());
+      builder.addPropertyMetaData("tag", tag);
+      builder.addPropertyMetaData("className", clazz);
+      builder.addPropertyMetaData("element", getRootElement());
+      
+      setAspectManagerProperty(builder);
+      beans.add(builder.getBeanMetaData());
+      return beans;
+   }
    
+   private String getRootElement()
+   {
+      try
+      {
+         StringWriter writer = new StringWriter();
+         StringBuffer contents = writer.getBuffer();
+         contents.append("<metadata "); 
+         contents.append("tag=\"" + tag + "\" ");
+         contents.append("class=\"" + clazz + "\"");
+         contents.append(">");
+         
+         DOMWriter domWriter = new DOMWriter(new BufferedWriter(writer));
+         for (Element child : elements)
+         {
+            domWriter.print(child);
+         }
+         
+         contents.append("</metadata>");
+         
+         fullDocument = writer.getBuffer().toString();
+         System.out.println(fullDocument);
+         return fullDocument;
+      }
+      catch (DOMException e)
+      {
+         e.printStackTrace();
+         throw e;
+      }
+   }
    
-   
-   
+   /**
+    * Here to match the @XMLType.propOrder
+    */
+   public void setNon$$existant$$property(String ignored)
+   {
+   }
 }

Added: projects/microcontainer/trunk/aop-mc-int/src/main/org/jboss/aop/microcontainer/beans/metadata/MetaDataLoaderBeanMetaDataFactory.java
===================================================================
--- projects/microcontainer/trunk/aop-mc-int/src/main/org/jboss/aop/microcontainer/beans/metadata/MetaDataLoaderBeanMetaDataFactory.java	                        (rev 0)
+++ projects/microcontainer/trunk/aop-mc-int/src/main/org/jboss/aop/microcontainer/beans/metadata/MetaDataLoaderBeanMetaDataFactory.java	2008-04-06 21:46:33 UTC (rev 71751)
@@ -0,0 +1,90 @@
+/*
+* 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.aop.microcontainer.beans.metadata;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlNsForm;
+import javax.xml.bind.annotation.XmlRootElement;
+
+import org.jboss.aop.microcontainer.beans.ClassMetaDataLoader;
+import org.jboss.beans.metadata.spi.BeanMetaData;
+import org.jboss.beans.metadata.spi.builder.BeanMetaDataBuilder;
+import org.jboss.util.id.GUID;
+import org.jboss.xb.annotations.JBossXmlSchema;
+
+/**
+ * 
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @version $Revision: 1.1 $
+ */
+ at JBossXmlSchema(namespace="urn:jboss:aop-beans:1.0", elementFormDefault=XmlNsForm.QUALIFIED)
+ at XmlRootElement(name="metadata")
+public class MetaDataLoaderBeanMetaDataFactory extends AspectManagerAwareBeanMetaDataFactory
+{
+   private static final long serialVersionUID = 1L;
+
+   String tag;
+   
+   String clazz;
+
+   public String getTag()
+   {
+      return tag;
+   }
+
+   @XmlAttribute
+   public void setTag(String tag)
+   {
+      this.tag = tag;
+   }
+
+   public String getClazz()
+   {
+      return clazz;
+   }
+   
+   @XmlAttribute(name="class")
+   public void setClazz(String clazz)
+   {
+      this.clazz = clazz;
+   }
+
+   @Override
+   public List<BeanMetaData> getBeans()
+   {
+      List<BeanMetaData> beans = new ArrayList<BeanMetaData>();
+      if (name == null)
+      {
+         name = GUID.asString();
+      }
+      BeanMetaDataBuilder builder = BeanMetaDataBuilder.createBuilder(name, ClassMetaDataLoader.class.getName());
+      builder.addPropertyMetaData("tag", tag);
+      builder.addPropertyMetaData("className", clazz);
+      
+      setAspectManagerProperty(builder);
+      beans.add(builder.getBeanMetaData());
+      return beans;
+   }
+}

Modified: projects/microcontainer/trunk/aop-mc-int/src/resources/main/schema/aop-beans_1_0.xsd
===================================================================
--- projects/microcontainer/trunk/aop-mc-int/src/resources/main/schema/aop-beans_1_0.xsd	2008-04-06 18:54:40 UTC (rev 71750)
+++ projects/microcontainer/trunk/aop-mc-int/src/resources/main/schema/aop-beans_1_0.xsd	2008-04-06 21:46:33 UTC (rev 71751)
@@ -271,6 +271,8 @@
          <xsd:element name="dynamic-cflow" type="dynamicCflowStackType" minOccurs="0" maxOccurs="unbounded"/>
          <xsd:element name="interceptor" type="aspectOrInterceptorType" minOccurs="0" maxOccurs="unbounded"/>
          <xsd:element name="introduction" type="introductionType" minOccurs="0" maxOccurs="unbounded"/>
+         <xsd:element name="metadata" type="metadataType" minOccurs="0" maxOccurs="unbounded"/>
+         <xsd:element name="metadata-loader" type="metadataLoaderType" minOccurs="0" maxOccurs="unbounded"/>
          <xsd:element name="pointcut" type="pointcutType" minOccurs="0" maxOccurs="unbounded"/>
          <xsd:element name="precedence" type="precedenceType" minOccurs="0" maxOccurs="unbounded"/>
          <xsd:element name="prepare" type="prepareType" minOccurs="0" maxOccurs="unbounded"/>
@@ -315,6 +317,8 @@
          <xsd:element name="dynamic-cflow" type="dynamicCflowStackType" minOccurs="0" maxOccurs="unbounded"/>
          <xsd:element name="interceptor" type="aspectOrInterceptorType" minOccurs="0" maxOccurs="unbounded"/>
          <xsd:element name="introduction" type="introductionType" minOccurs="0" maxOccurs="unbounded"/>
+         <xsd:element name="metadata" type="metadataType" minOccurs="0" maxOccurs="unbounded"/>
+         <xsd:element name="metadata-loader" type="metadataLoaderType" minOccurs="0" maxOccurs="unbounded"/>
          <xsd:element name="pointcut" type="pointcutType" minOccurs="0" maxOccurs="unbounded"/>
          <xsd:element name="precedence" type="precedenceType" minOccurs="0" maxOccurs="unbounded"/>
          <xsd:element name="prepare" type="prepareType" minOccurs="0" maxOccurs="unbounded"/>
@@ -899,6 +903,54 @@
       </xsd:simpleContent>
    </xsd:complexType>
 
+   <xsd:element name="metadata" type="metadataType">
+      <xsd:annotation>
+         <xsd:documentation>
+           <![CDATA[
+           A metadata
+           ]]>
+         </xsd:documentation>
+      </xsd:annotation>
+   </xsd:element>
+   
+   <xsd:complexType name="metadataType">
+      <xsd:annotation>
+         <xsd:documentation>
+           <![CDATA[
+           A metadata
+           ]]>
+         </xsd:documentation>
+      </xsd:annotation>
+      <xsd:choice minOccurs="0" maxOccurs="1">
+         <xsd:any namespace="##other" processContents="strict" minOccurs="0">
+         </xsd:any>
+      </xsd:choice>
+      <xsd:attribute name="tag" type="xsd:string" use="required"></xsd:attribute>
+      <xsd:attribute name="class" type="xsd:string" use="required"></xsd:attribute>
+   </xsd:complexType>
+
+   <xsd:element name="metadata-loader" type="metadataLoaderType">
+      <xsd:annotation>
+         <xsd:documentation>
+           <![CDATA[
+           A metadata
+           ]]>
+         </xsd:documentation>
+      </xsd:annotation>
+   </xsd:element>
+   
+   <xsd:complexType name="metadataLoaderType">
+      <xsd:annotation>
+         <xsd:documentation>
+           <![CDATA[
+           A metadata
+           ]]>
+         </xsd:documentation>
+      </xsd:annotation>
+      <xsd:attribute name="tag" type="xsd:string" use="required"></xsd:attribute>
+      <xsd:attribute name="class" type="xsd:string" use="required"></xsd:attribute>
+   </xsd:complexType>
+
    <xsd:element name="arrayreplacement" type="arrayreplacementType">
       <xsd:annotation>
          <xsd:documentation>

Added: projects/microcontainer/trunk/aop-mc-int/src/resources/tests/org/jboss/test/microcontainer/beans/test/ClassMetaDataAopTestCase.xml
===================================================================
--- projects/microcontainer/trunk/aop-mc-int/src/resources/tests/org/jboss/test/microcontainer/beans/test/ClassMetaDataAopTestCase.xml	                        (rev 0)
+++ projects/microcontainer/trunk/aop-mc-int/src/resources/tests/org/jboss/test/microcontainer/beans/test/ClassMetaDataAopTestCase.xml	2008-04-06 21:46:33 UTC (rev 71751)
@@ -0,0 +1,36 @@
+<?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>
+
+   <metadata tag="SomeTag" class="org.jboss.test.microcontainer.beans.POJO">
+      <class>
+         <clazz1>clazz1</clazz1>
+         <clazz2>clazz2</clazz2>
+      </class>
+      <default>
+         <data>default</data>
+      </default>
+      <constructor expr="POJO()">
+         <data>ctor</data>
+      </constructor>
+      <method expr="int method(..)">
+         <data>method1</data>
+      </method>
+      <method expr="void method()">
+         <data>method2</data>
+      </method>
+   </metadata>
+
+   <aspect class="org.jboss.test.microcontainer.beans.TestClassMetaDataAspect"/>
+   
+   <bind pointcut="execution(org.jboss.test.microcontainer.beans.POJO->new(..)) OR execution(* org.jboss.test.microcontainer.beans.POJO->*(..))">
+      <advice aspect="org.jboss.test.microcontainer.beans.TestClassMetaDataAspect" name="advice"/>
+   </bind>
+
+   <bean name="Bean" class="org.jboss.test.microcontainer.beans.POJO"/>
+
+</aop>

Modified: projects/microcontainer/trunk/aop-mc-int/src/resources/tests/org/jboss/test/microcontainer/beans/test/ClassMetaDataBeansTestCase.xml
===================================================================
--- projects/microcontainer/trunk/aop-mc-int/src/resources/tests/org/jboss/test/microcontainer/beans/test/ClassMetaDataBeansTestCase.xml	2008-04-06 18:54:40 UTC (rev 71750)
+++ projects/microcontainer/trunk/aop-mc-int/src/resources/tests/org/jboss/test/microcontainer/beans/test/ClassMetaDataBeansTestCase.xml	2008-04-06 21:46:33 UTC (rev 71751)
@@ -13,13 +13,20 @@
 		<property name="element">
       <![CDATA[
          <metadata>
+            <class>
+               <clazz1>clazz1</clazz1>
+               <clazz2>clazz2</clazz2>
+            </class>
+            <default>
+               <data>default</data>
+            </default>
             <constructor expr="POJO()">
                <data>ctor</data>
             </constructor>
-            <method expr="int *(..)">
+            <method expr="int method(..)">
                <data>method1</data>
             </method>
-            <method expr="void *()">
+            <method expr="void method()">
                <data>method2</data>
             </method>
          </metadata>

Added: projects/microcontainer/trunk/aop-mc-int/src/resources/tests/org/jboss/test/microcontainer/beans/test/ClassMetaDataDeploymentTestCase.xml
===================================================================
--- projects/microcontainer/trunk/aop-mc-int/src/resources/tests/org/jboss/test/microcontainer/beans/test/ClassMetaDataDeploymentTestCase.xml	                        (rev 0)
+++ projects/microcontainer/trunk/aop-mc-int/src/resources/tests/org/jboss/test/microcontainer/beans/test/ClassMetaDataDeploymentTestCase.xml	2008-04-06 21:46:33 UTC (rev 71751)
@@ -0,0 +1,36 @@
+<?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>
+
+   <metadata xmlns="urn:jboss:aop-beans:1.0" tag="SomeTag" class="org.jboss.test.microcontainer.beans.POJO">
+      <class>
+         <clazz1>clazz1</clazz1>
+         <clazz2>clazz2</clazz2>
+      </class>
+      <default>
+         <data>default</data>
+      </default>
+      <constructor expr="POJO()">
+         <data>ctor</data>
+      </constructor>
+      <method expr="int method(..)">
+         <data>method1</data>
+      </method>
+      <method expr="void method()">
+         <data>method2</data>
+      </method>
+   </metadata>
+
+   <aspect xmlns="urn:jboss:aop-beans:1.0" class="org.jboss.test.microcontainer.beans.TestClassMetaDataAspect"/>
+   
+   <bind xmlns="urn:jboss:aop-beans:1.0" pointcut="execution(org.jboss.test.microcontainer.beans.POJO->new(..)) OR execution(* org.jboss.test.microcontainer.beans.POJO->*(..))">
+      <advice aspect="org.jboss.test.microcontainer.beans.TestClassMetaDataAspect" name="advice"/>
+   </bind>
+
+   <bean name="Bean" class="org.jboss.test.microcontainer.beans.POJO"/>
+
+</deployment>

Added: projects/microcontainer/trunk/aop-mc-int/src/resources/tests/org/jboss/test/microcontainer/beans/test/ClassMetaDataLoaderAopTestCase.xml
===================================================================
--- projects/microcontainer/trunk/aop-mc-int/src/resources/tests/org/jboss/test/microcontainer/beans/test/ClassMetaDataLoaderAopTestCase.xml	                        (rev 0)
+++ projects/microcontainer/trunk/aop-mc-int/src/resources/tests/org/jboss/test/microcontainer/beans/test/ClassMetaDataLoaderAopTestCase.xml	2008-04-06 21:46:33 UTC (rev 71751)
@@ -0,0 +1,23 @@
+<?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>
+
+   <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>
+
+   <aspect class="org.jboss.test.microcontainer.beans.TestClassMetaDataAspect"/>
+   
+   <bind pointcut="execution(org.jboss.test.microcontainer.beans.POJO->new(..)) OR execution(* org.jboss.test.microcontainer.beans.POJO->*(..))">
+      <advice aspect="org.jboss.test.microcontainer.beans.TestClassMetaDataAspect" name="advice"/>
+   </bind>
+
+   <bean name="Bean" class="org.jboss.test.microcontainer.beans.POJO"/>
+
+</aop>

Added: projects/microcontainer/trunk/aop-mc-int/src/resources/tests/org/jboss/test/microcontainer/beans/test/ClassMetaDataLoaderDeploymentTestCase.xml
===================================================================
--- projects/microcontainer/trunk/aop-mc-int/src/resources/tests/org/jboss/test/microcontainer/beans/test/ClassMetaDataLoaderDeploymentTestCase.xml	                        (rev 0)
+++ projects/microcontainer/trunk/aop-mc-int/src/resources/tests/org/jboss/test/microcontainer/beans/test/ClassMetaDataLoaderDeploymentTestCase.xml	2008-04-06 21:46:33 UTC (rev 71751)
@@ -0,0 +1,23 @@
+<?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>
+
+   <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>
+
+   <aspect xmlns="urn:jboss:aop-beans:1.0" class="org.jboss.test.microcontainer.beans.TestClassMetaDataAspect"/>
+   
+   <bind xmlns="urn:jboss:aop-beans:1.0" pointcut="execution(org.jboss.test.microcontainer.beans.POJO->new(..)) OR execution(* org.jboss.test.microcontainer.beans.POJO->*(..))">
+      <advice aspect="org.jboss.test.microcontainer.beans.TestClassMetaDataAspect" name="advice"/>
+   </bind>
+
+   <bean name="Bean" class="org.jboss.test.microcontainer.beans.POJO"/>
+
+</deployment>

Modified: projects/microcontainer/trunk/aop-mc-int/src/resources/tests/org/jboss/test/microcontainer/beans/test/DomainSimpleAopTestCase.xml
===================================================================
--- projects/microcontainer/trunk/aop-mc-int/src/resources/tests/org/jboss/test/microcontainer/beans/test/DomainSimpleAopTestCase.xml	2008-04-06 18:54:40 UTC (rev 71750)
+++ projects/microcontainer/trunk/aop-mc-int/src/resources/tests/org/jboss/test/microcontainer/beans/test/DomainSimpleAopTestCase.xml	2008-04-06 21:46:33 UTC (rev 71751)
@@ -66,6 +66,12 @@
          <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>
    </domain>   
    

Modified: projects/microcontainer/trunk/aop-mc-int/src/resources/tests/org/jboss/test/microcontainer/beans/test/DomainSimpleBeansTestCase.xml
===================================================================
--- projects/microcontainer/trunk/aop-mc-int/src/resources/tests/org/jboss/test/microcontainer/beans/test/DomainSimpleBeansTestCase.xml	2008-04-06 18:54:40 UTC (rev 71750)
+++ projects/microcontainer/trunk/aop-mc-int/src/resources/tests/org/jboss/test/microcontainer/beans/test/DomainSimpleBeansTestCase.xml	2008-04-06 21:46:33 UTC (rev 71751)
@@ -191,6 +191,25 @@
       <property name="binding"><inject bean="TestArrayBinding" state="Instantiated"/></property>
    </bean>
 
+   <bean name="custom$loader" class="org.jboss.aop.microcontainer.beans.ClassMetaDataLoader">
+      <property name="manager"><inject bean="AOPDomain" property="domain"/></property>
+      <property name="tag">custom</property>
+      <property name="className">org.jboss.test.microcontainer.beans.TestMetaDataLoader</property>
+   </bean>
+
+   <bean name="ClassMetaData" class="org.jboss.aop.microcontainer.beans.ClassMetaData">
+      <property name="manager"><inject bean="AOPDomain" property="domain"/></property>
+      <property name="tag">custom</property>
+      <property name="className">org.jboss.test.microcontainer.beans.POJO</property>
+      <property name="element">
+      <![CDATA[
+         <metadata>
+            <data>custom1</data>
+         </metadata>
+      ]]>
+      </property>
+   </bean>
+   
    <bean name="DeclareError" class="org.jboss.aop.microcontainer.beans.DeclareDefinition">
       <property name="manager"><inject bean="AOPDomain" property="domain"/></property>
       <property name="name">DeclareError</property>
@@ -198,5 +217,4 @@
       <property name="message">Error!!!</property>
       <property name="warning">false</property>
    </bean>
-
 </deployment>

Modified: projects/microcontainer/trunk/aop-mc-int/src/resources/tests/org/jboss/test/microcontainer/beans/test/DomainSimpleDeploymentTestCase.xml
===================================================================
--- projects/microcontainer/trunk/aop-mc-int/src/resources/tests/org/jboss/test/microcontainer/beans/test/DomainSimpleDeploymentTestCase.xml	2008-04-06 18:54:40 UTC (rev 71750)
+++ projects/microcontainer/trunk/aop-mc-int/src/resources/tests/org/jboss/test/microcontainer/beans/test/DomainSimpleDeploymentTestCase.xml	2008-04-06 21:46:33 UTC (rev 71751)
@@ -66,6 +66,12 @@
          <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 name="DeclareError" expr="call(* org.acme.Foo->error(..))">Error!!!</declare-error>
    </domain>   
    

Added: projects/microcontainer/trunk/aop-mc-int/src/resources/tests/org/jboss/test/microcontainer/beans/test/ThrowawayMetaDataTest.xml
===================================================================
--- projects/microcontainer/trunk/aop-mc-int/src/resources/tests/org/jboss/test/microcontainer/beans/test/ThrowawayMetaDataTest.xml	                        (rev 0)
+++ projects/microcontainer/trunk/aop-mc-int/src/resources/tests/org/jboss/test/microcontainer/beans/test/ThrowawayMetaDataTest.xml	2008-04-06 21:46:33 UTC (rev 71751)
@@ -0,0 +1,33 @@
+<?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>
+
+   <metadata xmlns="urn:jboss:aop-beans:1.0" tag="Simple" class="Whatever">
+      <default>
+          <d1>One</d1>
+          <d2>Two</d2>
+      </default>
+      <clazz>
+          <cl1>One</cl1>
+          <cl2>Two</cl2>
+      </clazz>
+      <clazz>
+          <cl3>Three</cl3>
+      </clazz>
+   </metadata>
+
+<!--
+      <class>
+          <cl1>One</cl1>
+          <cl2>Two</cl2>
+      </class>
+      <class>
+          <cl3>Three</cl3>
+      </class>
+-->   
+   
+</deployment>

Modified: projects/microcontainer/trunk/aop-mc-int/src/tests/org/jboss/test/microcontainer/beans/POJO.java
===================================================================
--- projects/microcontainer/trunk/aop-mc-int/src/tests/org/jboss/test/microcontainer/beans/POJO.java	2008-04-06 18:54:40 UTC (rev 71750)
+++ projects/microcontainer/trunk/aop-mc-int/src/tests/org/jboss/test/microcontainer/beans/POJO.java	2008-04-06 21:46:33 UTC (rev 71751)
@@ -37,4 +37,9 @@
    {
       
    }
+   
+   public void defaultMethod()
+   {
+      
+   }
 }

Modified: projects/microcontainer/trunk/aop-mc-int/src/tests/org/jboss/test/microcontainer/beans/TestClassMetaDataAspect.java
===================================================================
--- projects/microcontainer/trunk/aop-mc-int/src/tests/org/jboss/test/microcontainer/beans/TestClassMetaDataAspect.java	2008-04-06 18:54:40 UTC (rev 71750)
+++ projects/microcontainer/trunk/aop-mc-int/src/tests/org/jboss/test/microcontainer/beans/TestClassMetaDataAspect.java	2008-04-06 21:46:33 UTC (rev 71751)
@@ -32,12 +32,23 @@
 {
    public static boolean invoked;
    public static String last;
+   public static String clazz1;
+   public static String clazz2;
    
    public Object advice(Invocation inv) throws Throwable
    {
       Interceptions.add(this);
       invoked = true;
       last = (String)inv.getMetaData("SomeTag", "data");
+      clazz1 = (String)inv.resolveClassMetaData("SomeTag", "clazz1");
+      clazz2 = (String)inv.resolveClassMetaData("SomeTag", "clazz2");
+      
       return inv.invokeNext();
    }
+   
+   public static void reset()
+   {
+      invoked = false;
+      last = clazz1 = clazz2 = null;
+   }
 }

Added: projects/microcontainer/trunk/aop-mc-int/src/tests/org/jboss/test/microcontainer/beans/test/ClassMetaDataAopTestCase.java
===================================================================
--- projects/microcontainer/trunk/aop-mc-int/src/tests/org/jboss/test/microcontainer/beans/test/ClassMetaDataAopTestCase.java	                        (rev 0)
+++ projects/microcontainer/trunk/aop-mc-int/src/tests/org/jboss/test/microcontainer/beans/test/ClassMetaDataAopTestCase.java	2008-04-06 21:46:33 UTC (rev 71751)
@@ -0,0 +1,42 @@
+/*
+* 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 ClassMetaDataAopTestCase extends ClassMetaDataTest
+{
+   public static Test suite()
+   {
+      return suite(ClassMetaDataAopTestCase.class);
+   }
+   
+   public ClassMetaDataAopTestCase(String test)
+   {
+      super(test);
+   }
+}

Modified: projects/microcontainer/trunk/aop-mc-int/src/tests/org/jboss/test/microcontainer/beans/test/ClassMetaDataBeansTestCase.java
===================================================================
--- projects/microcontainer/trunk/aop-mc-int/src/tests/org/jboss/test/microcontainer/beans/test/ClassMetaDataBeansTestCase.java	2008-04-06 18:54:40 UTC (rev 71750)
+++ projects/microcontainer/trunk/aop-mc-int/src/tests/org/jboss/test/microcontainer/beans/test/ClassMetaDataBeansTestCase.java	2008-04-06 21:46:33 UTC (rev 71751)
@@ -23,38 +23,13 @@
 
 import junit.framework.Test;
 
-import org.jboss.test.aop.junit.AOPMicrocontainerTest;
-import org.jboss.test.microcontainer.beans.POJO;
-import org.jboss.test.microcontainer.beans.TestClassMetaDataAspect;
-
 /**
  * 
  * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
  * @version $Revision: 1.1 $
  */
-public class ClassMetaDataBeansTestCase extends AOPMicrocontainerTest
+public class ClassMetaDataBeansTestCase extends ClassMetaDataTest
 {
-   public void testMetaData() throws Exception
-   {
-      POJO pojo = (POJO)getBean("Bean");
-      assertNotNull(pojo);
-      
-      assertTrue(TestClassMetaDataAspect.invoked);
-      assertEquals("ctor", TestClassMetaDataAspect.last);
-      
-      TestClassMetaDataAspect.invoked = false;
-      TestClassMetaDataAspect.last = null;
-      pojo.method(2);
-      assertTrue(TestClassMetaDataAspect.invoked);
-      assertEquals("method1", TestClassMetaDataAspect.last);
-      
-      TestClassMetaDataAspect.invoked = false;
-      TestClassMetaDataAspect.last = null;
-      pojo.method();
-      assertTrue(TestClassMetaDataAspect.invoked);
-      assertEquals("method2", TestClassMetaDataAspect.last);
-   }
-   
    public static Test suite()
    {
       return suite(ClassMetaDataBeansTestCase.class);

Added: projects/microcontainer/trunk/aop-mc-int/src/tests/org/jboss/test/microcontainer/beans/test/ClassMetaDataDeploymentTestCase.java
===================================================================
--- projects/microcontainer/trunk/aop-mc-int/src/tests/org/jboss/test/microcontainer/beans/test/ClassMetaDataDeploymentTestCase.java	                        (rev 0)
+++ projects/microcontainer/trunk/aop-mc-int/src/tests/org/jboss/test/microcontainer/beans/test/ClassMetaDataDeploymentTestCase.java	2008-04-06 21:46:33 UTC (rev 71751)
@@ -0,0 +1,42 @@
+/*
+* 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 ClassMetaDataDeploymentTestCase extends ClassMetaDataTest   
+{
+   public static Test suite()
+   {
+      return suite(ClassMetaDataDeploymentTestCase.class);
+   }
+   
+   public ClassMetaDataDeploymentTestCase(String test)
+   {
+      super(test);
+   }
+}

Added: projects/microcontainer/trunk/aop-mc-int/src/tests/org/jboss/test/microcontainer/beans/test/ClassMetaDataLoaderAopTestCase.java
===================================================================
--- projects/microcontainer/trunk/aop-mc-int/src/tests/org/jboss/test/microcontainer/beans/test/ClassMetaDataLoaderAopTestCase.java	                        (rev 0)
+++ projects/microcontainer/trunk/aop-mc-int/src/tests/org/jboss/test/microcontainer/beans/test/ClassMetaDataLoaderAopTestCase.java	2008-04-06 21:46:33 UTC (rev 71751)
@@ -0,0 +1,42 @@
+/*
+* 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 ClassMetaDataLoaderAopTestCase extends ClassMetaDataLoaderTest
+{
+   public static Test suite()
+   {
+      return suite(ClassMetaDataLoaderAopTestCase.class);
+   }
+   
+   public ClassMetaDataLoaderAopTestCase(String test)
+   {
+      super(test);
+   }
+}

Modified: projects/microcontainer/trunk/aop-mc-int/src/tests/org/jboss/test/microcontainer/beans/test/ClassMetaDataLoaderBeansTestCase.java
===================================================================
--- projects/microcontainer/trunk/aop-mc-int/src/tests/org/jboss/test/microcontainer/beans/test/ClassMetaDataLoaderBeansTestCase.java	2008-04-06 18:54:40 UTC (rev 71750)
+++ projects/microcontainer/trunk/aop-mc-int/src/tests/org/jboss/test/microcontainer/beans/test/ClassMetaDataLoaderBeansTestCase.java	2008-04-06 21:46:33 UTC (rev 71751)
@@ -23,38 +23,13 @@
 
 import junit.framework.Test;
 
-import org.jboss.test.aop.junit.AOPMicrocontainerTest;
-import org.jboss.test.microcontainer.beans.POJO;
-import org.jboss.test.microcontainer.beans.TestClassMetaDataAspect;
-
 /**
  * 
  * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
  * @version $Revision: 1.1 $
  */
-public class ClassMetaDataLoaderBeansTestCase extends AOPMicrocontainerTest
+public class ClassMetaDataLoaderBeansTestCase extends ClassMetaDataLoaderTest
 {
-   public void testMetaData() throws Exception
-   {
-      POJO pojo = (POJO)getBean("Bean");
-      assertNotNull(pojo);
-      
-      assertTrue(TestClassMetaDataAspect.invoked);
-      assertEquals("Ccustom1", TestClassMetaDataAspect.last);
-      
-      TestClassMetaDataAspect.invoked = false;
-      TestClassMetaDataAspect.last = null;
-      pojo.method(2);
-      assertTrue(TestClassMetaDataAspect.invoked);
-      assertEquals("Mcustom1", TestClassMetaDataAspect.last);
-      
-      TestClassMetaDataAspect.invoked = false;
-      TestClassMetaDataAspect.last = null;
-      pojo.method();
-      assertTrue(TestClassMetaDataAspect.invoked);
-      assertEquals("Mcustom1", TestClassMetaDataAspect.last);
-   }
-   
    public static Test suite()
    {
       return suite(ClassMetaDataLoaderBeansTestCase.class);

Added: projects/microcontainer/trunk/aop-mc-int/src/tests/org/jboss/test/microcontainer/beans/test/ClassMetaDataLoaderDeploymentTestCase.java
===================================================================
--- projects/microcontainer/trunk/aop-mc-int/src/tests/org/jboss/test/microcontainer/beans/test/ClassMetaDataLoaderDeploymentTestCase.java	                        (rev 0)
+++ projects/microcontainer/trunk/aop-mc-int/src/tests/org/jboss/test/microcontainer/beans/test/ClassMetaDataLoaderDeploymentTestCase.java	2008-04-06 21:46:33 UTC (rev 71751)
@@ -0,0 +1,42 @@
+/*
+* 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 ClassMetaDataLoaderDeploymentTestCase extends ClassMetaDataLoaderTest
+{
+   public static Test suite()
+   {
+      return suite(ClassMetaDataLoaderDeploymentTestCase.class);
+   }
+   
+   public ClassMetaDataLoaderDeploymentTestCase(String test)
+   {
+      super(test);
+   }
+}

Added: projects/microcontainer/trunk/aop-mc-int/src/tests/org/jboss/test/microcontainer/beans/test/ClassMetaDataLoaderTest.java
===================================================================
--- projects/microcontainer/trunk/aop-mc-int/src/tests/org/jboss/test/microcontainer/beans/test/ClassMetaDataLoaderTest.java	                        (rev 0)
+++ projects/microcontainer/trunk/aop-mc-int/src/tests/org/jboss/test/microcontainer/beans/test/ClassMetaDataLoaderTest.java	2008-04-06 21:46:33 UTC (rev 71751)
@@ -0,0 +1,63 @@
+/*
+* 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 org.jboss.test.aop.junit.AOPMicrocontainerTest;
+import org.jboss.test.microcontainer.beans.POJO;
+import org.jboss.test.microcontainer.beans.TestClassMetaDataAspect;
+
+/**
+ * 
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @version $Revision: 1.1 $
+ */
+public abstract class ClassMetaDataLoaderTest extends AOPMicrocontainerTest
+{
+   public void testMetaData() throws Exception
+   {
+      POJO pojo = (POJO)getBean("Bean");
+      assertNotNull(pojo);
+      
+      assertTrue(TestClassMetaDataAspect.invoked);
+      assertEquals("Ccustom1", TestClassMetaDataAspect.last);
+      
+      TestClassMetaDataAspect.invoked = false;
+      TestClassMetaDataAspect.last = null;
+      pojo.method(2);
+      assertTrue(TestClassMetaDataAspect.invoked);
+      assertEquals("Mcustom1", TestClassMetaDataAspect.last);
+      
+      TestClassMetaDataAspect.invoked = false;
+      TestClassMetaDataAspect.last = null;
+      pojo.method();
+      assertTrue(TestClassMetaDataAspect.invoked);
+      assertEquals("Mcustom1", TestClassMetaDataAspect.last);
+   }
+   
+
+   public ClassMetaDataLoaderTest(String name)
+   {
+      // FIXME ClassMetaDataLoaderTest constructor
+      super(name);
+   }
+
+}

Added: projects/microcontainer/trunk/aop-mc-int/src/tests/org/jboss/test/microcontainer/beans/test/ClassMetaDataTest.java
===================================================================
--- projects/microcontainer/trunk/aop-mc-int/src/tests/org/jboss/test/microcontainer/beans/test/ClassMetaDataTest.java	                        (rev 0)
+++ projects/microcontainer/trunk/aop-mc-int/src/tests/org/jboss/test/microcontainer/beans/test/ClassMetaDataTest.java	2008-04-06 21:46:33 UTC (rev 71751)
@@ -0,0 +1,69 @@
+/*
+* 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 org.jboss.test.aop.junit.AOPMicrocontainerTest;
+import org.jboss.test.microcontainer.beans.POJO;
+import org.jboss.test.microcontainer.beans.TestClassMetaDataAspect;
+
+/**
+ * 
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @version $Revision: 1.1 $
+ */
+public abstract class ClassMetaDataTest extends AOPMicrocontainerTest
+{
+   public void testMetaData() throws Exception
+   {
+      POJO pojo = (POJO)getBean("Bean");
+      assertNotNull(pojo);
+      
+      assertInvokedLastAndClass("ctor");
+      
+      TestClassMetaDataAspect.reset();
+      pojo.method(2);
+      assertInvokedLastAndClass("method1");
+      
+      TestClassMetaDataAspect.reset();
+      pojo.method();
+      assertInvokedLastAndClass("method2");
+      
+      TestClassMetaDataAspect.reset();
+      pojo.defaultMethod();
+      assertInvokedLastAndClass("default");
+      
+   }
+   
+   private void assertInvokedLastAndClass(String last)
+   {
+      assertTrue(TestClassMetaDataAspect.invoked);
+      assertEquals(last, TestClassMetaDataAspect.last);
+      assertEquals("clazz1", TestClassMetaDataAspect.clazz1);
+      assertEquals("clazz2", TestClassMetaDataAspect.clazz2);
+   }
+
+   public ClassMetaDataTest(String name)
+   {
+      super(name);
+   }
+
+}

Modified: projects/microcontainer/trunk/aop-mc-int/src/tests/org/jboss/test/microcontainer/beans/test/DomainSimpleTest.java
===================================================================
--- projects/microcontainer/trunk/aop-mc-int/src/tests/org/jboss/test/microcontainer/beans/test/DomainSimpleTest.java	2008-04-06 18:54:40 UTC (rev 71750)
+++ projects/microcontainer/trunk/aop-mc-int/src/tests/org/jboss/test/microcontainer/beans/test/DomainSimpleTest.java	2008-04-06 21:46:33 UTC (rev 71751)
@@ -115,6 +115,9 @@
       o = manager.getArrayBinding("TestArrayBinding");
       checkShouldBeThere(o, shouldBeThere);
       
+      checkShouldBeThere(manager.getClassMetaData().keySet(), shouldBeThere);
+      checkShouldBeThere(manager.getClassMetaDataLoaders().keySet(), shouldBeThere);
+      
       Iterator<DeclareDef> it = manager.getDeclares();
       if (shouldBeThere)
       {

Added: projects/microcontainer/trunk/aop-mc-int/src/tests/org/jboss/test/microcontainer/beans/test/ThrowawayMetaDataTest.java
===================================================================
--- projects/microcontainer/trunk/aop-mc-int/src/tests/org/jboss/test/microcontainer/beans/test/ThrowawayMetaDataTest.java	                        (rev 0)
+++ projects/microcontainer/trunk/aop-mc-int/src/tests/org/jboss/test/microcontainer/beans/test/ThrowawayMetaDataTest.java	2008-04-06 21:46:33 UTC (rev 71751)
@@ -0,0 +1,49 @@
+/*
+* 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;
+
+import org.jboss.test.aop.junit.AOPMicrocontainerTest;
+
+/**
+ * 
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @version $Revision: 1.1 $
+ */
+public class ThrowawayMetaDataTest extends AOPMicrocontainerTest
+{
+   public static Test suite()
+   {
+      return suite(ThrowawayMetaDataTest.class);
+   }
+   
+   public ThrowawayMetaDataTest(String name)
+   {
+      super(name);
+   }
+
+   public void testMetaData()
+   {  
+      System.out.println("Hello!!!");
+   }
+}




More information about the jboss-cvs-commits mailing list