I don't see the issue if the lookup object represent the proxy class itself 
restricted to only access to public methods.

Rémi 

----- Mail original -----
> De: "Peter Levart" <peter.lev...@gmail.com>
> À: "Da Vinci Machine Project" <mlvm-dev@openjdk.java.net>, "jochen Theodorou" 
> <blackd...@gmx.org>
> Envoyé: Vendredi 27 Mai 2016 12:50:34
> Objet: Re: proxy an interface and call a default method
> 
> Hi,
> 
> I think the main problem here is that by providing the InvocationHandler
> with a Lookup that could provide "invokespecial" MHs for the proxy
> interface(s) could be abused. Anyone can create a Proxy for any public
> interface and supply its own InvocationHandler which could be used to
> "steal" such Lookup object.
> 
> There would have to be a way to restrict calling interface "super"
> methods from InvocationHandler *INSTANCES* that are bound to particular
> Proxy instances.
> 
> Hm...
> 
> Regards, Peter
> 
> On 05/26/2016 08:20 AM, Jochen Theodorou wrote:
> > Hi all,
> >
> > I am looking for a solution to the following problem... I have an
> > interface and an object that is supposed to serve as implementation,
> > but does not implement the interface. n methods of the interface will
> > be redirected to the object, but in case of default methods I would
> > like to have the implementation provided by the interface. I am
> > looking especially for a solution without me generating classes at
> > runtime by hand.
> >
> > Now there are several problems... I seem not to be able to invoke a
> > default method by reflection. By MethodHandles I did something like this:
> >
> >> MethodHandles.Lookup.class.getDeclaredConstructor(Class.class,
> >> int.class).
> >>       newInstance(interfaceClass, MethodHandles.Lookup.PRIVATE).
> >>       unreflectSpecial(method, interfaceClass).
> >>       bindTo(receiver);
> >
> > where receiver is a dynamic proxy, method the Method of the default
> > method, interfaceClass the Class of the interface with the default
> > method.
> >
> > But I am calling a private constructor here, which is bad, plus the
> > above procedure does no longer work on JDK9.
> >
> > So what am I supposed to do? change from a proxy to runtime generated
> > classes and hope the best for classloaders and modules not getting in
> > my way?
> >
> > bye Jochen
> > _______________________________________________
> > mlvm-dev mailing list
> > mlvm-dev@openjdk.java.net
> > http://mail.openjdk.java.net/mailman/listinfo/mlvm-dev
> 
> _______________________________________________
> mlvm-dev mailing list
> mlvm-dev@openjdk.java.net
> http://mail.openjdk.java.net/mailman/listinfo/mlvm-dev
> 
_______________________________________________
mlvm-dev mailing list
mlvm-dev@openjdk.java.net
http://mail.openjdk.java.net/mailman/listinfo/mlvm-dev

Reply via email to