Carsten Ziegeler wrote:
Hi,
I just started moving some components from Cocoon over to Excalibur. Rather than moving all at once, I would like to discuss the some moved components and then add some more as the current interfaces might have influence on the following components.
So, I added all the stuff to the xml and the source package of scratchpad in excalibur.
a) XMLConsumer, AbstractXMLConsumer, ContentHandlerWrapper The XMLConsumer simply unifies LexicalHandler and ContentHandler. The AbstractXMLConsumer is an abstract implementation of this interface, simply doing nothing. And the ContentHandlerWrapper implements the XMLConsumer to wrap a ContentHandler or a ContentHandler and a LexicalHandler to an XMLConsumer. I think these components do not need discussion.
They are pretty straight forward.
b) Parser, XercesParser, JaxpParser The Parser interface defines an XML Parser which can either send SAX events or create a DOM Document. XercesParser and JaxpParser are two implementations. I changed the Parser interface from the Cocoon version in order to make the implementation ThreadSafe - if possible. This change was already discussed on the Cocoon mailing list.
There could be two policies:
1) new parser every time. 2) reuse parser until it emits an exception.
Of course, this means that you will have a new wrapper class to intercept the exceptions--or perhaps an ErrorHandler for each parser registered with the component.
c) XMLizable and XMLFragment These marker interfaces are used to convert an arbitrary object to an DOM node or to send XML events.
They are useful in application programming--and possibly our serialization framework for Components.
If this is the case, these interfaces (or at least the XMLizable one) would live in Framework so that Configuration can extend it.
d) Source, SourceHandler, SourceFactory Now this is more or less the source resolving component from Cocoon. The Source interface describes any source which is resolved by the SourceHandler. The SourceFactory describes pluggable protocols which can be used by the SourceHandler to resolve the systemIds. The other files in this package are implementation.
We should discuss if you are all happy with those three interfaces.
The usual process is to get the SourceHandler and get using this
handler a Source object for a systemID. This Source object can
then be asked for an InputStream, an InputSource or if it is
XMLizable or XMLFragment for it's XML representation etc.
These interfaces have been proved in Cocoon, but perhaps they can
still be enhanced.
Is there any way we can merge the Source and Resource classes? That way, we can seemlessly take advantage of the Monitor package.
In addition we need a link to the monitor package. The simplest solution might be to define a SourceResource in the monitor package which monitors a Source object.
Perhaps the Source object can extend the Resource or StreamResource objects?
So, let's start discussing this. I'm really interested in your opinion, even if have to start over from scratch....(just a joke)
What would be the barrier to using the Resource object directly?
--
"Those who would trade liberty for temporary security deserve neither" - Benjamin Franklin
-- To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>