[jboss-cvs] JBossAS SVN: r85904 - in projects/jboss-reflect/trunk/src: main/java/org/jboss/reflect/spi and 1 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Mon Mar 16 07:37:05 EDT 2009


Author: stalep
Date: 2009-03-16 07:37:05 -0400 (Mon, 16 Mar 2009)
New Revision: 85904

Added:
   projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/spi/MutableTypeInfoFactory.java
   projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/JavassistMutableMethodInfoTestCase.java
   projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/JavassistMutableTypeInfoTestCase.java
Removed:
   projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/spi/MutableTypeInfoFactoryInterface.java
Modified:
   projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/javassist/JavassistAnnotatedInfo.java
   projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/javassist/JavassistAnnotatedParameterInfo.java
   projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/javassist/JavassistAnnotationInfo.java
   projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/javassist/JavassistArrayInfoImpl.java
   projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/javassist/JavassistConstructorInfo.java
   projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/javassist/JavassistFieldInfo.java
   projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/javassist/JavassistInheritableAnnotationHolder.java
   projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/javassist/JavassistMethodInfo.java
   projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/javassist/JavassistParameterInfo.java
   projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/javassist/JavassistTypeInfo.java
   projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/javassist/JavassistTypeInfoFactoryImpl.java
   projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/javassist/JavassistUtil.java
   projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/javassist/SignatureKey.java
   projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/spi/AbstractTypeInfo.java
   projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/spi/AbstractValue.java
   projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/spi/DelegateClassInfo.java
   projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/spi/MutableClassInfo.java
   projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/spi/NumberInfo.java
   projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/spi/PrimitiveInfo.java
   projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/spi/PrimitiveValue.java
   projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/spi/TypeInfo.java
Log:
[JBREFLECT-49]
Further implementation and started writing some tests.
removed a lot of warnings.
removed SignatureKey in JavassistMethodInfo

Modified: projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/javassist/JavassistAnnotatedInfo.java
===================================================================
--- projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/javassist/JavassistAnnotatedInfo.java	2009-03-16 11:36:43 UTC (rev 85903)
+++ projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/javassist/JavassistAnnotatedInfo.java	2009-03-16 11:37:05 UTC (rev 85904)
@@ -36,6 +36,9 @@
  */
 public abstract class JavassistAnnotatedInfo extends AbstractAnnotatedInfo
 {
+   /** The serialVersionUID */
+   private static final long serialVersionUID = -598578132033887927L;
+
    final static AnnotationValue[] NOT_CONFIGURED = new AnnotationValue[0];
 
    /** The annotations */

Modified: projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/javassist/JavassistAnnotatedParameterInfo.java
===================================================================
--- projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/javassist/JavassistAnnotatedParameterInfo.java	2009-03-16 11:36:43 UTC (rev 85903)
+++ projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/javassist/JavassistAnnotatedParameterInfo.java	2009-03-16 11:37:05 UTC (rev 85904)
@@ -37,6 +37,9 @@
  */
 public abstract class JavassistAnnotatedParameterInfo extends JavassistAnnotatedInfo
 {
+   /** The serialVersionUID */
+   private static final long serialVersionUID = -494071110672611729L;
+
    /** The parameters */
    protected transient ParameterInfo[] parameters;
    

Modified: projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/javassist/JavassistAnnotationInfo.java
===================================================================
--- projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/javassist/JavassistAnnotationInfo.java	2009-03-16 11:36:43 UTC (rev 85903)
+++ projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/javassist/JavassistAnnotationInfo.java	2009-03-16 11:37:05 UTC (rev 85904)
@@ -82,6 +82,7 @@
       return attributeMap.get(name);
    }
 
+   @Override
    public boolean equals(Object o)
    {
       if (this == o) return true;
@@ -94,6 +95,7 @@
       return true;
    }
 
+   @Override
    public int hashCode()
    {
       return getName().hashCode();

Modified: projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/javassist/JavassistArrayInfoImpl.java
===================================================================
--- projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/javassist/JavassistArrayInfoImpl.java	2009-03-16 11:36:43 UTC (rev 85903)
+++ projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/javassist/JavassistArrayInfoImpl.java	2009-03-16 11:37:05 UTC (rev 85904)
@@ -86,26 +86,31 @@
       calculateHash();
    }
 
+   @Override
    public TypeInfo getComponentType()
    {
       return componentType;
    }
    
+   @Override
    public AnnotationValue getAnnotation(String name)
    {
       return null;
    }
 
+   @Override
    public AnnotationValue[] getAnnotations()
    {
       return UNKNOWN_ANNOTATIONS;
    }
 
+   @Override
    public boolean isAnnotationPresent(String name)
    {
       return false;
    }
 
+   @Override
    public boolean equals(Object o)
    {
       if (this == o) return true;
@@ -119,6 +124,7 @@
       return true;
    }
 
+   @Override
    public int hashCode() { return hash; }
 
    /**

Modified: projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/javassist/JavassistConstructorInfo.java
===================================================================
--- projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/javassist/JavassistConstructorInfo.java	2009-03-16 11:36:43 UTC (rev 85903)
+++ projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/javassist/JavassistConstructorInfo.java	2009-03-16 11:37:05 UTC (rev 85904)
@@ -36,7 +36,6 @@
 import org.jboss.reflect.spi.ClassInfo;
 import org.jboss.reflect.spi.ConstructorInfo;
 import org.jboss.reflect.spi.ModifierInfo;
-import org.jboss.reflect.spi.MutableClassInfo;
 import org.jboss.reflect.spi.MutableConstructorInfo;
 import org.jboss.reflect.spi.ParameterInfo;
 import org.jboss.reflect.spi.TypeInfo;
@@ -142,6 +141,7 @@
       return constructor.newInstance(args);
    }
 
+   @Override
    protected int getHashCode()
    {
       int result = getDeclaringClass().hashCode();
@@ -154,6 +154,7 @@
       return result;
    }
 
+   @Override
    public boolean equals(Object obj)
    {
       if (this == obj) 
@@ -169,6 +170,7 @@
    }
 
 
+   @Override
    protected void toString(JBossStringBuilder buffer)
    {
       buffer.append(Arrays.asList(getParameterTypes()));
@@ -201,6 +203,7 @@
       return getAnnotations(ctConstructor);
    }
 
+   @Override
    protected void createParameterAnnotations()
    {
       try

Modified: projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/javassist/JavassistFieldInfo.java
===================================================================
--- projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/javassist/JavassistFieldInfo.java	2009-03-16 11:36:43 UTC (rev 85903)
+++ projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/javassist/JavassistFieldInfo.java	2009-03-16 11:37:05 UTC (rev 85904)
@@ -136,11 +136,13 @@
       return null;
    }
 
+   @Override
    protected int getHashCode()
    {
       return getName().hashCode();
    }
 
+   @Override
    public boolean equals(Object obj)
    {
       if (obj == this)
@@ -154,11 +156,13 @@
       return getDeclaringClass().equals(other.getDeclaringClass());
    }
 
+   @Override
    public void toShortString(JBossStringBuilder buffer)
    {
       buffer.append(getName());
    }
 
+   @Override
    protected void toString(JBossStringBuilder buffer)
    {
       buffer.append("name=").append(getName());

Modified: projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/javassist/JavassistInheritableAnnotationHolder.java
===================================================================
--- projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/javassist/JavassistInheritableAnnotationHolder.java	2009-03-16 11:36:43 UTC (rev 85903)
+++ projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/javassist/JavassistInheritableAnnotationHolder.java	2009-03-16 11:37:05 UTC (rev 85904)
@@ -37,6 +37,9 @@
  */
 public abstract class JavassistInheritableAnnotationHolder extends JavassistAnnotatedInfo
 {
+   /** The serialVersionUID */
+   private static final long serialVersionUID = -714018976926313160L;
+
    /** The classname of the <code>@Inherited</code> annotation, this needs retroing to work on JDK 1.4 */
    private static final String INHERITED_NAME = Inherited.class.getName();//This 
 
@@ -61,6 +64,7 @@
       return allAnnotationsArray;
    }
 
+   @Override
    protected AnnotationValue[] getAnnotations(Object obj)
    {
       synchronized (this)
@@ -75,12 +79,14 @@
       return allAnnotationsArray;
    }
 
+   @Override
    public AnnotationValue getAnnotation(String name)
    {
       getAnnotations();
       return allAnnotations.get(name);
    }
 
+   @Override
    public boolean isAnnotationPresent(String name)
    {
       getAnnotations();
@@ -93,6 +99,7 @@
     *
     * @param annotations the annotations
     */
+   @Override
    public void setupAnnotations(AnnotationValue[] annotations)
    {
       JavassistInheritableAnnotationHolder superHolder = getSuperHolder();

Modified: projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/javassist/JavassistMethodInfo.java
===================================================================
--- projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/javassist/JavassistMethodInfo.java	2009-03-16 11:36:43 UTC (rev 85903)
+++ projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/javassist/JavassistMethodInfo.java	2009-03-16 11:37:05 UTC (rev 85904)
@@ -37,7 +37,6 @@
 import org.jboss.reflect.spi.ClassInfo;
 import org.jboss.reflect.spi.MethodInfo;
 import org.jboss.reflect.spi.ModifierInfo;
-import org.jboss.reflect.spi.MutableClassInfo;
 import org.jboss.reflect.spi.MutableMethodInfo;
 import org.jboss.reflect.spi.MutableMethodInfoCommand;
 import org.jboss.reflect.spi.ParameterInfo;
@@ -52,9 +51,6 @@
    /** The reflection factory */
    private static final JavassistReflectionFactory reflectionFactory = new JavassistReflectionFactory(true);
    
-   /** The key */
-   private SignatureKey key;
-   
    /** The method */
    private CtMethod ctMethod;
    
@@ -69,20 +65,18 @@
     * 
     * @param annotationHelper the annotation helper
     * @param typeInfo the type info
-    * @param key the key
     * @param ctMethod the method
     */
-   public JavassistMethodInfo(AnnotationHelper annotationHelper, JavassistTypeInfo typeInfo, SignatureKey key, CtMethod ctMethod)
+   public JavassistMethodInfo(AnnotationHelper annotationHelper, JavassistTypeInfo typeInfo, CtMethod ctMethod)
    {
       super(annotationHelper);
       this.typeInfo = typeInfo;
-      this.key = key;
       this.ctMethod = ctMethod;
    }
 
    public String getName()
    {
-      return key.name;
+      return ctMethod.getName();
    }
 
    public ClassInfo getDeclaringClass()
@@ -166,11 +160,13 @@
       return method.invoke(target, args);
    }
 
+   @Override
    protected int getHashCode()
    {
       return getName().hashCode();
    }
 
+   @Override
    public boolean equals(Object obj)
    {
       if (obj == this)
@@ -189,11 +185,13 @@
       return Arrays.equals(getParameterTypes(), other.getParameterTypes());
    }
 
+   @Override
    public void toShortString(JBossStringBuilder buffer)
    {
       buffer.append(getName());
    }
 
+   @Override
    protected void toString(JBossStringBuilder buffer)
    {
       buffer.append("name=").append(getName());
@@ -231,6 +229,7 @@
       return ctMethod;
    }
 
+   @Override
    protected void createParameterAnnotations()
    {
       try
@@ -245,10 +244,9 @@
       }
    }
 
+   //TODO: need to be implemented...
    public void executeCommand(MutableMethodInfoCommand mmc)
    {
-      // TODO Auto-generated method stub
-      
    }
    
    public CtMethod getCtMethod()

Modified: projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/javassist/JavassistParameterInfo.java
===================================================================
--- projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/javassist/JavassistParameterInfo.java	2009-03-16 11:36:43 UTC (rev 85903)
+++ projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/javassist/JavassistParameterInfo.java	2009-03-16 11:37:05 UTC (rev 85904)
@@ -83,6 +83,7 @@
       return parameterType;
    }
 
+   @Override
    public boolean equals(Object obj)
    {
       if (this == obj)
@@ -94,16 +95,19 @@
       return parameterType.equals(other.getParameterType());
    }
 
+   @Override
    protected int getHashCode()
    {
       return getName().hashCode();
    }
 
+   @Override
    public void toShortString(JBossStringBuilder buffer)
    {
       buffer.append(getParameterType());
    }
 
+   @Override
    protected void toString(JBossStringBuilder buffer)
    {
       buffer.append("type=").append(getParameterType());

Modified: projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/javassist/JavassistTypeInfo.java
===================================================================
--- projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/javassist/JavassistTypeInfo.java	2009-03-16 11:36:43 UTC (rev 85903)
+++ projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/javassist/JavassistTypeInfo.java	2009-03-16 11:37:05 UTC (rev 85904)
@@ -21,6 +21,7 @@
 */
 package org.jboss.reflect.plugins.javassist;
 
+import java.io.IOException;
 import java.lang.reflect.Array;
 import java.lang.reflect.Modifier;
 import java.util.Collection;
@@ -44,6 +45,7 @@
 import org.jboss.reflect.spi.ClassInfo;
 import org.jboss.reflect.spi.ConstructorInfo;
 import org.jboss.reflect.spi.FieldInfo;
+import org.jboss.reflect.spi.InsertBeforeJavassistBody;
 import org.jboss.reflect.spi.InterfaceInfo;
 import org.jboss.reflect.spi.MethodInfo;
 import org.jboss.reflect.spi.ModifierInfo;
@@ -254,11 +256,11 @@
       return generateConstructorInfo(key);
    }
 
-   public FieldInfo getDeclaredField(String name)
+   public FieldInfo getDeclaredField(String fieldName)
    {
       synchronized (fields)
       {
-         FieldInfo field = fields.get(name);
+         FieldInfo field = fields.get(fieldName);
          if (field != null)
             return field;
       }
@@ -266,7 +268,7 @@
          return null;
       try
       {
-         CtField field = ctClass.getDeclaredField(name);
+         CtField field = ctClass.getDeclaredField(fieldName);
          if (field == null)
             return null;
          return generateFieldInfo(field);
@@ -298,9 +300,9 @@
       return fieldArray;
    }
 
-   public MethodInfo getDeclaredMethod(String name, TypeInfo[] parameters)
+   public MethodInfo getDeclaredMethod(String methodName, TypeInfo[] parameters)
    {
-      SignatureKey key = new SignatureKey(name, parameters);
+      SignatureKey key = new SignatureKey(methodName, parameters);
       synchronized (methods)
       {
          MethodInfo method = methods.get(key);
@@ -399,7 +401,6 @@
       return getType().isAssignableFrom(info.getType());
    }
 
-   @SuppressWarnings("deprecation")
    public boolean isInstance(Object object)
    {
       return getType().isInstance(object);
@@ -425,11 +426,13 @@
       return ValueConvertor.convertValue(getType(), value, replaceProperties, trim);
    }
 
+   @Override
    protected int getHashCode()
    {
       return getName().hashCode();
    }
 
+   @Override
    public boolean equals(Object obj)
    {
       if (obj == this)
@@ -441,11 +444,13 @@
       return getName().equals(other.getName());
    }
 
+   @Override
    public void toShortString(JBossStringBuilder buffer)
    {
       buffer.append(getName());
    }
 
+   @Override
    protected void toString(JBossStringBuilder buffer)
    {
       buffer.append("name=").append(getName());
@@ -578,7 +583,7 @@
     */
    protected MethodInfo generateMethodInfo(SignatureKey key, CtMethod method)
    {
-      JavassistMethodInfo info = new JavassistMethodInfo(factory, this, key, method);
+      JavassistMethodInfo info = new JavassistMethodInfo(factory, this, method);
       synchronized (methods)
       {
          methods.put(key, info);
@@ -609,6 +614,7 @@
       return ctClass;
    }
    
+   @Override
    public AnnotationValue[] getAnnotations()
    {
       return getAnnotations(ctClass);
@@ -666,8 +672,8 @@
    {
       if (packageInfo == null)
       {
-         String name = ctClass.getPackageName();
-         if (name != null)
+         String packageName = ctClass.getPackageName();
+         if (packageName != null)
             packageInfo = new PackageInfoImpl(ctClass.getPackageName());
       }
       // TODO package annotations
@@ -703,16 +709,16 @@
       return expectedType.cast(result);
    }
 
-   public Object getAttachment(String name)
+   public Object getAttachment(String attachmentName)
    {
-      if (name == null)
+      if (attachmentName == null)
          throw new IllegalArgumentException("Null name");
       synchronized (this)
       {
          if (attachments == null)
             return null;
       }
-      return attachments.getAttachment(name);
+      return attachments.getAttachment(attachmentName);
    }
    
     CtClass getCtClass()
@@ -745,6 +751,7 @@
          try
          {
             ctClass.addConstructor(((JavassistConstructorInfo) mci).getCtConstructor());
+            clearConstructorCache();
          }
          catch (CannotCompileException e)
          {
@@ -760,6 +767,7 @@
          try
          {
             ctClass.addField(((JavassistFieldInfo) mfi).getCtField());
+            clearFieldCache();
          }
          catch (CannotCompileException e)
          {
@@ -776,6 +784,7 @@
          try
          {
             ctClass.addMethod(((JavassistMethodInfo) mmi).getCtMethod());
+            clearMethodCache();
          }
          catch (CannotCompileException e)
          {
@@ -894,8 +903,7 @@
       try
       {
          CtMethod method = CtNewMethod.make(body.getBody(), ctClass);
-         return new JavassistMethodInfo(factory, this, 
-               new SignatureKey(method.getName(), new String[0]), method);
+         return new JavassistMethodInfo(factory, this, method);
       }
       catch (CannotCompileException e)
       {
@@ -903,55 +911,125 @@
       }
    }
 
-   public MutableMethodInfo createMutableMethod(ModifierInfo modifier, String methodName, String[] parameters,
-         String[] exceptions)
+   public MutableMethodInfo createMutableMethod(ModifierInfo modifier, String returnType, String methodName,
+         String[] parameters, String[] exceptions)
    {
-      // TODO Auto-generated method stub
-      return null;
+      try
+      {
+         CtMethod method = CtNewMethod.make(modifier.getModifiers(), JavassistUtil.toCtClass(returnType),
+               methodName, JavassistUtil.toCtClass(parameters), JavassistUtil.toCtClass(exceptions),
+               new InsertBeforeJavassistBody("{}").getBody(), ctClass);
+         return new JavassistMethodInfo(factory, this, method);
+      }
+      catch (CannotCompileException e)
+      {
+         throw new org.jboss.reflect.spi.CannotCompileException(e.toString());
+      }
    }
 
-   public MutableMethodInfo createMutableMethod(ModifierInfo modifier, String methodName, ClassInfo[] parameters,
-         ClassInfo[] exceptions)
+   public MutableMethodInfo createMutableMethod(ModifierInfo modifier, ClassInfo returnType, String methodName,
+         ClassInfo[] parameters, ClassInfo[] exceptions)
    {
-      // TODO Auto-generated method stub
-      return null;
+      try
+      {
+         CtMethod method = CtNewMethod.make(modifier.getModifiers(), JavassistUtil.toCtClass(returnType),
+               methodName, JavassistUtil.toCtClass(parameters), JavassistUtil.toCtClass(exceptions),
+               new InsertBeforeJavassistBody("{}").getBody(), ctClass);
+         return new JavassistMethodInfo(factory, this, method);
+      }
+      catch (CannotCompileException e)
+      {
+         throw new org.jboss.reflect.spi.CannotCompileException(e.toString());
+      }
    }
 
-   public MutableMethodInfo createMutableMethod(ModifierInfo modifier, String methodName, Body body, String[] parameters,
-         String[] exceptions)
+   public MutableMethodInfo createMutableMethod(ModifierInfo modifier, String returnType, String methodName, Body body,
+         String[] parameters, String[] exceptions)
    {
-      // TODO Auto-generated method stub
-      return null;
+      try
+      {
+         CtMethod method = CtNewMethod.make(modifier.getModifiers(), JavassistUtil.toCtClass(returnType),
+               methodName, JavassistUtil.toCtClass(parameters), JavassistUtil.toCtClass(exceptions),
+               body.getBody(), ctClass);
+         return new JavassistMethodInfo(factory, this, method);
+      }
+      catch (CannotCompileException e)
+      {
+         throw new org.jboss.reflect.spi.CannotCompileException(e.toString());
+      }
    }
 
-   public MutableMethodInfo createMutableMethod(ModifierInfo modifier, String methodName, Body body, ClassInfo[] parameters,
-         ClassInfo[] exceptions)
+   public MutableMethodInfo createMutableMethod(ModifierInfo modifier, ClassInfo returnType, String methodName, Body body,
+         ClassInfo[] parameters, ClassInfo[] exceptions)
    {
-      // TODO Auto-generated method stub
-      return null;
+      try
+      {
+         CtMethod method = CtNewMethod.make(modifier.getModifiers(), JavassistUtil.toCtClass(returnType),
+               methodName, JavassistUtil.toCtClass(parameters), JavassistUtil.toCtClass(exceptions),
+               body.getBody(), ctClass);
+         return new JavassistMethodInfo(factory, this, method);
+      }
+      catch (CannotCompileException e)
+      {
+         throw new org.jboss.reflect.spi.CannotCompileException(e.toString());
+      }
    }
 
    public void removeConstructor(MutableConstructorInfo mci)
    {
-      // TODO Auto-generated method stub
-      
+      if(mci instanceof JavassistConstructorInfo)
+         try
+         {
+            ctClass.removeConstructor(((JavassistConstructorInfo) mci).getCtConstructor());
+            clearConstructorCache();
+         }
+         catch (NotFoundException e)
+         {
+            throw new org.jboss.reflect.spi.NotFoundException(e.toString());
+         }
    }
 
    public void removeField(MutableFieldInfo mfi)
    {
-      // TODO Auto-generated method stub
-      
+      if(mfi instanceof JavassistFieldInfo)
+         try
+         {
+            ctClass.removeField(((JavassistFieldInfo) mfi).getCtField());
+            clearFieldCache();
+         }
+         catch (NotFoundException e)
+         {
+            throw new org.jboss.reflect.spi.NotFoundException(e.toString());
+         }
    }
 
    public void removeMethod(MutableMethodInfo mmi)
    {
-      // TODO Auto-generated method stub
-      
+      if(mmi instanceof JavassistMethodInfo)
+         try
+         {
+            ctClass.removeMethod(((JavassistMethodInfo) mmi).getCtMethod());
+            clearMethodCache();
+         }
+         catch (NotFoundException e)
+         {
+            throw new org.jboss.reflect.spi.NotFoundException(e.toString());
+         }
    }
 
    public byte[] toByteCode()
    {
-      // TODO Auto-generated method stub
-      return null;
+      try
+      {
+         return ctClass.toBytecode();
+      }
+      catch (IOException e)
+      {
+         throw new RuntimeException(e.toString());
+      }
+      catch (CannotCompileException e)
+      {
+         throw new org.jboss.reflect.spi.CannotCompileException(e.toString());
+      }
    }
 }

Modified: projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/javassist/JavassistTypeInfoFactoryImpl.java
===================================================================
--- projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/javassist/JavassistTypeInfoFactoryImpl.java	2009-03-16 11:36:43 UTC (rev 85903)
+++ projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/javassist/JavassistTypeInfoFactoryImpl.java	2009-03-16 11:37:05 UTC (rev 85904)
@@ -26,7 +26,6 @@
 import java.lang.reflect.Type;
 import java.util.Map;
 
-import javassist.ClassPool;
 import javassist.CtClass;
 import javassist.CtField;
 import javassist.CtMember;
@@ -42,19 +41,21 @@
 import org.jboss.reflect.spi.AnnotationValue;
 import org.jboss.reflect.spi.ClassInfo;
 import org.jboss.reflect.spi.ClassPoolFactory;
+import org.jboss.reflect.spi.MutableClassInfo;
+import org.jboss.reflect.spi.MutableTypeInfoFactory;
 import org.jboss.reflect.spi.NumberInfo;
 import org.jboss.reflect.spi.PrimitiveInfo;
 import org.jboss.reflect.spi.TypeInfo;
-import org.jboss.reflect.spi.TypeInfoFactory;
 import org.jboss.util.JBossStringBuilder;
 import org.jboss.util.collection.WeakClassCache;
 
 /**
  * A javassist type factory.
+ * TODO: need to fix the cl stuff
  *
  * @author <a href="mailto:adrian at jboss.org">Adrian Brock</a>
  */
-public class JavassistTypeInfoFactoryImpl extends WeakClassCache implements TypeInfoFactory, AnnotationHelper
+public class JavassistTypeInfoFactoryImpl extends WeakClassCache implements MutableTypeInfoFactory, AnnotationHelper
 {
    //TODO: Need to change this to a usable CPF.
    static final ClassPoolFactory poolFactory = new DummyClassPoolFactory();
@@ -123,6 +124,7 @@
       throw ex;
    }
 
+   @Override
    @SuppressWarnings("unchecked")
    protected Object instantiate(Class clazz)
    {
@@ -173,7 +175,6 @@
       }
    }
    
-   @SuppressWarnings("unchecked")
    protected Object instantiate(CtClass ctClass)
    {
       try
@@ -256,6 +257,7 @@
     * @param clazz the class
     * @return the info
     */
+   @SuppressWarnings("unchecked")
    @Override
    public Object get(Class clazz)
    {
@@ -284,9 +286,9 @@
       if (clazz == null)
          throw new IllegalArgumentException("Null class");
       
-      Map classLoaderCache = getClassLoaderCache(clazz.getClassPool().getClassLoader());
+      Map<String, WeakReference<Object>> classLoaderCache = getClassLoaderCache(clazz.getClassPool().getClassLoader());
 
-      WeakReference weak = (WeakReference) classLoaderCache.get(clazz.getName());
+      WeakReference<Object> weak = (WeakReference<Object>) classLoaderCache.get(clazz.getName());
       if (weak != null)
       {
          Object result = weak.get();
@@ -303,7 +305,7 @@
 
       Object result = instantiate(clazz);
       
-      weak = new WeakReference(result);
+      weak = new WeakReference<Object>(result);
       classLoaderCache.put(clazz.getName(), weak);
       
 //      we just ignore generate(..) since it doesnt do anything atm
@@ -381,7 +383,6 @@
    {
       try
       {
-         //TODO: Need to change this
          return poolFactory.getPoolForLoader(null).get(name);
       }
       catch (NotFoundException e)
@@ -390,6 +391,7 @@
       }
    }
 
+   @Override
    @SuppressWarnings("unchecked")
    protected void generate(Class clazz, Object result)
    {
@@ -524,4 +526,42 @@
       else
          return false;
    }
+
+   public MutableClassInfo getMutable(String name, ClassLoader cl)
+   {
+      CtClass clazz;
+      try
+      {
+         clazz = poolFactory.getPoolForLoader(cl).get(name);
+         return new JavassistTypeInfo(this, clazz, null);
+      }
+      catch (NotFoundException e)
+      {
+         throw new org.jboss.reflect.spi.NotFoundException(e.toString());
+      }
+   }
+
+   public MutableClassInfo createNewMutableClass(String name)
+   {
+      CtClass clazz = poolFactory.getPoolForLoader(null).makeClass(name);
+      return new JavassistTypeInfo(this, clazz, null);
+   }
+
+   public MutableClassInfo createNewMutableClass(String name, ClassInfo superClass)
+   {
+      CtClass clazz = poolFactory.getPoolForLoader(null).makeClass(name, JavassistUtil.toCtClass(superClass));
+      return new JavassistTypeInfo(this, clazz, null);
+   }
+
+   public MutableClassInfo createNewMutableInterface(String name)
+   {
+      CtClass clazz = poolFactory.getPoolForLoader(null).makeInterface(name);
+      return new JavassistTypeInfo(this, clazz, null);
+   }
+
+   public MutableClassInfo createNewMutableInterface(String name, ClassInfo superClass)
+   {
+      CtClass clazz = poolFactory.getPoolForLoader(null).makeInterface(name, JavassistUtil.toCtClass(superClass));
+      return new JavassistTypeInfo(this, clazz, null);
+   }
 }

Modified: projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/javassist/JavassistUtil.java
===================================================================
--- projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/javassist/JavassistUtil.java	2009-03-16 11:36:43 UTC (rev 85903)
+++ projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/javassist/JavassistUtil.java	2009-03-16 11:37:05 UTC (rev 85904)
@@ -22,11 +22,8 @@
 package org.jboss.reflect.plugins.javassist;
 
 import java.lang.reflect.Array;
-import java.util.HashMap;
-import java.util.Map;
 
 import org.jboss.reflect.spi.ClassInfo;
-import org.jboss.reflect.spi.MutableClassInfo;
 
 import javassist.ClassPool;
 import javassist.CtClass;

Modified: projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/javassist/SignatureKey.java
===================================================================
--- projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/javassist/SignatureKey.java	2009-03-16 11:36:43 UTC (rev 85903)
+++ projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/plugins/javassist/SignatureKey.java	2009-03-16 11:37:05 UTC (rev 85904)
@@ -74,6 +74,7 @@
          this.params = params;
    }
    
+   @Override
    public boolean equals(Object obj)
    {
       if (obj == this)
@@ -108,6 +109,7 @@
       return true;
    }
    
+   @Override
    public int hashCode()
    {
       if (cachedHashCode == Integer.MIN_VALUE)
@@ -125,6 +127,7 @@
       return cachedHashCode;
    }
    
+   @Override
    public String toString()
    {
       if (params == null)

Modified: projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/spi/AbstractTypeInfo.java
===================================================================
--- projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/spi/AbstractTypeInfo.java	2009-03-16 11:36:43 UTC (rev 85903)
+++ projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/spi/AbstractTypeInfo.java	2009-03-16 11:37:05 UTC (rev 85904)
@@ -32,6 +32,9 @@
  */
 public abstract class AbstractTypeInfo extends JBossObject implements TypeInfo
 {
+   /** The serialVersionUID */
+   private static final long serialVersionUID = -3395908398225434453L;
+   
    /** The attachments */
    private transient TypeInfoAttachments attachments;
 

Modified: projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/spi/AbstractValue.java
===================================================================
--- projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/spi/AbstractValue.java	2009-03-16 11:36:43 UTC (rev 85903)
+++ projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/spi/AbstractValue.java	2009-03-16 11:37:05 UTC (rev 85904)
@@ -33,6 +33,9 @@
  */
 public abstract class AbstractValue extends JBossObject implements Value, Serializable
 {
+   /** The serialVersionUID */
+   private static final long serialVersionUID = -6618658144629045180L;
+
    public AnnotationValue asAnnotation()
    {
       if (isAnnotation() == false)

Modified: projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/spi/DelegateClassInfo.java
===================================================================
--- projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/spi/DelegateClassInfo.java	2009-03-16 11:36:43 UTC (rev 85903)
+++ projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/spi/DelegateClassInfo.java	2009-03-16 11:37:05 UTC (rev 85904)
@@ -247,16 +247,19 @@
       return delegate.getType();
    }
 
+   @Override
    public boolean isAnnotation()
    {
       return delegate.isAnnotation();
    }
 
+   @Override
    public boolean isCollection()
    {
       return delegate.isCollection();
    }
 
+   @Override
    public boolean isMap()
    {
       return delegate.isMap();

Modified: projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/spi/MutableClassInfo.java
===================================================================
--- projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/spi/MutableClassInfo.java	2009-03-16 11:36:43 UTC (rev 85903)
+++ projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/spi/MutableClassInfo.java	2009-03-16 11:37:05 UTC (rev 85904)
@@ -43,25 +43,27 @@
     * Compiles an empty method with the signature given by the params.
     * 
     * @param modifier
+    * @param returnType
     * @param name
     * @param parameters
     * @param exceptions
     * @return
     */
-   MutableMethodInfo createMutableMethod(ModifierInfo modifier, String name, 
-         String[] parameters, String[] exceptions);
+   MutableMethodInfo createMutableMethod(ModifierInfo modifier, String returnType, 
+         String name, String[] parameters, String[] exceptions);
    
    /**
     * Compiles an empty method with the signature given by the params.
     * 
     * @param modifier
+    * @param returnType
     * @param name
     * @param parameters
     * @param exceptions
     * @return
     */
-   MutableMethodInfo createMutableMethod(ModifierInfo modifier, String name, 
-         ClassInfo[] parameters, ClassInfo[] exceptions);
+   MutableMethodInfo createMutableMethod(ModifierInfo modifier, ClassInfo returnType, 
+         String name, ClassInfo[] parameters, ClassInfo[] exceptions);
    
    
    /**
@@ -69,14 +71,15 @@
     * Note that the source code of the body must be surrounded by <code>{}</code>.
     * 
     * @param modifier
+    * @param returnType
     * @param name
     * @param body
     * @param parameters
     * @param exceptions
     * @return
     */
-   MutableMethodInfo createMutableMethod(ModifierInfo modifier, String name, Body body, 
-         String[] parameters, String[] exceptions);
+   MutableMethodInfo createMutableMethod(ModifierInfo modifier, String returnType, String name, 
+         Body body, String[] parameters, String[] exceptions);
 
  
    /**
@@ -84,14 +87,15 @@
     * Note that the source code of the body must be surrounded by <code>{}</code>.
     * 
     * @param modifier
+    * @param returnType
     * @param name
     * @param body
     * @param parameters
     * @param exceptions
     * @return
     */
-   MutableMethodInfo createMutableMethod(ModifierInfo modifier, String name, Body body,
-         ClassInfo[] parameters, ClassInfo[] exceptions);
+   MutableMethodInfo createMutableMethod(ModifierInfo modifier, ClassInfo returnType, String name,
+         Body body, ClassInfo[] parameters, ClassInfo[] exceptions);
 
    
    /**

Copied: projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/spi/MutableTypeInfoFactory.java (from rev 85903, projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/spi/MutableTypeInfoFactoryInterface.java)
===================================================================
--- projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/spi/MutableTypeInfoFactory.java	                        (rev 0)
+++ projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/spi/MutableTypeInfoFactory.java	2009-03-16 11:37:05 UTC (rev 85904)
@@ -0,0 +1,77 @@
+/*
+  * 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.reflect.spi;
+
+/**
+ * A MutableTypeInfoFactory
+ * 
+ * @author <a href="stalep at gmail.com">Stale W. Pedersen</a>
+ * @version $Revision: 1.1 $
+ */
+public interface MutableTypeInfoFactory extends TypeInfoFactory
+{
+
+   /**
+    * Create a new MutableClass
+    * 
+    * @param name
+    * @return
+    */
+   MutableClassInfo createNewMutableClass(String name);
+   
+   /**
+    * Create a new MutableClass
+    * 
+    * @param name
+    * @param superClass
+    * @return
+    */
+   MutableClassInfo createNewMutableClass(String name, ClassInfo superClass);
+   
+   /**
+    * Create a new mutable interface
+    * 
+    * @param name
+    * @return
+    */
+   MutableClassInfo createNewMutableInterface(String name);
+   
+   /**
+    * Create a new mutable interface
+    * 
+    * @param name
+    * @param superClass
+    * @return
+    */
+   MutableClassInfo createNewMutableInterface(String name, ClassInfo superClass);
+   
+   /**
+    * Get the information for a MutableClass.
+    * Note that this will not put the MutableClass in any cache
+    * 
+    * @param name
+    * @param cl
+    * @return
+    */
+   MutableClassInfo getMutable(String name, ClassLoader cl);
+   
+}

Deleted: projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/spi/MutableTypeInfoFactoryInterface.java
===================================================================
--- projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/spi/MutableTypeInfoFactoryInterface.java	2009-03-16 11:36:43 UTC (rev 85903)
+++ projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/spi/MutableTypeInfoFactoryInterface.java	2009-03-16 11:37:05 UTC (rev 85904)
@@ -1,51 +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.reflect.spi;
-
-/**
- * A MutableTypeInfoFactoryInterface.
- * 
- * @author <a href="stalep at gmail.com">Stale W. Pedersen</a>
- * @version $Revision: 1.1 $
- */
-public interface MutableTypeInfoFactoryInterface
-{
-
-   /**
-    * Create a new MutableClass
-    * 
-    * @param name
-    * @return
-    */
-   MutableClassInfo createNewMutableClass(String name);
-   
-   /**
-    * Get the information for a MutableClass.
-    * Note that this will not put the MutableClass in any cache
-    * 
-    * @param name
-    * @param cl
-    * @return
-    */
-   MutableClassInfo getMutable(String name, ClassLoader cl);
-   
-}

Modified: projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/spi/NumberInfo.java
===================================================================
--- projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/spi/NumberInfo.java	2009-03-16 11:36:43 UTC (rev 85903)
+++ projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/spi/NumberInfo.java	2009-03-16 11:37:05 UTC (rev 85904)
@@ -177,6 +177,7 @@
       return other.ordinal == this.ordinal;
    }
 
+   @Override
    Object readResolve() throws ObjectStreamException
    {
       return values[ordinal];
@@ -194,9 +195,9 @@
       return delegate.getDeclaredConstructors();
    }
 
-   public FieldInfo getDeclaredField(String name)
+   public FieldInfo getDeclaredField(String fieldName)
    {
-      return delegate.getDeclaredField(name);
+      return delegate.getDeclaredField(fieldName);
    }
 
    public FieldInfo[] getDeclaredFields()
@@ -204,9 +205,9 @@
       return delegate.getDeclaredFields();
    }
 
-   public MethodInfo getDeclaredMethod(String name, TypeInfo[] parameters)
+   public MethodInfo getDeclaredMethod(String methodName, TypeInfo[] parameters)
    {
-      return delegate.getDeclaredMethod(name, parameters);
+      return delegate.getDeclaredMethod(methodName, parameters);
    }
 
    public MethodInfo[] getDeclaredMethods()
@@ -239,9 +240,9 @@
       return delegate.isInterface();
    }
 
-   public AnnotationValue getAnnotation(String name)
+   public AnnotationValue getAnnotation(String annotationName)
    {
-      return delegate.getAnnotation(name);
+      return delegate.getAnnotation(annotationName);
    }
 
    public AnnotationValue[] getAnnotations()
@@ -249,9 +250,9 @@
       return delegate.getAnnotations();
    }
 
-   public boolean isAnnotationPresent(String name)
+   public boolean isAnnotationPresent(String annotationName)
    {
-      return delegate.isAnnotationPresent(name);
+      return delegate.isAnnotationPresent(annotationName);
    }
 
    public <T extends Annotation> T getUnderlyingAnnotation(Class<T> annotationType)
@@ -289,6 +290,7 @@
       return delegate.isVolatile();
    }
 
+   @Override
    public boolean isPrimitive()
    {
       return delegate.isPrimitive();
@@ -335,6 +337,7 @@
       return this;
    }
 
+   @Override
    public void toShortString(JBossStringBuilder buffer)
    {
       buffer.append(name);

Modified: projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/spi/PrimitiveInfo.java
===================================================================
--- projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/spi/PrimitiveInfo.java	2009-03-16 11:36:43 UTC (rev 85903)
+++ projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/spi/PrimitiveInfo.java	2009-03-16 11:37:05 UTC (rev 85904)
@@ -265,7 +265,7 @@
       throw new UnsupportedOperationException("Not an array " + name);
    }
 
-   @SuppressWarnings({"unchecked", "deprecation"})
+   @SuppressWarnings({"deprecation"})
    public boolean isAssignableFrom(TypeInfo info)
    {
       if (info == null)
@@ -277,7 +277,6 @@
       return canProgress(info.getType());
    }
 
-   @SuppressWarnings("deprecation")
    public boolean isInstance(Object object)
    {
       return object != null && canProgress(object.getClass());

Modified: projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/spi/PrimitiveValue.java
===================================================================
--- projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/spi/PrimitiveValue.java	2009-03-16 11:36:43 UTC (rev 85903)
+++ projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/spi/PrimitiveValue.java	2009-03-16 11:37:05 UTC (rev 85904)
@@ -78,6 +78,7 @@
       return type;
    }
 
+   @Override
    public boolean equals(Object o)
    {
       if (this == o) return true;
@@ -91,6 +92,7 @@
       return true;
    }
 
+   @Override
    public int hashCode()
    {
       int result;

Modified: projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/spi/TypeInfo.java
===================================================================
--- projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/spi/TypeInfo.java	2009-03-16 11:36:43 UTC (rev 85903)
+++ projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/spi/TypeInfo.java	2009-03-16 11:37:05 UTC (rev 85904)
@@ -51,6 +51,7 @@
     * @deprecated I'm not sure this should be here?
     * @return the class
     */
+   @Deprecated
    Class<?> getType();
    
    /**

Copied: projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/JavassistMutableMethodInfoTestCase.java (from rev 85903, projects/jboss-reflect/trunk/src/main/java/org/jboss/reflect/spi/MutableTypeInfoFactoryInterface.java)
===================================================================
--- projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/JavassistMutableMethodInfoTestCase.java	                        (rev 0)
+++ projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/JavassistMutableMethodInfoTestCase.java	2009-03-16 11:37:05 UTC (rev 85904)
@@ -0,0 +1,58 @@
+/*
+  * 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.plugins.javassist;
+
+import org.jboss.reflect.plugins.javassist.JavassistTypeInfoFactoryImpl;
+import org.jboss.reflect.spi.MethodInfo;
+import org.jboss.reflect.spi.MutableClassInfo;
+import org.jboss.reflect.spi.MutableMethodInfo;
+import org.jboss.test.ContainerTest;
+
+/**
+ * A JavassistMutableMethodInfoTestCase.
+ * 
+ * @author <a href="mailto:stale.pedersen at jboss.org">Stale W. Pedersen</a>
+ * @version $Revision: 1.1 $
+ */
+public class JavassistMutableMethodInfoTestCase extends ContainerTest
+{
+
+   /**
+    * Create a new JavassistMutableMethodInfoTestCase.
+    * 
+    * @param name
+    */
+   public JavassistMutableMethodInfoTestCase(String name)
+   {
+      super(name);
+   }
+   
+   public void testMethods()
+   {
+      MutableClassInfo mci = new JavassistTypeInfoFactoryImpl().getMutable("org.jboss.test.plugins.javassist.Pojo", null);
+      
+      MethodInfo[] methods = mci.getDeclaredMethods();
+      
+   }
+   
+
+}

Added: projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/JavassistMutableTypeInfoTestCase.java
===================================================================
--- projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/JavassistMutableTypeInfoTestCase.java	                        (rev 0)
+++ projects/jboss-reflect/trunk/src/test/java/org/jboss/test/plugins/javassist/JavassistMutableTypeInfoTestCase.java	2009-03-16 11:37:05 UTC (rev 85904)
@@ -0,0 +1,85 @@
+/*
+  * 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.plugins.javassist;
+
+import org.jboss.reflect.plugins.javassist.JavassistTypeInfoFactoryImpl;
+import org.jboss.reflect.spi.InsertBeforeJavassistBody;
+import org.jboss.reflect.spi.MethodInfo;
+import org.jboss.reflect.spi.MutableClassInfo;
+import org.jboss.reflect.spi.MutableMethodInfo;
+import org.jboss.test.ContainerTest;
+
+/**
+ * A JavassistMutableTypeInfoTestCase.
+ * 
+ * @author <a href="mailto:stale.pedersen at jboss.org">Stale W. Pedersen</a>
+ * @version $Revision: 1.1 $
+ */
+public class JavassistMutableTypeInfoTestCase extends ContainerTest
+{
+
+   /**
+    * Create a new JavassistMutableTypeInfoTestCase.
+    * 
+    * @param name
+    */
+   public JavassistMutableTypeInfoTestCase(String name)
+   {
+      super(name);
+   }
+   
+   public void testNewClass()
+   {
+      MutableClassInfo mci = new JavassistTypeInfoFactoryImpl().createNewMutableClass("org.jboss.test.plugins.javassist.Pojo2");
+      assertEquals(mci.getName(), "org.jboss.test.plugins.javassist.Pojo2");
+      assertEquals(mci.isPublic(), true);
+      MutableMethodInfo mmi1 = mci.createMutableMethod(new InsertBeforeJavassistBody("public String getFoo() { return \"foo\"; }"));
+      mci.addMethod(mmi1);
+      assertEquals(mci.getDeclaredMethods().length, 1);
+      MethodInfo mi = mci.getDeclaredMethods()[0];
+      assertEquals(mi.getReturnType().getName(), "java.lang.String");
+      
+      
+      
+      System.out.println("return type: "+mi.getReturnType().getName());
+      
+      
+      
+//      
+//      Thread.currentThread().getClass().getClassLoader()
+//      Class<?> clazz = mci.getType();
+//      try
+//      {
+//         Object pojo = clazz.newInstance();
+//         Method m1 = clazz.getMethod("getFoo", new Class[0]);
+//         
+//         String s = (String) m1.invoke(pojo, new Object[0]);
+//         System.out.println("Foo returned: "+s);
+//      }
+//      catch (Exception e)
+//      {
+//         // TODO Auto-generated catch block
+//         e.printStackTrace();
+//      }      
+   }
+
+}




More information about the jboss-cvs-commits mailing list