You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@cocoon.apache.org by cz...@apache.org on 2006/03/20 21:13:10 UTC
svn commit: r387294 - in
/cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon:
components/treeprocessor/ components/treeprocessor/sitemap/ core/
core/container/spring/
Author: cziegeler
Date: Mon Mar 20 12:13:07 2006
New Revision: 387294
URL: http://svn.apache.org/viewcvs?rev=387294&view=rev
Log:
Fix core reload bug and improve factory creation
Use console logger for now
Modified:
cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/components/treeprocessor/ConcreteTreeProcessor.java
cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/components/treeprocessor/TreeBuilder.java
cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/components/treeprocessor/TreeProcessor.java
cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/components/treeprocessor/sitemap/SitemapLanguage.java
cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/core/MutableSettings.java
cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/core/container/spring/AvalonServiceSelector.java
cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/core/container/spring/BeanFactoryUtil.java
cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/core/container/spring/ConfigReader.java
cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/core/container/spring/XmlConfigCreator.java
Modified: cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/components/treeprocessor/ConcreteTreeProcessor.java
URL: http://svn.apache.org/viewcvs/cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/components/treeprocessor/ConcreteTreeProcessor.java?rev=387294&r1=387293&r2=387294&view=diff
==============================================================================
--- cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/components/treeprocessor/ConcreteTreeProcessor.java (original)
+++ cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/components/treeprocessor/ConcreteTreeProcessor.java Mon Mar 20 12:13:07 2006
@@ -264,6 +264,8 @@
}
stack.push(oldContext);
}
+ System.out.println("Setting factory: " + this.beanFactory);
+ System.out.println("Parent: " + this.beanFactory.getParentBeanFactory());
request.setAttribute(CocoonBeanFactory.BEAN_FACTORY_REQUEST_ATTRIBUTE, this.beanFactory, Request.REQUEST_SCOPE);
}
@@ -301,11 +303,11 @@
}
try {
+ final EnterSitemapEvent enterEvent = new EnterSitemapEvent(this, environment);
+ this.enteredSitemap(enterEvent);
// invoke listeners
// only invoke if pipeline is not internally
if ( !context.isBuildingPipelineOnly() ) {
- final EnterSitemapEvent enterEvent = new EnterSitemapEvent(this, environment);
- this.enteredSitemap(enterEvent);
final Iterator enterSEI = this.enterSitemapEventListeners.iterator();
while ( enterSEI.hasNext() ) {
final EnterSitemapEventListener current = (EnterSitemapEventListener)enterSEI.next();
@@ -336,11 +338,11 @@
} finally {
this.sitemapExecutor.leaveSitemap(this, environment.getObjectModel());
+ final LeaveSitemapEvent leaveEvent = new LeaveSitemapEvent(this, environment);
+ this.leftSitemap(leaveEvent);
// invoke listeners
// only invoke if pipeline is not internally
if ( !context.isBuildingPipelineOnly() ) {
- final LeaveSitemapEvent leaveEvent = new LeaveSitemapEvent(this, environment);
- this.leftSitemap(leaveEvent);
final Iterator leaveSEI = this.leaveSitemapEventListeners.iterator();
while ( leaveSEI.hasNext() ) {
final LeaveSitemapEventListener current = (LeaveSitemapEventListener)leaveSEI.next();
Modified: cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/components/treeprocessor/TreeBuilder.java
URL: http://svn.apache.org/viewcvs/cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/components/treeprocessor/TreeBuilder.java?rev=387294&r1=387293&r2=387294&view=diff
==============================================================================
--- cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/components/treeprocessor/TreeBuilder.java (original)
+++ cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/components/treeprocessor/TreeBuilder.java Mon Mar 20 12:13:07 2006
@@ -106,14 +106,14 @@
/**
* Return all event listers that are registered for the
* {@link org.apache.cocoon.sitemap.EnterSitemapEvent}.
- * @return A list of {@link EventComponent}s.
+ * @return A list of components.
*/
List getEnterSitemapEventListeners();
/**
* Return all event listers that are registered for the
* {@link org.apache.cocoon.sitemap.LeaveSitemapEvent}.
- * @return A list of {@link EventComponent}s.
+ * @return A list of components.
*/
List getLeaveSitemapEventListeners();
}
Modified: cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/components/treeprocessor/TreeProcessor.java
URL: http://svn.apache.org/viewcvs/cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/components/treeprocessor/TreeProcessor.java?rev=387294&r1=387293&r2=387294&view=diff
==============================================================================
--- cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/components/treeprocessor/TreeProcessor.java (original)
+++ cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/components/treeprocessor/TreeProcessor.java Mon Mar 20 12:13:07 2006
@@ -410,14 +410,9 @@
treeBuilder.setProcessor(newProcessor);
ProcessingNode root = treeBuilder.build(sitemapProgram);
- ConfigurableListableBeanFactory factory = treeBuilder.getBeanFactory();
- if ( factory == null ) {
- factory = this.beanFactory;
- } else {
- this.beanFactory = factory;
- }
+ this.beanFactory = treeBuilder.getBeanFactory();
newProcessor.setProcessorData(
- factory,
+ this.beanFactory,
treeBuilder.getServiceManager(),
root,
treeBuilder.getDisposableNodes(),
Modified: cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/components/treeprocessor/sitemap/SitemapLanguage.java
URL: http://svn.apache.org/viewcvs/cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/components/treeprocessor/sitemap/SitemapLanguage.java?rev=387294&r1=387293&r2=387294&view=diff
==============================================================================
--- cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/components/treeprocessor/sitemap/SitemapLanguage.java (original)
+++ cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/components/treeprocessor/sitemap/SitemapLanguage.java Mon Mar 20 12:13:07 2006
@@ -388,14 +388,11 @@
// a configuration
// FIXME: Internal configurations doesn't work in a non bean factory
// environment
+ this.itsBeanFactory = this.createBeanFactory(this.itsContext, componentConfig);
+ this.itsManager = (ServiceManager) this.itsBeanFactory.getBean(ServiceManager.class.getName());
if (componentConfig != null) {
- this.itsBeanFactory = this.createBeanFactory(this.itsContext, componentConfig);
- this.itsManager = (ServiceManager) this.itsBeanFactory.getBean(ServiceManager.class
- .getName());
// only register listeners if a new bean factory is created
this.registerListeners();
- } else {
- this.itsManager = manager;
}
this.itsComponentInfo = (ProcessorComponentInfo) this.itsManager
.lookup(ProcessorComponentInfo.ROLE);
@@ -658,27 +655,27 @@
throws Exception {
// setup spring container
// first, get the correct parent
- ConfigurableListableBeanFactory parentContext = this.beanFactory;
+ ConfigurableListableBeanFactory parentFactory = this.beanFactory;
final Request request = ContextHelper.getRequest(context);
if (request.getAttribute(CocoonBeanFactory.BEAN_FACTORY_REQUEST_ATTRIBUTE) != null) {
- parentContext = (ConfigurableListableBeanFactory) request
+ parentFactory = (ConfigurableListableBeanFactory) request
.getAttribute(CocoonBeanFactory.BEAN_FACTORY_REQUEST_ATTRIBUTE);
}
- final AvalonEnvironment ae = new AvalonEnvironment();
- ae.context = context;
- ae.logger = this.getLogger();
- ae.servletContext = ((ServletConfig) context.get(CocoonServlet.CONTEXT_SERVLET_CONFIG))
- .getServletContext();
- ae.settings = (Settings) this.beanFactory.getBean(Settings.ROLE);
- final ConfigurationInfo parentConfigInfo = (ConfigurationInfo) parentContext
- .getBean(ConfigurationInfo.class.getName());
- final ConfigurationInfo ci = ConfigReader.readConfiguration(config, parentConfigInfo, ae);
-
- final ConfigurableListableBeanFactory sitemapContext = BeanFactoryUtil.createBeanFactory(ae, ci,
- parentContext, false);
-
- return sitemapContext;
+ if ( config != null ) {
+ final AvalonEnvironment ae = new AvalonEnvironment();
+ ae.context = context;
+ ae.logger = this.getLogger();
+ ae.servletContext = ((ServletConfig) context.get(CocoonServlet.CONTEXT_SERVLET_CONFIG))
+ .getServletContext();
+ ae.settings = (Settings) this.beanFactory.getBean(Settings.ROLE);
+ final ConfigurationInfo parentConfigInfo = (ConfigurationInfo) parentFactory
+ .getBean(ConfigurationInfo.class.getName());
+ final ConfigurationInfo ci = ConfigReader.readConfiguration(config, parentConfigInfo, ae);
+
+ return BeanFactoryUtil.createBeanFactory(ae, ci, parentFactory, false);
+ }
+ return parentFactory;
}
/**
Modified: cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/core/MutableSettings.java
URL: http://svn.apache.org/viewcvs/cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/core/MutableSettings.java?rev=387294&r1=387293&r2=387294&view=diff
==============================================================================
--- cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/core/MutableSettings.java (original)
+++ cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/core/MutableSettings.java Mon Mar 20 12:13:07 2006
@@ -938,7 +938,7 @@
* @see org.apache.cocoon.core.BaseSettings#getCreationTime()
*/
public long getCreationTime() {
- if ( this.creationTime != null ) {
+ if ( this.creationTime == null ) {
if ( this.parent != null ) {
return this.parent.getCreationTime();
}
Modified: cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/core/container/spring/AvalonServiceSelector.java
URL: http://svn.apache.org/viewcvs/cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/core/container/spring/AvalonServiceSelector.java?rev=387294&r1=387293&r2=387294&view=diff
==============================================================================
--- cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/core/container/spring/AvalonServiceSelector.java (original)
+++ cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/core/container/spring/AvalonServiceSelector.java Mon Mar 20 12:13:07 2006
@@ -16,8 +16,10 @@
package org.apache.cocoon.core.container.spring;
import org.apache.avalon.framework.service.ServiceException;
-import org.apache.avalon.framework.service.ServiceManager;
import org.apache.avalon.framework.service.ServiceSelector;
+import org.springframework.beans.BeansException;
+import org.springframework.beans.factory.BeanFactory;
+import org.springframework.beans.factory.BeanFactoryAware;
/**
* This bean acts like a Avalon {@link ServiceSelector}.
@@ -25,15 +27,21 @@
* @since 2.2
* @version $Id$
*/
-public class AvalonServiceSelector implements ServiceSelector {
+public class AvalonServiceSelector implements BeanFactoryAware {
protected final String role;
- protected final ServiceManager manager;
protected String defaultKey;
+ protected BeanFactory beanFactory;
- public AvalonServiceSelector(ServiceManager manager, String r) {
+ public AvalonServiceSelector(String r) {
this.role = r + '/';
- this.manager = manager;
+ }
+
+ /**
+ * @see org.springframework.beans.factory.BeanFactoryAware#setBeanFactory(org.springframework.beans.factory.BeanFactory)
+ */
+ public void setBeanFactory(BeanFactory factory) throws BeansException {
+ this.beanFactory = factory;
}
public void setDefault(String value) {
@@ -47,20 +55,20 @@
if ( key == null || key.toString().length() == 0 ) {
key = this.defaultKey;
}
- return this.manager.lookup(this.role + key);
+ return this.beanFactory.getBean(this.role + key);
}
/**
* @see org.apache.avalon.framework.service.ServiceSelector#isSelectable(java.lang.Object)
*/
public boolean isSelectable(Object key) {
- return this.manager.hasService(this.role + key);
+ return this.beanFactory.containsBean(this.role + key);
}
/**
* @see org.apache.avalon.framework.service.ServiceSelector#release(java.lang.Object)
*/
public void release(Object component) {
- this.manager.release(component);
+ // nothing to do
}
}
Modified: cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/core/container/spring/BeanFactoryUtil.java
URL: http://svn.apache.org/viewcvs/cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/core/container/spring/BeanFactoryUtil.java?rev=387294&r1=387293&r2=387294&view=diff
==============================================================================
--- cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/core/container/spring/BeanFactoryUtil.java (original)
+++ cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/core/container/spring/BeanFactoryUtil.java Mon Mar 20 12:13:07 2006
@@ -28,6 +28,7 @@
import org.apache.avalon.framework.configuration.DefaultConfiguration;
import org.apache.avalon.framework.context.Context;
import org.apache.avalon.framework.context.DefaultContext;
+import org.apache.avalon.framework.logger.ConsoleLogger;
import org.apache.avalon.framework.logger.Logger;
import org.apache.cocoon.ProcessingUtil;
import org.apache.cocoon.acting.Action;
@@ -63,7 +64,7 @@
*/
public class BeanFactoryUtil {
- protected BeanFactory beanFactory;
+ protected ConfigurableListableBeanFactory beanFactory;
/**
* Create a new (sub) bean factory.
@@ -153,8 +154,9 @@
protected static Logger initLogger(ServletContext servletContext,
Settings settings)
throws Exception {
+ return new ConsoleLogger(ConsoleLogger.LEVEL_DEBUG);
// create a bootstrap logger
- int logLevel;
+ /* int logLevel;
final String logLevelString = settings.getBootstrapLogLevel();
if ( "DEBUG".equalsIgnoreCase(logLevelString) ) {
logLevel = ServletLogger.LEVEL_DEBUG;
@@ -207,7 +209,7 @@
if (accesslogger == null) {
accesslogger = "cocoon";
}
- return loggerManager.getLoggerForCategory(accesslogger);
+ return loggerManager.getLoggerForCategory(accesslogger);*/
}
protected static void changeLogLevel(Configuration[] configs, String level) {
@@ -266,27 +268,30 @@
throws Exception {
// setup spring container
// first, get the correct parent
- BeanFactory parentContext = this.beanFactory;
+ ConfigurableListableBeanFactory parentFactory = this.beanFactory;
final Request request = ContextHelper.getRequest(sitemapContext);
- if ( request.getAttribute(CocoonBeanFactory.BEAN_FACTORY_REQUEST_ATTRIBUTE) != null ) {
- parentContext = (ConfigurableListableBeanFactory)request.getAttribute(CocoonBeanFactory.BEAN_FACTORY_REQUEST_ATTRIBUTE);
+ if (request.getAttribute(CocoonBeanFactory.BEAN_FACTORY_REQUEST_ATTRIBUTE) != null) {
+ parentFactory = (ConfigurableListableBeanFactory) request
+ .getAttribute(CocoonBeanFactory.BEAN_FACTORY_REQUEST_ATTRIBUTE);
}
- final AvalonEnvironment ae = new AvalonEnvironment();
- ae.context = sitemapContext;
- if ( sitemapLogger != null ) {
- ae.logger = sitemapLogger;
- } else {
- ae.logger = (Logger)parentContext.getBean(ProcessingUtil.LOGGER_ROLE);
+ if ( config != null ) {
+ final AvalonEnvironment ae = new AvalonEnvironment();
+ ae.context = sitemapContext;
+ if ( sitemapLogger != null ) {
+ ae.logger = sitemapLogger;
+ } else {
+ ae.logger = (Logger)parentFactory.getBean(ProcessingUtil.LOGGER_ROLE);
+ }
+ ae.servletContext = ((ServletConfig) sitemapContext.get(CocoonServlet.CONTEXT_SERVLET_CONFIG))
+ .getServletContext();
+ ae.settings = (Settings) this.beanFactory.getBean(Settings.ROLE);
+ final ConfigurationInfo parentConfigInfo = (ConfigurationInfo) parentFactory
+ .getBean(ConfigurationInfo.class.getName());
+ final ConfigurationInfo ci = ConfigReader.readConfiguration(config, parentConfigInfo, ae);
+
+ return BeanFactoryUtil.createBeanFactory(ae, ci, parentFactory, false);
}
- ae.servletContext = ((ServletConfig)sitemapContext.get(CocoonServlet.CONTEXT_SERVLET_CONFIG)).getServletContext();
- ae.settings = (Settings)parentContext.getBean(Settings.ROLE);
- final ConfigurationInfo parentConfigInfo = (ConfigurationInfo)parentContext.getBean(ConfigurationInfo.class.getName());
- final ConfigurationInfo ci = ConfigReader.readConfiguration(config, parentConfigInfo, ae);
-
- final ConfigurableListableBeanFactory sitemapFactory =
- BeanFactoryUtil.createBeanFactory(ae, ci, parentContext, false);
-
- return sitemapFactory;
+ return parentFactory;
}
}
Modified: cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/core/container/spring/ConfigReader.java
URL: http://svn.apache.org/viewcvs/cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/core/container/spring/ConfigReader.java?rev=387294&r1=387293&r2=387294&view=diff
==============================================================================
--- cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/core/container/spring/ConfigReader.java (original)
+++ cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/core/container/spring/ConfigReader.java Mon Mar 20 12:13:07 2006
@@ -57,7 +57,7 @@
public static ConfigurationInfo readConfiguration(String source, AvalonEnvironment env)
throws Exception {
- ConfigReader converter = new ConfigReader(env, null);
+ final ConfigReader converter = new ConfigReader(env, null);
converter.convert(source);
return converter.configInfo;
}
@@ -66,7 +66,7 @@
ConfigurationInfo parentInfo,
AvalonEnvironment env)
throws Exception {
- ConfigReader converter = new ConfigReader(env, parentInfo);
+ final ConfigReader converter = new ConfigReader(env, parentInfo);
converter.convert(config, null);
return converter.configInfo;
}
@@ -106,7 +106,7 @@
protected void convert(String relativePath)
throws Exception {
if ( this.getLogger().isInfoEnabled() ) {
- this.getLogger().info("Reading avalon configuration from " + relativePath);
+ this.getLogger().info("Reading Avalon configuration from " + relativePath);
}
final Source root = this.resolver.resolveURI(relativePath);
try {
@@ -123,7 +123,7 @@
protected void convert(Configuration config, String rootUri)
throws Exception {
if ( this.getLogger().isInfoEnabled() ) {
- this.getLogger().info("Converting avalon configuration");
+ this.getLogger().info("Converting Avalon configuration from configuration object: " + config);
}
// It's possible to define a logger on a per sitemap/service manager base.
// This is the default logger for all components defined with this sitemap/manager.
Modified: cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/core/container/spring/XmlConfigCreator.java
URL: http://svn.apache.org/viewcvs/cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/core/container/spring/XmlConfigCreator.java?rev=387294&r1=387293&r2=387294&view=diff
==============================================================================
--- cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/core/container/spring/XmlConfigCreator.java (original)
+++ cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/core/container/spring/XmlConfigCreator.java Mon Mar 20 12:13:07 2006
@@ -125,9 +125,6 @@
buffer.append("/>\n");
} else {
buffer.append(">\n");
- buffer.append(" <constructor-arg ref=\"");
- buffer.append(ServiceManager.class.getName());
- buffer.append("\"/>\n");
buffer.append(" <constructor-arg type=\"java.lang.String\"><value>");
buffer.append(role.substring(0, role.length()-8));
buffer.append("</value></constructor-arg>\n");