cziegeler    2004/01/07 05:21:23

  Modified:    src/java/org/apache/cocoon/generation AbstractGenerator.java
               src/java/org/apache/cocoon/bean CocoonBean.java
               src/java/org/apache/cocoon/components
                        SitemapConfigurableAccessor.java
  Log:
  One step for making SitemapConfigurable work
  
  Revision  Changes    Path
  1.6       +5 -5      
cocoon-2.2/src/java/org/apache/cocoon/generation/AbstractGenerator.java
  
  Index: AbstractGenerator.java
  ===================================================================
  RCS file: 
/home/cvs/cocoon-2.2/src/java/org/apache/cocoon/generation/AbstractGenerator.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- AbstractGenerator.java    6 Dec 2003 21:22:08 -0000       1.5
  +++ AbstractGenerator.java    7 Jan 2004 13:21:23 -0000       1.6
  @@ -73,13 +73,13 @@
       implements Generator {
   
       /** The current <code>SourceResolver</code>. */
  -    protected SourceResolver resolver=null;
  +    protected SourceResolver resolver;
       /** The current <code>Map</code> objectModel. */
  -    protected Map objectModel=null;
  +    protected Map objectModel;
       /** The current <code>Parameters</code>. */
  -    protected Parameters parameters=null;
  +    protected Parameters parameters;
       /** The source URI associated with the request or <b>null</b>. */
  -    protected String source=null;
  +    protected String source;
   
       /**
        * Set the <code>SourceResolver</code>, object model <code>Map</code>,
  
  
  
  1.45      +1 -1      
cocoon-2.2/src/java/org/apache/cocoon/bean/CocoonBean.java
  
  Index: CocoonBean.java
  ===================================================================
  RCS file: 
/home/cvs/cocoon-2.2/src/java/org/apache/cocoon/bean/CocoonBean.java,v
  retrieving revision 1.44
  retrieving revision 1.45
  diff -u -r1.44 -r1.45
  --- CocoonBean.java   5 Jan 2004 08:16:00 -0000       1.44
  +++ CocoonBean.java   7 Jan 2004 13:21:23 -0000       1.45
  @@ -326,7 +326,7 @@
       private LifecycleExtensionManager getLifecycleExtensionManager()
       {
           LifecycleExtensionManager manager = new LifecycleExtensionManager();
  -        manager.addAccessorExtension(new SitemapConfigurableAccessor());
  +        manager.addCreatorExtension(new SitemapConfigurableAccessor());
   
           return manager;
       }
  
  
  
  1.3       +38 -22    
cocoon-2.2/src/java/org/apache/cocoon/components/SitemapConfigurableAccessor.java
  
  Index: SitemapConfigurableAccessor.java
  ===================================================================
  RCS file: 
/home/cvs/cocoon-2.2/src/java/org/apache/cocoon/components/SitemapConfigurableAccessor.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- SitemapConfigurableAccessor.java  5 Nov 2003 21:29:08 -0000       1.2
  +++ SitemapConfigurableAccessor.java  7 Jan 2004 13:21:23 -0000       1.3
  @@ -50,8 +50,11 @@
   */
   package org.apache.cocoon.components;
   
  +import org.apache.avalon.fortress.ContainerManagerConstants;
  +import org.apache.avalon.fortress.MetaInfoManager;
   import org.apache.avalon.framework.context.Context;
  -import org.apache.avalon.lifecycle.Accessor;
  +import org.apache.avalon.framework.service.ServiceManager;
  +import org.apache.avalon.lifecycle.Creator;
   
   import java.util.HashMap;
   import java.util.Map;
  @@ -62,31 +65,44 @@
    * @author <a href="bloritsch.at.apache.org">Berin Loritsch</a>
    * @version CVS $ Revision: 1.1 $
    */
  -public class SitemapConfigurableAccessor implements Accessor
  -{
  -    /** The [EMAIL PROTECTED] SitemapConfigurationHolder}s */
  +public class SitemapConfigurableAccessor 
  +implements Creator {
  +
  +    /** 
  +     * The [EMAIL PROTECTED] SitemapConfigurationHolder}s 
  +     */
       private Map m_sitemapConfigurationHolders = new HashMap( 15 );
   
  -    public void access( Object object, Context context ) throws Exception
  -    {
  -        if ( object instanceof SitemapConfigurable )
  -        {
  -            String role = (String) context.get( "component.name" );
  -            // FIXME: how can we prevent that this is called over and over 
again?
  -            SitemapConfigurationHolder holder;
  -
  -            holder = (SitemapConfigurationHolder) 
m_sitemapConfigurationHolders.get( role );
  -            if ( null == holder )
  -            {
  -                // create new holder
  -                holder = new DefaultSitemapConfigurationHolder( role );
  -                m_sitemapConfigurationHolders.put( role, holder );
  +    /* (non-Javadoc)
  +     * @see org.apache.avalon.lifecycle.Creator#create(java.lang.Object, 
org.apache.avalon.framework.context.Context)
  +     */
  +    public void create(Object object, Context context) 
  +    throws Exception {
  +        if ( object instanceof SitemapConfigurable ) {
  +            ServiceManager manager = (ServiceManager) 
context.get(ContainerManagerConstants.SERVICE_MANAGER);
  +            MetaInfoManager metaInfoManager = 
(MetaInfoManager)manager.lookup(MetaInfoManager.ROLE);
  +            try {
  +                String role = 
metaInfoManager.getMetaInfoForClassname(object.getClass().getName()).getConfigurationName();
  +                SitemapConfigurationHolder holder;
  +                
  +                holder = (SitemapConfigurationHolder) 
m_sitemapConfigurationHolders.get( role );
  +                if ( null == holder ) {
  +                    // create new holder
  +                    holder = new DefaultSitemapConfigurationHolder( role );
  +                    m_sitemapConfigurationHolders.put( role, holder );
  +                }
  +                
  +                ( (SitemapConfigurable) object ).configure( holder );
  +            } finally {
  +                manager.release(metaInfoManager);
               }
  -
  -            ( (SitemapConfigurable) object ).configure( holder );
           }
       }
   
  -    public void release( Object object, Context context )
  -    {}
  +    /* (non-Javadoc)
  +     * @see org.apache.avalon.lifecycle.Creator#destroy(java.lang.Object, 
org.apache.avalon.framework.context.Context)
  +     */
  +    public void destroy(Object object, Context context) {
  +    }
  +
   }
  
  
  

Reply via email to