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]

Reply via email to