presentation: Cocoon as Alphabet Soup
image-directory: cocoon-images
Author: Warrell Harries
For: Wiley Interscience
Date: May 2007
A Rich bowl of Cocoon Morsels from A-Z
slide: AJAX, Authentication and Aggregation
hint-style: LittleText
img_rightFifth: a.jpg
subtitle: CForm Definition to use AJAX
code:
Environment:
var value = this.value;
var appwidget = widget.lookupWidget("../appGroup");
if (value != null)
{
// Get the corresponding type list
appwidget.setSelectionList(value + ".xml");
appwidget.state = Packages.org.apache.cocoon.forms.formmodel.WidgetState.ACTIVE;
}
else
{
// Set an empty selection list
appwidget.setSelectionLis
(
new Packages.org.apache.cocoon.forms.datatype.EmptySelectionList("Select an Environment First")
);
appwidget.state = Packages.org.apache.cocoon.forms.formmodel.WidgetState.DISABLED;
}
// Always set the type value to null. Note that it will also fire an event on the "type"
// widget if it already had a value.
appwidget.value = null;
Please select an Environment
subtitle: Pipeline matcher to handle asynchronous browser updates
code:
subtitle: Authentication Framework
code:
code:
note: Deprecated in favour of CoWarp http://osoco.sourceforge.net/cowarp/
subtitle: Aggregation
img_fullWidth: aggregate.jpg
Aggregation is a very powerful concept that allows a document
be generated from several other documents. Strictly speaking,
all parts are just concatenated in this order to a new
document.
note:
"cocoon:" is a pseudo protocol and refers to another
pipeline. "cocoon:/" refers to a pipeline from the current
sitemap while "cocoon://" refers to a pipeline from the root
sitemap.
Other pseudo protocols exist:
"context:" is another pseudo protocol, "context://" is
referring to a resource using the servlet context.
"resource:" is yet another pseudo protocol, "resource://" is
referring to a resource from the context classloader.
All these pseudo protocols are declared in the cocoon.xconf.
Thus, the parts refer to the pipeline fragments above.
The optional element attribute places the content in a new root
element named as specified, using the namespace provided by an
optional ns attribute.
slide: Blocks, Browsers and Batik
hint-style: LittleText
img_rightFifth: b.jpg
subtitle: Blocks package functional components and encourage modularity
Current release uses build properties 2.2 adopts Maven archtypes
subtitle: Use of CForms brings automatic cross-browser support
No more hand-cranked DHTML
subtitle: Batik brings SVG into the application
Support dynamic graphics in static generated use-cases
slide: Customise, CAPTCHA and CLI
hint-style: LittleText
subtitle: Sometimes you just have to write your own component
img_rightFifth: c.jpg
Custom Serializers, Transformers and Generators prove invaluable for tight coupling to legacy protocols, interfaces and API's
Web Service, NNTP, EJB's, Charting, SAP
code:
public class EJBTransform extends AbstractDOMTransformer
{
protected org.w3c.dom.Document transform(org.w3c.dom.Document document)
{
org.w3c.dom.Document doc = null;
try
{
Context ctx = new InitialContext();
Object ejbClientHome =
ctx.lookup("ejb/"+configuredEJBApp +
"/com/ejb/services/clientmanager/ejb/ClientManager");
com.ejb.services.clientmanager.ejb.ClientManagerHome clientManagerHome =
(com.ejb.services.clientmanager.ejb.ClientManagerHome)
javax.rmi.PortableRemoteObject.narrow((org.omg.CORBA.Object) ejbClientHome,
com.ejb.services.clientmanager.ejb.ClientManagerHome.class);
com.ejb.services.clientmanager.ejb._ClientManager_Stub clientManager =
(com.ejb.services.clientmanager.ejb._ClientManager_Stub) clientManagerHome.create();
String processData = convert( document );
String updatedData = clientManager.saveClient( processData, "S" );
subtitle: Completely Automated Public Turing test to tell Computers and Humans Apart
Transformer and Reader
img_leftThird: custom.jpg
subtitle: CLI Offline Generation Modem - http://forrest.apache.org/
Many Web 1.0 sites are directed graphs capable of being statically generated (finite user interaction = finite page tree)
code:
slide: Development, Databases and Daisy
hint-style: LittleText
img_rightFifth: d.jpg
subtitle: Avoid the Exclusion Zones that Afflict Web Development Projects
note: Sitemap, Pipeline and Components prevent developers treading on each others toes
Instead
note: They are more likely singing off the same Hymn Sheet
subtitle: SQL Transformer Injects Relational Model into the pipeline DOM
SQL Query result-sets returned as XML was early way of leveraging power of XSLT into Web applications
Typical usage would use JX Generator to enrich the XML FILE WITH request parameters. The second stage of the pipeline invokes the SQL Transformer
XSLT Transformer usage below outputs namespace elements that contain SQL queries
note: The parameters of these queries can be drawn from the input document, passed in from the sitemap and derived from XPath (2.0 in this case)
code:
select appointmentref from
CLIENTMANAGER.APPOINTMENT a, CLIENTMANAGER.CLIENT c
where a.clientuid=c.clientuid and
substr(char(appointmentdate),1,16) = ''
and a.ACTIVE=1 and c.SOURCECODE in
('')
subtitle: Daisy is a CMS that offers rich out-of-the-box functionality combined with solid foundations for extensibility and integration.
slide: eXist, EhCache and Error Handling
hint-style: LittleText
img_rightFifth: e.jpg
slide: Flow, Forms and FOP
hint-style: LittleText
img_rightFifth: f.jpg
slide: Generators
hint-style: LittleText
img_rightFifth: g.jpg
slide: Hippo
hint-style: LittleText
img_rightFifth: h.jpg
slide: Integration, Integration and i18n
hint-style: LittleText
img_rightFifth: i.jpg
slide: Java, Javascript and JFreeChart
hint-style: LittleText
img_rightFifth: j.jpg
img_leftThird: chart.jpg
slide: Kontinuation
hint-style: LittleText
img_rightFifth: k.jpg
slide: LDAP, Lucene and Linotype
hint-style: LittleText
img_rightFifth: l.jpg
slide: Maven, Modules and Messaging
hint-style: LittleText
img_rightFifth: m.jpg
slide: Naming (JNDI)
hint-style: LittleText
img_rightFifth: n.jpg
slide: Objects
hint-style: LittleText
img_rightFifth: o.jpg
slide: Portals, POI and Podcasts
hint-style: LittleText
subtitle: Portal Infrastructure
subtitle: Excel your way into the heart of the corporation
subtitle: podcasting
sound: podcast.mp3
img_rightFifth: p.jpg
slide: xQuery
hint-style: LittleText
img_rightFifth: q.jpg
slide: Readers, Resources and Repositories
hint-style: LittleText
img_rightFifth: r.jpg
slide: Serializers, Sessions and Syndication
hint-style: LittleText
img_rightFifth: s.jpg
slide: Transformers and Tooling
hint-style: LittleText
img_rightFifth: t.jpg
slide: Use-cases, URI's and Utility
hint-style: LittleText
img_rightFifth: u.jpg
slide: Velocity, Validation and Verbosity
hint-style: LittleText
img_rightFifth: v.jpg
slide: Web 2.0, Web3 and WebDAV
hint-style: LittleText
img_rightFifth: w.jpg
slide: XSLT 2.0
hint-style: LittleText
img_rightFifth: x.jpg
slide: YOU
hint-style: LittleText
img_rightFifth: y.jpg
slide: Zeitgeist
hint-style: LittleText
img_rightFifth: z.jpg