blob: 5b1f9ec5d23b8c980391436f44b26660005f37a9 [file] [log] [blame]
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Cocoon Source Resolving</title>
<link href="http://purl.org/DC/elements/1.0/" rel="schema.DC">
<meta content="Carsten Ziegeler" name="DC.Creator">
</head>
<body>
<h1>Differences between Cocoon and Avalon Excalibur Source Resolving</h1>
<p>
This story tries to list the changes between the two source resolving approaches.
Originally, the source resolving was developed in the Cocoon community. As the
community recognized that it had a more common value, the source resolving was
donated to the Avalon Excalibur project and there it was refined and redesigned.
Now the way back takes place by reintegrating the Avalon Excalibur Source Resolving
into Cocoon and deprecating the now obsolete Cocoon Source Resolving.</p>
<h2>The Interfaces</h2>
<p>
Besides the package names the main difference is that the Cocoon Source object is
XMLizable, that means it can directly send SAX events.
The AE Source object is not XMLizable, which is more correct as a protocol only
describes the way of transport but not the format of the data which is transfered.
Therefore it provides a getMimeType() method.</p>
<h2>Caching</h2>
<p>
The Cocoon Source object returns a last modified time stamp which is very limiting.
For example a source could have an expires date or something like that.
The AE Source returns a validity object which is capable of all these validity
checkings. So the information used for validity checking is provided by the source
object and not maintained by the client of the source as it is currently in Cocoon.</p>
<h2>XMLizable</h2>
<p>
As we in Cocoonland are dealing a lot with XML, a Source implementation can still implement
the XMLizable Interface (from AE and not from Cocoon!) to directly provide SAX events.
The Cocoon SourceUtil class has a method toSAX() which gets a Source object and tests if
it implements the XMLizable interface. If not the new AE XMLizer is used which is a
component that can convert an input stream with a given mime-type to SAX events.
This component is configurable and extensible.</p>
</body>
</html>