Hi,

Torsten Curdt wrote:
Well, I am no expert but I think this cannot be done without huge hacks. Why
you want to do this? Do you want to use it as a code generation tool?

Yes... sort of.
I'm having some performance issues related to the use of reflection, I was thinking to "extract" the Java code from the JXPath expression and then use Janino to compile it, this way I would use reflection only once (to generate the code).

IMHO that's an ugly approach ...rather I would try to improve jxpath.

You are certainly entitled to your opinion :-)
I will take the example used in the JXPath user guide to illustrate what I want.

public class Employee {
    public Address getHomeAddress(){
       ...
    }
 }
public class Address {
    public String getStreetNumber(){
       ...
    }
 }

Employee emp = new Employee();
 ...

String jxpath_exp = "homeAddress/streetNumber"
String javaCode = JXPathContext.getJavaCode(Employee.class, jxpath_exp);
ExpressionEvaluator ee = new ExpressionEvaluator(javaCode, ...); // Janino
String sNumber = (String) ee.evaluate(new Object[] {emp} );


Maybe because my sense of aesthetics is skewed I fail to see the ugliness you 
speak of, but I'm more than willing to be educated.


When caching reflection you can get the same speed as native (at least
in some areas).

Could you please elaborate on this...  I don't understand what exactly should 
be cached.
The result of the evaluation? Maybe I'm missing something but if the Context object is always changing is there a point in "caching reflection"?

 Another option would be to generate byte code internally
(like XSLTC does)

Ok... that sure is a possibility,  any pointers on how/where to start?
Although I'm a heavy user of JXPath I'm ashamed to admit that I barely know 
it's inner workings

 Going through the source code stage just to avoid
reflection speed sounds like the wrong approach to me.

It's just a possibility, what I really want is not to use reflection.

Thanks!

Luis Neves


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

Reply via email to