Bound member variables may be private, and reflection code isn't allowed to set them in an unsigned applet. The bind processor rewrites the code at compile and inserts methods into the Bindable subclasses that can see the private members. So, we need Bindable to support binding in untrusted code. I'm suggesting that we get rid of it because we can't use it to meet a common use case (binding to Window subclasses), and it relies on undocumented features of javac. Also, the code itself is non-trivial.

Although we couldn't use it in untrusted code, the reflection code would still work fine, which is why I suggested that we might want to keep it. However, it doesn't really save the developer that much work, so we could just as easily eliminate it.


On Jun 9, 2009, at 9:34 AM, Noel Grandin wrote:

Why exactly do we need that?

It seems to me that it should be possible to create a AppletBindable
interface,
and for the BindProcessor to add that interface to the relevant classes,
and inject some code (as it does currently).

Am I missing something?

Greg Brown wrote:
We actually do need a Bindable base class in order to support binding
in untrusted code. However, if we decide to drop support for that, we
could move the bind() method to WTKXSerializer and eliminate Bindable.
Is that consistent with what you are suggesting?

On Jun 9, 2009, at 2:36 AM, Noel Grandin wrote:

Hi

How about
(3) Drop Bindable as a class altogether, and make the binding process
work without it.
I don't see that class really need to implement it anyhow.
Either that or make it an interface, and make the necessary classes
implement it.

Regards, Noel.


Reply via email to