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) {
+ }
+
}