Often times questions like, "How i do this?" can be most easily answered by BCELifier, a tool bundled with the distribution that given a java class, writes a BCEL program to generate that class.

----- Original Message ----- From: "Andrea" <[EMAIL PROTECTED]>
To: <[email protected]>
Sent: Wednesday, July 05, 2006 5:30 PM
Subject: get the class object in the byte-code and more....


Hi to everyone.
I'm using BCEL from some days for my thesis so I've still a lot of things to
learn about bytecode instrumentation. I want to ask you two things:
1) How can I create in the bytecode I'm producing, an instruction corresponding
to the statement Classname.class? I imagine that if I use
Class.forName(classname) would be ok but it doesn't work for primitive type.

2) There some way to bring an object instance I have in the method wich does the
instrumentation into the instrumented method?
I try to explain it better:
I have a method with this signature

public static void instrument(ClassGen cgen, Method mth, BAnnotation an

In it I want to modify the bytecode of Method mth to insert a call to an
external method and I want to pass to this second method the BAnnotation object
(that is more or less a java annotation but don't think to much about it).
Since now I've thought to the following solutions:
- instead of passing the annotation to the external method, I could extract the meta-data from the annotation, insert them in the instrumented method as local variables (I wouldn't have any problem cuase the metadata will be String or primitive) and call a new external method who takes the data in that form. I think it could work but with complex annotations will be an hard work to create all the needed bytecode and specially it will be hard in future to modify it
- I could insert in the created bytecode the needed calls to retrieve via
reflection the annotation and then I could pass the object obtained to the
external method. Not so complicated as the first solution but everytime I have
to search for the right annotation.
- I'm not sure it could be done with annotation (well I'm not even sure it can be done with other object) but I could serialize my BAnnotation object pass to
the external method the info to the deserialize it

I would be glad if someone have some suggestions or opinions on what I've
written above. Unfortunately my english is not so good, and I'm not sure that
what I've written is clear...
Thanks for reading
bye!

Andrea^^


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]




---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to