Carsten Ziegeler wrote:
Sylvain Wallez schrieb:
Hi all,
I'd like to propose a small change to the Source contract so that
SourceResolver.release() is far more efficient.
Currently, releasing a Source requires to lookup the SourceFactory in
the selector and calling release(Source) on that class. Now looking
around, I found only _one_ implementation of SourceFactory that
effectively does something useful in it's release() method, which is
Cocoon's SitemapSourceFactory.
All other implementations do _nothing_, leading to a lot of useless
lookups. Considering how much source-intensive Cocoon is, this may be
significant.
To avoid this, I'd like to propose a small change to the
SourceResolver.release() contract: if the Source implements Disposable,
then it's dispose() method is called, and otherwise the factory is
looked up as of today.
We then have to add empty dispose() methods to all source
implementations to benefit from the performance improvement.
How does that sound?
Don't know, but I don't like the dependency to Disposable.
It would be better if we could keep the interfaces clean from
Avalon core interfaces.
The early versions of the Source interface had a "release()" method
which did exactly what you propose. So perhaps we can add an own
interface for this in the o.a.e.source package instead?
If we do this, this changes the Source interface, and may lead to more
compatibility problems with implementations out there.
A solution would be to add a "ReleasableSource" interface that extends
Source and provides the release() method. That way, we don't add
dependencies on the framework.
Sylvain
--
Sylvain Wallez Anyware Technologies
http://people.apache.org/~sylvain http://www.anyware-tech.com
Apache Software Foundation Member Research & Technology Director
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]