cziegeler 2002/06/07 03:22:43 Modified: src/java/org/apache/cocoon/components Tag: cocoon_2_0_3_branch CocoonComponentManager.java src/java/org/apache/cocoon/components/treeprocessor Tag: cocoon_2_0_3_branch DefaultTreeBuilder.java TreeProcessor.java src/java/org/apache/cocoon/components/treeprocessor/sitemap Tag: cocoon_2_0_3_branch SitemapLanguage.java Log: Fixing doc build Revision Changes Path No revision No revision 1.13.2.2 +12 -9 xml-cocoon2/src/java/org/apache/cocoon/components/CocoonComponentManager.java Index: CocoonComponentManager.java =================================================================== RCS file: /home/cvs/xml-cocoon2/src/java/org/apache/cocoon/components/CocoonComponentManager.java,v retrieving revision 1.13.2.1 retrieving revision 1.13.2.2 diff -u -r1.13.2.1 -r1.13.2.2 --- CocoonComponentManager.java 7 Jun 2002 09:34:23 -0000 1.13.2.1 +++ CocoonComponentManager.java 7 Jun 2002 10:22:42 -0000 1.13.2.2 @@ -72,7 +72,7 @@ * by a special lifecycle handling for a RequestLifecycleComponent * * @author <a href="mailto:[EMAIL PROTECTED]">Carsten Ziegeler</a> - * @version CVS $Id: CocoonComponentManager.java,v 1.13.2.1 2002/06/07 09:34:23 cziegeler Exp $ + * @version CVS $Id: CocoonComponentManager.java,v 1.13.2.2 2002/06/07 10:22:42 cziegeler Exp $ */ public final class CocoonComponentManager extends ExcaliburComponentManager @@ -171,16 +171,19 @@ } final Object[] objects = (Object[]) stack.peek(); final Map components = (Map)objects[2]; - try { - if (component instanceof Recomposable) { - ((Recomposable) component).recompose(this); - } - ((RequestLifecycleComponent) component).setup((org.apache.cocoon.environment.SourceResolver)objects[0], + // first test if the parent CM has already initialized this component + if (components.containsKey( role ) == false) { + try { + if (component instanceof Recomposable) { + ((Recomposable) component).recompose(this); + } + ((RequestLifecycleComponent) component).setup((org.apache.cocoon.environment.SourceResolver)objects[0], (Map)objects[1]); - } catch (Exception local) { - throw new ComponentException("Exception during setup of RequestLifecycleComponent with role '"+role+"'", local); + } catch (Exception local) { + throw new ComponentException("Exception during setup of RequestLifecycleComponent with role '"+role+"'", local); + } + components.put(role, new Object[] {component, this}); } - components.put(role, new Object[] {component, this}); } return component; } No revision No revision 1.3.2.3 +27 -26 xml-cocoon2/src/java/org/apache/cocoon/components/treeprocessor/DefaultTreeBuilder.java Index: DefaultTreeBuilder.java =================================================================== RCS file: /home/cvs/xml-cocoon2/src/java/org/apache/cocoon/components/treeprocessor/DefaultTreeBuilder.java,v retrieving revision 1.3.2.2 retrieving revision 1.3.2.3 diff -u -r1.3.2.2 -r1.3.2.3 --- DefaultTreeBuilder.java 21 Apr 2002 17:38:47 -0000 1.3.2.2 +++ DefaultTreeBuilder.java 7 Jun 2002 10:22:43 -0000 1.3.2.3 @@ -93,7 +93,7 @@ /** * * @author <a href="mailto:[EMAIL PROTECTED]">Sylvain Wallez</a> - * @version CVS $Id: DefaultTreeBuilder.java,v 1.3.2.2 2002/04/21 17:38:47 vgritsenko Exp $ + * @version CVS $Id: DefaultTreeBuilder.java,v 1.3.2.3 2002/06/07 10:22:43 cziegeler Exp $ */ public class DefaultTreeBuilder extends AbstractLoggable implements TreeBuilder, @@ -525,37 +525,38 @@ String type = statement.getAttribute("type", null); - ComponentSelector selector; + ComponentSelector selector = null; try { - selector = (ComponentSelector)this.manager.lookup(role); - } catch(ComponentException ce) { - String msg = "Cannot get component selector for '" + statement.getName() + "' at " + - statement.getLocation(); - getLogger().error(msg, ce); - throw new ConfigurationException(msg, ce); - } + try { + selector = (ComponentSelector)this.manager.lookup(role); + } catch(ComponentException ce) { + String msg = "Cannot get component selector for '" + statement.getName() + "' at " + + statement.getLocation(); + getLogger().error(msg, ce); + throw new ConfigurationException(msg, ce); + } - if (type == null && selector instanceof ExtendedComponentSelector) { - type = ((ExtendedComponentSelector)selector).getDefaultHint(); - } + if (type == null && selector instanceof ExtendedComponentSelector) { + type = ((ExtendedComponentSelector)selector).getDefaultHint(); + } - if (type == null) { - String msg = "No default type exists for '" + statement.getName() + "' at " + - statement.getLocation(); - getLogger().error(msg); - throw new ConfigurationException(msg); - } + if (type == null) { + String msg = "No default type exists for '" + statement.getName() + "' at " + + statement.getLocation(); + getLogger().error(msg); + throw new ConfigurationException(msg); + } - if (!selector.hasComponent(type)) { - String msg = "Type '" + type + "' is not defined for '" + statement.getName() + "' at " + - statement.getLocation(); - getLogger().error(msg); - throw new ConfigurationException(msg); + if (!selector.hasComponent(type)) { + String msg = "Type '" + type + "' is not defined for '" + statement.getName() + "' at " + + statement.getLocation(); + getLogger().error(msg); + throw new ConfigurationException(msg); + } + } finally { + this.manager.release(selector); } - - this.manager.release(selector); - return type; } 1.4.2.1 +13 -8 xml-cocoon2/src/java/org/apache/cocoon/components/treeprocessor/TreeProcessor.java Index: TreeProcessor.java =================================================================== RCS file: /home/cvs/xml-cocoon2/src/java/org/apache/cocoon/components/treeprocessor/TreeProcessor.java,v retrieving revision 1.4 retrieving revision 1.4.2.1 diff -u -r1.4 -r1.4.2.1 --- TreeProcessor.java 31 Mar 2002 21:48:15 -0000 1.4 +++ TreeProcessor.java 7 Jun 2002 10:22:43 -0000 1.4.2.1 @@ -99,14 +99,14 @@ * Interpreted tree-traversal implementation of a pipeline assembly language. * * @author <a href="mailto:[EMAIL PROTECTED]">Sylvain Wallez</a> - * @version CVS $Id: TreeProcessor.java,v 1.4 2002/03/31 21:48:15 sylvain Exp $ + * @version CVS $Id: TreeProcessor.java,v 1.4.2.1 2002/06/07 10:22:43 cziegeler Exp $ */ public class TreeProcessor extends AbstractLoggable implements ThreadSafe, Processor, Composable, Configurable, LogKitManageable, RoleManageable, Initializable, Contextualizable, Disposable { private static final String XCONF_URL = - "resource://org/apache/cocoon/components/treeprocessor/treeprocessor-builtins.xml"; + "resource://org/apache/cocoon/components/treeprocessor/treeprocessor-builtins.xml"; /** The parent TreeProcessor, if any */ protected TreeProcessor parent; @@ -187,7 +187,7 @@ String language, Source source) throws Exception { - + TreeProcessor child = new TreeProcessor(this, manager, language); child.setLogger(getLogger()); child.initialize(); @@ -255,7 +255,7 @@ getLogger().error(msg, e); throw new ConfigurationException(msg, e); } - + // Create a selector for tree builders of all languages this.builderSelector = new ExtendedComponentSelector(Thread.currentThread().getContextClassLoader()); try { @@ -302,9 +302,14 @@ context.setLogger(getLogger()); + SourceHandler oldSourceHandler = environment.getSourceHandler(); + CocoonComponentManager.enterEnvironment(environment, environment.getObjectModel()); try { + environment.setSourceHandler(this.sourceHandler); return process(environment, context); } finally { + CocoonComponentManager.leaveEnvironment(); + environment.setSourceHandler(oldSourceHandler); context.dispose(); } } @@ -340,7 +345,7 @@ // Dispose the previous tree, if any disposeTree(); - + // Get a builder TreeBuilder builder = (TreeBuilder)this.builderSelector.select(this.language); ProcessingNode root; @@ -349,7 +354,7 @@ ((Recomposable)builder).recompose(this.manager); } builder.setProcessor(this); - + if (this.source == null) { // FIXME : make the delay configurable this.source = new DelayedRefreshSourceWrapper(env.resolve(builder.getFileName()), 1000L); @@ -357,8 +362,8 @@ root = builder.build(this.source); this.disposableNodes = builder.getDisposableNodes(); - - } finally { + + } finally { this.builderSelector.release(builder); } No revision No revision 1.4.2.1 +11 -4 xml-cocoon2/src/java/org/apache/cocoon/components/treeprocessor/sitemap/SitemapLanguage.java Index: SitemapLanguage.java =================================================================== RCS file: /home/cvs/xml-cocoon2/src/java/org/apache/cocoon/components/treeprocessor/sitemap/SitemapLanguage.java,v retrieving revision 1.4 retrieving revision 1.4.2.1 diff -u -r1.4 -r1.4.2.1 --- SitemapLanguage.java 26 Mar 2002 10:57:02 -0000 1.4 +++ SitemapLanguage.java 7 Jun 2002 10:22:43 -0000 1.4.2.1 @@ -82,7 +82,7 @@ * The tree builder for the sitemap language. * * @author <a href="mailto:[EMAIL PROTECTED]">Sylvain Wallez</a> - * @version CVS $Id: SitemapLanguage.java,v 1.4 2002/03/26 10:57:02 sylvain Exp $ + * @version CVS $Id: SitemapLanguage.java,v 1.4.2.1 2002/06/07 10:22:43 cziegeler Exp $ */ public class SitemapLanguage extends DefaultTreeBuilder { @@ -201,8 +201,8 @@ * Add a view for a label. This is used to register all views that start from * a given label. * - * @parameter label the label (or pseudo-label) for the view - * @parameter view the view name + * @param label the label (or pseudo-label) for the view + * @param view the view name */ public void addViewForLabel(String label, String view) { getLogger().debug("views:addViewForLabel(" + label + ", " + view + ")"); @@ -226,6 +226,10 @@ */ public Collection getViewsForStatement(String role, String hint, Configuration statement) throws Exception { + if ( role == null || role.trim().equals("") ) { + // FIXME !! + return null; + } String statementLabels = statement.getAttribute("label", null); if (this.isBuildingView) { @@ -247,8 +251,9 @@ Set labels = new HashSet(); // 1 - labels defined on the component + SitemapComponentSelector selector = null; try { - SitemapComponentSelector selector = (SitemapComponentSelector)this.manager.lookup(role + "Selector"); + selector = (SitemapComponentSelector)this.manager.lookup(role + "Selector"); String[] compLabels = selector.getLabels(hint); if (compLabels != null) { for (int i = 0; i < compLabels.length; i++) { @@ -258,6 +263,8 @@ } catch(Exception e) { // Ignore (no selector for this role) getLogger().debug("No selector for role " + role); + } finally { + this.manager.release( selector ); } // 2 - labels defined on this statement
---------------------------------------------------------------------- In case of troubles, e-mail: [EMAIL PROTECTED] To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]