Tom Klaasen wrote:
> Berin wrote:
>
>
>>>We need a way to invoke the recycle() method in the current implementations,
>>>so a support for Recyclable is required.
>>
>>:) I can do that without requiring that interface! I will use the
>>reflection facilities to determine if there is a "recycle()" method
>>with public access, and then call it. I will probably get that done
>>within the next couple of days.
>
>
> I hope you're joking. In case you're not:
> http://java.sun.com/docs/books/effective/toc.html , item 35.
>
> Right now, I'm refactoring someone else's code who also liked reflection-wizardry.
>It's a bitch.
You will never see the reflection "wizardry", and it is done in a way
that is called for. The biggest thing is that I need to get Fortress
to support Recyclable.recycle() without any access to the interface--it
is in a package that has slow pools, and is unnecessary in the grand
scheme of things. The Pool itself will perform the checks.
//....
private final static Class[] EMPTY = new Class[] {};
public void release( Object obj )
{
try
{
Class objClass = obj.getClass();
Method meth = objClass.getMethod( "recycle", EMPTY );
if( Modifiers.isPublic( meth.getModifiers() ) )
{
meth.invoke( obj, EMPTY );
}
}
catch (Exception e)
{
// it is not recyclable
}
m_available.add( obj );
}
It's not that bad--not that pretty either. However it allows us to
handle the Recyclable issues well. Otherwise I have to use reflection
to determine if it implements
"org.apache.avalon.excalibur.pool.Recyclable". What happens if I have
something similar in another framework?
> Just my opinion. We've got such a nice framework right now, with lots of good design
>patterns incorporated, and I would hate to see it wasted in this way.
How is an isolated incident of properly applied reflection a waste?
--
"They that give up essential liberty to obtain a little temporary safety
deserve neither liberty nor safety."
- Benjamin Franklin
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, email: [EMAIL PROTECTED]