cocoon-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Carsten Ziegeler" <cziege...@s-und-n.de>
Subject RE: [Proposal]: Advanced Value Substitution
Date Tue, 08 Oct 2002 12:17:54 GMT
Sylvain Wallez wrote:
>
> Good, we're in accordance again ;-)
>
Yup.

> However, can you explain the exact purpose of
> <map:component-configurations>, and how it is handled ?
>
> I see that it is now defined in the Processor interface, but can't
> understand how it is used and what CocoonComponentManager exactly does
> with it (this stack management is black magic).
>
> How is it related to <map:components> which is nothing more than the
> configuration of a ComponentManager and can thus hold any component
> declaration ?
>
Ok...this whole thing is a cool (FS-like) implementation of dynamically
configured components....still there?...

There is sometimes the need for a component which I can configure in the
sitemap, e.g. a generator. When you have a sub sitemap you might want to
configure this component differently. This is no problem with the
cascaded component managers.
But sometimes you want to give your component some information/configuration
and want to extend this in your subsitemap. So if you use this component
in the main sitemap it gets the configuration of the main sitemap.
If you use the component in the subsitemap it gets the configuration of
the main sitemap and the subsitemap.

This is for example used for the authentication handler configuration.
A handler configured in the main sitemap is also available in a sub sitemap,
but handlers configured in a subsitemap are not available in the main
sitemap.

How can this be handled? By the o.a.c.components.SitemapConfigurable
components.
If you look up such a component, the setup() method of the above interface
is invoked for each sitemap already processed (main sitemap, first
subsitemap,
subsubsitemap etc.) This invocation takes only place of a configuration
for this component is in the sitemap.
This configuration is in the map:component-configurations block. The
configuration for the component is enclosed in the role name/short-hint.

Example:
MainSitemap
-----------
<map:component-configurations>
  <global-variables>
     <skin>cocoon</skin>
  </global-variables>
</map:component-configurations>

Sub Sitemap
-----------
<map:component-configurations>
  <global-variables>
     <uri>localhost</uri>
  </global-variables>
</map:component-configurations>

Now, if you lookup the global-variables component in the main sitemap
this component knows one value (for skin) - and if you look it
up in the sub sitemap it knows two values (skin and uri).

The global InputModule in turn uses the "global-variables" component,
so you can write {global:skin} in the main sitemap but not
{global:uri}. However, in the subsitemap both is allowed.

(Man, this should go into the docs....hint...hint)

Carsten



---------------------------------------------------------------------
To unsubscribe, e-mail: cocoon-dev-unsubscribe@xml.apache.org
For additional commands, email: cocoon-dev-help@xml.apache.org


Mime
View raw message