You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@geronimo.apache.org by David Jencks <da...@yahoo.com> on 2005/08/11 23:22:34 UTC
Re: Proxies based on class not interface
On Aug 11, 2005, at 2:32 PM, Aaron Mulder wrote:
> Right now, if you want a proxy to a ServerInfo (which is a class
> which implements no interfaces), the kernel's ProxyManager will give
> one
> to you. To do that, it creates a subclass of ServerInfo and overrides
> the
> methods it can.
>
> It seems like it might be preferable if we only created proxies
> based on interfaces. This would be a long-term goal, as we'd have to
> provide interrfaces for all the classes that need them (such as
> ServerInfo) and change our references (which use proxies) to be based
> on
> interface instead of class. It seems that we're also creating some
> proxies where the class to proxy is java.lang.Object (don't ask me!),
> and
> we have to hunt that stuff down.
Those are mostly there to force a particular startup/dependency order.
>
> Nevertheless, I'm wondering what other people think *in principle*
> of removing support for proxies based on class, some day when it
> becomes
> possible.
What is the advantage? We aren't going to be able to convince the
cglib guys to remove support for proxying classes.
thanks
david jencks
>
> Thanks,
> Aaron
>
Re: Proxies based on class not interface
Posted by Jules Gosnell <ju...@coredevelopers.net>.
Dain Sundstrom wrote:
> On Aug 11, 2005, at 2:22 PM, David Jencks wrote:
>
>>
>> On Aug 11, 2005, at 2:32 PM, Aaron Mulder wrote:
>>
>>
>>> Right now, if you want a proxy to a ServerInfo (which is a class
>>> which implements no interfaces), the kernel's ProxyManager will
>>> give one
>>> to you. To do that, it creates a subclass of ServerInfo and
>>> overrides the
>>> methods it can.
>>>
>>> It seems like it might be preferable if we only created proxies
>>> based on interfaces. This would be a long-term goal, as we'd have to
>>> provide interrfaces for all the classes that need them (such as
>>> ServerInfo) and change our references (which use proxies) to be
>>> based on
>>> interface instead of class. It seems that we're also creating some
>>> proxies where the class to proxy is java.lang.Object (don't ask
>>> me!), and
>>> we have to hunt that stuff down.
>>>
>>
>> Those are mostly there to force a particular startup/dependency order.
>>
>>>
>>> Nevertheless, I'm wondering what other people think *in principle*
>>> of removing support for proxies based on class, some day when it
>>> becomes
>>> possible.
>>>
>>
>> What is the advantage?
>
>
> I personally would like to see support for creating a class based
> proxy be removed. It just encourages bad (lazy) programming.
>
>> We aren't going to be able to convince the cglib guys to remove
>> support for proxying classes.
>
>
> We don't need or want them to remove it. We can simply turn off this
> feature in our proxy factory.
>
> -dain
The Spring integration already gets around this by generating a new
interface that is the sum of all methods on a POJO's class, then
instantiating a proxy of this and wrapping the POJO with it. The proxy
is then plugged into the kernel (my memory may be a bit rusty on this -
but the point stands)
So,
1) removing the ability to proxy anything that is not interfaced-based
from the kernel, will not prevent people from doing so, just make it
more awkward.
2) there may be a valid reason for wanting to do so.
Of course, a decent Spring/POJO/kernel integration would render this
unnecessary :-)
Jules
--
"Open Source is a self-assembling organism. You dangle a piece of
string into a super-saturated solution and a whole operating-system
crystallises out around it."
/**********************************
* Jules Gosnell
* Partner
* Core Developers Network (Europe)
*
* www.coredevelopers.net
*
* Open Source Training & Support.
**********************************/
Re: Proxies based on class not interface
Posted by Dain Sundstrom <da...@iq80.com>.
On Aug 11, 2005, at 2:22 PM, David Jencks wrote:
>
> On Aug 11, 2005, at 2:32 PM, Aaron Mulder wrote:
>
>
>> Right now, if you want a proxy to a ServerInfo (which is a class
>> which implements no interfaces), the kernel's ProxyManager will
>> give one
>> to you. To do that, it creates a subclass of ServerInfo and
>> overrides the
>> methods it can.
>>
>> It seems like it might be preferable if we only created proxies
>> based on interfaces. This would be a long-term goal, as we'd have to
>> provide interrfaces for all the classes that need them (such as
>> ServerInfo) and change our references (which use proxies) to be
>> based on
>> interface instead of class. It seems that we're also creating some
>> proxies where the class to proxy is java.lang.Object (don't ask
>> me!), and
>> we have to hunt that stuff down.
>>
>
> Those are mostly there to force a particular startup/dependency order.
>
>>
>> Nevertheless, I'm wondering what other people think *in
>> principle*
>> of removing support for proxies based on class, some day when it
>> becomes
>> possible.
>>
>
> What is the advantage?
I personally would like to see support for creating a class based
proxy be removed. It just encourages bad (lazy) programming.
> We aren't going to be able to convince the cglib guys to remove
> support for proxying classes.
We don't need or want them to remove it. We can simply turn off this
feature in our proxy factory.
-dain