New Componentized Input / Output 
 ModularDatabaseActions gone


Now, that the race condition with HSQLDB is sorted out I have finally
committed the reworked "new" database actions in scratchpad. As
announced such a long time ago that probably no-one will remember they
come with new input, output, and database autoincrement components
that are open to be used by other sitemap components as well.


Why do we need to componentize input and output?

There are so many different sources of data to work with, request
parameters, request headers, request attributes, session attributes,
cookies to name a few. Currently, we need to have e.g. a
WildcardMatcher for every one of the above inputs. With a
componentized structure we need to combine only a WildcardMatcher with
the input we would like to use. 

Two example matchers are included to illustrate how it works.  But
it's not only matchers: actions and selectors can make use of it as
well.


Why don't we use Java generics instead?

Good question. Perhaps because they're scheduled for JDK 1.5 but since
we bundle pizza javac with cocoon we could use them now. With the
database actions I have made the experience that I needed input from
many different sources at the same time. Generics wouldn't help here.


ModularDatabaseActions are gone?

Not really, they've moved to a new home in their own package. And as
the packages name is org.apache.cocoon.acting.modular the "modular" part
was dropped from the name. Thus they are just called "DatabaseAddAction"
for example.


What is so great about the "new" DatabaseActions that I should switch
to them?

First of all, they know about autoincrement columns in HSQLDB, MySQL,
and Informix. And it is really easy to extent it to your DBMS if you
use a different one.

Second, you can put your complete database schema in one file and
refer to selected tables at will.

Third, all database operations can span multiple rows and tables.

Fourth, input for columns is very flexible.


Is there a reason why I shouldn't switch?

Yes, the descriptor file syntax has changed in incompatible ways to
allow the new features.


I want to have a look at it. Is there a demo?

Yes! Build CVS with "-Dinclude.scratchpad.libs=yes" and copy the
directory $COCOON_CVS/src/scratchpad/webapps/mount/mod-db to
$COCOON/mount with $COCOON_CVS being the location where your CVS
checkout resides and $COCOON being the location where the expanded
cocoon.war file is located. Point your browser to "mount/mod-db/"
relative to cocoon and enjoy. Usually, this would be
http://localhost:8080/cocoon/mount/mod-db/ 


What is next?

Two "meta" modules are in the works for SQL99 complex types like row
types and collections. They will obtain their input from any other
input module and produce Objects that can be inserted into such
columns.

Have fun!

        Chris.

-- 
C h r i s t i a n       H a u l
[EMAIL PROTECTED]
    fingerprint: 99B0 1D9D 7919 644A 4837  7D73 FEF9 6856 335A 9E08

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, email: [EMAIL PROTECTED]

Reply via email to