[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