[jboss-user] [Javassist user questions] - Unexpected change of CtConstructor parameter type

Juda do-not-reply at jboss.com
Thu Oct 30 08:57:57 EDT 2008


I've noticed strange CtConstructor's constructor behavior. The following code illustrates the problem:

  | import javassist.ClassPool;
  | import javassist.CtClass;
  | import javassist.CtConstructor;
  | 
  | public class Test {
  |     Test( Test t ){}
  | 
  |     public static void main(String[] args) throws Exception {
  |         ClassPool pool = ClassPool.getDefault();
  | 
  |         CtClass baseCtClass = pool.getCtClass( Test.class.getName() );
  |         CtClass childCtClass = pool.makeClass( Test.class.getName() + "$$Ex", baseCtClass );
  | 
  |         assert baseCtClass.getDeclaredConstructors().length == 1;
  |         assert baseCtClass.getDeclaredConstructors()[0].getParameterTypes().length == 1;
  |         assert baseCtClass.getDeclaredConstructors()[0].getParameterTypes()[0].equals( baseCtClass );
  | 
  |         assert childCtClass.getDeclaredConstructors().length == 0;
  | 
  | 	CtConstructor childCtor = new CtConstructor( baseCtClass.getDeclaredConstructors()[0], childCtClass, null );
  | 	childCtor.setBody( "{ super($$); }" );
  | 	childCtClass.addConstructor( childCtor );
  | 
  |         assert childCtClass.getDeclaredConstructors().length == 1;
  |         assert childCtClass.getDeclaredConstructors()[0].getParameterTypes().length == 1;
  |         assert childCtClass.getDeclaredConstructors()[0].getParameterTypes()[0].equals( baseCtClass );
  |         //the last assert fails (at least using Sun's jdk 1.6 u 10 / javassist 3.9.0 ) 
  |         //for some reason ctor parameter type is Test$$Ex instead of Test
  |     }
  | }
  | 

Last program assertion fails. The CtConstructor parameter is changed from Test to the Test$$Ex. Is it done on purpose? 

Regards

View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4185706#4185706

Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4185706



More information about the jboss-user mailing list