[jboss-cvs] JBossAS SVN: r58072 - in projects/microcontainer/trunk: aop-mc-int aop-mc-int/src/main/org/jboss/aop/microcontainer/integration aop-mc-int/src/resources/tests/org/jboss/test/microcontainer/advisor/test aop-mc-int/src/resources/tests/org/jboss/test/microcontainer/matrix/mc/test aop-mc-int/src/resources/tests/org/jboss/test/microcontainer/test container/src/main/org/jboss/repository/plugins/basic container/src/main/org/jboss/repository/spi kernel/src/main/org/jboss/kernel/plugins/dependency kernel/src/main/org/jboss/kernel/spi/dependency kernel/src/main/org/jboss/kernel/spi/metadata

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Fri Nov 3 08:02:34 EST 2006


Author: kabir.khan at jboss.com
Date: 2006-11-03 08:02:06 -0500 (Fri, 03 Nov 2006)
New Revision: 58072

Added:
   projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/spi/metadata/MutableMetaDataContext.java
Modified:
   projects/microcontainer/trunk/aop-mc-int/build-test.xml
   projects/microcontainer/trunk/aop-mc-int/src/main/org/jboss/aop/microcontainer/integration/AOPDependencyBuilder.java
   projects/microcontainer/trunk/aop-mc-int/src/main/org/jboss/aop/microcontainer/integration/AOPMetaDataContext.java
   projects/microcontainer/trunk/aop-mc-int/src/main/org/jboss/aop/microcontainer/integration/AOPMetaDataContextFactory.java
   projects/microcontainer/trunk/aop-mc-int/src/resources/tests/org/jboss/test/microcontainer/advisor/test/MicrocontainerAdvisedAdvisorConstructorTestCase.xml
   projects/microcontainer/trunk/aop-mc-int/src/resources/tests/org/jboss/test/microcontainer/advisor/test/MicrocontainerAdvisedAdvisorOverloadedConstructorTestCase.xml
   projects/microcontainer/trunk/aop-mc-int/src/resources/tests/org/jboss/test/microcontainer/advisor/test/MicrocontainerAdvisedInstanceAdvisorTestCase.xml
   projects/microcontainer/trunk/aop-mc-int/src/resources/tests/org/jboss/test/microcontainer/advisor/test/MicrocontainerAdvisedIntroducedAdvisorTestCase.xml
   projects/microcontainer/trunk/aop-mc-int/src/resources/tests/org/jboss/test/microcontainer/advisor/test/MicrocontainerNotAdvisedIntroducedProxyAdvisorTestCase.xml
   projects/microcontainer/trunk/aop-mc-int/src/resources/tests/org/jboss/test/microcontainer/advisor/test/MicrocontainerNotAdvisedProxyAdvisorConstructorTestCase.xml
   projects/microcontainer/trunk/aop-mc-int/src/resources/tests/org/jboss/test/microcontainer/advisor/test/MicrocontainerNotAdvisedProxyAdvisorOverloadedConstructorTestCase.xml
   projects/microcontainer/trunk/aop-mc-int/src/resources/tests/org/jboss/test/microcontainer/advisor/test/MicrocontainerNotAdvisedProxyAdvisorTestCase.xml
   projects/microcontainer/trunk/aop-mc-int/src/resources/tests/org/jboss/test/microcontainer/matrix/mc/test/AdvisedInstanceMetaDataContextTestCase.xml
   projects/microcontainer/trunk/aop-mc-int/src/resources/tests/org/jboss/test/microcontainer/matrix/mc/test/BaseAdvisedChildAdvisedAndProxyTestCase.xml
   projects/microcontainer/trunk/aop-mc-int/src/resources/tests/org/jboss/test/microcontainer/matrix/mc/test/BaseAdvisedChildProxyTestCase.xml
   projects/microcontainer/trunk/aop-mc-int/src/resources/tests/org/jboss/test/microcontainer/matrix/mc/test/BaseNotAdvisedChildAdvisedAndProxyTestCase.xml
   projects/microcontainer/trunk/aop-mc-int/src/resources/tests/org/jboss/test/microcontainer/matrix/mc/test/BaseNotAdvisedChildProxyTestCase.xml
   projects/microcontainer/trunk/aop-mc-int/src/resources/tests/org/jboss/test/microcontainer/matrix/mc/test/BaseOnlyAdvisedChildAdvisedAndProxyTestCase.xml
   projects/microcontainer/trunk/aop-mc-int/src/resources/tests/org/jboss/test/microcontainer/matrix/mc/test/BaseOnlyAdvisedChildProxyTestCase.xml
   projects/microcontainer/trunk/aop-mc-int/src/resources/tests/org/jboss/test/microcontainer/matrix/mc/test/BaseOverriddenAdvisedChildAdvisedAndProxyTestCase.xml
   projects/microcontainer/trunk/aop-mc-int/src/resources/tests/org/jboss/test/microcontainer/matrix/mc/test/BaseOverriddenAdvisedChildProxyTestCase.xml
   projects/microcontainer/trunk/aop-mc-int/src/resources/tests/org/jboss/test/microcontainer/matrix/mc/test/BasePreparedChildAdvisedAndProxyTestCase.xml
   projects/microcontainer/trunk/aop-mc-int/src/resources/tests/org/jboss/test/microcontainer/matrix/mc/test/NotAdvisedInstanceMetaDataContextTestCase.xml
   projects/microcontainer/trunk/aop-mc-int/src/resources/tests/org/jboss/test/microcontainer/test/ConstructorInterceptorWithDependencyTestCaseNotAutomatic1.xml
   projects/microcontainer/trunk/aop-mc-int/src/resources/tests/org/jboss/test/microcontainer/test/InterceptorWithAnnotationDependencyTestCaseNotAutomatic1.xml
   projects/microcontainer/trunk/aop-mc-int/src/resources/tests/org/jboss/test/microcontainer/test/InterceptorWithDependencyTestCaseNotAutomatic1.xml
   projects/microcontainer/trunk/aop-mc-int/src/resources/tests/org/jboss/test/microcontainer/test/InterceptorWithNestedAnnotationDependencyTestCaseNotAutomatic3.xml
   projects/microcontainer/trunk/aop-mc-int/src/resources/tests/org/jboss/test/microcontainer/test/InterceptorWithNestedMethodAnnotationDependencyTestCaseNotAutomatic3.xml
   projects/microcontainer/trunk/aop-mc-int/src/resources/tests/org/jboss/test/microcontainer/test/InterceptorWithOverriddenClassAnnotationDependencyTestCaseNotAutomatic1.xml
   projects/microcontainer/trunk/aop-mc-int/src/resources/tests/org/jboss/test/microcontainer/test/InterceptorWithOverriddenMethodAnnotationDependencyForChildTestCaseNotAutomatic2.xml
   projects/microcontainer/trunk/aop-mc-int/src/resources/tests/org/jboss/test/microcontainer/test/InterceptorWithOverriddenMethodAnnotationDependencyTestCaseNotAutomatic2.xml
   projects/microcontainer/trunk/aop-mc-int/src/resources/tests/org/jboss/test/microcontainer/test/IntroductionDependencyTestCaseNotAutomatic1.xml
   projects/microcontainer/trunk/aop-mc-int/src/resources/tests/org/jboss/test/microcontainer/test/JMXDecoratedTestCase.xml
   projects/microcontainer/trunk/aop-mc-int/src/resources/tests/org/jboss/test/microcontainer/test/MetaDataTestCase.xml
   projects/microcontainer/trunk/aop-mc-int/src/resources/tests/org/jboss/test/microcontainer/test/MixinTestCase.xml
   projects/microcontainer/trunk/container/src/main/org/jboss/repository/plugins/basic/BasicMetaDataContextFactory.java
   projects/microcontainer/trunk/container/src/main/org/jboss/repository/spi/MetaDataContext.java
   projects/microcontainer/trunk/container/src/main/org/jboss/repository/spi/MetaDataContextFactory.java
   projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/dependency/AbstractKernelControllerContext.java
   projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/dependency/DescribeAction.java
   projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/dependency/InstantiateAction.java
   projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/spi/dependency/KernelControllerContext.java
Log:
Start migrating to org.jboss.metadata instead of org.jboss.repository for the AOP metadata

Modified: projects/microcontainer/trunk/aop-mc-int/build-test.xml
===================================================================
--- projects/microcontainer/trunk/aop-mc-int/build-test.xml	2006-11-03 12:51:35 UTC (rev 58071)
+++ projects/microcontainer/trunk/aop-mc-int/build-test.xml	2006-11-03 13:02:06 UTC (rev 58072)
@@ -68,7 +68,7 @@
 
     <path id="jboss.aop50.classpath">
       <fileset dir="${jboss.aop.lib}">
-         <include name="jboss-aop.jar"/>
+         <include name="jboss-aop-jdk50.jar"/>
       </fileset>
     </path>
 

Modified: projects/microcontainer/trunk/aop-mc-int/src/main/org/jboss/aop/microcontainer/integration/AOPDependencyBuilder.java
===================================================================
--- projects/microcontainer/trunk/aop-mc-int/src/main/org/jboss/aop/microcontainer/integration/AOPDependencyBuilder.java	2006-11-03 12:51:35 UTC (rev 58071)
+++ projects/microcontainer/trunk/aop-mc-int/src/main/org/jboss/aop/microcontainer/integration/AOPDependencyBuilder.java	2006-11-03 13:02:06 UTC (rev 58072)
@@ -184,7 +184,7 @@
                HashMap<String, ArrayList<String>> classMap = new HashMap<String, ArrayList<String>>();
                getRealMethodAnnotationDependencies(method, classMap);
                HashMap<String, ArrayList<String>> overrideMap = new HashMap<String, ArrayList<String>>();
-               getMetaDataContextMethodAnnotationDependencies(method.getName(), metaDataContext, overrideMap);
+               getMetaDataContextMethodAnnotationDependencies(method, metaDataContext, overrideMap);
                addAllDependenciesToSet(dependencies, classMap, overrideMap);
             }
          }
@@ -203,11 +203,12 @@
       }
    }
    
-   private void getMetaDataContextMethodAnnotationDependencies(String methodName, MetaDataContext metaDataContext, HashMap<String, ArrayList<String>> dependencies) throws Exception
+   private void getMetaDataContextMethodAnnotationDependencies(MethodInfo method, MetaDataContext metaDataContext, HashMap<String, ArrayList<String>> dependencies) throws Exception
    {
       if (metaDataContext != null)
       {
-         List methodAnnotations = metaDataContext.getAnnotationsForMethod(methodName);
+         long hash = ClassInfoMethodHashing.methodHash(method);
+         List methodAnnotations = metaDataContext.getAnnotationsForMethod(hash);
          for (Iterator it = methodAnnotations.iterator() ; it.hasNext() ; )
          {
             Object annotation = it.next();

Modified: projects/microcontainer/trunk/aop-mc-int/src/main/org/jboss/aop/microcontainer/integration/AOPMetaDataContext.java
===================================================================
--- projects/microcontainer/trunk/aop-mc-int/src/main/org/jboss/aop/microcontainer/integration/AOPMetaDataContext.java	2006-11-03 12:51:35 UTC (rev 58071)
+++ projects/microcontainer/trunk/aop-mc-int/src/main/org/jboss/aop/microcontainer/integration/AOPMetaDataContext.java	2006-11-03 13:02:06 UTC (rev 58072)
@@ -22,243 +22,159 @@
 package org.jboss.aop.microcontainer.integration;
 
 import java.lang.annotation.Annotation;
-import java.lang.reflect.Method;
 import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Iterator;
 import java.util.List;
-import java.util.Map;
 import java.util.Set;
 
 import org.jboss.aop.Advised;
 import org.jboss.aop.Advisor;
 import org.jboss.aop.proxy.container.AspectManaged;
+import org.jboss.aop.util.ClassInfoMethodHashing;
 import org.jboss.beans.info.spi.PropertyInfo;
 import org.jboss.beans.metadata.spi.AnnotationMetaData;
+import org.jboss.kernel.spi.metadata.MutableMetaDataContext;
+import org.jboss.metadata.plugins.loader.memory.MemoryMetaDataLoader;
+import org.jboss.metadata.spi.repository.MetaDataRepository;
+import org.jboss.metadata.spi.repository.MutableMetaDataRepository;
+import org.jboss.metadata.spi.retrieval.AnnotationItem;
+import org.jboss.metadata.spi.retrieval.AnnotationsItem;
+import org.jboss.metadata.spi.retrieval.MetaDataRetrieval;
+import org.jboss.metadata.spi.scope.CommonLevels;
+import org.jboss.metadata.spi.scope.Scope;
+import org.jboss.metadata.spi.scope.ScopeKey;
 import org.jboss.reflect.spi.MethodInfo;
-
-import org.jboss.repository.spi.BasicMetaData;
-import org.jboss.repository.spi.CommonNames;
-import org.jboss.repository.spi.KernelRepository;
-import org.jboss.repository.spi.Key;
-import org.jboss.repository.spi.MetaData;
 import org.jboss.repository.spi.MetaDataContext;
-import org.jboss.util.JBossStringBuilder;
 
 /**
  * 
  * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
  * @version $Revision$
  */
-public class AOPMetaDataContext implements MetaDataContext
+public class AOPMetaDataContext implements MutableMetaDataContext
 {
-   Map<String, String> scope;
+   final static List<Annotation> EMPTY_ANNOTATIONS = new ArrayList<Annotation>();
+   Scope scope;
    Object target;
-   KernelRepository repository;
-   private final static Class[] EMPTY_CLASS_ARRAY = new Class[0];
-
-   public AOPMetaDataContext(KernelRepository repository, Object beanName)
+   MutableMetaDataRepository repository;
+   String beanName;
+   ScopeKey instanceKey;
+   
+   public AOPMetaDataContext(MutableMetaDataRepository repository, String beanName)
    {
       this.repository = repository;
-      scope = new HashMap<String, String>();
-      
-      //TODO: Determine level this data should be put at.
-      scope.put(CommonNames.DOMAIN, "d");
-      scope.put(CommonNames.CLUSTER, "c");
-      scope.put(CommonNames.SERVER, "s");
-      scope.put(CommonNames.APPLICATION, "a");
-      scope.put(CommonNames.DEPLOYMENT, (String) beanName);
+      this.beanName = beanName;
+      //TODO: This needs linking up with the parent scopes somehow - where will that info come from?
+      scope = new Scope(CommonLevels.INSTANCE, beanName);
+      instanceKey = new ScopeKey(scope);
    }
    
-   public Object getAnnotation(Class ann)
+   public <T extends Annotation> boolean hasAnnotation(Class<T> ann)
    {
-      return getAnnotation(ann.getName());
-   }
-
-   public boolean hasAnnotation(String ann)
-   {
       return getAnnotation(ann) != null;
    }
 
-   private Object getAnnotation(String name)
+   public <T extends Annotation> Annotation getAnnotation(Class<T> ann)
    {
-      Key key = new Key(name, scope);
-      return repository.getMetaData(key);
+      return getAnnotation(instanceKey, ann);
    }
 
-   public List getAnnotations()
+   public <T extends Annotation> boolean hasAnnotationForMethod(long methodHash, Class<T> ann)
    {
-      ArrayList<Object> annotations = new ArrayList<Object>();
-      Iterator keys = repository.getKeyNames();
-      while (keys.hasNext())
-      {
-         Key key = (Key)keys.next();
-         if (key.getName().length == 1)
-         {
-            Key realKey =  new Key(key.getName(), scope);
-            Object annotation = repository.getMetaData(realKey);
-            if (annotation != null)
-            {
-               annotations.add(annotation);
-            }
-         }
-      }
-      
-      return annotations;
+      return getAnnotationForMethod(methodHash, ann) != null;
    }
 
-
-   public Object getAnnotation(Method m, Class ann)
+   public <T extends Annotation> Annotation getAnnotationForMethod(long methodHash, Class<T> ann)
    {
-      return getAnnotation(m, ann.getName());
+      ScopeKey joinpointKey = createHashedJoinpointKey(methodHash);
+      return getAnnotation(joinpointKey, ann);
    }
 
-   public boolean hasAnnotation(Method m, String ann)
+   public List<Annotation> getAnnotations()
    {
-      return getAnnotation(m, ann) != null;
+      return getAnnotations(instanceKey);
    }
-
-   private Object getAnnotation(Method m, String name)
+   
+   public List<Annotation> getAnnotationsForMethod(long methodHash)
    {
-      Key key = createMethodKey(name, m.getName());
-      return repository.getMetaData(key);
+      ScopeKey joinpointKey = createHashedJoinpointKey(methodHash);
+      return getAnnotations(joinpointKey);
    }
    
-   public List getAnnotationsForMethod(String methodName)
+   public List<Annotation> getAnnotationsForMethods(long[] methodHashes)
    {
-      ArrayList<Object> annotations = new ArrayList<Object>();
-      Iterator keys = repository.getKeyNames();
-      while (keys.hasNext())
+      ArrayList<Annotation> annotations = new ArrayList<Annotation>();
+      for (long hash : methodHashes)
       {
-         Key key = (Key)keys.next();
-         String[] name = key.getName(); 
-         if (name.length == 2)
-         {
-            if (name[1].equals(methodName))
-            {
-               Key realKey =  new Key(key.getName(), scope);
-               Object annotation = repository.getMetaData(realKey);
-               if (annotation != null)
-               {
-                  annotations.add(annotation);
-               }
-            }
-         }
+         ScopeKey joinpointKey = createHashedJoinpointKey(hash);
+         List<Annotation> methodAnnotations = getAnnotations(joinpointKey);
+         annotations.addAll(methodAnnotations);
       }
-      
       return annotations;
    }
-
-   public List getAnnotationsForMethods(String[] methodNames)
-   {
-      ArrayList<Object> annotations = new ArrayList<Object>();
-      Iterator keys = repository.getKeyNames();
-      while (keys.hasNext())
-      {
-         Key key = (Key)keys.next();
-         String[] name = key.getName(); 
-         if (name.length == 2)
-         {
-            for (int i = 0 ; i < methodNames.length ; i++)
-            {
-               if (name[1].equals(methodNames[i]))
-               {
-                  Key realKey =  new Key(key.getName(), scope);
-                  Object annotation = repository.getMetaData(realKey);
-                  if (annotation != null)
-                  {
-                     annotations.add(annotation);
-                  }
-               }
-            }
-         }
-      }
-      
-      return annotations;
-   }
    
-   public KernelRepository getRepository()
+   public MetaDataRepository getRepository()
    {
       return repository;
    }
 
-   public Map getScope()
+   /**
+    * Add instance-level annotations
+    * @param annotations a Set<AnnotationMetaData>
+    */
+   public void addAnnotations(Set<AnnotationMetaData> annotations)
    {
-      return scope;
-   }
+      if (annotations.size() == 0)
+      {
+         return;
+      }
 
-   public void addAnnotations(Set annotations)
-   {
-      for (Iterator i = annotations.iterator(); i.hasNext();)
+      MemoryMetaDataLoader retrieval = new MemoryMetaDataLoader(instanceKey);
+      for (AnnotationMetaData annotationMetaData : annotations)
       {
-         AnnotationMetaData annotation = (AnnotationMetaData) i.next();
-         Key key = new Key(getName(annotation), scope);            
-         
-         final MetaData metadata = createMetaData(annotation);
-         repository.addMetaData(key, metadata);
+         Annotation annotation = annotationMetaData.getAnnotationInstance();
+         retrieval.addAnnotation(annotation);
       }
+      repository.addMetaDataRetrieval(retrieval);
    }
    
-   public void addPropertyAnnotations(String propertyName, Set propertyInfos, Set annotations)
+   public void addPropertyAnnotations(String propertyName, Set<PropertyInfo> propertyInfos, Set<AnnotationMetaData> annotations)
    {
-      for (Iterator props = propertyInfos.iterator() ; props.hasNext() ; )
+      for (PropertyInfo info : propertyInfos)
       {
-         PropertyInfo info = (PropertyInfo)props.next();
-         
          if (propertyName.equals(info.getName()))
          {
-            MethodInfo getter = info.getGetter();
-            MethodInfo setter = info.getSetter();
+            MemoryMetaDataLoader getterRetrieval = createGetterMetaDataRetrieval(info);
+            MemoryMetaDataLoader setterRetrieval = createSetterMetaDataRetrieval(info);
             
-            for (Iterator anns = annotations.iterator() ; anns.hasNext() ; )
+            if (getterRetrieval == null && setterRetrieval == null)
             {
-               AnnotationMetaData annotation = (AnnotationMetaData)anns.next();
-               
-               if (getter != null || setter != null)
+               continue;
+            }
+            
+            for (AnnotationMetaData annotation : annotations)
+            {
+               if (getterRetrieval != null)
                {
-                  MetaData data = createMetaData(annotation);
-                  if (getter != null)
-                  {
-                     Key key = createMethodKey(getName(annotation), getter.getName());
-                     repository.addMetaData(key, data);
-                  }
-                  if (setter != null)
-                  {
-                     Key key = createMethodKey(getName(annotation), setter.getName());
-                     repository.addMetaData(key, data);
-                  }
+                  getterRetrieval.addAnnotation(annotation.getAnnotationInstance());
                }
+               if (setterRetrieval != null)
+               {
+                  setterRetrieval.addAnnotation(annotation.getAnnotationInstance());
+               }
             }
+            
+            if (getterRetrieval != null)
+            {
+               repository.addMetaDataRetrieval(getterRetrieval);
+            }
+            if (setterRetrieval != null)
+            {
+               repository.addMetaDataRetrieval(setterRetrieval);
+            }
          }
       }
    }
 
-   private Key createMethodKey(String annotationName, String methodName)
-   {
-      return new Key(new String[] {annotationName, methodName}, scope);
-   }
-   
-   private MetaData createMetaData(AnnotationMetaData metadata)
-   {
-      return new BasicMetaData(0, metadata.getAnnotationInstance());
-   }
-   
-   
-   private String getName(Annotation annotation)
-   {
-      return annotation.annotationType().getName();
-   }
-   
-   private String getName(MetaData metadata)
-   {
-      return getName((Annotation)metadata.getData());
-   }
-   
-   private String getName(AnnotationMetaData annotation)
-   {
-      return getName(annotation.getAnnotationInstance());
-   }
-   
    public void setTarget(Object tgt)
    {
       if (tgt == null)
@@ -290,4 +206,71 @@
          }
       }
    }
+   
+   private MemoryMetaDataLoader createGetterMetaDataRetrieval(PropertyInfo propertyInfo)
+   {
+      MethodInfo getter = propertyInfo.getGetter();
+      return createMethodMetaDataRetrieval(getter);
+   }
+   
+   private MemoryMetaDataLoader createSetterMetaDataRetrieval(PropertyInfo propertyInfo)
+   {
+      MethodInfo setter = propertyInfo.getSetter();
+      return createMethodMetaDataRetrieval(setter);
+   }
+   
+   private MemoryMetaDataLoader createMethodMetaDataRetrieval(MethodInfo accessor)
+   {
+      if (accessor == null)
+      {
+         return null;
+      }
+      long hash = ClassInfoMethodHashing.methodHash(accessor);
+      ScopeKey joinpointKey = createHashedJoinpointKey(hash);
+      MemoryMetaDataLoader retrieval = new MemoryMetaDataLoader(joinpointKey);
+      return retrieval;
+   }
+   
+   private ScopeKey createHashedJoinpointKey(long hash)
+   {
+      ScopeKey joinpointKey = new ScopeKey(instanceKey.getScopes());
+      joinpointKey.addScope(CommonLevels.JOINPOINT, String.valueOf(hash));
+      return joinpointKey;
+   }
+
+   private <T extends Annotation> Annotation getAnnotation(ScopeKey key, Class<T> ann)
+   {
+      MetaDataRetrieval retrieval = repository.getMetaDataRetrieval(key);
+      
+      if (retrieval != null)
+      {
+         AnnotationItem item = retrieval.retrieveAnnotation(ann);
+         if (item != null)
+         {
+            return item.getAnnotation();
+         }
+      }      
+      return null;
+   }
+
+   private List<Annotation> getAnnotations(ScopeKey key)
+   {
+      MetaDataRetrieval retrieval = repository.getMetaDataRetrieval(key);
+      
+      if (retrieval != null)
+      {
+         AnnotationsItem item = retrieval.retrieveAnnotations();
+         if (item != null)
+         {
+            AnnotationItem[] items = item.getAnnotations();
+            List<Annotation> annotations = new ArrayList<Annotation>();
+            for (AnnotationItem aitem : items)
+            {
+               annotations.add(aitem.getAnnotation());
+            }
+            return annotations;    
+         }
+      }      
+      return EMPTY_ANNOTATIONS;
+   }
 }   

Modified: projects/microcontainer/trunk/aop-mc-int/src/main/org/jboss/aop/microcontainer/integration/AOPMetaDataContextFactory.java
===================================================================
--- projects/microcontainer/trunk/aop-mc-int/src/main/org/jboss/aop/microcontainer/integration/AOPMetaDataContextFactory.java	2006-11-03 12:51:35 UTC (rev 58071)
+++ projects/microcontainer/trunk/aop-mc-int/src/main/org/jboss/aop/microcontainer/integration/AOPMetaDataContextFactory.java	2006-11-03 13:02:06 UTC (rev 58072)
@@ -21,7 +21,8 @@
 */ 
 package org.jboss.aop.microcontainer.integration;
 
-import org.jboss.repository.spi.KernelRepository;
+import org.jboss.metadata.spi.repository.MetaDataRepository;
+import org.jboss.metadata.spi.repository.MutableMetaDataRepository;
 import org.jboss.repository.spi.MetaDataContext;
 import org.jboss.repository.spi.MetaDataContextFactory;
 
@@ -33,9 +34,16 @@
 public class AOPMetaDataContextFactory implements MetaDataContextFactory
 {
 
-   public MetaDataContext getMetaDataContext(KernelRepository repository, Object beanName)
+   public MetaDataContext getMetaDataContext(MetaDataRepository repository, String beanName)
    {
-      return new AOPMetaDataContext(repository, beanName);
+      if (repository instanceof MutableMetaDataRepository)
+      {
+         return new AOPMetaDataContext((MutableMetaDataRepository)repository, beanName);
+      }
+      else
+      {
+         throw new RuntimeException("The passed in repository must be of type org.jboss.metadata.spi.repository.MutableMetaDataRepository");
+      }
    }
    
 }

Modified: projects/microcontainer/trunk/aop-mc-int/src/resources/tests/org/jboss/test/microcontainer/advisor/test/MicrocontainerAdvisedAdvisorConstructorTestCase.xml
===================================================================
--- projects/microcontainer/trunk/aop-mc-int/src/resources/tests/org/jboss/test/microcontainer/advisor/test/MicrocontainerAdvisedAdvisorConstructorTestCase.xml	2006-11-03 12:51:35 UTC (rev 58071)
+++ projects/microcontainer/trunk/aop-mc-int/src/resources/tests/org/jboss/test/microcontainer/advisor/test/MicrocontainerAdvisedAdvisorConstructorTestCase.xml	2006-11-03 13:02:06 UTC (rev 58072)
@@ -2,16 +2,14 @@
 
 <deployment xmlns="urn:jboss:bean-deployer:2.0">
 
-   <bean name="Repository" class="org.jboss.aop.microcontainer.integration.AOPKernelRepository">
-      <constructor factoryClass="org.jboss.aop.microcontainer.integration.AOPKernelRepository" factoryMethod="instance"/>
-   </bean>
+   <bean name="Repository" class="org.jboss.metadata.plugins.repository.basic.BasicMetaDataRepository"/>
 
 	<bean name="One" class="org.jboss.test.microcontainer.advisor.test.some.Pojo"/>
-	
+
 	<bean name="Two" class="org.jboss.test.microcontainer.advisor.test.some.Pojo"/>
-	
+
 	<bean name="Three" class="org.jboss.test.microcontainer.advisor.test.another.Pojo"/>
-	
+
 	<bean name="Four" class="org.jboss.test.microcontainer.advisor.test.another.Pojo"/>
 </deployment>
 

Modified: projects/microcontainer/trunk/aop-mc-int/src/resources/tests/org/jboss/test/microcontainer/advisor/test/MicrocontainerAdvisedAdvisorOverloadedConstructorTestCase.xml
===================================================================
--- projects/microcontainer/trunk/aop-mc-int/src/resources/tests/org/jboss/test/microcontainer/advisor/test/MicrocontainerAdvisedAdvisorOverloadedConstructorTestCase.xml	2006-11-03 12:51:35 UTC (rev 58071)
+++ projects/microcontainer/trunk/aop-mc-int/src/resources/tests/org/jboss/test/microcontainer/advisor/test/MicrocontainerAdvisedAdvisorOverloadedConstructorTestCase.xml	2006-11-03 13:02:06 UTC (rev 58072)
@@ -2,9 +2,7 @@
 
 <deployment xmlns="urn:jboss:bean-deployer:2.0">
 
-   <bean name="Repository" class="org.jboss.aop.microcontainer.integration.AOPKernelRepository">
-      <constructor factoryClass="org.jboss.aop.microcontainer.integration.AOPKernelRepository" factoryMethod="instance"/>
-   </bean>
+   <bean name="Repository" class="org.jboss.metadata.plugins.repository.basic.BasicMetaDataRepository"/>
 
 	<bean name="One" class="org.jboss.test.microcontainer.advisor.test.some.Pojo">
 	   <constructor>
@@ -12,14 +10,14 @@
 	      <parameter>One</parameter>
 	   </constructor>
 	</bean>
-	
+
 	<bean name="Two" class="org.jboss.test.microcontainer.advisor.test.some.Pojo">
 	   <constructor>
 	      <parameter>9999</parameter>
 	      <parameter>Should be ignored since singleton aspect stops creation of new instance</parameter>
 	   </constructor>
 	</bean>
-	
+
 </deployment>
 
 

Modified: projects/microcontainer/trunk/aop-mc-int/src/resources/tests/org/jboss/test/microcontainer/advisor/test/MicrocontainerAdvisedInstanceAdvisorTestCase.xml
===================================================================
--- projects/microcontainer/trunk/aop-mc-int/src/resources/tests/org/jboss/test/microcontainer/advisor/test/MicrocontainerAdvisedInstanceAdvisorTestCase.xml	2006-11-03 12:51:35 UTC (rev 58071)
+++ projects/microcontainer/trunk/aop-mc-int/src/resources/tests/org/jboss/test/microcontainer/advisor/test/MicrocontainerAdvisedInstanceAdvisorTestCase.xml	2006-11-03 13:02:06 UTC (rev 58072)
@@ -2,9 +2,7 @@
 
 <deployment xmlns="urn:jboss:bean-deployer:2.0">
 
-   <bean name="Repository" class="org.jboss.aop.microcontainer.integration.AOPKernelRepository">
-      <constructor factoryClass="org.jboss.aop.microcontainer.integration.AOPKernelRepository" factoryMethod="instance"/>
-   </bean>
+   <bean name="Repository" class="org.jboss.metadata.plugins.repository.basic.BasicMetaDataRepository"/>
 
    <bean name="AspectManager" class="org.jboss.aop.AspectManager">
       <constructor factoryClass="org.jboss.aop.AspectManager" factoryMethod="instance"/>

Modified: projects/microcontainer/trunk/aop-mc-int/src/resources/tests/org/jboss/test/microcontainer/advisor/test/MicrocontainerAdvisedIntroducedAdvisorTestCase.xml
===================================================================
--- projects/microcontainer/trunk/aop-mc-int/src/resources/tests/org/jboss/test/microcontainer/advisor/test/MicrocontainerAdvisedIntroducedAdvisorTestCase.xml	2006-11-03 12:51:35 UTC (rev 58071)
+++ projects/microcontainer/trunk/aop-mc-int/src/resources/tests/org/jboss/test/microcontainer/advisor/test/MicrocontainerAdvisedIntroducedAdvisorTestCase.xml	2006-11-03 13:02:06 UTC (rev 58072)
@@ -2,9 +2,7 @@
 
 <deployment xmlns="urn:jboss:bean-deployer:2.0">
 
-   <bean name="Repository" class="org.jboss.aop.microcontainer.integration.AOPKernelRepository">
-      <constructor factoryClass="org.jboss.aop.microcontainer.integration.AOPKernelRepository" factoryMethod="instance"/>
-   </bean>
+   <bean name="Repository" class="org.jboss.metadata.plugins.repository.basic.BasicMetaDataRepository"/>
 
    <bean name="Test" class="org.jboss.test.microcontainer.advisor.test.TestObject">
       <annotation>@org.jboss.test.microcontainer.advisor.test.TestIntroductionAnnotation</annotation>

Modified: projects/microcontainer/trunk/aop-mc-int/src/resources/tests/org/jboss/test/microcontainer/advisor/test/MicrocontainerNotAdvisedIntroducedProxyAdvisorTestCase.xml
===================================================================
--- projects/microcontainer/trunk/aop-mc-int/src/resources/tests/org/jboss/test/microcontainer/advisor/test/MicrocontainerNotAdvisedIntroducedProxyAdvisorTestCase.xml	2006-11-03 12:51:35 UTC (rev 58071)
+++ projects/microcontainer/trunk/aop-mc-int/src/resources/tests/org/jboss/test/microcontainer/advisor/test/MicrocontainerNotAdvisedIntroducedProxyAdvisorTestCase.xml	2006-11-03 13:02:06 UTC (rev 58072)
@@ -2,11 +2,8 @@
 
 <deployment xmlns="urn:jboss:bean-deployer:2.0">
 
-   <bean name="Repository" class="org.jboss.aop.microcontainer.integration.AOPKernelRepository">
-      <constructor factoryClass="org.jboss.aop.microcontainer.integration.AOPKernelRepository" factoryMethod="instance"/>
-   </bean>
+   <bean name="Repository" class="org.jboss.metadata.plugins.repository.basic.BasicMetaDataRepository"/>
 
-
    <bean name="Test" class="org.jboss.test.microcontainer.advisor.test.TestObject">
       <annotation>@org.jboss.test.microcontainer.advisor.test.TestIntroductionAnnotation</annotation>
    </bean>

Modified: projects/microcontainer/trunk/aop-mc-int/src/resources/tests/org/jboss/test/microcontainer/advisor/test/MicrocontainerNotAdvisedProxyAdvisorConstructorTestCase.xml
===================================================================
--- projects/microcontainer/trunk/aop-mc-int/src/resources/tests/org/jboss/test/microcontainer/advisor/test/MicrocontainerNotAdvisedProxyAdvisorConstructorTestCase.xml	2006-11-03 12:51:35 UTC (rev 58071)
+++ projects/microcontainer/trunk/aop-mc-int/src/resources/tests/org/jboss/test/microcontainer/advisor/test/MicrocontainerNotAdvisedProxyAdvisorConstructorTestCase.xml	2006-11-03 13:02:06 UTC (rev 58072)
@@ -2,9 +2,7 @@
 
 <deployment xmlns="urn:jboss:bean-deployer:2.0">
 
-   <bean name="Repository" class="org.jboss.aop.microcontainer.integration.AOPKernelRepository">
-      <constructor factoryClass="org.jboss.aop.microcontainer.integration.AOPKernelRepository" factoryMethod="instance"/>
-   </bean>
+   <bean name="Repository" class="org.jboss.metadata.plugins.repository.basic.BasicMetaDataRepository"/>
 
 	<bean name="One" class="org.jboss.test.microcontainer.advisor.test.some.Pojo">
 	   <annotation>@org.jboss.test.microcontainer.advisor.test.Singleton</annotation>

Modified: projects/microcontainer/trunk/aop-mc-int/src/resources/tests/org/jboss/test/microcontainer/advisor/test/MicrocontainerNotAdvisedProxyAdvisorOverloadedConstructorTestCase.xml
===================================================================
--- projects/microcontainer/trunk/aop-mc-int/src/resources/tests/org/jboss/test/microcontainer/advisor/test/MicrocontainerNotAdvisedProxyAdvisorOverloadedConstructorTestCase.xml	2006-11-03 12:51:35 UTC (rev 58071)
+++ projects/microcontainer/trunk/aop-mc-int/src/resources/tests/org/jboss/test/microcontainer/advisor/test/MicrocontainerNotAdvisedProxyAdvisorOverloadedConstructorTestCase.xml	2006-11-03 13:02:06 UTC (rev 58072)
@@ -2,9 +2,7 @@
 
 <deployment xmlns="urn:jboss:bean-deployer:2.0">
 
-   <bean name="Repository" class="org.jboss.aop.microcontainer.integration.AOPKernelRepository">
-      <constructor factoryClass="org.jboss.aop.microcontainer.integration.AOPKernelRepository" factoryMethod="instance"/>
-   </bean>
+   <bean name="Repository" class="org.jboss.metadata.plugins.repository.basic.BasicMetaDataRepository"/>
 
 	<bean name="One" class="org.jboss.test.microcontainer.advisor.test.some.Pojo">
       <annotation>@org.jboss.test.microcontainer.advisor.test.Singleton</annotation>

Modified: projects/microcontainer/trunk/aop-mc-int/src/resources/tests/org/jboss/test/microcontainer/advisor/test/MicrocontainerNotAdvisedProxyAdvisorTestCase.xml
===================================================================
--- projects/microcontainer/trunk/aop-mc-int/src/resources/tests/org/jboss/test/microcontainer/advisor/test/MicrocontainerNotAdvisedProxyAdvisorTestCase.xml	2006-11-03 12:51:35 UTC (rev 58071)
+++ projects/microcontainer/trunk/aop-mc-int/src/resources/tests/org/jboss/test/microcontainer/advisor/test/MicrocontainerNotAdvisedProxyAdvisorTestCase.xml	2006-11-03 13:02:06 UTC (rev 58072)
@@ -2,9 +2,7 @@
 
 <deployment xmlns="urn:jboss:bean-deployer:2.0">
 
-   <bean name="Repository" class="org.jboss.aop.microcontainer.integration.AOPKernelRepository">
-      <constructor factoryClass="org.jboss.aop.microcontainer.integration.AOPKernelRepository" factoryMethod="instance"/>
-   </bean>
+   <bean name="Repository" class="org.jboss.metadata.plugins.repository.basic.BasicMetaDataRepository"/>
 
    <bean name="AspectManager" class="org.jboss.aop.AspectManager">
       <constructor factoryClass="org.jboss.aop.AspectManager" factoryMethod="instance"/>

Modified: projects/microcontainer/trunk/aop-mc-int/src/resources/tests/org/jboss/test/microcontainer/matrix/mc/test/AdvisedInstanceMetaDataContextTestCase.xml
===================================================================
--- projects/microcontainer/trunk/aop-mc-int/src/resources/tests/org/jboss/test/microcontainer/matrix/mc/test/AdvisedInstanceMetaDataContextTestCase.xml	2006-11-03 12:51:35 UTC (rev 58071)
+++ projects/microcontainer/trunk/aop-mc-int/src/resources/tests/org/jboss/test/microcontainer/matrix/mc/test/AdvisedInstanceMetaDataContextTestCase.xml	2006-11-03 13:02:06 UTC (rev 58072)
@@ -2,9 +2,7 @@
 
 <deployment xmlns="urn:jboss:bean-deployer:2.0">
 
-   <bean name="Repository" class="org.jboss.aop.microcontainer.integration.AOPKernelRepository">
-      <constructor factoryClass="org.jboss.aop.microcontainer.integration.AOPKernelRepository" factoryMethod="instance"/>
-   </bean>
+   <bean name="Repository" class="org.jboss.metadata.plugins.repository.basic.BasicMetaDataRepository"/>
 
    <bean name="NotAdvised" class="org.jboss.test.microcontainer.matrix.Base"/>
 

Modified: projects/microcontainer/trunk/aop-mc-int/src/resources/tests/org/jboss/test/microcontainer/matrix/mc/test/BaseAdvisedChildAdvisedAndProxyTestCase.xml
===================================================================
--- projects/microcontainer/trunk/aop-mc-int/src/resources/tests/org/jboss/test/microcontainer/matrix/mc/test/BaseAdvisedChildAdvisedAndProxyTestCase.xml	2006-11-03 12:51:35 UTC (rev 58071)
+++ projects/microcontainer/trunk/aop-mc-int/src/resources/tests/org/jboss/test/microcontainer/matrix/mc/test/BaseAdvisedChildAdvisedAndProxyTestCase.xml	2006-11-03 13:02:06 UTC (rev 58072)
@@ -2,9 +2,7 @@
 
 <deployment xmlns="urn:jboss:bean-deployer:2.0">
 
-   <bean name="Repository" class="org.jboss.aop.microcontainer.integration.AOPKernelRepository">
-      <constructor factoryClass="org.jboss.aop.microcontainer.integration.AOPKernelRepository" factoryMethod="instance"/>
-   </bean>
+   <bean name="Repository" class="org.jboss.metadata.plugins.repository.basic.BasicMetaDataRepository"/>
 
    <bean name="Base" class="org.jboss.test.microcontainer.matrix.Base"/>
 

Modified: projects/microcontainer/trunk/aop-mc-int/src/resources/tests/org/jboss/test/microcontainer/matrix/mc/test/BaseAdvisedChildProxyTestCase.xml
===================================================================
--- projects/microcontainer/trunk/aop-mc-int/src/resources/tests/org/jboss/test/microcontainer/matrix/mc/test/BaseAdvisedChildProxyTestCase.xml	2006-11-03 12:51:35 UTC (rev 58071)
+++ projects/microcontainer/trunk/aop-mc-int/src/resources/tests/org/jboss/test/microcontainer/matrix/mc/test/BaseAdvisedChildProxyTestCase.xml	2006-11-03 13:02:06 UTC (rev 58072)
@@ -2,9 +2,7 @@
 
 <deployment xmlns="urn:jboss:bean-deployer:2.0">
 
-   <bean name="Repository" class="org.jboss.aop.microcontainer.integration.AOPKernelRepository">
-      <constructor factoryClass="org.jboss.aop.microcontainer.integration.AOPKernelRepository" factoryMethod="instance"/>
-   </bean>
+   <bean name="Repository" class="org.jboss.metadata.plugins.repository.basic.BasicMetaDataRepository"/>
 
    <bean name="Base" class="org.jboss.test.microcontainer.matrix.Base"/>
 

Modified: projects/microcontainer/trunk/aop-mc-int/src/resources/tests/org/jboss/test/microcontainer/matrix/mc/test/BaseNotAdvisedChildAdvisedAndProxyTestCase.xml
===================================================================
--- projects/microcontainer/trunk/aop-mc-int/src/resources/tests/org/jboss/test/microcontainer/matrix/mc/test/BaseNotAdvisedChildAdvisedAndProxyTestCase.xml	2006-11-03 12:51:35 UTC (rev 58071)
+++ projects/microcontainer/trunk/aop-mc-int/src/resources/tests/org/jboss/test/microcontainer/matrix/mc/test/BaseNotAdvisedChildAdvisedAndProxyTestCase.xml	2006-11-03 13:02:06 UTC (rev 58072)
@@ -2,9 +2,7 @@
 
 <deployment xmlns="urn:jboss:bean-deployer:2.0">
 
-   <bean name="Repository" class="org.jboss.aop.microcontainer.integration.AOPKernelRepository">
-      <constructor factoryClass="org.jboss.aop.microcontainer.integration.AOPKernelRepository" factoryMethod="instance"/>
-   </bean>
+   <bean name="Repository" class="org.jboss.metadata.plugins.repository.basic.BasicMetaDataRepository"/>
 
    <bean name="Base" class="org.jboss.test.microcontainer.matrix.Base"/>
 

Modified: projects/microcontainer/trunk/aop-mc-int/src/resources/tests/org/jboss/test/microcontainer/matrix/mc/test/BaseNotAdvisedChildProxyTestCase.xml
===================================================================
--- projects/microcontainer/trunk/aop-mc-int/src/resources/tests/org/jboss/test/microcontainer/matrix/mc/test/BaseNotAdvisedChildProxyTestCase.xml	2006-11-03 12:51:35 UTC (rev 58071)
+++ projects/microcontainer/trunk/aop-mc-int/src/resources/tests/org/jboss/test/microcontainer/matrix/mc/test/BaseNotAdvisedChildProxyTestCase.xml	2006-11-03 13:02:06 UTC (rev 58072)
@@ -2,9 +2,7 @@
 
 <deployment xmlns="urn:jboss:bean-deployer:2.0">
 
-   <bean name="Repository" class="org.jboss.aop.microcontainer.integration.AOPKernelRepository">
-      <constructor factoryClass="org.jboss.aop.microcontainer.integration.AOPKernelRepository" factoryMethod="instance"/>
-   </bean>
+   <bean name="Repository" class="org.jboss.metadata.plugins.repository.basic.BasicMetaDataRepository"/>
 
    <bean name="Base" class="org.jboss.test.microcontainer.matrix.Base"/>
 

Modified: projects/microcontainer/trunk/aop-mc-int/src/resources/tests/org/jboss/test/microcontainer/matrix/mc/test/BaseOnlyAdvisedChildAdvisedAndProxyTestCase.xml
===================================================================
--- projects/microcontainer/trunk/aop-mc-int/src/resources/tests/org/jboss/test/microcontainer/matrix/mc/test/BaseOnlyAdvisedChildAdvisedAndProxyTestCase.xml	2006-11-03 12:51:35 UTC (rev 58071)
+++ projects/microcontainer/trunk/aop-mc-int/src/resources/tests/org/jboss/test/microcontainer/matrix/mc/test/BaseOnlyAdvisedChildAdvisedAndProxyTestCase.xml	2006-11-03 13:02:06 UTC (rev 58072)
@@ -2,9 +2,7 @@
 
 <deployment xmlns="urn:jboss:bean-deployer:2.0">
 
-   <bean name="Repository" class="org.jboss.aop.microcontainer.integration.AOPKernelRepository">
-      <constructor factoryClass="org.jboss.aop.microcontainer.integration.AOPKernelRepository" factoryMethod="instance"/>
-   </bean>
+   <bean name="Repository" class="org.jboss.metadata.plugins.repository.basic.BasicMetaDataRepository"/>
 
    <bean name="Base" class="org.jboss.test.microcontainer.matrix.Base"/>
 

Modified: projects/microcontainer/trunk/aop-mc-int/src/resources/tests/org/jboss/test/microcontainer/matrix/mc/test/BaseOnlyAdvisedChildProxyTestCase.xml
===================================================================
--- projects/microcontainer/trunk/aop-mc-int/src/resources/tests/org/jboss/test/microcontainer/matrix/mc/test/BaseOnlyAdvisedChildProxyTestCase.xml	2006-11-03 12:51:35 UTC (rev 58071)
+++ projects/microcontainer/trunk/aop-mc-int/src/resources/tests/org/jboss/test/microcontainer/matrix/mc/test/BaseOnlyAdvisedChildProxyTestCase.xml	2006-11-03 13:02:06 UTC (rev 58072)
@@ -2,9 +2,7 @@
 
 <deployment xmlns="urn:jboss:bean-deployer:2.0">
 
-   <bean name="Repository" class="org.jboss.aop.microcontainer.integration.AOPKernelRepository">
-      <constructor factoryClass="org.jboss.aop.microcontainer.integration.AOPKernelRepository" factoryMethod="instance"/>
-   </bean>
+   <bean name="Repository" class="org.jboss.metadata.plugins.repository.basic.BasicMetaDataRepository"/>
 
    <bean name="Base" class="org.jboss.test.microcontainer.matrix.Base"/>
 

Modified: projects/microcontainer/trunk/aop-mc-int/src/resources/tests/org/jboss/test/microcontainer/matrix/mc/test/BaseOverriddenAdvisedChildAdvisedAndProxyTestCase.xml
===================================================================
--- projects/microcontainer/trunk/aop-mc-int/src/resources/tests/org/jboss/test/microcontainer/matrix/mc/test/BaseOverriddenAdvisedChildAdvisedAndProxyTestCase.xml	2006-11-03 12:51:35 UTC (rev 58071)
+++ projects/microcontainer/trunk/aop-mc-int/src/resources/tests/org/jboss/test/microcontainer/matrix/mc/test/BaseOverriddenAdvisedChildAdvisedAndProxyTestCase.xml	2006-11-03 13:02:06 UTC (rev 58072)
@@ -2,9 +2,7 @@
 
 <deployment xmlns="urn:jboss:bean-deployer:2.0">
 
-   <bean name="Repository" class="org.jboss.aop.microcontainer.integration.AOPKernelRepository">
-      <constructor factoryClass="org.jboss.aop.microcontainer.integration.AOPKernelRepository" factoryMethod="instance"/>
-   </bean>
+   <bean name="Repository" class="org.jboss.metadata.plugins.repository.basic.BasicMetaDataRepository"/>
 
    <bean name="Base" class="org.jboss.test.microcontainer.matrix.Base"/>
 

Modified: projects/microcontainer/trunk/aop-mc-int/src/resources/tests/org/jboss/test/microcontainer/matrix/mc/test/BaseOverriddenAdvisedChildProxyTestCase.xml
===================================================================
--- projects/microcontainer/trunk/aop-mc-int/src/resources/tests/org/jboss/test/microcontainer/matrix/mc/test/BaseOverriddenAdvisedChildProxyTestCase.xml	2006-11-03 12:51:35 UTC (rev 58071)
+++ projects/microcontainer/trunk/aop-mc-int/src/resources/tests/org/jboss/test/microcontainer/matrix/mc/test/BaseOverriddenAdvisedChildProxyTestCase.xml	2006-11-03 13:02:06 UTC (rev 58072)
@@ -2,9 +2,7 @@
 
 <deployment xmlns="urn:jboss:bean-deployer:2.0">
 
-   <bean name="Repository" class="org.jboss.aop.microcontainer.integration.AOPKernelRepository">
-      <constructor factoryClass="org.jboss.aop.microcontainer.integration.AOPKernelRepository" factoryMethod="instance"/>
-   </bean>
+   <bean name="Repository" class="org.jboss.metadata.plugins.repository.basic.BasicMetaDataRepository"/>
 
    <bean name="Base" class="org.jboss.test.microcontainer.matrix.Base"/>
 

Modified: projects/microcontainer/trunk/aop-mc-int/src/resources/tests/org/jboss/test/microcontainer/matrix/mc/test/BasePreparedChildAdvisedAndProxyTestCase.xml
===================================================================
--- projects/microcontainer/trunk/aop-mc-int/src/resources/tests/org/jboss/test/microcontainer/matrix/mc/test/BasePreparedChildAdvisedAndProxyTestCase.xml	2006-11-03 12:51:35 UTC (rev 58071)
+++ projects/microcontainer/trunk/aop-mc-int/src/resources/tests/org/jboss/test/microcontainer/matrix/mc/test/BasePreparedChildAdvisedAndProxyTestCase.xml	2006-11-03 13:02:06 UTC (rev 58072)
@@ -2,9 +2,7 @@
 
 <deployment xmlns="urn:jboss:bean-deployer:2.0">
 
-   <bean name="Repository" class="org.jboss.aop.microcontainer.integration.AOPKernelRepository">
-      <constructor factoryClass="org.jboss.aop.microcontainer.integration.AOPKernelRepository" factoryMethod="instance"/>
-   </bean>
+   <bean name="Repository" class="org.jboss.metadata.plugins.repository.basic.BasicMetaDataRepository"/>
 
    <bean name="Base" class="org.jboss.test.microcontainer.matrix.Base"/>
 

Modified: projects/microcontainer/trunk/aop-mc-int/src/resources/tests/org/jboss/test/microcontainer/matrix/mc/test/NotAdvisedInstanceMetaDataContextTestCase.xml
===================================================================
--- projects/microcontainer/trunk/aop-mc-int/src/resources/tests/org/jboss/test/microcontainer/matrix/mc/test/NotAdvisedInstanceMetaDataContextTestCase.xml	2006-11-03 12:51:35 UTC (rev 58071)
+++ projects/microcontainer/trunk/aop-mc-int/src/resources/tests/org/jboss/test/microcontainer/matrix/mc/test/NotAdvisedInstanceMetaDataContextTestCase.xml	2006-11-03 13:02:06 UTC (rev 58072)
@@ -2,9 +2,7 @@
 
 <deployment xmlns="urn:jboss:bean-deployer:2.0">
 
-   <bean name="Repository" class="org.jboss.aop.microcontainer.integration.AOPKernelRepository">
-      <constructor factoryClass="org.jboss.aop.microcontainer.integration.AOPKernelRepository" factoryMethod="instance"/>
-   </bean>
+   <bean name="Repository" class="org.jboss.metadata.plugins.repository.basic.BasicMetaDataRepository"/>
 
    <bean name="NotAdvised" class="org.jboss.test.microcontainer.matrix.Base"/>
 

Modified: projects/microcontainer/trunk/aop-mc-int/src/resources/tests/org/jboss/test/microcontainer/test/ConstructorInterceptorWithDependencyTestCaseNotAutomatic1.xml
===================================================================
--- projects/microcontainer/trunk/aop-mc-int/src/resources/tests/org/jboss/test/microcontainer/test/ConstructorInterceptorWithDependencyTestCaseNotAutomatic1.xml	2006-11-03 12:51:35 UTC (rev 58071)
+++ projects/microcontainer/trunk/aop-mc-int/src/resources/tests/org/jboss/test/microcontainer/test/ConstructorInterceptorWithDependencyTestCaseNotAutomatic1.xml	2006-11-03 13:02:06 UTC (rev 58072)
@@ -2,9 +2,7 @@
 
 <deployment xmlns="urn:jboss:bean-deployer:2.0">
 
-   <bean name="Repository" class="org.jboss.aop.microcontainer.integration.AOPKernelRepository">
-      <constructor factoryClass="org.jboss.aop.microcontainer.integration.AOPKernelRepository" factoryMethod="instance"/>
-   </bean>
+   <bean name="Repository" class="org.jboss.metadata.plugins.repository.basic.BasicMetaDataRepository"/>
 
    <aop:aspect xmlns:aop="urn:jboss:aop-beans:1.0"
                name="InterceptedAdvice"

Modified: projects/microcontainer/trunk/aop-mc-int/src/resources/tests/org/jboss/test/microcontainer/test/InterceptorWithAnnotationDependencyTestCaseNotAutomatic1.xml
===================================================================
--- projects/microcontainer/trunk/aop-mc-int/src/resources/tests/org/jboss/test/microcontainer/test/InterceptorWithAnnotationDependencyTestCaseNotAutomatic1.xml	2006-11-03 12:51:35 UTC (rev 58071)
+++ projects/microcontainer/trunk/aop-mc-int/src/resources/tests/org/jboss/test/microcontainer/test/InterceptorWithAnnotationDependencyTestCaseNotAutomatic1.xml	2006-11-03 13:02:06 UTC (rev 58072)
@@ -2,9 +2,7 @@
 
 <deployment xmlns="urn:jboss:bean-deployer:2.0">
 
-   <bean name="Repository" class="org.jboss.aop.microcontainer.integration.AOPKernelRepository">
-      <constructor factoryClass="org.jboss.aop.microcontainer.integration.AOPKernelRepository" factoryMethod="instance"/>
-   </bean>
+   <bean name="Repository" class="org.jboss.metadata.plugins.repository.basic.BasicMetaDataRepository"/>
 
    <aop:aspect xmlns:aop="urn:jboss:aop-beans:1.0"
                name="InterceptedAdvice"

Modified: projects/microcontainer/trunk/aop-mc-int/src/resources/tests/org/jboss/test/microcontainer/test/InterceptorWithDependencyTestCaseNotAutomatic1.xml
===================================================================
--- projects/microcontainer/trunk/aop-mc-int/src/resources/tests/org/jboss/test/microcontainer/test/InterceptorWithDependencyTestCaseNotAutomatic1.xml	2006-11-03 12:51:35 UTC (rev 58071)
+++ projects/microcontainer/trunk/aop-mc-int/src/resources/tests/org/jboss/test/microcontainer/test/InterceptorWithDependencyTestCaseNotAutomatic1.xml	2006-11-03 13:02:06 UTC (rev 58072)
@@ -2,9 +2,7 @@
 
 <deployment xmlns="urn:jboss:bean-deployer:2.0">
 
-   <bean name="Repository" class="org.jboss.aop.microcontainer.integration.AOPKernelRepository">
-      <constructor factoryClass="org.jboss.aop.microcontainer.integration.AOPKernelRepository" factoryMethod="instance"/>
-   </bean>
+   <bean name="Repository" class="org.jboss.metadata.plugins.repository.basic.BasicMetaDataRepository"/>
 
    <aop:aspect xmlns:aop="urn:jboss:aop-beans:1.0"
                name="InterceptedAdvice"

Modified: projects/microcontainer/trunk/aop-mc-int/src/resources/tests/org/jboss/test/microcontainer/test/InterceptorWithNestedAnnotationDependencyTestCaseNotAutomatic3.xml
===================================================================
--- projects/microcontainer/trunk/aop-mc-int/src/resources/tests/org/jboss/test/microcontainer/test/InterceptorWithNestedAnnotationDependencyTestCaseNotAutomatic3.xml	2006-11-03 12:51:35 UTC (rev 58071)
+++ projects/microcontainer/trunk/aop-mc-int/src/resources/tests/org/jboss/test/microcontainer/test/InterceptorWithNestedAnnotationDependencyTestCaseNotAutomatic3.xml	2006-11-03 13:02:06 UTC (rev 58072)
@@ -2,9 +2,7 @@
 
 <deployment xmlns="urn:jboss:bean-deployer:2.0">
 
-   <bean name="Repository" class="org.jboss.aop.microcontainer.integration.AOPKernelRepository">
-      <constructor factoryClass="org.jboss.aop.microcontainer.integration.AOPKernelRepository" factoryMethod="instance"/>
-   </bean>
+   <bean name="Repository" class="org.jboss.metadata.plugins.repository.basic.BasicMetaDataRepository"/>
 
    <aop:aspect xmlns:aop="urn:jboss:aop-beans:1.0"
                name="InterceptedAdvice"

Modified: projects/microcontainer/trunk/aop-mc-int/src/resources/tests/org/jboss/test/microcontainer/test/InterceptorWithNestedMethodAnnotationDependencyTestCaseNotAutomatic3.xml
===================================================================
--- projects/microcontainer/trunk/aop-mc-int/src/resources/tests/org/jboss/test/microcontainer/test/InterceptorWithNestedMethodAnnotationDependencyTestCaseNotAutomatic3.xml	2006-11-03 12:51:35 UTC (rev 58071)
+++ projects/microcontainer/trunk/aop-mc-int/src/resources/tests/org/jboss/test/microcontainer/test/InterceptorWithNestedMethodAnnotationDependencyTestCaseNotAutomatic3.xml	2006-11-03 13:02:06 UTC (rev 58072)
@@ -2,9 +2,7 @@
 
 <deployment xmlns="urn:jboss:bean-deployer:2.0">
 
-   <bean name="Repository" class="org.jboss.aop.microcontainer.integration.AOPKernelRepository">
-      <constructor factoryClass="org.jboss.aop.microcontainer.integration.AOPKernelRepository" factoryMethod="instance"/>
-   </bean>
+   <bean name="Repository" class="org.jboss.metadata.plugins.repository.basic.BasicMetaDataRepository"/>
 
    <aop:aspect xmlns:aop="urn:jboss:aop-beans:1.0"
                name="InterceptedAdvice"

Modified: projects/microcontainer/trunk/aop-mc-int/src/resources/tests/org/jboss/test/microcontainer/test/InterceptorWithOverriddenClassAnnotationDependencyTestCaseNotAutomatic1.xml
===================================================================
--- projects/microcontainer/trunk/aop-mc-int/src/resources/tests/org/jboss/test/microcontainer/test/InterceptorWithOverriddenClassAnnotationDependencyTestCaseNotAutomatic1.xml	2006-11-03 12:51:35 UTC (rev 58071)
+++ projects/microcontainer/trunk/aop-mc-int/src/resources/tests/org/jboss/test/microcontainer/test/InterceptorWithOverriddenClassAnnotationDependencyTestCaseNotAutomatic1.xml	2006-11-03 13:02:06 UTC (rev 58072)
@@ -2,9 +2,7 @@
 
 <deployment xmlns="urn:jboss:bean-deployer:2.0">
 
-   <bean name="Repository" class="org.jboss.aop.microcontainer.integration.AOPKernelRepository">
-      <constructor factoryClass="org.jboss.aop.microcontainer.integration.AOPKernelRepository" factoryMethod="instance"/>
-   </bean>
+   <bean name="Repository" class="org.jboss.metadata.plugins.repository.basic.BasicMetaDataRepository"/>
 
    <aop:aspect xmlns:aop="urn:jboss:aop-beans:1.0"
                name="InterceptedAdvice"

Modified: projects/microcontainer/trunk/aop-mc-int/src/resources/tests/org/jboss/test/microcontainer/test/InterceptorWithOverriddenMethodAnnotationDependencyForChildTestCaseNotAutomatic2.xml
===================================================================
--- projects/microcontainer/trunk/aop-mc-int/src/resources/tests/org/jboss/test/microcontainer/test/InterceptorWithOverriddenMethodAnnotationDependencyForChildTestCaseNotAutomatic2.xml	2006-11-03 12:51:35 UTC (rev 58071)
+++ projects/microcontainer/trunk/aop-mc-int/src/resources/tests/org/jboss/test/microcontainer/test/InterceptorWithOverriddenMethodAnnotationDependencyForChildTestCaseNotAutomatic2.xml	2006-11-03 13:02:06 UTC (rev 58072)
@@ -2,9 +2,7 @@
 
 <deployment xmlns="urn:jboss:bean-deployer:2.0">
 
-   <bean name="Repository" class="org.jboss.aop.microcontainer.integration.AOPKernelRepository">
-      <constructor factoryClass="org.jboss.aop.microcontainer.integration.AOPKernelRepository" factoryMethod="instance"/>
-   </bean>
+   <bean name="Repository" class="org.jboss.metadata.plugins.repository.basic.BasicMetaDataRepository"/>
 
    <aop:aspect xmlns:aop="urn:jboss:aop-beans:1.0"
                name="InterceptedAdvice"

Modified: projects/microcontainer/trunk/aop-mc-int/src/resources/tests/org/jboss/test/microcontainer/test/InterceptorWithOverriddenMethodAnnotationDependencyTestCaseNotAutomatic2.xml
===================================================================
--- projects/microcontainer/trunk/aop-mc-int/src/resources/tests/org/jboss/test/microcontainer/test/InterceptorWithOverriddenMethodAnnotationDependencyTestCaseNotAutomatic2.xml	2006-11-03 12:51:35 UTC (rev 58071)
+++ projects/microcontainer/trunk/aop-mc-int/src/resources/tests/org/jboss/test/microcontainer/test/InterceptorWithOverriddenMethodAnnotationDependencyTestCaseNotAutomatic2.xml	2006-11-03 13:02:06 UTC (rev 58072)
@@ -2,9 +2,7 @@
 
 <deployment xmlns="urn:jboss:bean-deployer:2.0">
 
-   <bean name="Repository" class="org.jboss.aop.microcontainer.integration.AOPKernelRepository">
-      <constructor factoryClass="org.jboss.aop.microcontainer.integration.AOPKernelRepository" factoryMethod="instance"/>
-   </bean>
+   <bean name="Repository" class="org.jboss.metadata.plugins.repository.basic.BasicMetaDataRepository"/>
 
    <aop:aspect xmlns:aop="urn:jboss:aop-beans:1.0"
                name="InterceptedAdvice"

Modified: projects/microcontainer/trunk/aop-mc-int/src/resources/tests/org/jboss/test/microcontainer/test/IntroductionDependencyTestCaseNotAutomatic1.xml
===================================================================
--- projects/microcontainer/trunk/aop-mc-int/src/resources/tests/org/jboss/test/microcontainer/test/IntroductionDependencyTestCaseNotAutomatic1.xml	2006-11-03 12:51:35 UTC (rev 58071)
+++ projects/microcontainer/trunk/aop-mc-int/src/resources/tests/org/jboss/test/microcontainer/test/IntroductionDependencyTestCaseNotAutomatic1.xml	2006-11-03 13:02:06 UTC (rev 58072)
@@ -2,9 +2,7 @@
 
 <deployment xmlns="urn:jboss:bean-deployer:2.0">
 
-   <bean name="Repository" class="org.jboss.aop.microcontainer.integration.AOPKernelRepository">
-      <constructor factoryClass="org.jboss.aop.microcontainer.integration.AOPKernelRepository" factoryMethod="instance"/>
-   </bean>
+   <bean name="Repository" class="org.jboss.metadata.plugins.repository.basic.BasicMetaDataRepository"/>
 
    <aop:aspect xmlns:aop="urn:jboss:aop-beans:1.0"
                name="InterceptedAdvice"

Modified: projects/microcontainer/trunk/aop-mc-int/src/resources/tests/org/jboss/test/microcontainer/test/JMXDecoratedTestCase.xml
===================================================================
--- projects/microcontainer/trunk/aop-mc-int/src/resources/tests/org/jboss/test/microcontainer/test/JMXDecoratedTestCase.xml	2006-11-03 12:51:35 UTC (rev 58071)
+++ projects/microcontainer/trunk/aop-mc-int/src/resources/tests/org/jboss/test/microcontainer/test/JMXDecoratedTestCase.xml	2006-11-03 13:02:06 UTC (rev 58072)
@@ -6,9 +6,7 @@
       <constructor factoryClass="javax.management.MBeanServerFactory" factoryMethod="createMBeanServer"/>
    </bean>
 
-   <bean name="Repository" class="org.jboss.aop.microcontainer.integration.AOPKernelRepository">
-      <constructor factoryClass="org.jboss.aop.microcontainer.integration.AOPKernelRepository" factoryMethod="instance"/>
-   </bean>
+   <bean name="Repository" class="org.jboss.metadata.plugins.repository.basic.BasicMetaDataRepository"/>
 
    <bean name="AspectManager" class="org.jboss.aop.AspectManager">
       <constructor factoryClass="org.jboss.aop.AspectManager" factoryMethod="instance"/>

Modified: projects/microcontainer/trunk/aop-mc-int/src/resources/tests/org/jboss/test/microcontainer/test/MetaDataTestCase.xml
===================================================================
--- projects/microcontainer/trunk/aop-mc-int/src/resources/tests/org/jboss/test/microcontainer/test/MetaDataTestCase.xml	2006-11-03 12:51:35 UTC (rev 58071)
+++ projects/microcontainer/trunk/aop-mc-int/src/resources/tests/org/jboss/test/microcontainer/test/MetaDataTestCase.xml	2006-11-03 13:02:06 UTC (rev 58072)
@@ -2,9 +2,7 @@
 
 <deployment xmlns="urn:jboss:bean-deployer:2.0">
 
-   <bean name="Repository" class="org.jboss.aop.microcontainer.integration.AOPKernelRepository">
-      <constructor factoryClass="org.jboss.aop.microcontainer.integration.AOPKernelRepository" factoryMethod="instance"/>
-   </bean>
+   <bean name="Repository" class="org.jboss.metadata.plugins.repository.basic.BasicMetaDataRepository"/>
 
    <bean name="AspectManager" class="org.jboss.aop.AspectManager">
       <constructor factoryClass="org.jboss.aop.AspectManager" factoryMethod="instance"/>

Modified: projects/microcontainer/trunk/aop-mc-int/src/resources/tests/org/jboss/test/microcontainer/test/MixinTestCase.xml
===================================================================
--- projects/microcontainer/trunk/aop-mc-int/src/resources/tests/org/jboss/test/microcontainer/test/MixinTestCase.xml	2006-11-03 12:51:35 UTC (rev 58071)
+++ projects/microcontainer/trunk/aop-mc-int/src/resources/tests/org/jboss/test/microcontainer/test/MixinTestCase.xml	2006-11-03 13:02:06 UTC (rev 58072)
@@ -6,9 +6,7 @@
       <constructor factoryClass="javax.management.MBeanServerFactory" factoryMethod="createMBeanServer"/>
    </bean>
 
-   <bean name="Repository" class="org.jboss.aop.microcontainer.integration.AOPKernelRepository">
-      <constructor factoryClass="org.jboss.aop.microcontainer.integration.AOPKernelRepository" factoryMethod="instance"/>
-   </bean>
+   <bean name="Repository" class="org.jboss.metadata.plugins.repository.basic.BasicMetaDataRepository"/>
 
    <bean name="AspectManager" class="org.jboss.aop.AspectManager">
       <constructor factoryClass="org.jboss.aop.AspectManager" factoryMethod="instance"/>

Modified: projects/microcontainer/trunk/container/src/main/org/jboss/repository/plugins/basic/BasicMetaDataContextFactory.java
===================================================================
--- projects/microcontainer/trunk/container/src/main/org/jboss/repository/plugins/basic/BasicMetaDataContextFactory.java	2006-11-03 12:51:35 UTC (rev 58071)
+++ projects/microcontainer/trunk/container/src/main/org/jboss/repository/plugins/basic/BasicMetaDataContextFactory.java	2006-11-03 13:02:06 UTC (rev 58072)
@@ -21,7 +21,7 @@
 */ 
 package org.jboss.repository.plugins.basic;
 
-import org.jboss.repository.spi.KernelRepository;
+import org.jboss.metadata.spi.repository.MetaDataRepository;
 import org.jboss.repository.spi.MetaDataContext;
 import org.jboss.repository.spi.MetaDataContextFactory;
 
@@ -33,7 +33,7 @@
 public class BasicMetaDataContextFactory implements MetaDataContextFactory
 {
 
-   public MetaDataContext getMetaDataContext(KernelRepository repository, Object beanName)
+   public MetaDataContext getMetaDataContext(MetaDataRepository repository, String beanName)
    {
       return null;
    }

Modified: projects/microcontainer/trunk/container/src/main/org/jboss/repository/spi/MetaDataContext.java
===================================================================
--- projects/microcontainer/trunk/container/src/main/org/jboss/repository/spi/MetaDataContext.java	2006-11-03 12:51:35 UTC (rev 58071)
+++ projects/microcontainer/trunk/container/src/main/org/jboss/repository/spi/MetaDataContext.java	2006-11-03 13:02:06 UTC (rev 58072)
@@ -1,31 +1,32 @@
 /*
-* JBoss, Home of Professional Open Source
-* Copyright 2005, JBoss Inc., and individual contributors as indicated
-* by the @authors tag. See the copyright.txt 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.
-*/ 
+ * 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.repository.spi;
 
-import java.lang.reflect.Method;
+import java.lang.annotation.Annotation;
 import java.util.List;
-import java.util.Map;
 import java.util.Set;
 
+import org.jboss.metadata.spi.repository.MetaDataRepository;
+
 /**
  * 
  * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
@@ -33,27 +34,21 @@
  */
 public interface MetaDataContext
 {
-   KernelRepository getRepository();
-   
-   Map getScope();
-   
-   void setTarget(Object tgt);
-   
-   Object getAnnotation(Class ann);
-   
-   List getAnnotations();
-   
-   boolean hasAnnotation(String ann);
 
-   Object getAnnotation(Method m, Class ann);
-   
-   List getAnnotationsForMethod(String methodName);
-   
-   List getAnnotationsForMethods(String[] methodNames);
-   
-   boolean hasAnnotation(Method m, String ann);
-   
-   void addAnnotations(Set annotations);
-   
-   void addPropertyAnnotations(String propertyName, Set propertyInfos, Set annotations);   
-}
+   public abstract <T extends Annotation> boolean hasAnnotation(Class<T> ann);
+
+   public abstract <T extends Annotation> Annotation getAnnotation(Class<T> ann);
+
+   public abstract <T extends Annotation> boolean hasAnnotationForMethod(long methodHash, Class<T> ann);
+
+   public abstract <T extends Annotation> Annotation getAnnotationForMethod(long methodHash, Class<T> ann);
+
+   public abstract List<Annotation> getAnnotations();
+
+   public abstract List<Annotation> getAnnotationsForMethod(long methodHash);
+
+   public abstract List<Annotation> getAnnotationsForMethods(long[] methodHashes);
+
+   public abstract MetaDataRepository getRepository();
+
+}
\ No newline at end of file

Modified: projects/microcontainer/trunk/container/src/main/org/jboss/repository/spi/MetaDataContextFactory.java
===================================================================
--- projects/microcontainer/trunk/container/src/main/org/jboss/repository/spi/MetaDataContextFactory.java	2006-11-03 12:51:35 UTC (rev 58071)
+++ projects/microcontainer/trunk/container/src/main/org/jboss/repository/spi/MetaDataContextFactory.java	2006-11-03 13:02:06 UTC (rev 58072)
@@ -21,6 +21,8 @@
 */ 
 package org.jboss.repository.spi;
 
+import org.jboss.metadata.spi.repository.MetaDataRepository;
+
 /**
  * 
  * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
@@ -28,5 +30,5 @@
  */
 public interface MetaDataContextFactory
 {
-   MetaDataContext getMetaDataContext(KernelRepository repository, Object beanName);
+   MetaDataContext getMetaDataContext(MetaDataRepository repository, String beanName);
 }

Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/dependency/AbstractKernelControllerContext.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/dependency/AbstractKernelControllerContext.java	2006-11-03 12:51:35 UTC (rev 58071)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/dependency/AbstractKernelControllerContext.java	2006-11-03 13:02:06 UTC (rev 58072)
@@ -42,6 +42,7 @@
 import org.jboss.kernel.Kernel;
 import org.jboss.kernel.spi.dependency.KernelController;
 import org.jboss.kernel.spi.dependency.KernelControllerContext;
+import org.jboss.kernel.spi.metadata.MutableMetaDataContext;
 import org.jboss.repository.spi.MetaDataContext;
 import org.jboss.util.JBossStringBuilder;
 
@@ -172,10 +173,19 @@
       isDescribeProcessed = true;
    }
 
-   public MetaDataContext getMetaDataContext()
+   public MutableMetaDataContext getMetaDataContext()
    {
       if (info != null)
-         return info.getMetaDataContext();
+      {
+         try
+         {
+            return (MutableMetaDataContext)info.getMetaDataContext();
+         }
+         catch (ClassCastException e)
+         {
+            throw new RuntimeException("MetaDataContext must be an instance of MutableMetaDataContext");
+         }
+      }
       return null;
    }
 

Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/dependency/DescribeAction.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/dependency/DescribeAction.java	2006-11-03 12:51:35 UTC (rev 58071)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/dependency/DescribeAction.java	2006-11-03 13:02:06 UTC (rev 58072)
@@ -26,6 +26,7 @@
 import java.util.Set;
 
 import org.jboss.beans.info.spi.BeanInfo;
+import org.jboss.beans.metadata.spi.AnnotationMetaData;
 import org.jboss.beans.metadata.spi.BeanMetaData;
 import org.jboss.beans.metadata.spi.PropertyMetaData;
 import org.jboss.dependency.plugins.AbstractDependencyItem;
@@ -36,6 +37,8 @@
 import org.jboss.kernel.spi.config.KernelConfigurator;
 import org.jboss.kernel.spi.dependency.KernelController;
 import org.jboss.kernel.spi.dependency.KernelControllerContext;
+import org.jboss.kernel.spi.metadata.MutableMetaDataContext;
+import org.jboss.metadata.spi.repository.MetaDataRepository;
 import org.jboss.repository.spi.KernelRepository;
 import org.jboss.repository.spi.MetaDataContext;
 import org.jboss.repository.spi.MetaDataContextFactory;
@@ -88,16 +91,16 @@
     */
    private BeanInfo addAnnotations(KernelControllerContext context, BeanMetaData beanMetaData, BeanInfo beanInfo)
    {
-      MetaDataContext metaCtx = addClassAnnotations(context, beanMetaData, beanInfo);
+      MutableMetaDataContext metaCtx = addClassAnnotations(context, beanMetaData, beanInfo);
       addPropertyAnnotations(metaCtx, context, beanMetaData, beanInfo);
       return context.getBeanInfo();
    }
 
-   private MetaDataContext addClassAnnotations(KernelControllerContext context, BeanMetaData beanMetaData, BeanInfo beanInfo)
+   private MutableMetaDataContext addClassAnnotations(KernelControllerContext context, BeanMetaData beanMetaData, BeanInfo beanInfo)
    {
-      Set annotations = beanMetaData.getAnnotations();
+      Set<AnnotationMetaData> annotations = beanMetaData.getAnnotations();
 
-      MetaDataContext metaCtx = null;
+      MutableMetaDataContext metaCtx = null;
 
       if (annotations != null && annotations.size() > 0)
       {
@@ -111,7 +114,7 @@
       return metaCtx;
    }
 
-   private MetaDataContext addPropertyAnnotations(MetaDataContext metaCtx, KernelControllerContext context, BeanMetaData beanMetaData, BeanInfo beanInfo)
+   private MutableMetaDataContext addPropertyAnnotations(MutableMetaDataContext metaCtx, KernelControllerContext context, BeanMetaData beanMetaData, BeanInfo beanInfo)
    {
       Set properties = beanMetaData.getProperties();
 
@@ -143,24 +146,29 @@
       return metaCtx;
    }
 
-   private MetaDataContext getMetaDataContext(KernelControllerContext context)
+   private MutableMetaDataContext getMetaDataContext(KernelControllerContext context)
    {
       //TODO: Hardcoding this doesn't feel right...
       ControllerContext repCtx = context.getController().getContext("Repository", ControllerState.INSTALLED);
 
       if (repCtx == null)
       {
-         log.warn("You have defined annotations for bean '" + context.getName() + "', but no KernelRepository has been installed under the name 'Repository'");
+         log.warn("You have defined annotations for bean '" + context.getName() + "', but no MetaDataRepository has been installed under the name 'Repository'");
          return null;
       }
 
-      KernelRepository repository = (KernelRepository)repCtx.getTarget();
+      MetaDataRepository repository = (MetaDataRepository)repCtx.getTarget();
       MetaDataContextFactory metaFactory = context.getBeanInfo().getMetaDataContextFactory();
-      MetaDataContext metaCtx = metaFactory.getMetaDataContext(repository, context.getName());
-
+      MetaDataContext metaCtx = metaFactory.getMetaDataContext(repository, (String)context.getName());
+      
+      if (metaCtx instanceof MutableMetaDataContext == false)
+      {
+         throw new RuntimeException("MetaDataContext must be mutable");
+      }
+         
       context.setMetaDataContext(metaCtx);
 
-      return metaCtx;
+      return (MutableMetaDataContext)metaCtx;
    }
 
 }
\ No newline at end of file

Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/dependency/InstantiateAction.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/dependency/InstantiateAction.java	2006-11-03 12:51:35 UTC (rev 58071)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/dependency/InstantiateAction.java	2006-11-03 13:02:06 UTC (rev 58072)
@@ -29,7 +29,7 @@
 import org.jboss.kernel.spi.dependency.KernelController;
 import org.jboss.kernel.spi.dependency.KernelControllerContext;
 import org.jboss.kernel.spi.dependency.KernelControllerContextAware;
-import org.jboss.repository.spi.MetaDataContext;
+import org.jboss.kernel.spi.metadata.MutableMetaDataContext;
 
 /**
  * InstantiateAction.
@@ -52,7 +52,7 @@
       Object object = dispatchJoinPoint(context, joinPoint);
       context.setTarget(object);
 
-      MetaDataContext metaCtx = context.getMetaDataContext();
+      MutableMetaDataContext metaCtx = context.getMetaDataContext();
       if (metaCtx != null)
       {
          metaCtx.setTarget(object);

Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/spi/dependency/KernelControllerContext.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/spi/dependency/KernelControllerContext.java	2006-11-03 12:51:35 UTC (rev 58071)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/spi/dependency/KernelControllerContext.java	2006-11-03 13:02:06 UTC (rev 58072)
@@ -24,6 +24,7 @@
 import org.jboss.beans.info.spi.BeanInfo;
 import org.jboss.beans.metadata.spi.BeanMetaData;
 import org.jboss.kernel.Kernel;
+import org.jboss.kernel.spi.metadata.MutableMetaDataContext;
 import org.jboss.kernel.spi.registry.KernelRegistryEntry;
 import org.jboss.repository.spi.MetaDataContext;
 /**
@@ -74,7 +75,7 @@
     * 
     * @return the metadata context
     */
-   MetaDataContext getMetaDataContext();
+   MutableMetaDataContext getMetaDataContext();
    
    /**
     * Set the metadata context

Added: projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/spi/metadata/MutableMetaDataContext.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/spi/metadata/MutableMetaDataContext.java	2006-11-03 12:51:35 UTC (rev 58071)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/spi/metadata/MutableMetaDataContext.java	2006-11-03 13:02:06 UTC (rev 58072)
@@ -0,0 +1,43 @@
+/*
+* 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.kernel.spi.metadata;
+
+import java.util.Set;
+
+import org.jboss.beans.info.spi.PropertyInfo;
+import org.jboss.beans.metadata.spi.AnnotationMetaData;
+import org.jboss.repository.spi.MetaDataContext;
+
+/**
+ * 
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @version $Revision: 1.1 $
+ */
+public interface MutableMetaDataContext extends MetaDataContext
+{
+   public abstract void addAnnotations(Set<AnnotationMetaData> annotations);
+
+   public abstract void addPropertyAnnotations(String propertyName, Set<PropertyInfo> propertyInfos, Set<AnnotationMetaData> annotations);
+
+   public abstract void setTarget(Object tgt);
+
+}




More information about the jboss-cvs-commits mailing list