[jboss-cvs] JBossAS SVN: r58766 - in projects/microcontainer/trunk/container: . src/main/org/jboss/annotation/factory/ast src/main/org/jboss/beans/info/plugins src/main/org/jboss/beans/info/spi src/main/org/jboss/reflect/plugins src/main/org/jboss/reflect/plugins/introspection src/main/org/jboss/reflect/plugins/javassist src/main/org/jboss/reflect/spi src/main/org/jboss/repository/plugins src/main/org/jboss/repository/plugins/basic src/main/org/jboss/repository/spi src/main/org/jboss/virtual src/main/org/jboss/virtual/plugins/context src/main/org/jboss/virtual/plugins/context/file src/main/org/jboss/virtual/plugins/context/jar src/main/org/jboss/virtual/plugins/vfs/helpers src/tests/org/jboss/test src/tests/org/jboss/test/classinfo/support src/tests/org/jboss/test/classinfo/test src/tests/org/jboss/test/virtual/test src/tests-support/org/jboss/test/vfs/support/jar1 src/tests-support/org/jboss/test/vfs/support/jar2

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Thu Nov 30 06:13:09 EST 2006


Author: adrian at jboss.org
Date: 2006-11-30 06:12:06 -0500 (Thu, 30 Nov 2006)
New Revision: 58766

Added:
   projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/support/ClassInfoAbstractMethodsClass.java
   projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/support/ClassInfoAnnotation1.java
   projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/support/ClassInfoAnnotation2.java
   projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/support/ClassInfoAnnotationClass.java
   projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/support/ClassInfoAnnotationInterface.java
   projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/support/ClassInfoConstructorAnnotationClass.java
   projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/support/ClassInfoConstructorClass.java
   projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/support/ClassInfoConstructorParameterAnnotationClass.java
   projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/support/ClassInfoEmptyClass.java
   projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/support/ClassInfoEmptyInterface.java
   projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/support/ClassInfoEnum.java
   projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/support/ClassInfoEnumAnnotation.java
   projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/support/ClassInfoEnumFieldAnnotation.java
   projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/support/ClassInfoFieldAnnotationClass.java
   projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/support/ClassInfoFieldAnnotationInterface.java
   projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/support/ClassInfoFieldsClass.java
   projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/support/ClassInfoFieldsInterface.java
   projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/support/ClassInfoInterfacesClass.java
   projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/support/ClassInfoInterfacesInterface.java
   projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/support/ClassInfoInterfacesInterface1.java
   projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/support/ClassInfoInterfacesInterface2.java
   projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/support/ClassInfoMethodAnnotationClass.java
   projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/support/ClassInfoMethodAnnotationInterface.java
   projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/support/ClassInfoMethodParameterAnnotationClass.java
   projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/support/ClassInfoMethodParameterAnnotationInterface.java
   projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/support/ClassInfoMethodsClass.java
   projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/support/ClassInfoMethodsInterface.java
   projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/support/ClassInfoSuperClass.java
   projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/support/ExpectedAnnotations.java
   projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/support/JDK14ExpectedAnnotations.java
   projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/support/JDK50ExpectedAnnotations.java
   projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/test/AbstractClassInfoTest.java
   projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/test/ClassInfoArrayTest.java
   projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/test/ClassInfoClassTest.java
   projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/test/ClassInfoEnumTest.java
   projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/test/ClassInfoInterfaceTest.java
   projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/test/ClassInfoPrimitiveTest.java
   projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/test/IntrospectionArrayUnitTestCase.java
   projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/test/IntrospectionClassUnitTestCase.java
   projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/test/IntrospectionEnumUnitTestCase.java
   projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/test/IntrospectionInterfaceUnitTestCase.java
   projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/test/IntrospectionPrimitiveUnitTestCase.java
   projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/test/JavassistArrayUnitTestCase.java
   projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/test/JavassistClassUnitTestCase.java
   projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/test/JavassistEnumUnitTestCase.java
   projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/test/JavassistInterfaceUnitTestCase.java
   projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/test/JavassistPrimitiveUnitTestCase.java
Removed:
   projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/test/ExpectedAnnotations.java
   projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/test/JDK14ExpectedAnnotations.java
   projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/test/JDK50ExpectedAnnotations.java
Modified:
   projects/microcontainer/trunk/container/build-test14.xml
   projects/microcontainer/trunk/container/src/main/org/jboss/annotation/factory/ast/AnnotationParser.java
   projects/microcontainer/trunk/container/src/main/org/jboss/annotation/factory/ast/AnnotationParserTokenManager.java
   projects/microcontainer/trunk/container/src/main/org/jboss/annotation/factory/ast/JJTAnnotationParserState.java
   projects/microcontainer/trunk/container/src/main/org/jboss/annotation/factory/ast/Node.java
   projects/microcontainer/trunk/container/src/main/org/jboss/annotation/factory/ast/ParseException.java
   projects/microcontainer/trunk/container/src/main/org/jboss/annotation/factory/ast/SimpleCharStream.java
   projects/microcontainer/trunk/container/src/main/org/jboss/annotation/factory/ast/SimpleNode.java
   projects/microcontainer/trunk/container/src/main/org/jboss/annotation/factory/ast/Token.java
   projects/microcontainer/trunk/container/src/main/org/jboss/annotation/factory/ast/TokenMgrError.java
   projects/microcontainer/trunk/container/src/main/org/jboss/beans/info/plugins/AbstractBeanInfoFactory.java
   projects/microcontainer/trunk/container/src/main/org/jboss/beans/info/plugins/AbstractPropertyInfo.java
   projects/microcontainer/trunk/container/src/main/org/jboss/beans/info/spi/PropertyInfo.java
   projects/microcontainer/trunk/container/src/main/org/jboss/reflect/plugins/AnnotationValueImpl.java
   projects/microcontainer/trunk/container/src/main/org/jboss/reflect/plugins/ArrayInfoImpl.java
   projects/microcontainer/trunk/container/src/main/org/jboss/reflect/plugins/ClassInfoHelper.java
   projects/microcontainer/trunk/container/src/main/org/jboss/reflect/plugins/ClassInfoImpl.java
   projects/microcontainer/trunk/container/src/main/org/jboss/reflect/plugins/EnumConstantInfoImpl.java
   projects/microcontainer/trunk/container/src/main/org/jboss/reflect/plugins/EnumInfoImpl.java
   projects/microcontainer/trunk/container/src/main/org/jboss/reflect/plugins/ValueConvertor.java
   projects/microcontainer/trunk/container/src/main/org/jboss/reflect/plugins/introspection/IntrospectionTypeInfoFactoryImpl.java
   projects/microcontainer/trunk/container/src/main/org/jboss/reflect/plugins/javassist/JavassistAnnotatedParameterInfo.java
   projects/microcontainer/trunk/container/src/main/org/jboss/reflect/plugins/javassist/JavassistArrayInfoImpl.java
   projects/microcontainer/trunk/container/src/main/org/jboss/reflect/plugins/javassist/JavassistEnumInfo.java
   projects/microcontainer/trunk/container/src/main/org/jboss/reflect/plugins/javassist/JavassistTypeInfo.java
   projects/microcontainer/trunk/container/src/main/org/jboss/reflect/plugins/javassist/JavassistTypeInfoFactoryImpl.java
   projects/microcontainer/trunk/container/src/main/org/jboss/reflect/plugins/javassist/SignatureKey.java
   projects/microcontainer/trunk/container/src/main/org/jboss/reflect/spi/AnnotationValue.java
   projects/microcontainer/trunk/container/src/main/org/jboss/reflect/spi/ClassInfo.java
   projects/microcontainer/trunk/container/src/main/org/jboss/reflect/spi/ConstructorInfo.java
   projects/microcontainer/trunk/container/src/main/org/jboss/reflect/spi/FieldInfo.java
   projects/microcontainer/trunk/container/src/main/org/jboss/reflect/spi/MethodInfo.java
   projects/microcontainer/trunk/container/src/main/org/jboss/reflect/spi/PrimitiveInfo.java
   projects/microcontainer/trunk/container/src/main/org/jboss/reflect/spi/TypeInfo.java
   projects/microcontainer/trunk/container/src/main/org/jboss/repository/plugins/AbstractKernelRepository.java
   projects/microcontainer/trunk/container/src/main/org/jboss/repository/plugins/KeyMetaDataCombiner.java
   projects/microcontainer/trunk/container/src/main/org/jboss/repository/plugins/ThreadMetaDataCombiner.java
   projects/microcontainer/trunk/container/src/main/org/jboss/repository/plugins/basic/BasicAttributeComparator.java
   projects/microcontainer/trunk/container/src/main/org/jboss/repository/spi/KernelRepository.java
   projects/microcontainer/trunk/container/src/main/org/jboss/repository/spi/Key.java
   projects/microcontainer/trunk/container/src/main/org/jboss/repository/spi/MetaDataContext.java
   projects/microcontainer/trunk/container/src/main/org/jboss/repository/spi/MetaDataLoader.java
   projects/microcontainer/trunk/container/src/main/org/jboss/virtual/VFSUtils.java
   projects/microcontainer/trunk/container/src/main/org/jboss/virtual/VisitorAttributes.java
   projects/microcontainer/trunk/container/src/main/org/jboss/virtual/plugins/context/AbstractVFSContext.java
   projects/microcontainer/trunk/container/src/main/org/jboss/virtual/plugins/context/file/FileHandler.java
   projects/microcontainer/trunk/container/src/main/org/jboss/virtual/plugins/context/jar/AbstractJarHandler.java
   projects/microcontainer/trunk/container/src/main/org/jboss/virtual/plugins/context/jar/JarEntryHandler.java
   projects/microcontainer/trunk/container/src/main/org/jboss/virtual/plugins/context/jar/JarHandler.java
   projects/microcontainer/trunk/container/src/main/org/jboss/virtual/plugins/context/jar/NestedJarHandler.java
   projects/microcontainer/trunk/container/src/main/org/jboss/virtual/plugins/vfs/helpers/ExtensibleFilter.java
   projects/microcontainer/trunk/container/src/main/org/jboss/virtual/plugins/vfs/helpers/SuffixesExcludeFilter.java
   projects/microcontainer/trunk/container/src/tests-support/org/jboss/test/vfs/support/jar1/ClassInJar1.java
   projects/microcontainer/trunk/container/src/tests-support/org/jboss/test/vfs/support/jar2/ClassInJar2.java
   projects/microcontainer/trunk/container/src/tests/org/jboss/test/ContainerTest.java
   projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/test/AnnotatedClassInfoTest.java
   projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/test/ClassInfoTestSuite.java
   projects/microcontainer/trunk/container/src/tests/org/jboss/test/virtual/test/FileVFSUnitTestCase.java
Log:
Complete tests (and fixes) for the container ClassInfo api (reflection and javassist).

Also missed one place where the common classpath wasn't updated.

Some source code tidyup (mainly missing javadoc tags).

Modified: projects/microcontainer/trunk/container/build-test14.xml
===================================================================
--- projects/microcontainer/trunk/container/build-test14.xml	2006-11-30 02:40:11 UTC (rev 58765)
+++ projects/microcontainer/trunk/container/build-test14.xml	2006-11-30 11:12:06 UTC (rev 58766)
@@ -134,7 +134,9 @@
 	      <include name="*.jar"/>
 	   </fileset>
       <path refid="jboss.test14.classpath"/>
-      <path refid="jboss.common.classpath"/>
+      <path refid="jboss/common.core.classpath"/>
+      <path refid="jboss/common.logging.spi.classpath"/>
+      <path refid="jboss/common.logging.log4j.classpath"/>
       <path refid="apache.log4j.classpath"/>
       <path refid="javassist.classpath"/>
       <path refid="oswego.concurrent.classpath"/>

Modified: projects/microcontainer/trunk/container/src/main/org/jboss/annotation/factory/ast/AnnotationParser.java
===================================================================
--- projects/microcontainer/trunk/container/src/main/org/jboss/annotation/factory/ast/AnnotationParser.java	2006-11-30 02:40:11 UTC (rev 58765)
+++ projects/microcontainer/trunk/container/src/main/org/jboss/annotation/factory/ast/AnnotationParser.java	2006-11-30 11:12:06 UTC (rev 58766)
@@ -211,7 +211,7 @@
  /*@bgen(jjtree) MemberValuePair */
   ASTMemberValuePair jjtn000 = new ASTMemberValuePair(JJTMEMBERVALUEPAIR);
   boolean jjtc000 = true;
-  jjtree.openNodeScope(jjtn000);Token specialToken;
+  jjtree.openNodeScope(jjtn000); //Token specialToken;
     try {
       Identifier();
       jj_consume_token(13);
@@ -238,7 +238,7 @@
   }
 
   final public void MemberValue() throws ParseException {
-  Token tok;
+  //Token tok;
     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
     case 9:
       Annotation();
@@ -484,7 +484,7 @@
   private Token jj_scanpos, jj_lastpos;
   private int jj_la;
   public boolean lookingAhead = false;
-  private boolean jj_semLA;
+  //private boolean jj_semLA;
   private int jj_gen;
   final private int[] jj_la1 = new int[8];
   static private int[] jj_la1_0;
@@ -583,7 +583,11 @@
     throw generateParseException();
   }
 
-  static private final class LookaheadSuccess extends java.lang.Error {}
+  static private final class LookaheadSuccess extends java.lang.Error {
+
+   /** The serialVersionUID */
+   private static final long serialVersionUID = 1L;
+  }
   final private LookaheadSuccess jj_ls = new LookaheadSuccess();
   final private boolean jj_scan_token(int kind) {
     if (jj_scanpos == jj_lastpos) {
@@ -636,6 +640,7 @@
   private int[] jj_lasttokens = new int[100];
   private int jj_endpos;
 
+  @SuppressWarnings("unchecked")
   private void jj_add_error_token(int kind, int pos) {
     if (pos >= 100) return;
     if (pos == jj_endpos + 1) {
@@ -664,6 +669,7 @@
     }
   }
 
+  @SuppressWarnings("unchecked")
   public ParseException generateParseException() {
     jj_expentries.removeAllElements();
     boolean[] la1tokens = new boolean[16];

Modified: projects/microcontainer/trunk/container/src/main/org/jboss/annotation/factory/ast/AnnotationParserTokenManager.java
===================================================================
--- projects/microcontainer/trunk/container/src/main/org/jboss/annotation/factory/ast/AnnotationParserTokenManager.java	2006-11-30 02:40:11 UTC (rev 58765)
+++ projects/microcontainer/trunk/container/src/main/org/jboss/annotation/factory/ast/AnnotationParserTokenManager.java	2006-11-30 11:12:06 UTC (rev 58766)
@@ -43,6 +43,7 @@
    jjmatchedPos = pos;
    return pos + 1;
 }
+/*
 private final int jjStartNfaWithStates_0(int pos, int kind, int state)
 {
    jjmatchedKind = kind;
@@ -51,6 +52,7 @@
    catch(java.io.IOException e) { return pos + 1; }
    return jjMoveNfa_0(state, pos + 1);
 }
+*/
 private final int jjMoveStringLiteralDfa0_0()
 {
    switch(curChar)
@@ -120,22 +122,25 @@
       jjCheckNAdd(jjnextStates[start]);
    } while (start++ != end);
 }
+/*
 private final void jjCheckNAddStates(int start)
 {
    jjCheckNAdd(jjnextStates[start]);
    jjCheckNAdd(jjnextStates[start + 1]);
 }
+*/
 static final long[] jjbitVec0 = {
    0x0L, 0x0L, 0xffffffffffffffffL, 0xffffffffffffffffL
 };
 private final int jjMoveNfa_0(int startState, int curPos)
 {
-   int[] nextStates;
+   //int[] nextStates;
    int startsAt = 0;
    jjnewStateCnt = 27;
    int i = 1;
    jjstateSet[0] = startState;
-   int j, kind = 0x7fffffff;
+   //int j;
+   int kind = 0x7fffffff;
    for (;;)
    {
       if (++jjround == 0x7fffffff)
@@ -143,7 +148,8 @@
       if (curChar < 64)
       {
          long l = 1L << curChar;
-         MatchLoop: do
+         //MatchLoop:
+         do
          {
             switch(jjstateSet[--i])
             {
@@ -249,7 +255,8 @@
       else if (curChar < 128)
       {
          long l = 1L << (curChar & 077);
-         MatchLoop: do
+         //MatchLoop: 
+         do
          {
             switch(jjstateSet[--i])
             {
@@ -317,7 +324,8 @@
       {
          int i2 = (curChar & 0xff) >> 6;
          long l2 = 1L << (curChar & 077);
-         MatchLoop: do
+         //MatchLoop: 
+         do
          {
             switch(jjstateSet[--i])
             {
@@ -426,8 +434,8 @@
 
 public Token getNextToken() 
 {
-  int kind;
-  Token specialToken = null;
+  //int kind;
+  //Token specialToken = null;
   Token matchedToken;
   int curPos = 0;
 

Modified: projects/microcontainer/trunk/container/src/main/org/jboss/annotation/factory/ast/JJTAnnotationParserState.java
===================================================================
--- projects/microcontainer/trunk/container/src/main/org/jboss/annotation/factory/ast/JJTAnnotationParserState.java	2006-11-30 02:40:11 UTC (rev 58765)
+++ projects/microcontainer/trunk/container/src/main/org/jboss/annotation/factory/ast/JJTAnnotationParserState.java	2006-11-30 11:12:06 UTC (rev 58766)
@@ -60,6 +60,7 @@
   }
 
   /* Pushes a node on to the stack. */
+  @SuppressWarnings("unchecked")
   void pushNode(Node n) {
     nodes.push(n);
     ++sp;
@@ -94,6 +95,7 @@
   }
 
 
+  @SuppressWarnings("unchecked")
   void openNodeScope(Node n) {
     marks.push(new Integer(mk));
     mk = sp;

Modified: projects/microcontainer/trunk/container/src/main/org/jboss/annotation/factory/ast/Node.java
===================================================================
--- projects/microcontainer/trunk/container/src/main/org/jboss/annotation/factory/ast/Node.java	2006-11-30 02:40:11 UTC (rev 58765)
+++ projects/microcontainer/trunk/container/src/main/org/jboss/annotation/factory/ast/Node.java	2006-11-30 11:12:06 UTC (rev 58766)
@@ -33,21 +33,37 @@
   public void jjtClose();
 
   /** This pair of methods are used to inform the node of its
-    parent. */
+   * parent.
+   * 
+   * @param n 
+   */
   public void jjtSetParent(Node n);
   public Node jjtGetParent();
 
   /** This method tells the node to add its argument to the node's
-    list of children.  */
+   *  list of children.
+   * @param n 
+   * @param i 
+   */
   public void jjtAddChild(Node n, int i);
 
   /** This method returns a child node.  The children are numbered
-     from zero, left to right. */
+   *  from zero, left to right.
+   *  
+   * @param i 
+   * @return the node
+   */
   public Node jjtGetChild(int i);
 
-  /** Return the number of children the node has. */
+  /** Return the number of children the node has.
+   * @return the number of children
+   */
   public int jjtGetNumChildren();
 
-  /** Accept the visitor. **/
+  /** Accept the visitor.
+   * @param visitor the visitor
+   * @param data the data
+   * @return ? 
+   */
   public Object jjtAccept(AnnotationParserVisitor visitor, Object data);
 }

Modified: projects/microcontainer/trunk/container/src/main/org/jboss/annotation/factory/ast/ParseException.java
===================================================================
--- projects/microcontainer/trunk/container/src/main/org/jboss/annotation/factory/ast/ParseException.java	2006-11-30 02:40:11 UTC (rev 58765)
+++ projects/microcontainer/trunk/container/src/main/org/jboss/annotation/factory/ast/ParseException.java	2006-11-30 11:12:06 UTC (rev 58766)
@@ -45,6 +45,10 @@
    * to force the "toString" method of parent class "Throwable" to
    * print the error message in the form:
    *     ParseException: <result of getMessage>
+   *     
+   * @param currentTokenVal
+   * @param expectedTokenSequencesVal
+   * @param tokenImageVal
    */
   public ParseException(Token currentTokenVal,
                         int[][] expectedTokenSequencesVal,
@@ -165,6 +169,9 @@
    * Used to convert raw characters to their escaped version
    * when these raw version cannot be used as part of an ASCII
    * string literal.
+   * 
+   * @param str 
+   * @return the escaped string 
    */
   protected String add_escapes(String str) {
       StringBuffer retval = new StringBuffer();

Modified: projects/microcontainer/trunk/container/src/main/org/jboss/annotation/factory/ast/SimpleCharStream.java
===================================================================
--- projects/microcontainer/trunk/container/src/main/org/jboss/annotation/factory/ast/SimpleCharStream.java	2006-11-30 02:40:11 UTC (rev 58765)
+++ projects/microcontainer/trunk/container/src/main/org/jboss/annotation/factory/ast/SimpleCharStream.java	2006-11-30 11:12:06 UTC (rev 58766)
@@ -216,6 +216,8 @@
   /**
    * @deprecated 
    * @see #getEndColumn
+   * 
+   * @return the column
    */
 
   public int getColumn() {
@@ -225,6 +227,8 @@
   /**
    * @deprecated 
    * @see #getEndLine
+   * 
+   * @return the line
    */
 
   public int getLine() {
@@ -372,6 +376,9 @@
 
   /**
    * Method to adjust line and column numbers for the start of a token.
+   * 
+   * @param newLine 
+   * @param newCol 
    */
   public void adjustBeginLineColumn(int newLine, int newCol)
   {

Modified: projects/microcontainer/trunk/container/src/main/org/jboss/annotation/factory/ast/SimpleNode.java
===================================================================
--- projects/microcontainer/trunk/container/src/main/org/jboss/annotation/factory/ast/SimpleNode.java	2006-11-30 02:40:11 UTC (rev 58765)
+++ projects/microcontainer/trunk/container/src/main/org/jboss/annotation/factory/ast/SimpleNode.java	2006-11-30 11:12:06 UTC (rev 58766)
@@ -70,7 +70,11 @@
     return visitor.visit(this, data);
   }
 
-  /** Accept the visitor. **/
+  /** Accept the visitor.
+   * @param visitor 
+   * @param data 
+   * @return ? 
+   */
   public Object childrenAccept(AnnotationParserVisitor visitor, Object data) {
     if (children != null) {
       for (int i = 0; i < children.length; ++i) {

Modified: projects/microcontainer/trunk/container/src/main/org/jboss/annotation/factory/ast/Token.java
===================================================================
--- projects/microcontainer/trunk/container/src/main/org/jboss/annotation/factory/ast/Token.java	2006-11-30 02:40:11 UTC (rev 58765)
+++ projects/microcontainer/trunk/container/src/main/org/jboss/annotation/factory/ast/Token.java	2006-11-30 11:12:06 UTC (rev 58766)
@@ -89,6 +89,9 @@
    *
    * to the following switch statement. Then you can cast matchedToken
    * variable to the appropriate type and use it in your lexical actions.
+   * 
+   * @param ofKind 
+   * @return the new token 
    */
   public static final Token newToken(int ofKind)
   {

Modified: projects/microcontainer/trunk/container/src/main/org/jboss/annotation/factory/ast/TokenMgrError.java
===================================================================
--- projects/microcontainer/trunk/container/src/main/org/jboss/annotation/factory/ast/TokenMgrError.java	2006-11-30 02:40:11 UTC (rev 58765)
+++ projects/microcontainer/trunk/container/src/main/org/jboss/annotation/factory/ast/TokenMgrError.java	2006-11-30 11:12:06 UTC (rev 58766)
@@ -59,6 +59,9 @@
    /**
     * Replaces unprintable characters by their espaced (or unicode escaped)
     * equivalents in the given string
+    * 
+    * @param str 
+    * @return the replaced character
     */
    protected static final String addEscapes(String str) {
       StringBuffer retval = new StringBuffer();
@@ -109,12 +112,13 @@
     * Returns a detailed message for the Error when it is thrown by the
     * token manager to indicate a lexical error.
     * Parameters : 
-    *    EOFSeen     : indicates if EOF caused the lexicl error
-    *    curLexState : lexical state in which this error occured
-    *    errorLine   : line number when the error occured
-    *    errorColumn : column number when the error occured
-    *    errorAfter  : prefix that was seen before this error occured
-    *    curchar     : the offending character
+    * @param   EOFSeen     : indicates if EOF caused the lexicl error
+    * @param   lexState : lexical state in which this error occured
+    * @param   errorLine   : line number when the error occured
+    * @param   errorColumn : column number when the error occured
+    * @param   errorAfter  : prefix that was seen before this error occured
+    * @param   curChar     : the offending character
+    * @return the detailed message
     * Note: You can customize the lexical error message by modifying this method.
     */
    protected static String LexicalError(boolean EOFSeen, int lexState, int errorLine, int errorColumn, String errorAfter, char curChar) {

Modified: projects/microcontainer/trunk/container/src/main/org/jboss/beans/info/plugins/AbstractBeanInfoFactory.java
===================================================================
--- projects/microcontainer/trunk/container/src/main/org/jboss/beans/info/plugins/AbstractBeanInfoFactory.java	2006-11-30 02:40:11 UTC (rev 58765)
+++ projects/microcontainer/trunk/container/src/main/org/jboss/beans/info/plugins/AbstractBeanInfoFactory.java	2006-11-30 11:12:06 UTC (rev 58766)
@@ -35,6 +35,7 @@
 import org.jboss.beans.info.spi.EventInfo;
 import org.jboss.beans.info.spi.PropertyInfo;
 import org.jboss.classadapter.spi.ClassAdapter;
+import org.jboss.reflect.spi.AnnotationValue;
 import org.jboss.reflect.spi.ClassInfo;
 import org.jboss.reflect.spi.ConstructorInfo;
 import org.jboss.reflect.spi.MethodInfo;
@@ -212,15 +213,14 @@
     * @param methods the methods
     * @return the properties
     */
-   protected Set<PropertyInfo> getProperties(Set methods)
+   protected Set<PropertyInfo> getProperties(Set<MethodInfo> methods)
    {
       HashMap<String, MethodInfo> getters = new HashMap<String, MethodInfo>();
       HashMap<String, List<MethodInfo>> setters = new HashMap<String, List<MethodInfo>>();
       if (methods.isEmpty() == false)
       {
-         for (Iterator i = methods.iterator(); i.hasNext();)
+         for (MethodInfo methodInfo : methods)
          {
-            MethodInfo methodInfo = (MethodInfo) i.next();
             if (methodInfo.isPublic() && methodInfo.isStatic() == false)
             {
                String name = methodInfo.getName();
@@ -231,7 +231,7 @@
                }
                else if (isSetter(methodInfo))
                {
-                  ArrayList<MethodInfo> list = (ArrayList<MethodInfo>) setters.get(upperName);
+                  List<MethodInfo> list = setters.get(upperName);
                   if (list == null)
                   {
                      list = new ArrayList<MethodInfo>();
@@ -246,18 +246,18 @@
       HashSet<PropertyInfo> properties = new HashSet<PropertyInfo>();
       if (getters.isEmpty() == false)
       {
-         for (Iterator i = getters.entrySet().iterator(); i.hasNext();)
+         for (Iterator<Map.Entry<String, MethodInfo>> i = getters.entrySet().iterator(); i.hasNext();)
          {
-            Map.Entry entry = (Map.Entry) i.next();
-            String name = (String) entry.getKey();
-            MethodInfo getter = (MethodInfo) entry.getValue();
+            Map.Entry<String, MethodInfo> entry = i.next();
+            String name = entry.getKey();
+            MethodInfo getter = entry.getValue();
             MethodInfo setter = null;
-            ArrayList setterList = (ArrayList) setters.remove(name);
+            List<MethodInfo> setterList = setters.remove(name);
             if (setterList != null && setterList.size() != 0)
             {
                for (int j = 0; j < setterList.size(); ++j)
                {
-                  MethodInfo thisSetter = (MethodInfo) setterList.get(j);
+                  MethodInfo thisSetter = setterList.get(j);
                   TypeInfo pinfo = thisSetter.getParameterTypes()[0];
                   if (getter.getReturnType().equals(pinfo) == true)
                   {
@@ -267,23 +267,42 @@
                }
             }
             String lowerName = getLowerPropertyName(name);
-            properties.add(new AbstractPropertyInfo(lowerName, name, getter.getReturnType(), getter, setter));
+            
+            // Merge the annotations between the getters and setters
+            AnnotationValue[] annotations = getter.getAnnotations();
+            AnnotationValue[] setterAnnotations = null;
+            if (setter != null)
+               setter.getAnnotations();
+            if (annotations == null || annotations.length == 0)
+               annotations = setterAnnotations;
+            else if (setterAnnotations != null && setterAnnotations.length > 0)
+            {
+               HashSet<AnnotationValue> merged = new HashSet<AnnotationValue>();
+               for (AnnotationValue annotation : annotations)
+                  merged.add(annotation);
+               for (AnnotationValue annotation : setterAnnotations)
+                  merged.add(annotation);
+               annotations = merged.toArray(new AnnotationValue[merged.size()]);
+            }
+            
+            properties.add(new AbstractPropertyInfo(lowerName, name, getter.getReturnType(), getter, setter, annotations));
          }
       }
       if (setters.isEmpty() == false)
       {
-         for (Iterator i = setters.entrySet().iterator(); i.hasNext();)
+         for (Iterator<Map.Entry<String, List<MethodInfo>>> i = setters.entrySet().iterator(); i.hasNext();)
          {
-            Map.Entry entry = (Map.Entry) i.next();
-            String name = (String) entry.getKey();
-            ArrayList setterList = (ArrayList) entry.getValue();
+            Map.Entry<String, List<MethodInfo>> entry = i.next();
+            String name = entry.getKey();
+            List<MethodInfo> setterList = entry.getValue();
             // Review: Maybe should just create duplicate propertyInfo and let the configurator guess?
             if (setterList.size() == 1)
             {
-               MethodInfo setter = (MethodInfo) setterList.get(0);
+               MethodInfo setter = setterList.get(0);
                TypeInfo pinfo = setter.getParameterTypes()[0];
                String lowerName = getLowerPropertyName(name);
-               properties.add(new AbstractPropertyInfo(lowerName, name, pinfo, null, setter));
+               AnnotationValue[] annotations = setter.getAnnotations();
+               properties.add(new AbstractPropertyInfo(lowerName, name, pinfo, null, setter, annotations));
             }
          }
       }

Modified: projects/microcontainer/trunk/container/src/main/org/jboss/beans/info/plugins/AbstractPropertyInfo.java
===================================================================
--- projects/microcontainer/trunk/container/src/main/org/jboss/beans/info/plugins/AbstractPropertyInfo.java	2006-11-30 02:40:11 UTC (rev 58765)
+++ projects/microcontainer/trunk/container/src/main/org/jboss/beans/info/plugins/AbstractPropertyInfo.java	2006-11-30 11:12:06 UTC (rev 58766)
@@ -23,9 +23,10 @@
 
 import org.jboss.beans.info.spi.BeanInfo;
 import org.jboss.beans.info.spi.PropertyInfo;
+import org.jboss.reflect.plugins.AnnotationHolder;
+import org.jboss.reflect.spi.AnnotationValue;
 import org.jboss.reflect.spi.MethodInfo;
 import org.jboss.reflect.spi.TypeInfo;
-import org.jboss.util.JBossObject;
 import org.jboss.util.JBossStringBuilder;
 
 /**
@@ -34,8 +35,11 @@
  * @author <a href="adrian at jboss.com">Adrian Brock</a>
  * @version $Revision$
  */
-public class AbstractPropertyInfo extends JBossObject implements PropertyInfo
+public class AbstractPropertyInfo extends AnnotationHolder implements PropertyInfo
 {
+   /** The serialVersionUID */
+   private static final long serialVersionUID = 6558910165211748079L;
+
    /** The bean info */
    protected BeanInfo beanInfo;
    
@@ -89,6 +93,26 @@
       this.getter = getter;
       this.setter = setter;
    }
+
+   /**
+    * Create a new property info
+    * 
+    * @param name the name
+    * @param upperName the upper case version of the name
+    * @param type the type
+    * @param getter the getter
+    * @param setter the setter
+    * @param annotations the annotations
+    */
+   public AbstractPropertyInfo(String name, String upperName, TypeInfo type, MethodInfo getter, MethodInfo setter, AnnotationValue[] annotations)
+   {
+      super(annotations);
+      this.name = name;
+      this.upperName = upperName;
+      this.type = type;
+      this.getter = getter;
+      this.setter = setter;
+   }
    
    public BeanInfo getBeanInfo()
    {

Modified: projects/microcontainer/trunk/container/src/main/org/jboss/beans/info/spi/PropertyInfo.java
===================================================================
--- projects/microcontainer/trunk/container/src/main/org/jboss/beans/info/spi/PropertyInfo.java	2006-11-30 02:40:11 UTC (rev 58765)
+++ projects/microcontainer/trunk/container/src/main/org/jboss/beans/info/spi/PropertyInfo.java	2006-11-30 11:12:06 UTC (rev 58766)
@@ -21,9 +21,9 @@
 */
 package org.jboss.beans.info.spi;
 
+import org.jboss.reflect.spi.AnnotatedInfo;
 import org.jboss.reflect.spi.MethodInfo;
 import org.jboss.reflect.spi.TypeInfo;
-import org.jboss.util.JBossInterface;
 
 /**
  * Description of a property.
@@ -31,7 +31,7 @@
  * @author <a href="adrian at jboss.com">Adrian Brock</a>
  * @version $Revision$
  */
-public interface PropertyInfo extends JBossInterface
+public interface PropertyInfo extends AnnotatedInfo
 {
    /**
     * Get the BeanInfo

Modified: projects/microcontainer/trunk/container/src/main/org/jboss/reflect/plugins/AnnotationValueImpl.java
===================================================================
--- projects/microcontainer/trunk/container/src/main/org/jboss/reflect/plugins/AnnotationValueImpl.java	2006-11-30 02:40:11 UTC (rev 58765)
+++ projects/microcontainer/trunk/container/src/main/org/jboss/reflect/plugins/AnnotationValueImpl.java	2006-11-30 11:12:06 UTC (rev 58766)
@@ -23,12 +23,14 @@
 
 import java.io.Serializable;
 import java.util.HashMap;
+import java.util.Map;
 
 import org.jboss.reflect.spi.AnnotationInfo;
 import org.jboss.reflect.spi.AnnotationValue;
 import org.jboss.reflect.spi.TypeInfo;
 import org.jboss.reflect.spi.Value;
 import org.jboss.util.JBossObject;
+import org.jboss.util.JBossStringBuilder;
 
 /**
  * An annotation value
@@ -45,7 +47,7 @@
    protected AnnotationInfo annotationType;
    
    /** The attribute values */
-   protected HashMap attributeValues;
+   protected HashMap<String, Value> attributeValues;
    
    /** The hash code */
    protected int hash = -1;
@@ -63,7 +65,7 @@
     * @param annotationType the annotation info
     * @param attributeValues the attribute values
     */
-   public AnnotationValueImpl(AnnotationInfo annotationType, HashMap attributeValues)
+   public AnnotationValueImpl(AnnotationInfo annotationType, HashMap<String, Value> attributeValues)
    {
       this.annotationType = annotationType;
       this.attributeValues = attributeValues;
@@ -77,9 +79,14 @@
    
    public Value getValue(String attributeName)
    {
-      return (Value) attributeValues.get(attributeName);
+      return attributeValues.get(attributeName);
    }
 
+   public Map<String, Value> getValues()
+   {
+      return attributeValues;
+   }
+
    public TypeInfo getType()
    {
       return annotationType;
@@ -88,12 +95,12 @@
    public boolean equals(Object o)
    {
       if (this == o) return true;
-      if (!(o instanceof AnnotationValueImpl)) return false;
+      if (!(o instanceof AnnotationValue)) return false;
 
-      final AnnotationValueImpl annotationValue = (AnnotationValueImpl) o;
+      final AnnotationValue annotationValue = (AnnotationValue) o;
 
-      if (!annotationType.equals(annotationValue.annotationType)) return false;
-      if (!attributeValues.equals(annotationValue.attributeValues)) return false;
+      if (!annotationType.equals(annotationValue.getAnnotationType())) return false;
+      if (!attributeValues.equals(annotationValue.getValues())) return false;
 
       return true;
    }
@@ -113,4 +120,16 @@
       result = 29 * result + attributeValues.hashCode();
       hash = result;
    }
+
+   public void toShortString(JBossStringBuilder buffer)
+   {
+      buffer.append(annotationType.getName());
+   }
+
+   protected void toString(JBossStringBuilder buffer)
+   {
+      buffer.append("name=").append(annotationType.getName());
+      if (attributeValues != null && attributeValues.size() > 0)
+         buffer.append(" values=").append(attributeValues);
+   }
 }

Modified: projects/microcontainer/trunk/container/src/main/org/jboss/reflect/plugins/ArrayInfoImpl.java
===================================================================
--- projects/microcontainer/trunk/container/src/main/org/jboss/reflect/plugins/ArrayInfoImpl.java	2006-11-30 02:40:11 UTC (rev 58765)
+++ projects/microcontainer/trunk/container/src/main/org/jboss/reflect/plugins/ArrayInfoImpl.java	2006-11-30 11:12:06 UTC (rev 58766)
@@ -58,6 +58,16 @@
    public ArrayInfoImpl(TypeInfo componentType)
    {
       this.componentType = componentType;
+      StringBuilder builder = new StringBuilder();
+      builder.append("[");
+      TypeInfo temp = componentType;
+      while (temp.isArray())
+      {
+         builder.append("[");
+         temp = ((ArrayInfo) temp).getComponentType();
+      }
+      builder.append("L").append(temp.getName()).append(";");
+      name = builder.toString();
       calculateHash();
    }
 
@@ -65,11 +75,6 @@
    {
       return componentType;
    }
-
-   public String getName()
-   {
-      return "[L" + componentType.getName() + ";";
-   }
    
    public AnnotationValue getAnnotation(String name)
    {
@@ -110,12 +115,12 @@
    public boolean equals(Object o)
    {
       if (this == o) return true;
-      if (!(o instanceof ArrayInfoImpl)) return false;
+      if (!(o instanceof ArrayInfo)) return false;
       if (!super.equals(o)) return false;
 
-      final ArrayInfoImpl arrayInfo = (ArrayInfoImpl) o;
+      final ArrayInfo arrayInfo = (ArrayInfo) o;
 
-      if (!componentType.equals(arrayInfo.componentType)) return false;
+      if (!componentType.equals(arrayInfo.getComponentType())) return false;
 
       return true;
    }

Modified: projects/microcontainer/trunk/container/src/main/org/jboss/reflect/plugins/ClassInfoHelper.java
===================================================================
--- projects/microcontainer/trunk/container/src/main/org/jboss/reflect/plugins/ClassInfoHelper.java	2006-11-30 02:40:11 UTC (rev 58765)
+++ projects/microcontainer/trunk/container/src/main/org/jboss/reflect/plugins/ClassInfoHelper.java	2006-11-30 11:12:06 UTC (rev 58766)
@@ -27,7 +27,6 @@
 /**
  * ClassInfoHelper.
  * 
- * @todo fix the introspection assumption
  * @author <a href="adrian at jboss.com">Adrian Brock</a>
  * @version $Revision$
  */

Modified: projects/microcontainer/trunk/container/src/main/org/jboss/reflect/plugins/ClassInfoImpl.java
===================================================================
--- projects/microcontainer/trunk/container/src/main/org/jboss/reflect/plugins/ClassInfoImpl.java	2006-11-30 02:40:11 UTC (rev 58765)
+++ projects/microcontainer/trunk/container/src/main/org/jboss/reflect/plugins/ClassInfoImpl.java	2006-11-30 11:12:06 UTC (rev 58766)
@@ -78,7 +78,7 @@
    protected FieldInfo[] fields = UNKNOWN_FIELDS;
    
    /** Field map Map<String, FieldInfo> */
-   protected HashMap fieldMap;
+   protected HashMap<String, FieldInfo> fieldMap;
 
    /** The super class */
    protected ClassInfo superclass = UNKNOWN_CLASS;
@@ -122,6 +122,36 @@
       }
       return null;
    }
+   
+   /**
+    * Find a constructor
+    * 
+    * @param constructors the constructors
+    * @param parameters the parameters
+    * @return the constructor info
+    */
+   public static ConstructorInfo findConstructor(ConstructorInfo[] constructors, TypeInfo[] parameters)
+   {
+      if (constructors == null) return null;
+      for (int i = 0; i < constructors.length; i++)
+      {
+         final int length = (parameters != null) ? parameters.length : 0;
+         if (constructors[i].getParameterTypes().length == length)
+         {
+            boolean ok = true;
+            for (int j = 0; j < length; j++)
+            {
+               if (!parameters[j].equals(constructors[i].getParameterTypes()[j]))
+               {
+                  ok = false;
+                  break;
+               }
+            }
+            if (ok) return constructors[i];
+         }
+      }
+      return null;
+   }
 
    /**
     * Get an array class
@@ -158,6 +188,18 @@
     * 
     * @param name the class name
     * @param modifiers the class modifiers
+    */
+   public ClassInfoImpl(String name, int modifiers)
+   {
+      this.name = name;
+      this.modifiers = modifiers;
+   }
+
+   /**
+    * Create a new abstract ClassInfo.
+    * 
+    * @param name the class name
+    * @param modifiers the class modifiers
     * @param interfaces the interfaces
     * @param superclass the super class
     */
@@ -188,6 +230,8 @@
    public void setType(Class type)
    {
       setAnnotatedElement(type);
+      if (type != null)
+         modifiers = type.getModifiers();
    }
    
    /**
@@ -225,8 +269,12 @@
       this.fields = fields;
       if (fields != null)
       {
-         for (int i = 0; i < fields.length; i++)
+         fieldMap = new HashMap<String, FieldInfo>();
+         for (int i = 0; i < fields.length; ++i)
+         {
             fields[i].declaringClass = this;
+            fieldMap.put(fields[i].getName(), fields[i]);
+         }
       }
    }
 
@@ -286,7 +334,9 @@
    {
       if (fields == UNKNOWN_FIELDS)
          setDeclaredFields(classInfoHelper.getFields(this));
-      return (FieldInfo) fieldMap.get(name);
+      if (fieldMap == null)
+         return null;
+      return fieldMap.get(name);
    }
 
    public FieldInfo[] getDeclaredFields()
@@ -295,6 +345,13 @@
          setDeclaredFields(classInfoHelper.getFields(this));
       return fields;
    }
+   
+   public ConstructorInfo getDeclaredConstructor(TypeInfo[] parameters)
+   {
+      if (methods == UNKNOWN_METHODS)
+         setDeclaredConstructors(classInfoHelper.getConstructors(this));
+      return findConstructor(constructors, parameters);
+   }
 
    public ConstructorInfo[] getDeclaredConstructors()
    {
@@ -345,6 +402,16 @@
       return getType().isArray();
    }
 
+   public boolean isEnum()
+   {
+      return getType().isEnum();
+   }
+
+   public boolean isPrimitive()
+   {
+      return false;
+   }
+
    public TypeInfo getArrayType(int depth)
    {
       Class arrayClass = getArrayClass(getType(), depth);
@@ -378,6 +445,7 @@
 
       final ClassInfo other = (ClassInfo) obj;
 
+      String name = getName();
       if (name != null ? name.equals(other.getName()) == false : other.getName() != null)
          return false;
       return true;
@@ -390,11 +458,19 @@
    
    static class UnknownClassInfo implements ClassInfo
    {
+      /** The serialVersionUID */
+      private static final long serialVersionUID = 1L;
+
       public ConstructorInfo[] getDeclaredConstructors()
       {
          throw new UnreachableStatementException();
       }
 
+      public ConstructorInfo getDeclaredConstructor(TypeInfo[] parameters)
+      {
+         throw new UnreachableStatementException();
+      }
+
       public FieldInfo getDeclaredField(String name)
       {
          throw new UnreachableStatementException();
@@ -480,6 +556,16 @@
          throw new UnreachableStatementException();
       }
 
+      public boolean isEnum()
+      {
+         throw new UnreachableStatementException();
+      }
+
+      public boolean isPrimitive()
+      {
+         throw new UnreachableStatementException();
+      }
+
       public Object[] newArrayInstance(int size) throws Throwable
       {
          throw new UnreachableStatementException();

Modified: projects/microcontainer/trunk/container/src/main/org/jboss/reflect/plugins/EnumConstantInfoImpl.java
===================================================================
--- projects/microcontainer/trunk/container/src/main/org/jboss/reflect/plugins/EnumConstantInfoImpl.java	2006-11-30 02:40:11 UTC (rev 58765)
+++ projects/microcontainer/trunk/container/src/main/org/jboss/reflect/plugins/EnumConstantInfoImpl.java	2006-11-30 11:12:06 UTC (rev 58766)
@@ -26,6 +26,7 @@
 import org.jboss.reflect.spi.EnumConstantInfo;
 import org.jboss.reflect.spi.EnumInfo;
 import org.jboss.util.JBossObject;
+import org.jboss.util.JBossStringBuilder;
 
 /**
  * An enumeration constant
@@ -90,19 +91,22 @@
    public boolean equals(Object o)
    {
       if (this == o) return true;
-      if (!(o instanceof EnumConstantInfoImpl)) return false;
+      if (o == null || !(o instanceof EnumConstantInfo)) return false;
 
-      final EnumConstantInfoImpl enumConstantInfo = (EnumConstantInfoImpl) o;
+      final EnumConstantInfo enumConstantInfo = (EnumConstantInfo) o;
 
-      if (name != enumConstantInfo.name)
+      if (name.equals(enumConstantInfo.getName()) == false)
          return false;
-      if (!declaring.equals(enumConstantInfo.declaring))
+      if (!declaring.equals(enumConstantInfo.getDeclaring()))
          return false;
 
       return true;
    }
 
-   public int hashCode() { return hash; }
+   public int hashCode()
+   {
+      return hash;
+   }
 
    /**
     * Calculate the hash code
@@ -113,4 +117,15 @@
       result = 29 * result + declaring.hashCode();
       hash = result;
    }
+
+   public void toShortString(JBossStringBuilder buffer)
+   {
+      buffer.append(name);
+   }
+
+   protected void toString(JBossStringBuilder buffer)
+   {
+      buffer.append("name=").append(name);
+      buffer.append(" declaring=").append(declaring);
+   }
 }

Modified: projects/microcontainer/trunk/container/src/main/org/jboss/reflect/plugins/EnumInfoImpl.java
===================================================================
--- projects/microcontainer/trunk/container/src/main/org/jboss/reflect/plugins/EnumInfoImpl.java	2006-11-30 02:40:11 UTC (rev 58765)
+++ projects/microcontainer/trunk/container/src/main/org/jboss/reflect/plugins/EnumInfoImpl.java	2006-11-30 11:12:06 UTC (rev 58766)
@@ -21,11 +21,11 @@
 */
 package org.jboss.reflect.plugins;
 
+import java.util.HashMap;
+
 import org.jboss.reflect.spi.EnumConstantInfo;
 import org.jboss.reflect.spi.EnumInfo;
 
-import java.util.HashMap;
-
 /**
  * Enumeration info
  *
@@ -58,7 +58,7 @@
     */
    public EnumInfoImpl(String name, int modifiers)
    {
-      super(name, modifiers, null, null);
+      super(name, modifiers);
    }
    
    /**
@@ -70,6 +70,7 @@
    {
       for (int i = 0; i < enumConstants.length; i++)
          constants.put(enumConstants[i].getName(), enumConstants[i]);
+      this.enumConstants = enumConstants;
    }
 
    public EnumConstantInfo[] getEnumConstants()
@@ -81,4 +82,17 @@
    {
       return constants.get(name);
    }
+
+   public boolean equals(Object o)
+   {
+      if (this == o) return true;
+      if (o == null || !(o instanceof EnumInfo)) return false;
+      if (!super.equals(o)) return false;
+      
+      final EnumInfo enumInfo = (EnumInfo) o;
+
+      if (!getName().equals(enumInfo.getName())) return false;
+
+      return true;
+   }
 }

Modified: projects/microcontainer/trunk/container/src/main/org/jboss/reflect/plugins/ValueConvertor.java
===================================================================
--- projects/microcontainer/trunk/container/src/main/org/jboss/reflect/plugins/ValueConvertor.java	2006-11-30 02:40:11 UTC (rev 58765)
+++ projects/microcontainer/trunk/container/src/main/org/jboss/reflect/plugins/ValueConvertor.java	2006-11-30 11:12:06 UTC (rev 58766)
@@ -64,6 +64,7 @@
     * @return the value or null if there is no editor
     * @throws Throwable for any error
     */
+   @SuppressWarnings("unchecked")
    public static Object convertValue(Class<? extends Object> clazz, Object value) throws Throwable
    {
       if (clazz == null)

Modified: projects/microcontainer/trunk/container/src/main/org/jboss/reflect/plugins/introspection/IntrospectionTypeInfoFactoryImpl.java
===================================================================
--- projects/microcontainer/trunk/container/src/main/org/jboss/reflect/plugins/introspection/IntrospectionTypeInfoFactoryImpl.java	2006-11-30 02:40:11 UTC (rev 58765)
+++ projects/microcontainer/trunk/container/src/main/org/jboss/reflect/plugins/introspection/IntrospectionTypeInfoFactoryImpl.java	2006-11-30 11:12:06 UTC (rev 58766)
@@ -37,6 +37,7 @@
 import org.jboss.reflect.plugins.ClassInfoHelper;
 import org.jboss.reflect.plugins.ClassInfoImpl;
 import org.jboss.reflect.plugins.ConstructorInfoImpl;
+import org.jboss.reflect.plugins.EnumConstantInfoImpl;
 import org.jboss.reflect.plugins.EnumInfoImpl;
 import org.jboss.reflect.plugins.FieldInfoImpl;
 import org.jboss.reflect.plugins.MethodInfoImpl;
@@ -153,6 +154,7 @@
          infos[i] = new ReflectFieldInfoImpl(annotations, fields[i].getName(), getTypeInfo(fields[i].getType()), fields[i].getModifiers(), (ClassInfo) getTypeInfo(fields[i].getDeclaringClass()));
          infos[i].setField(fields[i]);
       }
+      
       return infos;
    }
 
@@ -237,6 +239,11 @@
    {
       if (name == null)
          throw new IllegalArgumentException("Null class name");
+
+      TypeInfo primitive = PrimitiveInfo.valueOf(name);
+      if (primitive != null)
+         return primitive;
+
       if (cl == null)
          cl = Thread.currentThread().getContextClassLoader();
 
@@ -254,7 +261,14 @@
       }
       else if (clazz.isEnum())
       {
-         result = new EnumInfoImpl(clazz.getName(), clazz.getModifiers());
+         EnumInfoImpl enumInfoImpl = new EnumInfoImpl(clazz.getName(), clazz.getModifiers()); 
+         result = enumInfoImpl; 
+         Field[] fields = clazz.getFields();
+         EnumConstantInfoImpl[] constants = new EnumConstantInfoImpl[fields.length];
+         int i = 0;
+         for (Field field : fields)
+            constants[i++] = new EnumConstantInfoImpl(field.getName(), enumInfoImpl);
+         enumInfoImpl.setEnumConstants(constants);
       }
       else if (clazz.isAnnotation())
       {

Modified: projects/microcontainer/trunk/container/src/main/org/jboss/reflect/plugins/javassist/JavassistAnnotatedParameterInfo.java
===================================================================
--- projects/microcontainer/trunk/container/src/main/org/jboss/reflect/plugins/javassist/JavassistAnnotatedParameterInfo.java	2006-11-30 02:40:11 UTC (rev 58765)
+++ projects/microcontainer/trunk/container/src/main/org/jboss/reflect/plugins/javassist/JavassistAnnotatedParameterInfo.java	2006-11-30 11:12:06 UTC (rev 58766)
@@ -54,13 +54,12 @@
       super(annotationHelper);
    }
 
-   
    protected void setupParameterAnnotations(Object[][] annotations)
    {
       for (int param = 0 ; param < annotations.length ; param++)
       {
          AnnotationValue[] annotationValues = new AnnotationValue[annotations[param].length];
-         for (int ann = 0 ; ann < annotations.length ; ann++)
+         for (int ann = 0 ; ann < annotationValues.length ; ann++)
          {
             Class clazz = ((Annotation)annotations[param][ann]).annotationType();
 

Modified: projects/microcontainer/trunk/container/src/main/org/jboss/reflect/plugins/javassist/JavassistArrayInfoImpl.java
===================================================================
--- projects/microcontainer/trunk/container/src/main/org/jboss/reflect/plugins/javassist/JavassistArrayInfoImpl.java	2006-11-30 02:40:11 UTC (rev 58765)
+++ projects/microcontainer/trunk/container/src/main/org/jboss/reflect/plugins/javassist/JavassistArrayInfoImpl.java	2006-11-30 11:12:06 UTC (rev 58766)
@@ -21,7 +21,11 @@
 */ 
 package org.jboss.reflect.plugins.javassist;
 
-import org.jboss.reflect.plugins.ArrayInfoImpl;
+import javassist.CtClass;
+
+import org.jboss.reflect.spi.AnnotatedInfo;
+import org.jboss.reflect.spi.AnnotationValue;
+import org.jboss.reflect.spi.ArrayInfo;
 import org.jboss.reflect.spi.TypeInfo;
 
 /**
@@ -30,25 +34,111 @@
  * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
  * @version $Revision$
  */
-public class JavassistArrayInfoImpl extends ArrayInfoImpl
+public class JavassistArrayInfoImpl extends JavassistTypeInfo implements ArrayInfo
 {
    /** The serialVersionUID */
    private static final long serialVersionUID = 9195834689976459024L;
+   
+   /** Unknown annotations */
+   static final AnnotationValue[] UNKNOWN_ANNOTATIONS = new AnnotationValue[0];
 
-   public JavassistArrayInfoImpl()
+   /** The component type */
+   protected TypeInfo componentType;
+   
+   /** The hash code */
+   protected int hash = -1;
+
+   private static String getName(TypeInfo componentType)
    {
-      super();
+      StringBuilder builder = new StringBuilder();
+      builder.append("[");
+      TypeInfo temp = componentType;
+      while (temp.isArray())
+      {
+         builder.append("[");
+         temp = ((JavassistArrayInfoImpl) temp).componentType;
+      }
+      builder.append("L").append(temp.getName()).append(";");
+      return builder.toString();
    }
+   
+   /**
+    * Create a new JavassistArrayInfoImpl.
+    * 
+    * @param factory the factory
+    * @param ctClass the ctClass
+    * @param clazz the class
+    */
+   JavassistArrayInfoImpl(JavassistTypeInfoFactoryImpl factory, CtClass ctClass, Class<? extends Object> clazz, TypeInfo componentType)
+   {
+      super(factory, getName(componentType), ctClass, clazz);
+      this.componentType = componentType;
+      calculateHash();
+   }
 
-   public JavassistArrayInfoImpl(TypeInfo componentType)
+   public TypeInfo getComponentType()
    {
-      super(componentType);
+      return componentType;
    }
+   
+   public AnnotationValue getAnnotation(String name)
+   {
+      if (componentType instanceof AnnotatedInfo)
+      {
+         return ((AnnotatedInfo)componentType).getAnnotation(name);
+      }
+      else
+      {
+         return null;
+      }
+   }
 
-   public boolean isArray()
+   public AnnotationValue[] getAnnotations()
    {
+      if (componentType instanceof AnnotatedInfo)
+      {
+         return ((AnnotatedInfo)componentType).getAnnotations();
+      }
+      else
+      {
+         return UNKNOWN_ANNOTATIONS;
+      }
+   }
+
+   public boolean isAnnotationPresent(String name)
+   {
+      if (componentType instanceof AnnotatedInfo)
+      {
+         return ((AnnotatedInfo)componentType).isAnnotationPresent(name);
+      }
+      else
+      {
+         return false;
+      }
+   }
+
+   public boolean equals(Object o)
+   {
+      if (this == o) return true;
+      if (!(o instanceof ArrayInfo)) return false;
+      if (!super.equals(o)) return false;
+
+      final ArrayInfo arrayInfo = (ArrayInfo) o;
+
+      if (!componentType.equals(arrayInfo.getComponentType())) return false;
+
       return true;
    }
 
+   public int hashCode() { return hash; }
 
+   /**
+    * Calculate the hash code
+    */
+   protected void calculateHash()
+   {
+      int result = super.hashCode();
+      result = 29 * result + componentType.hashCode();
+      hash = result;
+   }
 }

Modified: projects/microcontainer/trunk/container/src/main/org/jboss/reflect/plugins/javassist/JavassistEnumInfo.java
===================================================================
--- projects/microcontainer/trunk/container/src/main/org/jboss/reflect/plugins/javassist/JavassistEnumInfo.java	2006-11-30 02:40:11 UTC (rev 58765)
+++ projects/microcontainer/trunk/container/src/main/org/jboss/reflect/plugins/javassist/JavassistEnumInfo.java	2006-11-30 11:12:06 UTC (rev 58766)
@@ -58,6 +58,7 @@
    {
       for (int i = 0; i < enumConstants.length; i++)
          constants.put(enumConstants[i].getName(), enumConstants[i]);
+      this.enumConstants = enumConstants;
    }
 
    public EnumConstantInfo[] getEnumConstants()
@@ -73,10 +74,11 @@
    public boolean equals(Object o)
    {
       if (this == o) return true;
-      if (!(o instanceof JavassistEnumInfo)) return false;
+      if (o == null || !(o instanceof EnumInfo)) return false;
+      if (!super.equals(o)) return false;
+      
+      final EnumInfo enumInfo = (EnumInfo) o;
 
-      final JavassistEnumInfo enumInfo = (JavassistEnumInfo) o;
-
       if (!getName().equals(enumInfo.getName())) return false;
 
       return true;

Modified: projects/microcontainer/trunk/container/src/main/org/jboss/reflect/plugins/javassist/JavassistTypeInfo.java
===================================================================
--- projects/microcontainer/trunk/container/src/main/org/jboss/reflect/plugins/javassist/JavassistTypeInfo.java	2006-11-30 02:40:11 UTC (rev 58765)
+++ projects/microcontainer/trunk/container/src/main/org/jboss/reflect/plugins/javassist/JavassistTypeInfo.java	2006-11-30 11:12:06 UTC (rev 58766)
@@ -25,6 +25,7 @@
 import java.lang.reflect.Modifier;
 import java.util.Collection;
 import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
 
 import javassist.CtClass;
 import javassist.CtConstructor;
@@ -40,7 +41,6 @@
 import org.jboss.reflect.spi.InterfaceInfo;
 import org.jboss.reflect.spi.MethodInfo;
 import org.jboss.reflect.spi.TypeInfo;
-import org.jboss.util.collection.CollectionsFactory;
 import org.jboss.util.JBossStringBuilder;
 
 /**
@@ -51,26 +51,32 @@
  */
 public class JavassistTypeInfo extends JavassistInheritableAnnotationHolder implements ClassInfo, InterfaceInfo
 {
+   /** The serialVersionUID */
+   private static final long serialVersionUID = -5072033691434335775L;
+
    /** The factory */
    private JavassistTypeInfoFactoryImpl factory;
 
+   /** The name */
+   private String name;
+   
    /** The class */
    private Class<? extends Object> clazz;
 
    /** The constructors */
-   private Map<SignatureKey, JavassistConstructorInfo> constructors = CollectionsFactory.createLazyMap();
+   private Map<SignatureKey, JavassistConstructorInfo> constructors = new ConcurrentHashMap<SignatureKey, JavassistConstructorInfo>();
 
    /** The constructors */
    private ConstructorInfo[] constructorArray;
 
    /** The fields */
-   private Map<String, JavassistFieldInfo> fields = CollectionsFactory.createLazyMap();
+   private Map<String, JavassistFieldInfo> fields = new ConcurrentHashMap<String, JavassistFieldInfo>();
 
    /** The fields */
    private FieldInfo[] fieldArray;
 
    /** The methods */
-   private Map<SignatureKey, JavassistMethodInfo> methods = CollectionsFactory.createLazyMap();
+   private Map<SignatureKey, JavassistMethodInfo> methods = new ConcurrentHashMap<SignatureKey, JavassistMethodInfo>();
 
    /** The methods */
    private MethodInfo[] methodArray;
@@ -84,14 +90,28 @@
     */
    JavassistTypeInfo(JavassistTypeInfoFactoryImpl factory, CtClass ctClass, Class<? extends Object> clazz)
    {
+      this(factory, ctClass.getName(), ctClass, clazz);
+   }
+
+   /**
+    * Create a new JavassistTypeInfo.
+    * 
+    * @param factory the factory
+    * @param ctClass the ctClass
+    * @param clazz the class
+    * @param name the name
+    */
+   JavassistTypeInfo(JavassistTypeInfoFactoryImpl factory, String name, CtClass ctClass, Class<? extends Object> clazz)
+   {
       super(ctClass, factory);
       this.factory = factory;
       this.clazz = clazz;
+      this.name = name;
    }
 
    public String getName()
    {
-      return ctClass.getName();
+      return name;
    }
 
    public boolean isInterface()
@@ -121,6 +141,8 @@
 
    public ClassInfo getSuperclass()
    {
+      if (isInterface())
+         return null;
       try
       {
          CtClass superclass = ctClass.getSuperclass();
@@ -173,6 +195,20 @@
       return constructorArray;
    }
 
+   public ConstructorInfo getDeclaredConstructor(TypeInfo[] parameters)
+   {
+      SignatureKey key = new SignatureKey(null, parameters);
+      synchronized (constructors)
+      {
+         ConstructorInfo constructor = constructors.get(key);
+         if (constructor != null)
+            return constructor;
+      }
+      if (constructorArray != null)
+         return null;
+      return generateConstructorInfo(key);
+   }
+
    public FieldInfo getDeclaredField(String name)
    {
       synchronized (fields)
@@ -257,6 +293,16 @@
       return getType().isArray();
    }
 
+   public boolean isEnum()
+   {
+      return getType().isEnum();
+   }
+
+   public boolean isPrimitive()
+   {
+      return getType().isPrimitive();
+   }
+
    /**
     * Get an array class
     * 
@@ -355,6 +401,26 @@
    }
 
    /**
+    * Generate constructor info
+    * 
+    * @param key the key
+    * @return the constructor info
+    */
+   protected ConstructorInfo generateConstructorInfo(SignatureKey key)
+   {
+      CtClass[] params = getParameterTypes(key);
+      try
+      {
+         CtConstructor ctConstructor = ctClass.getDeclaredConstructor(params);
+         return generateConstructorInfo(ctConstructor);
+      }
+      catch (NotFoundException e)
+      {
+         throw JavassistTypeInfoFactoryImpl.raiseMethodNotFound("for constructor " + getName(), e);
+      }
+   }
+
+   /**
     * Generate field info
     * 
     * @param field the field

Modified: projects/microcontainer/trunk/container/src/main/org/jboss/reflect/plugins/javassist/JavassistTypeInfoFactoryImpl.java
===================================================================
--- projects/microcontainer/trunk/container/src/main/org/jboss/reflect/plugins/javassist/JavassistTypeInfoFactoryImpl.java	2006-11-30 02:40:11 UTC (rev 58765)
+++ projects/microcontainer/trunk/container/src/main/org/jboss/reflect/plugins/javassist/JavassistTypeInfoFactoryImpl.java	2006-11-30 11:12:06 UTC (rev 58766)
@@ -25,6 +25,7 @@
 
 import javassist.ClassPool;
 import javassist.CtClass;
+import javassist.CtField;
 import javassist.CtMember;
 import javassist.CtMethod;
 import javassist.CtPrimitiveType;
@@ -34,6 +35,7 @@
 import org.jboss.reflect.plugins.AnnotationHelper;
 import org.jboss.reflect.plugins.AnnotationValueFactory;
 import org.jboss.reflect.plugins.AnnotationValueImpl;
+import org.jboss.reflect.plugins.EnumConstantInfoImpl;
 import org.jboss.reflect.spi.AnnotationInfo;
 import org.jboss.reflect.spi.AnnotationValue;
 import org.jboss.reflect.spi.PrimitiveInfo;
@@ -125,7 +127,7 @@
          if (clazz.isArray())
          {
             TypeInfo componentType = getTypeInfo(clazz.getComponentType());
-            return new JavassistArrayInfoImpl(componentType);
+            return new JavassistArrayInfoImpl(this, ctClass, clazz, componentType);
          }
 
          if (ctClass.isAnnotation())
@@ -143,7 +145,14 @@
          }
          else if (ctClass.isEnum())
          {
-            return new JavassistEnumInfo(this, ctClass, clazz);
+            JavassistEnumInfo enumInfo = new JavassistEnumInfo(this, ctClass, clazz);
+            CtField[] fields = ctClass.getFields();
+            EnumConstantInfoImpl[] constants = new EnumConstantInfoImpl[fields.length];
+            int i = 0;
+            for (CtField field : fields)
+               constants[i++] = new EnumConstantInfoImpl(field.getName(), enumInfo);
+            enumInfo.setEnumConstants(constants);
+            return enumInfo;
          }
 
          

Modified: projects/microcontainer/trunk/container/src/main/org/jboss/reflect/plugins/javassist/SignatureKey.java
===================================================================
--- projects/microcontainer/trunk/container/src/main/org/jboss/reflect/plugins/javassist/SignatureKey.java	2006-11-30 02:40:11 UTC (rev 58765)
+++ projects/microcontainer/trunk/container/src/main/org/jboss/reflect/plugins/javassist/SignatureKey.java	2006-11-30 11:12:06 UTC (rev 58766)
@@ -21,6 +21,8 @@
 */
 package org.jboss.reflect.plugins.javassist;
 
+import java.util.Arrays;
+
 import org.jboss.reflect.spi.TypeInfo;
 import org.jboss.util.JBossStringBuilder;
 
@@ -68,7 +70,8 @@
    public SignatureKey(String name, String[] params)
    {
       this.name = name;
-      this.params = params;
+      if (params != null && params.length > 0)
+         this.params = params;
    }
    
    public boolean equals(Object obj)
@@ -121,4 +124,11 @@
       }
       return cachedHashCode;
    }
+   
+   public String toString()
+   {
+      if (params == null)
+         return name + "[]";
+      return name + Arrays.asList(params);
+   }
 }

Modified: projects/microcontainer/trunk/container/src/main/org/jboss/reflect/spi/AnnotationValue.java
===================================================================
--- projects/microcontainer/trunk/container/src/main/org/jboss/reflect/spi/AnnotationValue.java	2006-11-30 02:40:11 UTC (rev 58765)
+++ projects/microcontainer/trunk/container/src/main/org/jboss/reflect/spi/AnnotationValue.java	2006-11-30 11:12:06 UTC (rev 58766)
@@ -21,7 +21,9 @@
 */
 package org.jboss.reflect.spi;
 
+import java.util.Map;
 
+
 /**
  * An annotation value
  *
@@ -44,4 +46,11 @@
     * @return the value
     */
    Value getValue(String attributeName);
+   
+   /**
+    * Get the values
+    * 
+    * @return the values
+    */
+   Map<String, Value> getValues();
 }

Modified: projects/microcontainer/trunk/container/src/main/org/jboss/reflect/spi/ClassInfo.java
===================================================================
--- projects/microcontainer/trunk/container/src/main/org/jboss/reflect/spi/ClassInfo.java	2006-11-30 02:40:11 UTC (rev 58765)
+++ projects/microcontainer/trunk/container/src/main/org/jboss/reflect/spi/ClassInfo.java	2006-11-30 11:12:06 UTC (rev 58766)
@@ -89,6 +89,14 @@
    ConstructorInfo[] getDeclaredConstructors();
 
    /**
+    * Get a declared constructor
+    * 
+    * @param parameters the parameters
+    * @return the constructor
+    */
+   ConstructorInfo getDeclaredConstructor(TypeInfo[] parameters);
+
+   /**
     * Get the super class
     * 
     * @return the super class

Modified: projects/microcontainer/trunk/container/src/main/org/jboss/reflect/spi/ConstructorInfo.java
===================================================================
--- projects/microcontainer/trunk/container/src/main/org/jboss/reflect/spi/ConstructorInfo.java	2006-11-30 02:40:11 UTC (rev 58765)
+++ projects/microcontainer/trunk/container/src/main/org/jboss/reflect/spi/ConstructorInfo.java	2006-11-30 11:12:06 UTC (rev 58766)
@@ -30,13 +30,6 @@
 public interface ConstructorInfo extends AnnotatedInfo, MemberInfo
 {
    /**
-    * Get the declaring class
-    * 
-    * @return the class
-    */
-   ClassInfo getDeclaringClass();
-
-   /**
     * Get the parameter types
     * 
     * @return the parameters types

Modified: projects/microcontainer/trunk/container/src/main/org/jboss/reflect/spi/FieldInfo.java
===================================================================
--- projects/microcontainer/trunk/container/src/main/org/jboss/reflect/spi/FieldInfo.java	2006-11-30 02:40:11 UTC (rev 58765)
+++ projects/microcontainer/trunk/container/src/main/org/jboss/reflect/spi/FieldInfo.java	2006-11-30 11:12:06 UTC (rev 58766)
@@ -42,13 +42,6 @@
     * @return the field type
     */
    TypeInfo getType();
-
-   /**
-    * Get the declaring class
-    * 
-    * @return the declaring class
-    */
-   ClassInfo getDeclaringClass();
    
    /**
     * Get the value of the field

Modified: projects/microcontainer/trunk/container/src/main/org/jboss/reflect/spi/MethodInfo.java
===================================================================
--- projects/microcontainer/trunk/container/src/main/org/jboss/reflect/spi/MethodInfo.java	2006-11-30 02:40:11 UTC (rev 58765)
+++ projects/microcontainer/trunk/container/src/main/org/jboss/reflect/spi/MethodInfo.java	2006-11-30 11:12:06 UTC (rev 58766)
@@ -44,13 +44,6 @@
     * @return the method name
     */
    String getName();
-   
-   /**
-    * Get the declaring class
-    * 
-    * @return the declaring class
-    */
-   ClassInfo getDeclaringClass();
 
    /**
     * Get the parameter types

Modified: projects/microcontainer/trunk/container/src/main/org/jboss/reflect/spi/PrimitiveInfo.java
===================================================================
--- projects/microcontainer/trunk/container/src/main/org/jboss/reflect/spi/PrimitiveInfo.java	2006-11-30 02:40:11 UTC (rev 58765)
+++ projects/microcontainer/trunk/container/src/main/org/jboss/reflect/spi/PrimitiveInfo.java	2006-11-30 11:12:06 UTC (rev 58766)
@@ -84,7 +84,7 @@
    protected final transient Class<? extends Object> type;
 
    /** The primitives */
-   private static HashMap<String, PrimitiveInfo> map = new HashMap<String, PrimitiveInfo>();
+   private static final HashMap<String, PrimitiveInfo> map = new HashMap<String, PrimitiveInfo>();
 
    static
    {
@@ -139,7 +139,7 @@
       return name;
    }
    
-   public Class getType()
+   public Class<?> getType()
    {
       return type;
    }
@@ -154,6 +154,16 @@
       return false;
    }
 
+   public boolean isEnum()
+   {
+      return false;
+   }
+
+   public boolean isPrimitive()
+   {
+      return true;
+   }
+
    public TypeInfo getArrayType(int depth)
    {
       Class arrayClass = ClassInfoImpl.getArrayClass(getType(), depth);

Modified: projects/microcontainer/trunk/container/src/main/org/jboss/reflect/spi/TypeInfo.java
===================================================================
--- projects/microcontainer/trunk/container/src/main/org/jboss/reflect/spi/TypeInfo.java	2006-11-30 02:40:11 UTC (rev 58765)
+++ projects/microcontainer/trunk/container/src/main/org/jboss/reflect/spi/TypeInfo.java	2006-11-30 11:12:06 UTC (rev 58766)
@@ -21,13 +21,15 @@
 */
 package org.jboss.reflect.spi;
 
+import java.io.Serializable;
+
 /**
  * A type info
  *
  * @author <a href="mailto:bill at jboss.org">Bill Burke</a>
  * @author <a href="mailto:adrian at jboss.org">Adrian Brock</a>
  */
-public interface TypeInfo
+public interface TypeInfo extends Serializable
 {
    /**
     * Get the type name
@@ -61,6 +63,20 @@
    boolean isArray();
    
    /**
+    * Whether this type is an enum
+    * 
+    * @return true when an enum
+    */
+   boolean isEnum();
+   
+   /**
+    * Whether this type is a primitive
+    * 
+    * @return true when a primtive
+    */
+   boolean isPrimitive();
+   
+   /**
     * Whether this type is an array
     * 
     * @param depth the array depth

Modified: projects/microcontainer/trunk/container/src/main/org/jboss/repository/plugins/AbstractKernelRepository.java
===================================================================
--- projects/microcontainer/trunk/container/src/main/org/jboss/repository/plugins/AbstractKernelRepository.java	2006-11-30 02:40:11 UTC (rev 58765)
+++ projects/microcontainer/trunk/container/src/main/org/jboss/repository/plugins/AbstractKernelRepository.java	2006-11-30 11:12:06 UTC (rev 58766)
@@ -41,13 +41,13 @@
 public class AbstractKernelRepository
    implements KernelRepository
 {
-   private Map repository = new HashMap(103);
-   private Map domainMap = new HashMap(103);
-   private Map clusterMap = new HashMap(103);
-   private Map serverMap = new HashMap(103);
-   private Map appMap = new HashMap(103);
-   private Map deployMap = new HashMap(103);
-   private Map sessionMap = new HashMap(103);
+   private Map<Key, MetaData> repository = new HashMap<Key, MetaData>(103);
+   private Map<Key, MetaData> domainMap = new HashMap<Key, MetaData>(103);
+   private Map<Key, MetaData> clusterMap = new HashMap<Key, MetaData>(103);
+   private Map<Key, MetaData> serverMap = new HashMap<Key, MetaData>(103);
+   private Map<Key, MetaData> appMap = new HashMap<Key, MetaData>(103);
+   private Map<Key, MetaData> deployMap = new HashMap<Key, MetaData>(103);
+   private Map<Key, MetaData> sessionMap = new HashMap<Key, MetaData>(103);
    private Map maps[] = {
       domainMap,
       clusterMap,
@@ -83,7 +83,7 @@
    {
       // Should the loader be used here?
       Map attributes = key.getAttributes();
-      HashMap tmp = new HashMap();
+      HashMap<String, String> tmp = new HashMap<String, String>();
       MetaData[] levelData = new MetaData[CommonNames.N_LEVELS];
       int level = key.getLevel();
       for(int n = 0; n <= level; n ++)
@@ -105,9 +105,9 @@
     */
    public Map getAllMetaData(Key key)
    {
-       HashMap levelData = new HashMap();
+       HashMap<Key, MetaData> levelData = new HashMap<Key, MetaData>();
        Map attributes = key.getAttributes();
-       HashMap tmp = new HashMap();
+       HashMap<String, String> tmp = new HashMap<String, String>();
        int level = key.getLevel();
        for(int n = 0; n <= level; n ++)
        {
@@ -123,9 +123,10 @@
        return levelData;
    }
 
+   @SuppressWarnings("unchecked")
    public synchronized MetaData addMetaData(Key key, MetaData data)
    {
-      MetaData prev = (MetaData) repository.put(key, data);
+      MetaData prev = repository.put(key, data);
       // Add 
       int level = key.getLevel();
       maps[level].put(key, data);
@@ -139,6 +140,7 @@
       return prev;
    }
 
+   @SuppressWarnings("unchecked")
    public void loadMetaData(MetaDataLoader loader)
    {
       Iterator keys = loader.getKeys();

Modified: projects/microcontainer/trunk/container/src/main/org/jboss/repository/plugins/KeyMetaDataCombiner.java
===================================================================
--- projects/microcontainer/trunk/container/src/main/org/jboss/repository/plugins/KeyMetaDataCombiner.java	2006-11-30 02:40:11 UTC (rev 58765)
+++ projects/microcontainer/trunk/container/src/main/org/jboss/repository/plugins/KeyMetaDataCombiner.java	2006-11-30 11:12:06 UTC (rev 58766)
@@ -53,10 +53,11 @@
    }
 
    /**
-    Go through the 
-    @param attributeLevels
-    @param data
-    @return
+    * Go through the
+    *  
+    * @param key the key
+    * @param levelData the data
+    * @return the combination
     */
    public Object combine(Key key, MetaData[] levelData)
    {

Modified: projects/microcontainer/trunk/container/src/main/org/jboss/repository/plugins/ThreadMetaDataCombiner.java
===================================================================
--- projects/microcontainer/trunk/container/src/main/org/jboss/repository/plugins/ThreadMetaDataCombiner.java	2006-11-30 02:40:11 UTC (rev 58765)
+++ projects/microcontainer/trunk/container/src/main/org/jboss/repository/plugins/ThreadMetaDataCombiner.java	2006-11-30 11:12:06 UTC (rev 58766)
@@ -32,7 +32,7 @@
 public class ThreadMetaDataCombiner
    implements MetaDataCombiner
 {
-   private static ThreadLocal metaData = new ThreadLocal();
+   private static ThreadLocal<Object> metaData = new ThreadLocal<Object>();
 
    private MetaDataCombiner next;
 

Modified: projects/microcontainer/trunk/container/src/main/org/jboss/repository/plugins/basic/BasicAttributeComparator.java
===================================================================
--- projects/microcontainer/trunk/container/src/main/org/jboss/repository/plugins/basic/BasicAttributeComparator.java	2006-11-30 02:40:11 UTC (rev 58765)
+++ projects/microcontainer/trunk/container/src/main/org/jboss/repository/plugins/basic/BasicAttributeComparator.java	2006-11-30 11:12:06 UTC (rev 58766)
@@ -51,7 +51,7 @@
       CommonNames.CLUSTER,
       CommonNames.DOMAIN
    };
-   private static HashMap BASIC_ORDER_INDEXES = new HashMap();
+   private static HashMap<String, Integer> BASIC_ORDER_INDEXES = new HashMap<String, Integer>();
    static
    {
       for(int n = 0; n < BASIC_ORDERING.length; n ++)
@@ -62,8 +62,8 @@
    {
       String name1 = (String) obj1;
       String name2 = (String) obj2;
-      Integer index1 = (Integer) BASIC_ORDER_INDEXES.get(name1);
-      Integer index2 = (Integer) BASIC_ORDER_INDEXES.get(name2);
+      Integer index1 = BASIC_ORDER_INDEXES.get(name1);
+      Integer index2 = BASIC_ORDER_INDEXES.get(name2);
       int compare = 0;
       if( index1 != null )
       {

Modified: projects/microcontainer/trunk/container/src/main/org/jboss/repository/spi/KernelRepository.java
===================================================================
--- projects/microcontainer/trunk/container/src/main/org/jboss/repository/spi/KernelRepository.java	2006-11-30 02:40:11 UTC (rev 58765)
+++ projects/microcontainer/trunk/container/src/main/org/jboss/repository/spi/KernelRepository.java	2006-11-30 11:12:06 UTC (rev 58766)
@@ -42,8 +42,9 @@
    public Map getAllMetaData(Key key);
 
    /**
-    @param key
-    @param data
+    * @param key the key
+    * @param data thje data
+    * @return the meta data
     */
    public MetaData addMetaData(Key key, MetaData data);
 

Modified: projects/microcontainer/trunk/container/src/main/org/jboss/repository/spi/Key.java
===================================================================
--- projects/microcontainer/trunk/container/src/main/org/jboss/repository/spi/Key.java	2006-11-30 02:40:11 UTC (rev 58765)
+++ projects/microcontainer/trunk/container/src/main/org/jboss/repository/spi/Key.java	2006-11-30 11:12:06 UTC (rev 58766)
@@ -41,7 +41,7 @@
 public class Key implements Comparable
 {
    private String[] name;
-   private Map attributes;
+   private Map<String, String> attributes;
    private int level;
 
    public Key(String nameExpr)
@@ -50,14 +50,14 @@
       parseName(nameExpr);
       defineLevel();
    }
-   public Key(String[] name, Map attributes)
+   public Key(String[] name, Map<String, String> attributes)
    {
       this.name = name;
       this.attributes = attributes;
       defineLevel();
    }
 
-   public Key(String name, Map attributes)
+   public Key(String name, Map<String, String> attributes)
    {
       this.name = new String[] {name};
       this.attributes = attributes;
@@ -101,21 +101,21 @@
       
       if( compare == 0 )
       {
-         Map keyAttrs = key.attributes;
+         Map<String, String> keyAttrs = key.attributes;
          if( attributes == null )
             compare = keyAttrs == null ? 0 : keyAttrs.size();
          else if( keyAttrs == null )
             compare = attributes == null ? 0 : attributes.size();
          else
          {
-            TreeSet set = new TreeSet(attributes.keySet());
+            TreeSet<String> set = new TreeSet<String>(attributes.keySet());
             set.addAll(keyAttrs.keySet());
             Iterator keys = set.iterator();
             while( keys.hasNext() && compare == 0 )
             {
                String key1 = (String) keys.next();
-               String value1 = (String) attributes.get(key1);
-               String value2 = (String) keyAttrs.get(key1);
+               String value1 = attributes.get(key1);
+               String value2 = keyAttrs.get(key1);
                
                if (value1 == null && value2 == null)
                   compare = 0;
@@ -183,7 +183,7 @@
             
             if (attributes == null)
             {
-               attributes = new HashMap();
+               attributes = new HashMap<String, String>();
             }
             attributes.put(key, value);
          }
@@ -192,13 +192,13 @@
    
    private void parseNamePart(String namePart)
    {
-      ArrayList names = new ArrayList();
+      ArrayList<String> names = new ArrayList<String>();
       StringTokenizer tokenizer = new StringTokenizer(namePart, ",");
       while (tokenizer.hasMoreTokens())
       {
          names.add(tokenizer.nextToken());
       }
-      name = (String[])names.toArray(new String[names.size()]);
+      name = names.toArray(new String[names.size()]);
    }
    
    public String toString()

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-30 02:40:11 UTC (rev 58765)
+++ projects/microcontainer/trunk/container/src/main/org/jboss/repository/spi/MetaDataContext.java	2006-11-30 11:12:06 UTC (rev 58766)
@@ -23,7 +23,6 @@
 
 import java.lang.annotation.Annotation;
 import java.util.List;
-import java.util.Set;
 
 import org.jboss.metadata.spi.repository.MetaDataRepository;
 

Modified: projects/microcontainer/trunk/container/src/main/org/jboss/repository/spi/MetaDataLoader.java
===================================================================
--- projects/microcontainer/trunk/container/src/main/org/jboss/repository/spi/MetaDataLoader.java	2006-11-30 02:40:11 UTC (rev 58765)
+++ projects/microcontainer/trunk/container/src/main/org/jboss/repository/spi/MetaDataLoader.java	2006-11-30 11:12:06 UTC (rev 58766)
@@ -37,8 +37,9 @@
    public Iterator getKeys();
 
    /**
-
-    @param key the key to load the metadata for
+    *
+    * @param key the key to load the metadata for
+    * @return the metadata
     */
    public MetaData load(Key key);
 }

Modified: projects/microcontainer/trunk/container/src/main/org/jboss/virtual/VFSUtils.java
===================================================================
--- projects/microcontainer/trunk/container/src/main/org/jboss/virtual/VFSUtils.java	2006-11-30 02:40:11 UTC (rev 58765)
+++ projects/microcontainer/trunk/container/src/main/org/jboss/virtual/VFSUtils.java	2006-11-30 11:12:06 UTC (rev 58766)
@@ -344,11 +344,11 @@
    /**
     * Deal with urls that may include spaces.
     * 
-    * @param url
-    * @return uri
+    * @param url the url
+    * @return uri the uri
+    * @throws URISyntaxException for any error
     */
-   public static URI toURI(URL url)
-      throws URISyntaxException
+   public static URI toURI(URL url) throws URISyntaxException
    {
       String urispec = url.toExternalForm();
       // Escape any spaces

Modified: projects/microcontainer/trunk/container/src/main/org/jboss/virtual/VisitorAttributes.java
===================================================================
--- projects/microcontainer/trunk/container/src/main/org/jboss/virtual/VisitorAttributes.java	2006-11-30 02:40:11 UTC (rev 58765)
+++ projects/microcontainer/trunk/container/src/main/org/jboss/virtual/VisitorAttributes.java	2006-11-30 11:12:06 UTC (rev 58766)
@@ -89,6 +89,7 @@
     * 
     * Default: false
     * 
+    * @param file the file
     * @return the recurse flag.
     */
    public boolean isRecurse(VirtualFile file)

Modified: projects/microcontainer/trunk/container/src/main/org/jboss/virtual/plugins/context/AbstractVFSContext.java
===================================================================
--- projects/microcontainer/trunk/container/src/main/org/jboss/virtual/plugins/context/AbstractVFSContext.java	2006-11-30 02:40:11 UTC (rev 58765)
+++ projects/microcontainer/trunk/container/src/main/org/jboss/virtual/plugins/context/AbstractVFSContext.java	2006-11-30 11:12:06 UTC (rev 58766)
@@ -145,6 +145,7 @@
     * @param leavesOnly whether to visit leaves only
     * @param ignoreErrors whether to ignore errors
     * @param includeHidden whether to include hidden files
+    * @param recurseFilter the recurse filter
     * @throws IOException for any problem accessing the virtual file system
     */
    protected void visit(VirtualFileHandler handler, VirtualFileHandlerVisitor visitor,

Modified: projects/microcontainer/trunk/container/src/main/org/jboss/virtual/plugins/context/file/FileHandler.java
===================================================================
--- projects/microcontainer/trunk/container/src/main/org/jboss/virtual/plugins/context/file/FileHandler.java	2006-11-30 02:40:11 UTC (rev 58765)
+++ projects/microcontainer/trunk/container/src/main/org/jboss/virtual/plugins/context/file/FileHandler.java	2006-11-30 11:12:06 UTC (rev 58766)
@@ -33,7 +33,6 @@
 
 import org.jboss.virtual.plugins.context.AbstractURLHandler;
 import org.jboss.virtual.plugins.context.StructuredVirtualFileHandler;
-import org.jboss.virtual.plugins.context.jar.JarUtils;
 import org.jboss.virtual.spi.VirtualFileHandler;
 
 /**

Modified: projects/microcontainer/trunk/container/src/main/org/jboss/virtual/plugins/context/jar/AbstractJarHandler.java
===================================================================
--- projects/microcontainer/trunk/container/src/main/org/jboss/virtual/plugins/context/jar/AbstractJarHandler.java	2006-11-30 02:40:11 UTC (rev 58765)
+++ projects/microcontainer/trunk/container/src/main/org/jboss/virtual/plugins/context/jar/AbstractJarHandler.java	2006-11-30 11:12:06 UTC (rev 58766)
@@ -332,6 +332,7 @@
     *
     * @param parent the parent
     * @param entry  the entry
+    * @param entryName the entry name
     * @return the handler
     * @throws IOException              for any error accessing the file system
     * @throws IllegalArgumentException for a null parent or entry

Modified: projects/microcontainer/trunk/container/src/main/org/jboss/virtual/plugins/context/jar/JarEntryHandler.java
===================================================================
--- projects/microcontainer/trunk/container/src/main/org/jboss/virtual/plugins/context/jar/JarEntryHandler.java	2006-11-30 02:40:11 UTC (rev 58765)
+++ projects/microcontainer/trunk/container/src/main/org/jboss/virtual/plugins/context/jar/JarEntryHandler.java	2006-11-30 11:12:06 UTC (rev 58766)
@@ -66,6 +66,7 @@
     * @param parent the parent
     * @param jar the jar file
     * @param entry the entry
+    * @param entryName the entry name
     * @param url the url
     * @throws IOException for an error accessing the file system
     * @throws IllegalArgumentException for a null context, url, jar or entry

Modified: projects/microcontainer/trunk/container/src/main/org/jboss/virtual/plugins/context/jar/JarHandler.java
===================================================================
--- projects/microcontainer/trunk/container/src/main/org/jboss/virtual/plugins/context/jar/JarHandler.java	2006-11-30 02:40:11 UTC (rev 58765)
+++ projects/microcontainer/trunk/container/src/main/org/jboss/virtual/plugins/context/jar/JarHandler.java	2006-11-30 11:12:06 UTC (rev 58766)
@@ -21,9 +21,8 @@
 */
 package org.jboss.virtual.plugins.context.jar;
 
-import java.io.IOException;
-import java.io.InputStream;
 import java.io.File;
+import java.io.IOException;
 import java.io.ObjectInputStream;
 import java.net.JarURLConnection;
 import java.net.URL;

Modified: projects/microcontainer/trunk/container/src/main/org/jboss/virtual/plugins/context/jar/NestedJarHandler.java
===================================================================
--- projects/microcontainer/trunk/container/src/main/org/jboss/virtual/plugins/context/jar/NestedJarHandler.java	2006-11-30 02:40:11 UTC (rev 58765)
+++ projects/microcontainer/trunk/container/src/main/org/jboss/virtual/plugins/context/jar/NestedJarHandler.java	2006-11-30 11:12:06 UTC (rev 58766)
@@ -27,8 +27,6 @@
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.ObjectInputStream;
-import java.net.MalformedURLException;
-import java.net.URISyntaxException;
 import java.net.URL;
 import java.util.jar.JarEntry;
 import java.util.jar.JarFile;
@@ -54,6 +52,7 @@
    /** The temporary file */
    private transient File temp;
 
+   /** TODO WHAT DOES THIS DO? It is unused */
    private transient URL original;
 
    /**
@@ -127,6 +126,9 @@
     * @param parent the parent
     * @param parentJar the parent jar file
     * @param entry the jar entry
+    * @param original the original url
+    * @param temp the temporary file
+    * @param entryName the entry name
     * @throws IOException for an error accessing the file system
     * @throws IllegalArgumentException for a null context, url or vfsPath
     */

Modified: projects/microcontainer/trunk/container/src/main/org/jboss/virtual/plugins/vfs/helpers/ExtensibleFilter.java
===================================================================
--- projects/microcontainer/trunk/container/src/main/org/jboss/virtual/plugins/vfs/helpers/ExtensibleFilter.java	2006-11-30 02:40:11 UTC (rev 58765)
+++ projects/microcontainer/trunk/container/src/main/org/jboss/virtual/plugins/vfs/helpers/ExtensibleFilter.java	2006-11-30 11:12:06 UTC (rev 58766)
@@ -95,6 +95,10 @@
     * Create using a custom set of matches, prefixes, and suffixes.  If any of
     * these arrays are null, then the corresponding default will be
     * substituted.
+    * 
+    * @param matches the matches
+    * @param prefixes the prefixes
+    * @param suffixes the suffixes
     */
    public ExtensibleFilter(String[] matches, String[] prefixes, String[] suffixes)
    {
@@ -220,7 +224,7 @@
       {
          // The < 0 index gives the first index greater than name
          int firstLessIndex = -2 - index;
-         String prefix = (String) prefixes.get(firstLessIndex);
+         String prefix = prefixes.get(firstLessIndex);
          // If name starts with an ingored prefix ignore name
          if( name.startsWith(prefix) )
             return false;
@@ -234,7 +238,7 @@
       {
          // The < 0 index gives the first index greater than name
          int firstLessIndex = -2 - index;
-         String suffix = (String) suffixes.get(firstLessIndex);
+         String suffix = suffixes.get(firstLessIndex);
          // If name ends with an ingored suffix ignore name
          if( name.endsWith(suffix) )
             return false;

Modified: projects/microcontainer/trunk/container/src/main/org/jboss/virtual/plugins/vfs/helpers/SuffixesExcludeFilter.java
===================================================================
--- projects/microcontainer/trunk/container/src/main/org/jboss/virtual/plugins/vfs/helpers/SuffixesExcludeFilter.java	2006-11-30 02:40:11 UTC (rev 58765)
+++ projects/microcontainer/trunk/container/src/main/org/jboss/virtual/plugins/vfs/helpers/SuffixesExcludeFilter.java	2006-11-30 11:12:06 UTC (rev 58766)
@@ -22,7 +22,6 @@
 package org.jboss.virtual.plugins.vfs.helpers;
 
 import java.util.Collection;
-import java.util.List;
 
 import org.jboss.virtual.VirtualFile;
 import org.jboss.virtual.VirtualFileFilter;

Modified: projects/microcontainer/trunk/container/src/tests/org/jboss/test/ContainerTest.java
===================================================================
--- projects/microcontainer/trunk/container/src/tests/org/jboss/test/ContainerTest.java	2006-11-30 02:40:11 UTC (rev 58765)
+++ projects/microcontainer/trunk/container/src/tests/org/jboss/test/ContainerTest.java	2006-11-30 11:12:06 UTC (rev 58766)
@@ -21,6 +21,8 @@
 */
 package org.jboss.test;
 
+import java.util.Arrays;
+
 /**
  * A ContainerTest.
  * 
@@ -40,6 +42,18 @@
    }
    
    /**
+    * Assert an array is empty or null
+    * 
+    * TODO Move this to the AbstractTestCase
+    * @param array the array
+    */
+   protected static void assertEmpty(Object[] array)
+   {
+      if (array != null)
+         assertEquals(Arrays.asList(array).toString(), 0, array.length);
+   }
+   
+   /**
     * Default setup with security manager enabled
     * 
     * @param clazz the class
@@ -49,7 +63,7 @@
    public static AbstractTestDelegate getDelegate(Class clazz) throws Exception
    {
       AbstractTestDelegate delegate = new AbstractTestDelegate(clazz);
-      delegate.enableSecurity = true;
+      //delegate.enableSecurity = true;
       return delegate;
    }
 }

Added: projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/support/ClassInfoAbstractMethodsClass.java
===================================================================
--- projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/support/ClassInfoAbstractMethodsClass.java	2006-11-30 02:40:11 UTC (rev 58765)
+++ projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/support/ClassInfoAbstractMethodsClass.java	2006-11-30 11:12:06 UTC (rev 58766)
@@ -0,0 +1,53 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2006, 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.
+*/
+package org.jboss.test.classinfo.support;
+
+/**
+ * ClassInfoAbstractMethodsClass
+ * 
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+public abstract class ClassInfoAbstractMethodsClass
+{
+   abstract void voidMethodVoidPackage();
+   abstract long longMethodVoidPackage();
+   abstract void voidMethodintPackage(int p1);
+   abstract long longMethodintPackage(int p1);
+   abstract void voidMethodintStringPackage(int p1, String p2);
+   abstract long longMethodintStringPackage(int p1, String p2);
+   abstract long longMethodintStringThrowsPackage(int p1, String p2) throws IllegalArgumentException, IllegalStateException;
+   protected abstract void voidMethodVoidProtected();
+   protected abstract long longMethodVoidProtected();
+   protected abstract void voidMethodintProtected(int p1);
+   protected abstract long longMethodintProtected(int p1);
+   protected abstract void voidMethodintStringProtected(int p1, String p2);
+   protected abstract long longMethodintStringProtected(int p1, String p2);
+   protected abstract long longMethodintStringThrowsProtected(int p1, String p2) throws IllegalArgumentException, IllegalStateException;
+   public abstract void voidMethodVoidPublic();
+   public abstract long longMethodVoidPublic();
+   public abstract void voidMethodintPublic(int p1);
+   public abstract long longMethodintPublic(int p1);
+   public abstract void voidMethodintStringPublic(int p1, String p2);
+   public abstract long longMethodintStringPublic(int p1, String p2);
+   public abstract long longMethodintStringThrowsPublic(int p1, String p2) throws IllegalArgumentException, IllegalStateException;
+}

Added: projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/support/ClassInfoAnnotation1.java
===================================================================
--- projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/support/ClassInfoAnnotation1.java	2006-11-30 02:40:11 UTC (rev 58765)
+++ projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/support/ClassInfoAnnotation1.java	2006-11-30 11:12:06 UTC (rev 58766)
@@ -0,0 +1,30 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2006, 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.
+*/
+package org.jboss.test.classinfo.support;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+
+ at Retention(RetentionPolicy.RUNTIME)
+public @interface ClassInfoAnnotation1
+{
+}

Added: projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/support/ClassInfoAnnotation2.java
===================================================================
--- projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/support/ClassInfoAnnotation2.java	2006-11-30 02:40:11 UTC (rev 58765)
+++ projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/support/ClassInfoAnnotation2.java	2006-11-30 11:12:06 UTC (rev 58766)
@@ -0,0 +1,30 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2006, 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.
+*/
+package org.jboss.test.classinfo.support;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+
+ at Retention(RetentionPolicy.RUNTIME)
+public @interface ClassInfoAnnotation2
+{
+}

Added: projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/support/ClassInfoAnnotationClass.java
===================================================================
--- projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/support/ClassInfoAnnotationClass.java	2006-11-30 02:40:11 UTC (rev 58765)
+++ projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/support/ClassInfoAnnotationClass.java	2006-11-30 11:12:06 UTC (rev 58766)
@@ -0,0 +1,34 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2006, 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.
+*/
+package org.jboss.test.classinfo.support;
+
+/**
+ * ClassInfoAnnotationClass
+ * 
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+ at ClassInfoAnnotation1
+ at ClassInfoAnnotation2
+public class ClassInfoAnnotationClass
+{
+}

Added: projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/support/ClassInfoAnnotationInterface.java
===================================================================
--- projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/support/ClassInfoAnnotationInterface.java	2006-11-30 02:40:11 UTC (rev 58765)
+++ projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/support/ClassInfoAnnotationInterface.java	2006-11-30 11:12:06 UTC (rev 58766)
@@ -0,0 +1,34 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2006, 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.
+*/
+package org.jboss.test.classinfo.support;
+
+/**
+ * ClassInfoAnnotationInterface
+ * 
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+ at ClassInfoAnnotation1
+ at ClassInfoAnnotation2
+public interface ClassInfoAnnotationInterface
+{
+}

Added: projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/support/ClassInfoConstructorAnnotationClass.java
===================================================================
--- projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/support/ClassInfoConstructorAnnotationClass.java	2006-11-30 02:40:11 UTC (rev 58765)
+++ projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/support/ClassInfoConstructorAnnotationClass.java	2006-11-30 11:12:06 UTC (rev 58766)
@@ -0,0 +1,35 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2006, 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.
+*/
+package org.jboss.test.classinfo.support;
+
+/**
+ * ClassInfoConstructorClass
+ * 
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+public class ClassInfoConstructorAnnotationClass
+{
+   @ClassInfoAnnotation1
+   @ClassInfoAnnotation2
+   public ClassInfoConstructorAnnotationClass(){ }
+}

Added: projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/support/ClassInfoConstructorClass.java
===================================================================
--- projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/support/ClassInfoConstructorClass.java	2006-11-30 02:40:11 UTC (rev 58765)
+++ projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/support/ClassInfoConstructorClass.java	2006-11-30 11:12:06 UTC (rev 58766)
@@ -0,0 +1,36 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2006, 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.
+*/
+package org.jboss.test.classinfo.support;
+
+/**
+ * ClassInfoConstructorClass
+ * 
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+public class ClassInfoConstructorClass
+{
+   private ClassInfoConstructorClass() {}
+   ClassInfoConstructorClass(int p1) {}
+   protected ClassInfoConstructorClass(int p1, String p2) {}
+   public ClassInfoConstructorClass(long p1, String p2) throws IllegalArgumentException, IllegalStateException { }
+}

Added: projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/support/ClassInfoConstructorParameterAnnotationClass.java
===================================================================
--- projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/support/ClassInfoConstructorParameterAnnotationClass.java	2006-11-30 02:40:11 UTC (rev 58765)
+++ projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/support/ClassInfoConstructorParameterAnnotationClass.java	2006-11-30 11:12:06 UTC (rev 58766)
@@ -0,0 +1,42 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2006, 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.
+*/
+package org.jboss.test.classinfo.support;
+
+/**
+ * ClassInfoConstructorAnnotationClass
+ * 
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+public class ClassInfoConstructorParameterAnnotationClass
+{
+   public ClassInfoConstructorParameterAnnotationClass(
+      int p1,
+      @ClassInfoAnnotation1 
+      int p2,
+      @ClassInfoAnnotation2 
+      int p3,
+      @ClassInfoAnnotation1 
+      @ClassInfoAnnotation2 
+      int p4
+      ) {} ;
+}

Added: projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/support/ClassInfoEmptyClass.java
===================================================================
--- projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/support/ClassInfoEmptyClass.java	2006-11-30 02:40:11 UTC (rev 58765)
+++ projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/support/ClassInfoEmptyClass.java	2006-11-30 11:12:06 UTC (rev 58766)
@@ -0,0 +1,32 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2006, 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.
+*/
+package org.jboss.test.classinfo.support;
+
+/**
+ * ClassInfoEmptyClass
+ * 
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+public class ClassInfoEmptyClass
+{
+}

Added: projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/support/ClassInfoEmptyInterface.java
===================================================================
--- projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/support/ClassInfoEmptyInterface.java	2006-11-30 02:40:11 UTC (rev 58765)
+++ projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/support/ClassInfoEmptyInterface.java	2006-11-30 11:12:06 UTC (rev 58766)
@@ -0,0 +1,32 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2006, 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.
+*/
+package org.jboss.test.classinfo.support;
+
+/**
+ * ClassInfoEmptyInterface
+ * 
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+public interface ClassInfoEmptyInterface
+{
+}

Added: projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/support/ClassInfoEnum.java
===================================================================
--- projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/support/ClassInfoEnum.java	2006-11-30 02:40:11 UTC (rev 58765)
+++ projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/support/ClassInfoEnum.java	2006-11-30 11:12:06 UTC (rev 58766)
@@ -0,0 +1,33 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2006, 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.
+*/
+package org.jboss.test.classinfo.support;
+
+/**
+ * ClassInfoEnum.
+ * 
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+public enum ClassInfoEnum
+{
+   ONE, TWO, THREE
+}

Added: projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/support/ClassInfoEnumAnnotation.java
===================================================================
--- projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/support/ClassInfoEnumAnnotation.java	2006-11-30 02:40:11 UTC (rev 58765)
+++ projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/support/ClassInfoEnumAnnotation.java	2006-11-30 11:12:06 UTC (rev 58766)
@@ -0,0 +1,35 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2006, 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.
+*/
+package org.jboss.test.classinfo.support;
+
+/**
+ * ClassInfoEnumAnnotation.
+ * 
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+ at ClassInfoAnnotation1
+ at ClassInfoAnnotation2
+public enum ClassInfoEnumAnnotation
+{
+   ONE, TWO, THREE
+}

Added: projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/support/ClassInfoEnumFieldAnnotation.java
===================================================================
--- projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/support/ClassInfoEnumFieldAnnotation.java	2006-11-30 02:40:11 UTC (rev 58765)
+++ projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/support/ClassInfoEnumFieldAnnotation.java	2006-11-30 11:12:06 UTC (rev 58766)
@@ -0,0 +1,36 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2006, 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.
+*/
+package org.jboss.test.classinfo.support;
+
+/**
+ * ClassInfoEnumFieldAnnotation.
+ * 
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+public enum ClassInfoEnumFieldAnnotation
+{
+   @ClassInfoAnnotation1
+   @ClassInfoAnnotation2
+   ONE,
+   TWO, THREE
+}

Added: projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/support/ClassInfoFieldAnnotationClass.java
===================================================================
--- projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/support/ClassInfoFieldAnnotationClass.java	2006-11-30 02:40:11 UTC (rev 58765)
+++ projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/support/ClassInfoFieldAnnotationClass.java	2006-11-30 11:12:06 UTC (rev 58766)
@@ -0,0 +1,35 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2006, 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.
+*/
+package org.jboss.test.classinfo.support;
+
+/**
+ * ClassInfoFieldAnnotationClass
+ * 
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+public class ClassInfoFieldAnnotationClass
+{
+   @ClassInfoAnnotation1
+   @ClassInfoAnnotation2
+   public int field;
+}

Added: projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/support/ClassInfoFieldAnnotationInterface.java
===================================================================
--- projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/support/ClassInfoFieldAnnotationInterface.java	2006-11-30 02:40:11 UTC (rev 58765)
+++ projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/support/ClassInfoFieldAnnotationInterface.java	2006-11-30 11:12:06 UTC (rev 58766)
@@ -0,0 +1,35 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2006, 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.
+*/
+package org.jboss.test.classinfo.support;
+
+/**
+ * ClassInfoFieldAnnotationInterface
+ * 
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+public interface ClassInfoFieldAnnotationInterface
+{
+   @ClassInfoAnnotation1
+   @ClassInfoAnnotation2
+   int field = 1;
+}

Added: projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/support/ClassInfoFieldsClass.java
===================================================================
--- projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/support/ClassInfoFieldsClass.java	2006-11-30 02:40:11 UTC (rev 58765)
+++ projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/support/ClassInfoFieldsClass.java	2006-11-30 11:12:06 UTC (rev 58766)
@@ -0,0 +1,44 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2006, 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.
+*/
+package org.jboss.test.classinfo.support;
+
+/**
+ * ClassInfoFieldsClass
+ * 
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+public class ClassInfoFieldsClass
+{
+   private int fieldPrivate;
+   private static int fieldPrivateStatic;
+   private static final int fieldPrivateStaticFinal = 1;
+   int fieldPackage = fieldPrivate;
+   static int fieldPackageStatic = fieldPrivateStatic;
+   static final int fieldPackageStaticFinal = fieldPrivateStaticFinal;
+   protected int fieldProtected;
+   protected static int fieldProtectedStatic;
+   protected static final int fieldProtectedStaticFinal = 1;
+   public int fieldPublic;
+   public static int fieldPublicStatic;
+   public static final int fieldPublicStaticFinal = 1;
+}

Added: projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/support/ClassInfoFieldsInterface.java
===================================================================
--- projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/support/ClassInfoFieldsInterface.java	2006-11-30 02:40:11 UTC (rev 58765)
+++ projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/support/ClassInfoFieldsInterface.java	2006-11-30 11:12:06 UTC (rev 58766)
@@ -0,0 +1,35 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2006, 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.
+*/
+package org.jboss.test.classinfo.support;
+
+/**
+ * ClassInfoFieldsInterface
+ * 
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+public interface ClassInfoFieldsInterface
+{
+   int field1 = 1;
+   
+   String field2 = "hello";
+}

Added: projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/support/ClassInfoInterfacesClass.java
===================================================================
--- projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/support/ClassInfoInterfacesClass.java	2006-11-30 02:40:11 UTC (rev 58765)
+++ projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/support/ClassInfoInterfacesClass.java	2006-11-30 11:12:06 UTC (rev 58766)
@@ -0,0 +1,32 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2006, 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.
+*/
+package org.jboss.test.classinfo.support;
+
+/**
+ * ClassInfoInterfacesClass
+ * 
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+public class ClassInfoInterfacesClass implements ClassInfoInterfacesInterface1, ClassInfoInterfacesInterface2
+{
+}

Added: projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/support/ClassInfoInterfacesInterface.java
===================================================================
--- projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/support/ClassInfoInterfacesInterface.java	2006-11-30 02:40:11 UTC (rev 58765)
+++ projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/support/ClassInfoInterfacesInterface.java	2006-11-30 11:12:06 UTC (rev 58766)
@@ -0,0 +1,32 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2006, 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.
+*/
+package org.jboss.test.classinfo.support;
+
+/**
+ * ClassInfoInterfacesInterface
+ * 
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+public interface ClassInfoInterfacesInterface extends ClassInfoInterfacesInterface1, ClassInfoInterfacesInterface2
+{
+}

Added: projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/support/ClassInfoInterfacesInterface1.java
===================================================================
--- projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/support/ClassInfoInterfacesInterface1.java	2006-11-30 02:40:11 UTC (rev 58765)
+++ projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/support/ClassInfoInterfacesInterface1.java	2006-11-30 11:12:06 UTC (rev 58766)
@@ -0,0 +1,32 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2006, 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.
+*/
+package org.jboss.test.classinfo.support;
+
+/**
+ * ClassInfoInterfacesInterface1
+ * 
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+public interface ClassInfoInterfacesInterface1
+{
+}

Added: projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/support/ClassInfoInterfacesInterface2.java
===================================================================
--- projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/support/ClassInfoInterfacesInterface2.java	2006-11-30 02:40:11 UTC (rev 58765)
+++ projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/support/ClassInfoInterfacesInterface2.java	2006-11-30 11:12:06 UTC (rev 58766)
@@ -0,0 +1,32 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2006, 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.
+*/
+package org.jboss.test.classinfo.support;
+
+/**
+ * ClassInfoInterfacesInterface2
+ * 
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+public interface ClassInfoInterfacesInterface2
+{
+}

Added: projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/support/ClassInfoMethodAnnotationClass.java
===================================================================
--- projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/support/ClassInfoMethodAnnotationClass.java	2006-11-30 02:40:11 UTC (rev 58765)
+++ projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/support/ClassInfoMethodAnnotationClass.java	2006-11-30 11:12:06 UTC (rev 58766)
@@ -0,0 +1,35 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2006, 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.
+*/
+package org.jboss.test.classinfo.support;
+
+/**
+ * ClassInfoMethodAnnotationClass
+ * 
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+public class ClassInfoMethodAnnotationClass
+{
+   @ClassInfoAnnotation1
+   @ClassInfoAnnotation2
+   public void method() {}
+}

Added: projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/support/ClassInfoMethodAnnotationInterface.java
===================================================================
--- projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/support/ClassInfoMethodAnnotationInterface.java	2006-11-30 02:40:11 UTC (rev 58765)
+++ projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/support/ClassInfoMethodAnnotationInterface.java	2006-11-30 11:12:06 UTC (rev 58766)
@@ -0,0 +1,35 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2006, 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.
+*/
+package org.jboss.test.classinfo.support;
+
+/**
+ * ClassInfoMethodAnnotationInterface
+ * 
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+public interface ClassInfoMethodAnnotationInterface
+{
+   @ClassInfoAnnotation1
+   @ClassInfoAnnotation2
+   void method();
+}

Added: projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/support/ClassInfoMethodParameterAnnotationClass.java
===================================================================
--- projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/support/ClassInfoMethodParameterAnnotationClass.java	2006-11-30 02:40:11 UTC (rev 58765)
+++ projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/support/ClassInfoMethodParameterAnnotationClass.java	2006-11-30 11:12:06 UTC (rev 58766)
@@ -0,0 +1,42 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2006, 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.
+*/
+package org.jboss.test.classinfo.support;
+
+/**
+ * ClassInfoMethodAnnotationClass
+ * 
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+public class ClassInfoMethodParameterAnnotationClass
+{
+   public void method(
+      int p1,
+      @ClassInfoAnnotation1 
+      int p2,
+      @ClassInfoAnnotation2 
+      int p3,
+      @ClassInfoAnnotation1 
+      @ClassInfoAnnotation2 
+      int p4
+      ) {} ;
+}

Added: projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/support/ClassInfoMethodParameterAnnotationInterface.java
===================================================================
--- projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/support/ClassInfoMethodParameterAnnotationInterface.java	2006-11-30 02:40:11 UTC (rev 58765)
+++ projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/support/ClassInfoMethodParameterAnnotationInterface.java	2006-11-30 11:12:06 UTC (rev 58766)
@@ -0,0 +1,42 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2006, 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.
+*/
+package org.jboss.test.classinfo.support;
+
+/**
+ * ClassInfoMethodAnnotationInterface
+ * 
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+public interface ClassInfoMethodParameterAnnotationInterface
+{
+   void method(
+      int p1,
+      @ClassInfoAnnotation1 
+      int p2,
+      @ClassInfoAnnotation2 
+      int p3,
+      @ClassInfoAnnotation1 
+      @ClassInfoAnnotation2 
+      int p4
+      );
+}

Added: projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/support/ClassInfoMethodsClass.java
===================================================================
--- projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/support/ClassInfoMethodsClass.java	2006-11-30 02:40:11 UTC (rev 58765)
+++ projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/support/ClassInfoMethodsClass.java	2006-11-30 11:12:06 UTC (rev 58766)
@@ -0,0 +1,60 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2006, 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.
+*/
+package org.jboss.test.classinfo.support;
+
+/**
+ * ClassInfoMethodsClass
+ * 
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+public class ClassInfoMethodsClass
+{
+   private void voidMethodVoidPrivate() {}
+   private long longMethodVoidPrivate() { return 0; }
+   private void voidMethodintPrivate(int p1) {}
+   private long longMethodintPrivate(int p1) { return 0; }
+   private void voidMethodintStringPrivate(int p1, String p2) {}
+   private long longMethodintStringPrivate(int p1, String p2) { return 0; }
+   private long longMethodintStringThrowsPrivate(int p1, String p2) throws IllegalArgumentException, IllegalStateException { return 0; }
+   void voidMethodVoidPackage() { voidMethodVoidPrivate(); }
+   long longMethodVoidPackage() { return longMethodVoidPrivate(); }
+   void voidMethodintPackage(int p1) { voidMethodintPrivate(p1); }
+   long longMethodintPackage(int p1) { return longMethodintPrivate(p1); }
+   void voidMethodintStringPackage(int p1, String p2) { voidMethodintStringPrivate(p1, p2); }
+   long longMethodintStringPackage(int p1, String p2) { return longMethodintStringPrivate(p1, p2); }
+   long longMethodintStringThrowsPackage(int p1, String p2) throws IllegalArgumentException, IllegalStateException { return longMethodintStringThrowsPrivate(p1, p2); }
+   protected void voidMethodVoidProtected() {}
+   protected long longMethodVoidProtected() { return 0; }
+   protected void voidMethodintProtected(int p1) {}
+   protected long longMethodintProtected(int p1) { return 0; }
+   protected void voidMethodintStringProtected(int p1, String p2) {}
+   protected long longMethodintStringProtected(int p1, String p2) { return 0; }
+   protected long longMethodintStringThrowsProtected(int p1, String p2) throws IllegalArgumentException, IllegalStateException { return 0; }
+   public void voidMethodVoidPublic() {}
+   public long longMethodVoidPublic() { return 0; }
+   public void voidMethodintPublic(int p1) {}
+   public long longMethodintPublic(int p1) { return 0; }
+   public void voidMethodintStringPublic(int p1, String p2) {}
+   public long longMethodintStringPublic(int p1, String p2) { return 0; }
+   public long longMethodintStringThrowsPublic(int p1, String p2) throws IllegalArgumentException, IllegalStateException { return 0; }
+}

Added: projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/support/ClassInfoMethodsInterface.java
===================================================================
--- projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/support/ClassInfoMethodsInterface.java	2006-11-30 02:40:11 UTC (rev 58765)
+++ projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/support/ClassInfoMethodsInterface.java	2006-11-30 11:12:06 UTC (rev 58766)
@@ -0,0 +1,45 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2006, 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.
+*/
+package org.jboss.test.classinfo.support;
+
+/**
+ * ClassInfoInterface
+ * 
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+public interface ClassInfoMethodsInterface
+{
+   void voidMethodVoid();
+   
+   long longMethodVoid();
+   
+   void voidMethodint(int p1);
+
+   long longMethodint(int p1);
+   
+   void voidMethodintString(int p1, String p2);
+   
+   long longMethodintString(int p1, String p2);
+   
+   long longMethodintStringThrows(int p1, String p2) throws IllegalArgumentException, IllegalStateException;
+}

Added: projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/support/ClassInfoSuperClass.java
===================================================================
--- projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/support/ClassInfoSuperClass.java	2006-11-30 02:40:11 UTC (rev 58765)
+++ projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/support/ClassInfoSuperClass.java	2006-11-30 11:12:06 UTC (rev 58766)
@@ -0,0 +1,32 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2006, 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.
+*/
+package org.jboss.test.classinfo.support;
+
+/**
+ * ClassInfoSuperClass
+ * 
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+public class ClassInfoSuperClass extends ClassInfoEmptyClass
+{
+}

Copied: projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/support/ExpectedAnnotations.java (from rev 58705, projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/test/ExpectedAnnotations.java)
===================================================================
--- projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/test/ExpectedAnnotations.java	2006-11-28 16:24:22 UTC (rev 58705)
+++ projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/support/ExpectedAnnotations.java	2006-11-30 11:12:06 UTC (rev 58766)
@@ -0,0 +1,41 @@
+/*
+* 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.
+*/ 
+package org.jboss.test.classinfo.support;
+
+/**
+ * 
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @version $Revision$
+ */
+public abstract class ExpectedAnnotations
+{
+   public abstract Class[] getAnnotationExpectedAnnotations();
+
+   public abstract Class[] getComplexExpectedAnnotations();
+
+   public abstract Class[] getExpectedAnnotations();
+
+   public abstract Class[] getFirstParamExpectedAnnotations();
+
+   public abstract Class[] getSecondParamExpectedAnnotations();
+   
+}

Copied: projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/support/JDK14ExpectedAnnotations.java (from rev 58705, projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/test/JDK14ExpectedAnnotations.java)
===================================================================
--- projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/test/JDK14ExpectedAnnotations.java	2006-11-28 16:24:22 UTC (rev 58705)
+++ projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/support/JDK14ExpectedAnnotations.java	2006-11-30 11:12:06 UTC (rev 58766)
@@ -0,0 +1,61 @@
+/*
+* 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.
+*/ 
+package org.jboss.test.classinfo.support;
+
+import java.lang.annotation.Inherited;
+
+
+/**
+ * 
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @version $Revision$
+ */
+public class JDK14ExpectedAnnotations extends ExpectedAnnotations
+{
+   final static Class[] EXPECTED_ANNOTATIONS = {SimpleAnnotation.class, ComplexAnnotation.class};
+   final static Class[] ANNOTATION_EXPECTED_ANNOTATIONS = {Inherited.class};   
+   final static Class[] COMPLEXANNOTATION_EXPECTED_ANNOTATIONS = {SimpleAnnotation.class, ValueAnnotation.class};
+   final static Class[] FIRST_PARAM_EXPECTED_ANNOTATIONS = {ValueAnnotation.class, ComplexAnnotation.class};
+   final static Class[] SECOND_PARAM_EXPECTED_ANNOTATIONS = {ValueAnnotation.class, SimpleAnnotation.class};
+   
+   public Class[] getAnnotationExpectedAnnotations()
+   {
+      return ANNOTATION_EXPECTED_ANNOTATIONS;
+   }
+   public Class[] getComplexExpectedAnnotations()
+   {
+      return COMPLEXANNOTATION_EXPECTED_ANNOTATIONS;
+   }
+   public Class[] getExpectedAnnotations()
+   {
+      return EXPECTED_ANNOTATIONS;
+   }
+   public Class[] getFirstParamExpectedAnnotations()
+   {
+      return FIRST_PARAM_EXPECTED_ANNOTATIONS;
+   }
+   public Class[] getSecondParamExpectedAnnotations()
+   {
+      return SECOND_PARAM_EXPECTED_ANNOTATIONS;
+   }
+
+}

Copied: projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/support/JDK50ExpectedAnnotations.java (from rev 58705, projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/test/JDK50ExpectedAnnotations.java)
===================================================================
--- projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/test/JDK50ExpectedAnnotations.java	2006-11-28 16:24:22 UTC (rev 58705)
+++ projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/support/JDK50ExpectedAnnotations.java	2006-11-30 11:12:06 UTC (rev 58766)
@@ -0,0 +1,63 @@
+/*
+* 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.
+*/ 
+package org.jboss.test.classinfo.support;
+
+import java.lang.annotation.Inherited;
+import java.lang.annotation.Retention;
+import java.lang.annotation.Target;
+
+
+/**
+ * 
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @version $Revision$
+ */
+public class JDK50ExpectedAnnotations extends ExpectedAnnotations
+{
+   final static Class[] EXPECTED_ANNOTATIONS = {SimpleAnnotation.class, ComplexAnnotation.class};
+   final static Class[] ANNOTATION_EXPECTED_ANNOTATIONS = {Target.class, Retention.class, Inherited.class};   
+   final static Class[] COMPLEXANNOTATION_EXPECTED_ANNOTATIONS = {Target.class, Retention.class, SimpleAnnotation.class, ValueAnnotation.class};
+   final static Class[] FIRST_PARAM_EXPECTED_ANNOTATIONS = {ValueAnnotation.class, ComplexAnnotation.class};
+   final static Class[] SECOND_PARAM_EXPECTED_ANNOTATIONS = {ValueAnnotation.class, SimpleAnnotation.class};
+   
+   public Class[] getAnnotationExpectedAnnotations()
+   {
+      return ANNOTATION_EXPECTED_ANNOTATIONS;
+   }
+   public Class[] getComplexExpectedAnnotations()
+   {
+      return COMPLEXANNOTATION_EXPECTED_ANNOTATIONS;
+   }
+   public Class[] getExpectedAnnotations()
+   {
+      return EXPECTED_ANNOTATIONS;
+   }
+   public Class[] getFirstParamExpectedAnnotations()
+   {
+      return FIRST_PARAM_EXPECTED_ANNOTATIONS;
+   }
+   public Class[] getSecondParamExpectedAnnotations()
+   {
+      return SECOND_PARAM_EXPECTED_ANNOTATIONS;
+   }
+
+}

Added: projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/test/AbstractClassInfoTest.java
===================================================================
--- projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/test/AbstractClassInfoTest.java	2006-11-30 02:40:11 UTC (rev 58765)
+++ projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/test/AbstractClassInfoTest.java	2006-11-30 11:12:06 UTC (rev 58766)
@@ -0,0 +1,486 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2006, 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.
+*/
+package org.jboss.test.classinfo.test;
+
+import java.lang.annotation.Annotation;
+import java.lang.reflect.Array;
+import java.lang.reflect.Constructor;
+import java.lang.reflect.Field;
+import java.lang.reflect.Method;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Set;
+
+import org.jboss.reflect.plugins.AnnotationInfoImpl;
+import org.jboss.reflect.plugins.AnnotationValueImpl;
+import org.jboss.reflect.plugins.ConstructorInfoImpl;
+import org.jboss.reflect.plugins.FieldInfoImpl;
+import org.jboss.reflect.plugins.MethodInfoImpl;
+import org.jboss.reflect.spi.AnnotationValue;
+import org.jboss.reflect.spi.ClassInfo;
+import org.jboss.reflect.spi.ConstructorInfo;
+import org.jboss.reflect.spi.FieldInfo;
+import org.jboss.reflect.spi.InterfaceInfo;
+import org.jboss.reflect.spi.MethodInfo;
+import org.jboss.reflect.spi.ParameterInfo;
+import org.jboss.reflect.spi.TypeInfo;
+import org.jboss.reflect.spi.TypeInfoFactory;
+import org.jboss.reflect.spi.Value;
+import org.jboss.test.ContainerTest;
+
+/**
+ * AbstractClassInfoTest.
+ * 
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+public abstract class AbstractClassInfoTest extends ContainerTest
+{
+   public AbstractClassInfoTest(String name)
+   {
+      super(name);
+   }
+   
+   protected TypeInfo testBasics(Class<?> clazz, TypeInfo expected) throws Throwable
+   {
+      TypeInfoFactory factory = getTypeInfoFactory();
+      getLog().debug("Using typeInfoFactory: " + factory);
+      
+      TypeInfo info = factory.getTypeInfo(clazz);
+      getLog().debug("Got: " + info + " from " + clazz);
+      assertNotNull(info);
+      assertEquals(info, expected);
+
+      ClassLoader cl = getClass().getClassLoader();
+      info = factory.getTypeInfo(clazz.getName(), getClass().getClassLoader());
+      getLog().debug("Got: " + info + " from " + clazz.getName() + " cl=" + cl);
+      assertNotNull(info);
+      assertEquals(info, expected);
+      
+      getLog().debug("Name: " + info.getName());
+      assertEquals(clazz.getName(), info.getName());
+      
+      getLog().debug("Type: " + info.getType());
+      assertEquals(clazz, info.getType());
+      
+      // TODO fix the serialization
+      //byte[] bytes = serialize(info);
+      //Object deserialized = deserialize(bytes);
+      //assertEquals(info, deserialized);
+      
+      return info;
+   }
+   
+   protected void testArray(Class<?> clazz, TypeInfo info) throws Throwable
+   {
+      TypeInfo arrayType = info.getArrayType(1);
+      getLog().debug("ArrayType(1): " + arrayType);
+      assertTrue(arrayType.isArray());
+      Class<?> arrayClass = Array.newInstance(clazz, 1).getClass();
+      assertEquals(arrayClass, arrayType.getType());
+
+      arrayType = info.getArrayType(5);
+      getLog().debug("ArrayType(5): " + arrayType);
+      assertTrue(arrayType.isArray());
+      arrayClass = Array.newInstance(clazz, 5).getClass();
+      assertEquals(arrayClass, arrayType.getType());
+   }
+   
+   protected <T> void testValues(Class<T> clazz, TypeInfo info, String[] values, T[] types) throws Throwable
+   {
+      int i = 0;
+      for (String value : values)
+      {
+         Object result = info.convertValue(value);
+         getLog().debug("Converted: " + value + " to " + result);
+         assertEquals(result, types[i++]);
+      }
+   }
+   
+   protected void assertClassInfo(ClassInfo classInfo, Class<?> clazz) throws Throwable
+   {
+      assertEquals(clazz.isInterface(), classInfo.isInterface());
+      assertInterfaces(clazz, classInfo);
+      assertDeclaredMethods(clazz, classInfo);
+      assertDeclaredFields(clazz, classInfo);
+      assertDeclaredConstructors(clazz, classInfo);
+      assertSuperClass(clazz, classInfo);
+      assertModifiers(clazz, classInfo);
+      assertAnnotations(clazz, classInfo);
+      
+      testArray(clazz, classInfo);
+   }
+
+   protected void assertModifiers(Class<?> clazz, ClassInfo classInfo) throws Throwable
+   {
+      int expected = clazz.getModifiers();
+      int actual = classInfo.getModifiers();
+      getLog().debug(clazz + " modifier expected=" + expected + " actual=" + actual);
+      assertEquals(expected, actual);
+   }
+   
+   protected void assertSuperClass(Class<?> clazz, ClassInfo classInfo) throws Throwable
+   {
+      TypeInfoFactory factory = getTypeInfoFactory();
+      Class superClass = clazz.getSuperclass();
+      TypeInfo superType = classInfo.getSuperclass();
+      getLog().debug(clazz + " superClass: " + superClass + " superType=" + superType);
+      if (superClass == null)
+      {
+         assertNull(classInfo.getSuperclass());
+         return;
+      }
+      TypeInfo expected = factory.getTypeInfo(clazz.getSuperclass());
+
+      TypeInfo actual = classInfo.getSuperclass();
+      assertEquals(expected, actual);
+   }
+   
+   protected void assertInterfaces(Class<?> clazz, ClassInfo classInfo) throws Throwable
+   {
+      TypeInfoFactory factory = getTypeInfoFactory();
+      Set<TypeInfo> expected = new HashSet<TypeInfo>();
+      for (Class c : clazz.getInterfaces())
+      {
+         TypeInfo type = factory.getTypeInfo(c);
+         expected.add(type);
+      }
+      
+      InterfaceInfo[] interfaces = classInfo.getInterfaces();
+      if (expected.isEmpty())
+      {
+         assertEmpty(interfaces);
+         return;
+      }
+      assertNotNull(interfaces);
+      assertEquals(expected.size(), interfaces.length);
+      Set<TypeInfo> actual = new HashSet<TypeInfo>();
+      for (TypeInfo intf : interfaces)
+         actual.add(intf);
+      getLog().debug(clazz + " expected interfaces=" + expected + " actual=" + actual);
+      assertEquals(expected, actual);
+   }
+   
+   protected void assertDeclaredFields(Class<?> clazz, ClassInfo classInfo) throws Throwable
+   {
+      TypeInfoFactory factory = getTypeInfoFactory();
+      Set<FieldInfo> expected = new HashSet<FieldInfo>();
+      for (Field field : clazz.getDeclaredFields())
+      {
+         TypeInfo type = factory.getTypeInfo(field.getType());
+         FieldInfo f = new FieldInfoImpl(null, field.getName(), type, field.getModifiers(), classInfo);
+         expected.add(f);
+      }
+      
+      FieldInfo[] result = classInfo.getDeclaredFields();
+      if (expected.isEmpty())
+      {
+         assertEmpty(result);
+         return;
+      }
+      assertNotNull(result);
+      assertEquals(expected.size(), result.length);
+      Set<FieldInfo> actual = new HashSet<FieldInfo>();
+      for (FieldInfo f : result)
+         actual.add(f);
+      getLog().debug(clazz + " expected fields=" + expected + " actual=" + actual);
+      assertEquals(expected, actual);
+      
+      for (Field field : clazz.getDeclaredFields())
+         assertDeclaredField(clazz, field, classInfo);
+   }
+   
+   protected void assertDeclaredField(Class<?> clazz, Field field, ClassInfo classInfo) throws Throwable
+   {
+      getLog().debug("Checking field " + field.getName());
+      
+      TypeInfoFactory factory = getTypeInfoFactory();
+      
+      FieldInfo fieldInfo = classInfo.getDeclaredField(field.getName());
+      assertNotNull(field.getName(), fieldInfo);
+      TypeInfo type = factory.getTypeInfo(field.getType());
+      assertEquals(type, fieldInfo.getType());
+      assertEquals(classInfo, fieldInfo.getDeclaringClass());
+      assertEquals(field.getModifiers(), fieldInfo.getModifiers());
+      assertFieldAnnotations(field, fieldInfo);
+   }
+   
+   protected void assertDeclaredMethods(Class<?> clazz, ClassInfo classInfo) throws Throwable
+   {
+      TypeInfoFactory factory = getTypeInfoFactory();
+      Set<MethodInfo> expected = new HashSet<MethodInfo>();
+      for (Method method : clazz.getDeclaredMethods())
+      {
+         TypeInfo returnType = factory.getTypeInfo(method.getReturnType());
+         Class[] paramClasses = method.getParameterTypes();
+         TypeInfo[] paramTypes = new TypeInfo[paramClasses.length];
+         AnnotationValue[][] paramAnnotations = new AnnotationValue[paramClasses.length][0];
+         int i = 0;
+         for (Class c : paramClasses)
+            paramTypes[i++] = factory.getTypeInfo(c);
+         MethodInfo m = new MethodInfoImpl(null, method.getName(), returnType, paramTypes, paramAnnotations, null, method.getModifiers(), classInfo);
+         expected.add(m);
+      }
+      
+      MethodInfo[] result = classInfo.getDeclaredMethods();
+      if (expected.isEmpty())
+      {
+         assertEmpty(result);
+         return;
+      }
+      assertNotNull(result);
+      assertEquals(expected.size(), result.length);
+      Set<MethodInfo> actual = new HashSet<MethodInfo>();
+      for (MethodInfo f : result)
+         actual.add(f);
+      getLog().debug(clazz + " expected methods=" + expected + " actual=" + actual);
+      assertEquals(expected, actual);
+      
+      for (Method method : clazz.getDeclaredMethods())
+         assertDeclaredMethod(clazz, method, classInfo);
+   }
+   
+   protected void assertDeclaredMethod(Class<?> clazz, Method method, ClassInfo classInfo) throws Throwable
+   {
+      getLog().debug("Checking method " + method.getName() + Arrays.asList(method.getParameterTypes()));
+
+      TypeInfoFactory factory = getTypeInfoFactory();
+      
+      Class[] paramClasses = method.getParameterTypes();
+      TypeInfo[] paramTypes = new TypeInfo[paramClasses.length];
+      for (int i = 0; i < paramClasses.length; ++i)
+         paramTypes[i] = factory.getTypeInfo(paramClasses[i]);
+      MethodInfo methodInfo = classInfo.getDeclaredMethod(method.getName(), paramTypes);
+      assertNotNull(method.getName(), methodInfo);
+      TypeInfo returnType = factory.getTypeInfo(method.getReturnType());
+      TypeInfo[] actualParamTypes = methodInfo.getParameterTypes();
+      for (int i = 0; i < paramTypes.length; ++i)
+         assertEquals(paramTypes[i], actualParamTypes[i]);
+      Class[] exceptionClasses = method.getExceptionTypes();
+      TypeInfo[] expectedExceptionTypes = new TypeInfo[exceptionClasses.length];
+      for (int i = 0; i < exceptionClasses.length; ++i)
+         expectedExceptionTypes[i] = factory.getTypeInfo(exceptionClasses[i]);
+      TypeInfo[] actualExceptionTypes = methodInfo.getExceptionTypes();
+      for (int i = 0; i < exceptionClasses.length; ++i)
+         assertEquals(expectedExceptionTypes[i], actualExceptionTypes[i]);
+      assertEquals(returnType, methodInfo.getReturnType());
+      assertEquals(classInfo, methodInfo.getDeclaringClass());
+      assertEquals(method.getModifiers(), methodInfo.getModifiers());
+      assertMethodAnnotations(method, methodInfo);
+      assertParameterAnnotations(method, methodInfo);
+   }
+   
+   protected void assertDeclaredConstructors(Class<?> clazz, ClassInfo classInfo) throws Throwable
+   {
+      TypeInfoFactory factory = getTypeInfoFactory();
+      Set<ConstructorInfo> expected = new HashSet<ConstructorInfo>();
+      for (Constructor constructor : clazz.getDeclaredConstructors())
+      {
+         Class[] paramClasses = constructor.getParameterTypes();
+         TypeInfo[] paramTypes = new TypeInfo[paramClasses.length];
+         AnnotationValue[][] paramAnnotations = new AnnotationValue[paramClasses.length][0];
+         int i = 0;
+         for (Class c : paramClasses)
+            paramTypes[i++] = factory.getTypeInfo(c);
+         ConstructorInfo c = new ConstructorInfoImpl(null, paramTypes, paramAnnotations, null, constructor.getModifiers(), classInfo);
+         expected.add(c);
+      }
+      
+      ConstructorInfo[] result = classInfo.getDeclaredConstructors();
+      if (expected.isEmpty())
+      {
+         assertEmpty(result);
+         return;
+      }
+      assertNotNull(result);
+      assertEquals(expected.size(), result.length);
+      Set<ConstructorInfo> actual = new HashSet<ConstructorInfo>();
+      for (ConstructorInfo f : result)
+         actual.add(f);
+      getLog().debug(clazz + " expected constructors=" + expected + " actual=" + actual);
+      assertEquals(expected, actual);
+      
+      for (Constructor constructor : clazz.getDeclaredConstructors())
+         assertDeclaredConstructor(clazz, constructor, classInfo);
+   }
+   
+   protected void assertDeclaredConstructor(Class<?> clazz, Constructor constructor, ClassInfo classInfo) throws Throwable
+   {
+      getLog().debug("Checking constructor " + Arrays.asList(constructor.getParameterTypes()));
+
+      TypeInfoFactory factory = getTypeInfoFactory();
+      
+      Class[] paramClasses = constructor.getParameterTypes();
+      TypeInfo[] paramTypes = new TypeInfo[paramClasses.length];
+      for (int i = 0; i < paramClasses.length; ++i)
+         paramTypes[i] = factory.getTypeInfo(paramClasses[i]);
+      ConstructorInfo constructorInfo = classInfo.getDeclaredConstructor(paramTypes);
+      assertNotNull(constructorInfo);
+      TypeInfo[] actualParamTypes = constructorInfo.getParameterTypes();
+      for (int i = 0; i < paramTypes.length; ++i)
+         assertEquals(paramTypes[i], actualParamTypes[i]);
+      Class[] exceptionClasses = constructor.getExceptionTypes();
+      TypeInfo[] expectedExceptionTypes = new TypeInfo[exceptionClasses.length];
+      for (int i = 0; i < exceptionClasses.length; ++i)
+         expectedExceptionTypes[i] = factory.getTypeInfo(exceptionClasses[i]);
+      TypeInfo[] actualExceptionTypes = constructorInfo.getExceptionTypes();
+      for (int i = 0; i < exceptionClasses.length; ++i)
+         assertEquals(expectedExceptionTypes[i], actualExceptionTypes[i]);
+      assertEquals(classInfo, constructorInfo.getDeclaringClass());
+      assertEquals(constructor.getModifiers(), constructorInfo.getModifiers());
+      assertConstructorAnnotations(constructor, constructorInfo);
+      assertParameterAnnotations(constructor, constructorInfo);
+   }
+   
+   protected void assertAnnotations(Class<?> clazz, ClassInfo classInfo) throws Throwable
+   {
+      Set<AnnotationValue> expected = getExpectedAnnotations(clazz.getDeclaredAnnotations());
+      
+      AnnotationValue[] result = classInfo.getAnnotations();
+      if (expected.isEmpty())
+      {
+         assertEmpty(result);
+         return;
+      }
+      assertNotNull(result);
+      assertEquals(expected.size(), result.length);
+      Set<AnnotationValue> actual = new HashSet<AnnotationValue>();
+      for (AnnotationValue f : result)
+         actual.add(f);
+      getLog().debug(clazz + " expected annotations=" + expected + " actual=" + actual);
+      assertEquals(expected, actual);
+   }
+   
+   protected void assertFieldAnnotations(Field field, FieldInfo fieldInfo) throws Throwable
+   {
+      Set<AnnotationValue> expected = getExpectedAnnotations(field.getDeclaredAnnotations());
+      
+      AnnotationValue[] result = fieldInfo.getAnnotations();
+      if (expected.isEmpty())
+      {
+         assertEmpty(result);
+         return;
+      }
+      assertNotNull(result);
+      assertEquals(expected.size(), result.length);
+      Set<AnnotationValue> actual = new HashSet<AnnotationValue>();
+      for (AnnotationValue f : result)
+         actual.add(f);
+      getLog().debug(field.getName() + " expected annotations=" + expected + " actual=" + actual);
+      assertEquals(expected, actual);
+   }
+   
+   protected void assertMethodAnnotations(Method method, MethodInfo methodInfo) throws Throwable
+   {
+      Set<AnnotationValue> expected = getExpectedAnnotations(method.getDeclaredAnnotations());
+      
+      AnnotationValue[] result = methodInfo.getAnnotations();
+      if (expected.isEmpty())
+      {
+         assertEmpty(result);
+         return;
+      }
+      assertNotNull(result);
+      assertEquals(expected.size(), result.length);
+      Set<AnnotationValue> actual = new HashSet<AnnotationValue>();
+      for (AnnotationValue f : result)
+         actual.add(f);
+      getLog().debug(method.getName() + " expected annotations=" + expected + " actual=" + actual);
+      assertEquals(expected, actual);
+   }
+   
+   protected void assertParameterAnnotations(Method method, MethodInfo methodInfo) throws Throwable
+   {
+      Annotation[][] annotations = method.getParameterAnnotations();
+      ParameterInfo[] parameters = methodInfo.getParameters();
+      for (int i = 0; i < annotations.length; ++i)
+         assertParameterAnnotations(annotations[i], parameters[i]);
+   }
+   
+   protected void assertConstructorAnnotations(Constructor constructor, ConstructorInfo constructorInfo) throws Throwable
+   {
+      Set<AnnotationValue> expected = getExpectedAnnotations(constructor.getDeclaredAnnotations());
+      
+      AnnotationValue[] result = constructorInfo.getAnnotations();
+      if (expected.isEmpty())
+      {
+         assertEmpty(result);
+         return;
+      }
+      assertNotNull(result);
+      assertEquals(expected.size(), result.length);
+      Set<AnnotationValue> actual = new HashSet<AnnotationValue>();
+      for (AnnotationValue f : result)
+         actual.add(f);
+      getLog().debug("Expected annotations=" + expected + " actual=" + actual);
+      assertEquals(expected, actual);
+   }
+   
+   protected void assertParameterAnnotations(Constructor constructor, ConstructorInfo constructorInfo) throws Throwable
+   {
+      Annotation[][] annotations = constructor.getParameterAnnotations();
+      ParameterInfo[] parameters = constructorInfo.getParameters();
+      for (int i = 0; i < annotations.length; ++i)
+         assertParameterAnnotations(annotations[i], parameters[i]);
+   }
+   
+   protected void assertParameterAnnotations(Annotation[] annotations, ParameterInfo parameter) throws Throwable
+   {
+      Set<AnnotationValue> expected = getExpectedAnnotations(annotations);
+      
+      AnnotationValue[] result = parameter.getAnnotations();
+      if (expected.isEmpty())
+      {
+         assertEmpty(result);
+         return;
+      }
+      assertNotNull(result);
+      assertEquals(expected.size(), result.length);
+      Set<AnnotationValue> actual = new HashSet<AnnotationValue>();
+      for (AnnotationValue f : result)
+         actual.add(f);
+      getLog().debug(parameter.getName() + " expected parameter annotations=" + expected + " actual=" + actual);
+      assertEquals(expected, actual);
+   }
+
+   protected Set<AnnotationValue> getExpectedAnnotations(Annotation[] annotations)
+   {
+      Set<AnnotationValue> expected = new HashSet<AnnotationValue>();
+      for (Annotation annotation : annotations)
+      {
+         Class type = annotation.annotationType();
+         AnnotationInfoImpl info = new AnnotationInfoImpl(type.getName(), type.getModifiers());
+         // TODO attributes
+         AnnotationValue a = new AnnotationValueImpl(info, new HashMap<String, Value>());
+         expected.add(a);
+      }
+      return expected;
+   }
+   
+   protected abstract TypeInfoFactory getTypeInfoFactory();
+   
+   protected void configureLogging()
+   {
+      enableTrace("org.jboss.reflect");
+   }
+}

Modified: projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/test/AnnotatedClassInfoTest.java
===================================================================
--- projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/test/AnnotatedClassInfoTest.java	2006-11-30 02:40:11 UTC (rev 58765)
+++ projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/test/AnnotatedClassInfoTest.java	2006-11-30 11:12:06 UTC (rev 58766)
@@ -46,6 +46,9 @@
 import org.jboss.test.classinfo.support.AnnotatedClass;
 import org.jboss.test.classinfo.support.AnnotatedSubClass;
 import org.jboss.test.classinfo.support.AnotherAnnotation;
+import org.jboss.test.classinfo.support.ExpectedAnnotations;
+import org.jboss.test.classinfo.support.JDK14ExpectedAnnotations;
+import org.jboss.test.classinfo.support.JDK50ExpectedAnnotations;
 import org.jboss.test.classinfo.support.SimpleAnnotation;
 import org.jboss.test.classinfo.support.TestEnum;
 import org.jboss.test.classinfo.support.ValueAnnotation;
@@ -80,7 +83,7 @@
          expected = new JDK14ExpectedAnnotations();
       }
    }
-   final static Class[] EXPECTED_ANNOTATIONS = expected.getEspectedAnnotations();
+   final static Class[] EXPECTED_ANNOTATIONS = expected.getExpectedAnnotations();
    final static Class[] ANNOTATION_EXPECTED_ANNOTATIONS = expected.getAnnotationExpectedAnnotations();   
    final static Class[] COMPLEXANNOTATION_EXPECTED_ANNOTATIONS = expected.getComplexExpectedAnnotations();
    final static Class[] FIRST_PARAM_EXPECTED_ANNOTATIONS = expected.getFirstParamExpectedAnnotations();

Added: projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/test/ClassInfoArrayTest.java
===================================================================
--- projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/test/ClassInfoArrayTest.java	2006-11-30 02:40:11 UTC (rev 58765)
+++ projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/test/ClassInfoArrayTest.java	2006-11-30 11:12:06 UTC (rev 58766)
@@ -0,0 +1,71 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2006, 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.
+*/
+package org.jboss.test.classinfo.test;
+
+import org.jboss.reflect.plugins.ArrayInfoImpl;
+import org.jboss.reflect.spi.ArrayInfo;
+import org.jboss.reflect.spi.TypeInfo;
+import org.jboss.reflect.spi.TypeInfoFactory;
+
+/**
+ * ClassInfoArrayTest.
+ * 
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+public abstract class ClassInfoArrayTest extends AbstractClassInfoTest
+{
+   public ClassInfoArrayTest(String name)
+   {
+      super(name);
+   }
+   
+   public void testSimpleArray() throws Throwable
+   {
+      String[] array = new String[0];
+      testArray(array);
+   }
+   
+   public void testDeepArray() throws Throwable
+   {
+      String[][][][][] array = new String[1][2][3][4][0];
+      testArray(array);
+   }
+   
+   private void testArray(Object array) throws Throwable
+   {
+      TypeInfoFactory factory = getTypeInfoFactory();
+      Class<?> arrayClass = array.getClass();
+      Class<?> componentClass = arrayClass.getComponentType();
+      TypeInfo componentType = factory.getTypeInfo(componentClass);
+      ArrayInfoImpl expected = new ArrayInfoImpl(componentType);
+      TypeInfo info = testBasics(array.getClass(), expected);
+      
+      assertTrue(info.isArray());
+      assertFalse(info.isEnum());
+      assertFalse(info.isPrimitive());
+      
+      ArrayInfo arrayInfo = (ArrayInfo) info;
+      assertEquals(componentType, arrayInfo.getComponentType());
+      assertClassInfo(arrayInfo, arrayClass);
+   }
+}

Added: projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/test/ClassInfoClassTest.java
===================================================================
--- projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/test/ClassInfoClassTest.java	2006-11-30 02:40:11 UTC (rev 58765)
+++ projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/test/ClassInfoClassTest.java	2006-11-30 11:12:06 UTC (rev 58766)
@@ -0,0 +1,133 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2006, 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.
+*/
+package org.jboss.test.classinfo.test;
+
+import java.lang.reflect.Modifier;
+
+import org.jboss.reflect.plugins.ClassInfoImpl;
+import org.jboss.reflect.spi.ClassInfo;
+import org.jboss.reflect.spi.TypeInfo;
+import org.jboss.test.classinfo.support.ClassInfoAbstractMethodsClass;
+import org.jboss.test.classinfo.support.ClassInfoAnnotationClass;
+import org.jboss.test.classinfo.support.ClassInfoConstructorAnnotationClass;
+import org.jboss.test.classinfo.support.ClassInfoConstructorClass;
+import org.jboss.test.classinfo.support.ClassInfoConstructorParameterAnnotationClass;
+import org.jboss.test.classinfo.support.ClassInfoEmptyClass;
+import org.jboss.test.classinfo.support.ClassInfoFieldAnnotationClass;
+import org.jboss.test.classinfo.support.ClassInfoFieldsClass;
+import org.jboss.test.classinfo.support.ClassInfoInterfacesClass;
+import org.jboss.test.classinfo.support.ClassInfoMethodAnnotationClass;
+import org.jboss.test.classinfo.support.ClassInfoMethodParameterAnnotationClass;
+import org.jboss.test.classinfo.support.ClassInfoMethodsClass;
+import org.jboss.test.classinfo.support.ClassInfoSuperClass;
+
+/**
+ * ClassInfoClassTest.
+ * 
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+public abstract class ClassInfoClassTest extends AbstractClassInfoTest
+{
+   public ClassInfoClassTest(String name)
+   {
+      super(name);
+   }
+   
+   public void testEmptyClass() throws Throwable
+   {
+      testClass(ClassInfoEmptyClass.class);
+   }
+   
+   public void testSuperClass() throws Throwable
+   {
+      testClass(ClassInfoSuperClass.class);
+   }
+   
+   public void testInterfacesClass() throws Throwable
+   {
+      testClass(ClassInfoInterfacesClass.class);
+   }
+   
+   public void testMethodsClass() throws Throwable
+   {
+      testClass(ClassInfoMethodsClass.class);
+   }
+   
+   public void testAbstractMethodsClass() throws Throwable
+   {
+      testClass(ClassInfoAbstractMethodsClass.class);
+   }
+   
+   public void testFieldsClass() throws Throwable
+   {
+      testClass(ClassInfoFieldsClass.class);
+   }
+   
+   public void testConstructorClass() throws Throwable
+   {
+      testClass(ClassInfoConstructorClass.class);
+   }
+   
+   public void testAnnotationClass() throws Throwable
+   {
+      testClass(ClassInfoAnnotationClass.class);
+   }
+   
+   public void testFieldAnnotationClass() throws Throwable
+   {
+      testClass(ClassInfoFieldAnnotationClass.class);
+   }
+   
+   public void testMethodAnnotationClass() throws Throwable
+   {
+      testClass(ClassInfoMethodAnnotationClass.class);
+   }
+   
+   public void testMethodParameterAnnotationClass() throws Throwable
+   {
+      testClass(ClassInfoMethodParameterAnnotationClass.class);
+   }
+   
+   public void testConstructorAnnotationClass() throws Throwable
+   {
+      testClass(ClassInfoConstructorAnnotationClass.class);
+   }
+   
+   public void testConstructorParameterAnnotationClass() throws Throwable
+   {
+      testClass(ClassInfoConstructorParameterAnnotationClass.class);
+   }
+   
+   private void testClass(Class clazz) throws Throwable
+   {
+      ClassInfoImpl expected = new ClassInfoImpl(clazz.getName(), Modifier.PUBLIC);
+      TypeInfo info = testBasics(clazz, expected);
+      
+      assertFalse(info.isArray());
+      assertFalse(info.isEnum());
+      assertFalse(info.isPrimitive());
+      
+      ClassInfo classInfo = (ClassInfo) info;
+      assertClassInfo(classInfo, clazz);
+   }
+}

Added: projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/test/ClassInfoEnumTest.java
===================================================================
--- projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/test/ClassInfoEnumTest.java	2006-11-30 02:40:11 UTC (rev 58765)
+++ projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/test/ClassInfoEnumTest.java	2006-11-30 11:12:06 UTC (rev 58766)
@@ -0,0 +1,97 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2006, 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.
+*/
+package org.jboss.test.classinfo.test;
+
+import java.lang.reflect.Modifier;
+import java.util.HashSet;
+
+import org.jboss.reflect.plugins.EnumConstantInfoImpl;
+import org.jboss.reflect.plugins.EnumInfoImpl;
+import org.jboss.reflect.spi.EnumConstantInfo;
+import org.jboss.reflect.spi.EnumInfo;
+import org.jboss.reflect.spi.TypeInfo;
+import org.jboss.test.classinfo.support.ClassInfoEnum;
+import org.jboss.test.classinfo.support.ClassInfoEnumAnnotation;
+import org.jboss.test.classinfo.support.ClassInfoEnumFieldAnnotation;
+
+/**
+ * ClassInfoEnumTest.
+ * 
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+public abstract class ClassInfoEnumTest extends AbstractClassInfoTest
+{
+   public ClassInfoEnumTest(String name)
+   {
+      super(name);
+   }
+   
+   public void testEnum() throws Throwable
+   {
+      testEnum(ClassInfoEnum.class);
+   }
+   
+   public void testEnumAnnotation() throws Throwable
+   {
+      testEnum(ClassInfoEnumAnnotation.class);
+   }
+   
+   public void testEnumFieldAnnotation() throws Throwable
+   {
+      testEnum(ClassInfoEnumFieldAnnotation.class);
+   }
+   
+   private void testEnum(Class enumClass) throws Throwable
+   {
+      EnumInfoImpl expected = new EnumInfoImpl(enumClass.getName(), Modifier.PUBLIC);
+      TypeInfo info = testBasics(enumClass, expected);
+      
+      assertFalse(info.isArray());
+      assertTrue(info.isEnum());
+      assertFalse(info.isPrimitive());
+      
+      EnumInfo enumInfo = (EnumInfo) info;
+      assertEnumConstants(enumInfo);
+      
+      assertClassInfo(enumInfo, enumClass);
+   }
+   
+   protected void assertEnumConstants(EnumInfo enumInfo) throws Throwable
+   {
+      HashSet<EnumConstantInfo> expected = new HashSet<EnumConstantInfo>();
+
+      EnumConstantInfoImpl constant = new EnumConstantInfoImpl("ONE", enumInfo);
+      expected.add(constant);
+      constant = new EnumConstantInfoImpl("TWO", enumInfo);
+      expected.add(constant);
+      constant = new EnumConstantInfoImpl("THREE", enumInfo);
+      expected.add(constant);
+      
+      EnumConstantInfo[] constants = enumInfo.getEnumConstants();
+      assertNotNull(constants);
+      HashSet<EnumConstantInfo> actual = new HashSet<EnumConstantInfo>();
+      for (EnumConstantInfo c : constants)
+         actual.add(c);
+      assertEquals(expected, actual);
+   }
+}

Added: projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/test/ClassInfoInterfaceTest.java
===================================================================
--- projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/test/ClassInfoInterfaceTest.java	2006-11-30 02:40:11 UTC (rev 58765)
+++ projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/test/ClassInfoInterfaceTest.java	2006-11-30 11:12:06 UTC (rev 58766)
@@ -0,0 +1,103 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2006, 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.
+*/
+package org.jboss.test.classinfo.test;
+
+import java.lang.reflect.Modifier;
+
+import org.jboss.reflect.plugins.ClassInfoImpl;
+import org.jboss.reflect.spi.ClassInfo;
+import org.jboss.reflect.spi.TypeInfo;
+import org.jboss.test.classinfo.support.ClassInfoAnnotationInterface;
+import org.jboss.test.classinfo.support.ClassInfoEmptyInterface;
+import org.jboss.test.classinfo.support.ClassInfoFieldAnnotationInterface;
+import org.jboss.test.classinfo.support.ClassInfoFieldsInterface;
+import org.jboss.test.classinfo.support.ClassInfoInterfacesInterface;
+import org.jboss.test.classinfo.support.ClassInfoMethodAnnotationInterface;
+import org.jboss.test.classinfo.support.ClassInfoMethodParameterAnnotationInterface;
+import org.jboss.test.classinfo.support.ClassInfoMethodsInterface;
+
+/**
+ * ClassInfoInterfaceTest.
+ * 
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+public abstract class ClassInfoInterfaceTest extends AbstractClassInfoTest
+{
+   public ClassInfoInterfaceTest(String name)
+   {
+      super(name);
+   }
+   
+   public void testEmptyInterface() throws Throwable
+   {
+      testInterface(ClassInfoEmptyInterface.class);
+   }
+   
+   public void testInterfacesInterface() throws Throwable
+   {
+      testInterface(ClassInfoInterfacesInterface.class);
+   }
+   
+   public void testMethodsInterface() throws Throwable
+   {
+      testInterface(ClassInfoMethodsInterface.class);
+   }
+   
+   public void testFieldsInterface() throws Throwable
+   {
+      testInterface(ClassInfoFieldsInterface.class);
+   }
+   
+   public void testAnnotationInterface() throws Throwable
+   {
+      testInterface(ClassInfoAnnotationInterface.class);
+   }
+   
+   public void testFieldAnnotationInterface() throws Throwable
+   {
+      testInterface(ClassInfoFieldAnnotationInterface.class);
+   }
+   
+   public void testMethodAnnotationInterface() throws Throwable
+   {
+      testInterface(ClassInfoMethodAnnotationInterface.class);
+   }
+   
+   public void testMethodParameterAnnotationInterface() throws Throwable
+   {
+      testInterface(ClassInfoMethodParameterAnnotationInterface.class);
+   }
+   
+   private void testInterface(Class clazz) throws Throwable
+   {
+      ClassInfoImpl expected = new ClassInfoImpl(clazz.getName(), Modifier.PUBLIC);
+      TypeInfo info = testBasics(clazz, expected);
+      
+      assertFalse(info.isArray());
+      assertFalse(info.isEnum());
+      assertFalse(info.isPrimitive());
+      
+      ClassInfo classInfo = (ClassInfo) info;
+      assertClassInfo(classInfo, clazz);
+   }
+}

Added: projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/test/ClassInfoPrimitiveTest.java
===================================================================
--- projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/test/ClassInfoPrimitiveTest.java	2006-11-30 02:40:11 UTC (rev 58765)
+++ projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/test/ClassInfoPrimitiveTest.java	2006-11-30 11:12:06 UTC (rev 58766)
@@ -0,0 +1,99 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2006, 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.
+*/
+package org.jboss.test.classinfo.test;
+
+import org.jboss.reflect.spi.PrimitiveInfo;
+import org.jboss.reflect.spi.TypeInfo;
+
+/**
+ * ClassInfoPrimitiveTest.
+ * 
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+public abstract class ClassInfoPrimitiveTest extends AbstractClassInfoTest
+{
+   public ClassInfoPrimitiveTest(String name)
+   {
+      super(name);
+   }
+   
+   public void testBoolean() throws Throwable
+   {
+      testPrimitive(Boolean.TYPE, PrimitiveInfo.BOOLEAN, new String[] { "true", "false" }, new Boolean[] { true, false } );
+   }
+   
+   public void testByte() throws Throwable
+   {
+      testPrimitive(Byte.TYPE, PrimitiveInfo.BYTE, new String[] { "1", "2" }, new Byte[] { 1, 2 });
+   }
+   
+   public void testChar() throws Throwable
+   {
+      testPrimitive(Character.TYPE, PrimitiveInfo.CHAR, new String[] { "a", "b" }, new Character[] { 'a', 'b' });
+   }
+   
+   public void testDouble() throws Throwable
+   {
+      testPrimitive(Double.TYPE, PrimitiveInfo.DOUBLE, new String[] { "1.2", "3.14" }, new Double[] { 1.2, 3.14 });
+   }
+   
+   public void testFloat() throws Throwable
+   {
+      testPrimitive(Float.TYPE, PrimitiveInfo.FLOAT, new String[] { "1.0e10", "4.2e5" }, new Float[] { 1.0e10f, 4.2e5f });
+   }
+   
+   public void testInt() throws Throwable
+   {
+      testPrimitive(Integer.TYPE, PrimitiveInfo.INT, new String[] { "1", "2" }, new Integer[] { 1, 2 });
+   }
+   
+   public void testLong() throws Throwable
+   {
+      testPrimitive(Long.TYPE, PrimitiveInfo.LONG, new String[] { "1", "2" }, new Long[] { 1l, 2l });
+   }
+   
+   public void testShort() throws Throwable
+   {
+      testPrimitive(Short.TYPE, PrimitiveInfo.SHORT, new String[] { "1", "2" }, new Short[] { 1, 2 });
+   }
+   
+   public void testVoid() throws Throwable
+   {
+      testPrimitive(Void.TYPE, PrimitiveInfo.VOID, null, null);
+   }
+   
+   protected <T> void testPrimitive(Class<T> clazz, PrimitiveInfo primitive, String[] values, T[] types) throws Throwable
+   {
+      TypeInfo info = testBasics(clazz, primitive);
+      assertFalse(info.isArray());
+      assertFalse(info.isEnum());
+      assertTrue(info.isPrimitive());
+      
+      if (values == null)
+         return;
+
+      testArray(clazz, info);
+      
+      testValues(clazz, info, values, types);
+   }
+}

Modified: projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/test/ClassInfoTestSuite.java
===================================================================
--- projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/test/ClassInfoTestSuite.java	2006-11-30 02:40:11 UTC (rev 58765)
+++ projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/test/ClassInfoTestSuite.java	2006-11-30 11:12:06 UTC (rev 58766)
@@ -42,6 +42,16 @@
    {
       TestSuite suite = new TestSuite("ClassInfo Tests");
 
+      suite.addTest(IntrospectionPrimitiveUnitTestCase.suite());
+      suite.addTest(JavassistPrimitiveUnitTestCase.suite());
+      suite.addTest(IntrospectionArrayUnitTestCase.suite());
+      suite.addTest(JavassistArrayUnitTestCase.suite());
+      suite.addTest(IntrospectionEnumUnitTestCase.suite());
+      suite.addTest(JavassistEnumUnitTestCase.suite());
+      suite.addTest(IntrospectionInterfaceUnitTestCase.suite());
+      suite.addTest(JavassistInterfaceUnitTestCase.suite());
+      suite.addTest(IntrospectionClassUnitTestCase.suite());
+      suite.addTest(JavassistClassUnitTestCase.suite());
       suite.addTest(IntrospectionClassInfoTestCase.suite());
       suite.addTest(JavassistClassInfoTestCase.suite());
       suite.addTest(IntrospectionAnnotatedClassInfoTestCase.suite());

Deleted: projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/test/ExpectedAnnotations.java
===================================================================
--- projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/test/ExpectedAnnotations.java	2006-11-30 02:40:11 UTC (rev 58765)
+++ projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/test/ExpectedAnnotations.java	2006-11-30 11:12:06 UTC (rev 58766)
@@ -1,41 +0,0 @@
-/*
-* 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.
-*/ 
-package org.jboss.test.classinfo.test;
-
-/**
- * 
- * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
- * @version $Revision$
- */
-public abstract class ExpectedAnnotations
-{
-   public abstract Class[] getAnnotationExpectedAnnotations();
-
-   public abstract Class[] getComplexExpectedAnnotations();
-
-   public abstract Class[] getEspectedAnnotations();
-
-   public abstract Class[] getFirstParamExpectedAnnotations();
-
-   public abstract Class[] getSecondParamExpectedAnnotations();
-   
-}

Added: projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/test/IntrospectionArrayUnitTestCase.java
===================================================================
--- projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/test/IntrospectionArrayUnitTestCase.java	2006-11-30 02:40:11 UTC (rev 58765)
+++ projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/test/IntrospectionArrayUnitTestCase.java	2006-11-30 11:12:06 UTC (rev 58766)
@@ -0,0 +1,51 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2006, 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.
+*/
+package org.jboss.test.classinfo.test;
+
+import junit.framework.Test;
+
+import org.jboss.reflect.plugins.introspection.IntrospectionTypeInfoFactory;
+import org.jboss.reflect.spi.TypeInfoFactory;
+
+/**
+ * IntrospectionArrayUnitTestCase.
+ * 
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+public class IntrospectionArrayUnitTestCase extends ClassInfoArrayTest
+{
+   public IntrospectionArrayUnitTestCase(String name)
+   {
+      super(name);
+   }
+
+   public static Test suite()
+   {
+      return suite(IntrospectionArrayUnitTestCase.class);
+   }
+
+   protected TypeInfoFactory getTypeInfoFactory()
+   {
+      return new IntrospectionTypeInfoFactory();
+   }
+}

Added: projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/test/IntrospectionClassUnitTestCase.java
===================================================================
--- projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/test/IntrospectionClassUnitTestCase.java	2006-11-30 02:40:11 UTC (rev 58765)
+++ projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/test/IntrospectionClassUnitTestCase.java	2006-11-30 11:12:06 UTC (rev 58766)
@@ -0,0 +1,51 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2006, 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.
+*/
+package org.jboss.test.classinfo.test;
+
+import junit.framework.Test;
+
+import org.jboss.reflect.plugins.introspection.IntrospectionTypeInfoFactory;
+import org.jboss.reflect.spi.TypeInfoFactory;
+
+/**
+ * IntrospectionClassUnitTestCase.
+ * 
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+public class IntrospectionClassUnitTestCase extends ClassInfoClassTest
+{
+   public IntrospectionClassUnitTestCase(String name)
+   {
+      super(name);
+   }
+
+   public static Test suite()
+   {
+      return suite(IntrospectionClassUnitTestCase.class);
+   }
+
+   protected TypeInfoFactory getTypeInfoFactory()
+   {
+      return new IntrospectionTypeInfoFactory();
+   }
+}

Added: projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/test/IntrospectionEnumUnitTestCase.java
===================================================================
--- projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/test/IntrospectionEnumUnitTestCase.java	2006-11-30 02:40:11 UTC (rev 58765)
+++ projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/test/IntrospectionEnumUnitTestCase.java	2006-11-30 11:12:06 UTC (rev 58766)
@@ -0,0 +1,51 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2006, 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.
+*/
+package org.jboss.test.classinfo.test;
+
+import junit.framework.Test;
+
+import org.jboss.reflect.plugins.introspection.IntrospectionTypeInfoFactory;
+import org.jboss.reflect.spi.TypeInfoFactory;
+
+/**
+ * IntrospectionEnumUnitTestCase.
+ * 
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+public class IntrospectionEnumUnitTestCase extends ClassInfoEnumTest
+{
+   public IntrospectionEnumUnitTestCase(String name)
+   {
+      super(name);
+   }
+
+   public static Test suite()
+   {
+      return suite(IntrospectionEnumUnitTestCase.class);
+   }
+
+   protected TypeInfoFactory getTypeInfoFactory()
+   {
+      return new IntrospectionTypeInfoFactory();
+   }
+}

Added: projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/test/IntrospectionInterfaceUnitTestCase.java
===================================================================
--- projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/test/IntrospectionInterfaceUnitTestCase.java	2006-11-30 02:40:11 UTC (rev 58765)
+++ projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/test/IntrospectionInterfaceUnitTestCase.java	2006-11-30 11:12:06 UTC (rev 58766)
@@ -0,0 +1,51 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2006, 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.
+*/
+package org.jboss.test.classinfo.test;
+
+import junit.framework.Test;
+
+import org.jboss.reflect.plugins.introspection.IntrospectionTypeInfoFactory;
+import org.jboss.reflect.spi.TypeInfoFactory;
+
+/**
+ * IntrospectionInterfaceUnitTestCase.
+ * 
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+public class IntrospectionInterfaceUnitTestCase extends ClassInfoInterfaceTest
+{
+   public IntrospectionInterfaceUnitTestCase(String name)
+   {
+      super(name);
+   }
+
+   public static Test suite()
+   {
+      return suite(IntrospectionInterfaceUnitTestCase.class);
+   }
+
+   protected TypeInfoFactory getTypeInfoFactory()
+   {
+      return new IntrospectionTypeInfoFactory();
+   }
+}

Added: projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/test/IntrospectionPrimitiveUnitTestCase.java
===================================================================
--- projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/test/IntrospectionPrimitiveUnitTestCase.java	2006-11-30 02:40:11 UTC (rev 58765)
+++ projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/test/IntrospectionPrimitiveUnitTestCase.java	2006-11-30 11:12:06 UTC (rev 58766)
@@ -0,0 +1,51 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2006, 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.
+*/
+package org.jboss.test.classinfo.test;
+
+import junit.framework.Test;
+
+import org.jboss.reflect.plugins.introspection.IntrospectionTypeInfoFactory;
+import org.jboss.reflect.spi.TypeInfoFactory;
+
+/**
+ * IntrospectionPrimitiveUnitTestCase.
+ * 
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+public class IntrospectionPrimitiveUnitTestCase extends ClassInfoPrimitiveTest
+{
+   public IntrospectionPrimitiveUnitTestCase(String name)
+   {
+      super(name);
+   }
+
+   public static Test suite()
+   {
+      return suite(IntrospectionPrimitiveUnitTestCase.class);
+   }
+
+   protected TypeInfoFactory getTypeInfoFactory()
+   {
+      return new IntrospectionTypeInfoFactory();
+   }
+}

Deleted: projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/test/JDK14ExpectedAnnotations.java
===================================================================
--- projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/test/JDK14ExpectedAnnotations.java	2006-11-30 02:40:11 UTC (rev 58765)
+++ projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/test/JDK14ExpectedAnnotations.java	2006-11-30 11:12:06 UTC (rev 58766)
@@ -1,64 +0,0 @@
-/*
-* 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.
-*/ 
-package org.jboss.test.classinfo.test;
-
-import java.lang.annotation.Inherited;
-
-import org.jboss.test.classinfo.support.ComplexAnnotation;
-import org.jboss.test.classinfo.support.SimpleAnnotation;
-import org.jboss.test.classinfo.support.ValueAnnotation;
-
-/**
- * 
- * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
- * @version $Revision$
- */
-public class JDK14ExpectedAnnotations extends ExpectedAnnotations
-{
-   final static Class[] EXPECTED_ANNOTATIONS = {SimpleAnnotation.class, ComplexAnnotation.class};
-   final static Class[] ANNOTATION_EXPECTED_ANNOTATIONS = {Inherited.class};   
-   final static Class[] COMPLEXANNOTATION_EXPECTED_ANNOTATIONS = {SimpleAnnotation.class, ValueAnnotation.class};
-   final static Class[] FIRST_PARAM_EXPECTED_ANNOTATIONS = {ValueAnnotation.class, ComplexAnnotation.class};
-   final static Class[] SECOND_PARAM_EXPECTED_ANNOTATIONS = {ValueAnnotation.class, SimpleAnnotation.class};
-   
-   public Class[] getAnnotationExpectedAnnotations()
-   {
-      return ANNOTATION_EXPECTED_ANNOTATIONS;
-   }
-   public Class[] getComplexExpectedAnnotations()
-   {
-      return COMPLEXANNOTATION_EXPECTED_ANNOTATIONS;
-   }
-   public Class[] getEspectedAnnotations()
-   {
-      return EXPECTED_ANNOTATIONS;
-   }
-   public Class[] getFirstParamExpectedAnnotations()
-   {
-      return FIRST_PARAM_EXPECTED_ANNOTATIONS;
-   }
-   public Class[] getSecondParamExpectedAnnotations()
-   {
-      return SECOND_PARAM_EXPECTED_ANNOTATIONS;
-   }
-
-}

Deleted: projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/test/JDK50ExpectedAnnotations.java
===================================================================
--- projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/test/JDK50ExpectedAnnotations.java	2006-11-30 02:40:11 UTC (rev 58765)
+++ projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/test/JDK50ExpectedAnnotations.java	2006-11-30 11:12:06 UTC (rev 58766)
@@ -1,66 +0,0 @@
-/*
-* 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.
-*/ 
-package org.jboss.test.classinfo.test;
-
-import java.lang.annotation.Inherited;
-import java.lang.annotation.Retention;
-import java.lang.annotation.Target;
-
-import org.jboss.test.classinfo.support.ComplexAnnotation;
-import org.jboss.test.classinfo.support.SimpleAnnotation;
-import org.jboss.test.classinfo.support.ValueAnnotation;
-
-/**
- * 
- * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
- * @version $Revision$
- */
-public class JDK50ExpectedAnnotations extends ExpectedAnnotations
-{
-   final static Class[] EXPECTED_ANNOTATIONS = {SimpleAnnotation.class, ComplexAnnotation.class};
-   final static Class[] ANNOTATION_EXPECTED_ANNOTATIONS = {Target.class, Retention.class, Inherited.class};   
-   final static Class[] COMPLEXANNOTATION_EXPECTED_ANNOTATIONS = {Target.class, Retention.class, SimpleAnnotation.class, ValueAnnotation.class};
-   final static Class[] FIRST_PARAM_EXPECTED_ANNOTATIONS = {ValueAnnotation.class, ComplexAnnotation.class};
-   final static Class[] SECOND_PARAM_EXPECTED_ANNOTATIONS = {ValueAnnotation.class, SimpleAnnotation.class};
-   
-   public Class[] getAnnotationExpectedAnnotations()
-   {
-      return ANNOTATION_EXPECTED_ANNOTATIONS;
-   }
-   public Class[] getComplexExpectedAnnotations()
-   {
-      return COMPLEXANNOTATION_EXPECTED_ANNOTATIONS;
-   }
-   public Class[] getEspectedAnnotations()
-   {
-      return EXPECTED_ANNOTATIONS;
-   }
-   public Class[] getFirstParamExpectedAnnotations()
-   {
-      return FIRST_PARAM_EXPECTED_ANNOTATIONS;
-   }
-   public Class[] getSecondParamExpectedAnnotations()
-   {
-      return SECOND_PARAM_EXPECTED_ANNOTATIONS;
-   }
-
-}

Added: projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/test/JavassistArrayUnitTestCase.java
===================================================================
--- projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/test/JavassistArrayUnitTestCase.java	2006-11-30 02:40:11 UTC (rev 58765)
+++ projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/test/JavassistArrayUnitTestCase.java	2006-11-30 11:12:06 UTC (rev 58766)
@@ -0,0 +1,62 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2006, 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.
+*/
+package org.jboss.test.classinfo.test;
+
+import junit.framework.Test;
+
+import org.jboss.reflect.plugins.javassist.JavassistTypeInfoFactory;
+import org.jboss.reflect.spi.ClassInfo;
+import org.jboss.reflect.spi.TypeInfoFactory;
+
+/**
+ * JavassistArrayUnitTestCase.
+ * 
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+public class JavassistArrayUnitTestCase extends ClassInfoArrayTest
+{
+   public JavassistArrayUnitTestCase(String name)
+   {
+      super(name);
+   }
+
+   public static Test suite()
+   {
+      return suite(JavassistArrayUnitTestCase.class);
+   }
+
+   protected void assertInterfaces(Class<?> clazz, ClassInfo classInfo) throws Throwable
+   {
+      // TODO this is broken for javassist
+   }
+
+   protected void assertModifiers(Class<?> clazz, ClassInfo classInfo) throws Throwable
+   {
+      // TODO this is broken for javassist
+   }
+
+   protected TypeInfoFactory getTypeInfoFactory()
+   {
+      return new JavassistTypeInfoFactory();
+   }
+}

Added: projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/test/JavassistClassUnitTestCase.java
===================================================================
--- projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/test/JavassistClassUnitTestCase.java	2006-11-30 02:40:11 UTC (rev 58765)
+++ projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/test/JavassistClassUnitTestCase.java	2006-11-30 11:12:06 UTC (rev 58766)
@@ -0,0 +1,51 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2006, 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.
+*/
+package org.jboss.test.classinfo.test;
+
+import junit.framework.Test;
+
+import org.jboss.reflect.plugins.javassist.JavassistTypeInfoFactory;
+import org.jboss.reflect.spi.TypeInfoFactory;
+
+/**
+ * JavassistClassUnitTestCase.
+ * 
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+public class JavassistClassUnitTestCase extends ClassInfoClassTest
+{
+   public JavassistClassUnitTestCase(String name)
+   {
+      super(name);
+   }
+
+   public static Test suite()
+   {
+      return suite(JavassistClassUnitTestCase.class);
+   }
+
+   protected TypeInfoFactory getTypeInfoFactory()
+   {
+      return new JavassistTypeInfoFactory();
+   }
+}

Added: projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/test/JavassistEnumUnitTestCase.java
===================================================================
--- projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/test/JavassistEnumUnitTestCase.java	2006-11-30 02:40:11 UTC (rev 58765)
+++ projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/test/JavassistEnumUnitTestCase.java	2006-11-30 11:12:06 UTC (rev 58766)
@@ -0,0 +1,51 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2006, 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.
+*/
+package org.jboss.test.classinfo.test;
+
+import junit.framework.Test;
+
+import org.jboss.reflect.plugins.javassist.JavassistTypeInfoFactory;
+import org.jboss.reflect.spi.TypeInfoFactory;
+
+/**
+ * JavassistEnumUnitTestCase.
+ * 
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+public class JavassistEnumUnitTestCase extends ClassInfoEnumTest
+{
+   public JavassistEnumUnitTestCase(String name)
+   {
+      super(name);
+   }
+
+   public static Test suite()
+   {
+      return suite(JavassistEnumUnitTestCase.class);
+   }
+
+   protected TypeInfoFactory getTypeInfoFactory()
+   {
+      return new JavassistTypeInfoFactory();
+   }
+}

Added: projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/test/JavassistInterfaceUnitTestCase.java
===================================================================
--- projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/test/JavassistInterfaceUnitTestCase.java	2006-11-30 02:40:11 UTC (rev 58765)
+++ projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/test/JavassistInterfaceUnitTestCase.java	2006-11-30 11:12:06 UTC (rev 58766)
@@ -0,0 +1,51 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2006, 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.
+*/
+package org.jboss.test.classinfo.test;
+
+import junit.framework.Test;
+
+import org.jboss.reflect.plugins.javassist.JavassistTypeInfoFactory;
+import org.jboss.reflect.spi.TypeInfoFactory;
+
+/**
+ * JavassistInterfaceUnitTestCase.
+ * 
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+public class JavassistInterfaceUnitTestCase extends ClassInfoInterfaceTest
+{
+   public JavassistInterfaceUnitTestCase(String name)
+   {
+      super(name);
+   }
+
+   public static Test suite()
+   {
+      return suite(JavassistInterfaceUnitTestCase.class);
+   }
+
+   protected TypeInfoFactory getTypeInfoFactory()
+   {
+      return new JavassistTypeInfoFactory();
+   }
+}

Added: projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/test/JavassistPrimitiveUnitTestCase.java
===================================================================
--- projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/test/JavassistPrimitiveUnitTestCase.java	2006-11-30 02:40:11 UTC (rev 58765)
+++ projects/microcontainer/trunk/container/src/tests/org/jboss/test/classinfo/test/JavassistPrimitiveUnitTestCase.java	2006-11-30 11:12:06 UTC (rev 58766)
@@ -0,0 +1,51 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2006, 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.
+*/
+package org.jboss.test.classinfo.test;
+
+import junit.framework.Test;
+
+import org.jboss.reflect.plugins.javassist.JavassistTypeInfoFactory;
+import org.jboss.reflect.spi.TypeInfoFactory;
+
+/**
+ * JavassistPrimitiveUnitTestCase.
+ * 
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+public class JavassistPrimitiveUnitTestCase extends ClassInfoPrimitiveTest
+{
+   public JavassistPrimitiveUnitTestCase(String name)
+   {
+      super(name);
+   }
+
+   public static Test suite()
+   {
+      return suite(JavassistPrimitiveUnitTestCase.class);
+   }
+
+   protected TypeInfoFactory getTypeInfoFactory()
+   {
+      return new JavassistTypeInfoFactory();
+   }
+}

Modified: projects/microcontainer/trunk/container/src/tests/org/jboss/test/virtual/test/FileVFSUnitTestCase.java
===================================================================
--- projects/microcontainer/trunk/container/src/tests/org/jboss/test/virtual/test/FileVFSUnitTestCase.java	2006-11-30 02:40:11 UTC (rev 58765)
+++ projects/microcontainer/trunk/container/src/tests/org/jboss/test/virtual/test/FileVFSUnitTestCase.java	2006-11-30 11:12:06 UTC (rev 58766)
@@ -49,7 +49,6 @@
 import org.jboss.virtual.VFSUtils;
 import org.jboss.virtual.VirtualFile;
 import org.jboss.virtual.VisitorAttributes;
-import org.jboss.virtual.plugins.context.jar.JarUtils;
 import org.jboss.virtual.plugins.context.jar.NestedJarFromStream;
 import org.jboss.virtual.plugins.vfs.helpers.SuffixMatchFilter;
 import org.jboss.virtual.spi.LinkInfo;
@@ -965,6 +964,8 @@
 
    /**
     * Tests that we can find the META-INF/some-data.xml in an unpacked deployment
+    * 
+    * @throws Exception for any error
     */
    public void testGetMetaDataUnpackedJar() throws Exception
    {
@@ -973,6 +974,8 @@
    
    /**
     * Tests that we can find the META-INF/some-data.xml in a packed deployment
+    * 
+    * @throws Exception for any error
     */
    public void testGetMetaDataPackedJar() throws Exception
    {

Modified: projects/microcontainer/trunk/container/src/tests-support/org/jboss/test/vfs/support/jar1/ClassInJar1.java
===================================================================
--- projects/microcontainer/trunk/container/src/tests-support/org/jboss/test/vfs/support/jar1/ClassInJar1.java	2006-11-30 02:40:11 UTC (rev 58765)
+++ projects/microcontainer/trunk/container/src/tests-support/org/jboss/test/vfs/support/jar1/ClassInJar1.java	2006-11-30 11:12:06 UTC (rev 58766)
@@ -29,7 +29,7 @@
 {
    public static final java.lang.String VERSION = "1.0.0";
 
-   private int i;
+   int i;
 
    class InnerClass
    {

Modified: projects/microcontainer/trunk/container/src/tests-support/org/jboss/test/vfs/support/jar2/ClassInJar2.java
===================================================================
--- projects/microcontainer/trunk/container/src/tests-support/org/jboss/test/vfs/support/jar2/ClassInJar2.java	2006-11-30 02:40:11 UTC (rev 58765)
+++ projects/microcontainer/trunk/container/src/tests-support/org/jboss/test/vfs/support/jar2/ClassInJar2.java	2006-11-30 11:12:06 UTC (rev 58766)
@@ -29,6 +29,6 @@
 {
    public static final java.lang.String VERSION = "1.0.0";
 
-   private int i;
+   int i;
 
 }




More information about the jboss-cvs-commits mailing list