Hi,

Apologies.  Been very busy of late. Been thinking about what you wrote -
there was a related article in one of the Java mags as well.

I will be out of town this week, and promise to stop this consulting
foolishness and engage properly when I get back. :)

geir

Stephane Bailliez wrote:
> 
> Geir,
> 
> I assumed you got my last mail(see below) about the reflection problem that
> arises with private class. What is your current position about this ?
> 
> I definitely agree that the workaround (this is a workaround) I sent is bad,
> but what do you think about changing the method invocation by keeping the
> class of the return type instead of the object class ?
> 
> Is that feasible without breaking too many things ?
> 
> --
>  Stephane Bailliez
>  Software Engineer, Paris - France
>  iMediation - http://www.imediation.com
>  Disclaimer: All the opinions expressed above are mine and not those from my
> company.
> 
> > -----Original Message-----
> > From: Stephane Bailliez [mailto:[EMAIL PROTECTED]]
> > Sent: Friday, July 27, 2001 10:09 AM
> > To: [EMAIL PROTECTED]
> > Subject: RE: [PATCH] ASTMethod / IllegalAccessException
> >
> >
> > > -----Original Message-----
> > > From: Geir Magnusson Jr. [mailto:[EMAIL PROTECTED]]
> > >
> > > Eh.  Before making the statement "Velocity shouldn't change
> > > modifiers of
> > > methods in the context", I am interested to see what classes you are
> > > working with, and why the problem occurrs....
> >
> > The below sample should give you an idea, it is more precise
> > than my last
> > post. (and it compiles :) It should print:
> >
> > Call via return type class: SUCCESS
> > Call via base class: FAILED
> >
> > The problem is that the current Velocity code will perform
> > reflection on the
> > base class of an object (o.getClass()). Thus my point to
> > 'save' the return
> > type of the object from a method call each time there is a
> > reflection call,
> > otherwise we are unable to know which object we are working
> > on the next time
> > we will use it and we will incorrectly use the base class to
> > perform the
> > call. Base class that might perfectly be of private access
> > and expose its
> > public interface to a caller (ie, for example Itr is a
> > private class of
> > AbstractList that implements Iterator and that is sent back via the
> > iterator() call)
> >
> > I'm not familiar yet with the velocity code since I have only
> > been using it
> > for eval for less than 2 weeks so I cannot give you a patch
> > to do this which
> > is to me the ideal solution rather than the ugly hack I did.
> >
> > --- Test.java
> >
> > import java.util.*;
> > import java.lang.reflect.*;
> >
> > public class Test {
> >
> >       public static void main(String[] args) throws Exception {
> >               ArrayList list = new ArrayList();
> >               Object o = list.iterator();
> >
> >               try {
> >                       Class clazz =
> > list.getClass().getMethod("iterator",
> > new Class[0]).getReturnType();
> >                       Method method = clazz.getMethod("hasNext", new
> > Class[0]);
> >                       method.invoke(o, null);
> >                       System.out.println("Call via return type class:
> > SUCCESS");
> >               } catch (Exception e){
> >                       System.out.println("Call via return type class:
> > FAILED");
> >               }
> >
> >               try {
> >                       Class clazz = o.getClass();
> >                       Method method = clazz.getMethod("hasNext", new
> > Class[0]);
> >                       method.invoke(o, null);
> >                       System.out.println("Call via base
> > class: SUCCESS");
> >               } catch (Exception e){
> >                       System.out.println("Call via base
> > class: FAILED");
> >               }
> >       }
> >
> > }
> >
> >
> >
> > --
> >  Stephane Bailliez
> >  Software Engineer, Paris - France
> >  iMediation - http://www.imediation.com
> >  Disclaimer: All the opinions expressed above are mine and
> > not those from my
> > company.
> >
> >

-- 
Geir Magnusson Jr.                           [EMAIL PROTECTED]
System and Software Consulting
Developing for the web?  See http://jakarta.apache.org/velocity/
Be well, do good work, and keep in touch.

Reply via email to