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/02/20 14:02:00 UTC
svn commit: r379124 - in /cocoon/trunk:
cocoon-core/src/main/java/org/apache/cocoon/bean/
cocoon-core/src/main/java/org/apache/cocoon/core/
cocoon-core/src/main/java/org/apache/cocoon/core/container/spring/
cocoon-core/src/main/java/org/apache/cocoon/s...
Author: cziegeler
Date: Mon Feb 20 05:01:59 2006
New Revision: 379124
URL: http://svn.apache.org/viewcvs?rev=379124&view=rev
Log:
Remove log methods from environment and add support for imports of spring configs
Modified:
cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/bean/CocoonWrapper.java
cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/core/BootstrapEnvironment.java
cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/core/CoreUtil.java
cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/core/container/spring/ApplicationContextFactory.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/ConfigurationInfo.java
cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/core/container/spring/XmlConfigCreator.java
cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/servlet/CocoonServlet.java
cocoon/trunk/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portlet/CocoonPortlet.java
Modified: cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/bean/CocoonWrapper.java
URL: http://svn.apache.org/viewcvs/cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/bean/CocoonWrapper.java?rev=379124&r1=379123&r2=379124&view=diff
==============================================================================
--- cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/bean/CocoonWrapper.java (original)
+++ cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/bean/CocoonWrapper.java Mon Feb 20 05:01:59 2006
@@ -692,25 +692,10 @@
}
/**
- * @see org.apache.cocoon.core.BootstrapEnvironment#log(java.lang.String, java.lang.Throwable)
- */
- public void log(String message, Throwable error) {
- this.environmentLogger.error(message, error);
- }
-
- /**
- * @see org.apache.cocoon.core.BootstrapEnvironment#log(java.lang.String)
- */
- public void log(String message) {
- this.environmentLogger.debug(message);
- }
-
- /**
* @see org.apache.cocoon.core.BootstrapEnvironment#setLogger(org.apache.avalon.framework.logger.Logger)
*/
public void setLogger(Logger rootLogger) {
this.logger = rootLogger;
- }
-
+ }
}
}
Modified: cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/core/BootstrapEnvironment.java
URL: http://svn.apache.org/viewcvs/cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/core/BootstrapEnvironment.java?rev=379124&r1=379123&r2=379124&view=diff
==============================================================================
--- cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/core/BootstrapEnvironment.java (original)
+++ cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/core/BootstrapEnvironment.java Mon Feb 20 05:01:59 2006
@@ -89,19 +89,6 @@
*/
Logger getBootstrapLogger(LogLevel logLevel);
- /** Log a message during bootstrapping. This is used to log
- * information before the logging system is setup.
- * @param message A message.
- */
- void log(String message);
-
- /** Log a message during bootstrapping. This is used to log
- * information before the logging system is setup.
- * @param message A message.
- * @param error An error.
- */
- void log(String message, Throwable error);
-
/**
* Pass the root logger back to the environment. As soon as the
* logging system is set up, this method is called.
Modified: cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/core/CoreUtil.java
URL: http://svn.apache.org/viewcvs/cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/core/CoreUtil.java?rev=379124&r1=379123&r2=379124&view=diff
==============================================================================
--- cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/core/CoreUtil.java (original)
+++ cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/core/CoreUtil.java Mon Feb 20 05:01:59 2006
@@ -67,8 +67,6 @@
/**
* This is an utility class to create a new Cocoon instance.
*
- * TODO - Remove dependencies to LogKit and Log4J
- *
* @version $Id$
* @since 2.2
*/
@@ -319,11 +317,6 @@
// settings can't be changed anymore
settings.makeReadOnly();
- // put the core into the context - this is for internal use only
- // The Cocoon container fetches the Core object using the context.
- // FIXME - We shouldn't need this - check where it is used
- this.appContext.put(Core.ROLE, core);
-
// test the setup of the spring based container
this.container = this.setupSpringContainer();
}
@@ -373,13 +366,13 @@
protected MutableSettings createSettings() {
// get the running mode
final String mode = System.getProperty(Settings.PROPERTY_RUNNING_MODE, Settings.DEFAULT_RUNNING_MODE);
- this.env.log("Running in mode: " + mode);
+ this.servletContext.log("Running in mode: " + mode);
// create an empty settings objects
final MutableSettings s = new MutableSettings();
// we need our own resolver
- final SourceResolver resolver = this.createSourceResolver(new LoggerWrapper(this.env));
+ final SourceResolver resolver = this.createSourceResolver(new LoggerWrapper(this.servletContext));
// now read all properties from the properties directory
this.readProperties("context://WEB-INF/properties", s, resolver);
@@ -394,8 +387,8 @@
PropertyProvider provider = (PropertyProvider)ClassUtils.newInstance(className);
s.fill(provider.getProperties());
} catch (Exception ignore) {
- env.log("Unable to get property provider for class " + className, ignore);
- env.log("Continuing initialization.");
+ this.servletContext.log("Unable to get property provider for class " + className, ignore);
+ this.servletContext.log("Continuing initialization.");
}
}
// fill from the environment configuration, like web.xml etc.
@@ -413,15 +406,15 @@
}
}
if ( additionalPropertyFile != null ) {
- env.log("Reading user settings from '" + additionalPropertyFile + "'");
+ this.servletContext.log("Reading user settings from '" + additionalPropertyFile + "'");
final Properties p = new Properties();
try {
FileInputStream fis = new FileInputStream(additionalPropertyFile);
p.load(fis);
fis.close();
} catch (IOException ignore) {
- env.log("Unable to read '" + additionalPropertyFile + "'.", ignore);
- env.log("Continuing initialization.");
+ this.servletContext.log("Unable to read '" + additionalPropertyFile + "'.", ignore);
+ this.servletContext.log("Continuing initialization.");
}
}
// now overwrite with system properties
@@ -506,7 +499,7 @@
final Source src = (Source) c.next();
if ( src.getURI().endsWith(".properties") ) {
final InputStream propsIS = src.getInputStream();
- env.log("Reading settings from '" + src.getURI() + "'.");
+ this.servletContext.log("Reading settings from '" + src.getURI() + "'.");
final Properties p = new Properties();
p.load(propsIS);
propsIS.close();
@@ -515,8 +508,8 @@
}
}
} catch (IOException ignore) {
- env.log("Unable to read from directory 'WEB-INF/properties'.", ignore);
- env.log("Continuing initialization.");
+ this.servletContext.log("Unable to read from directory 'WEB-INF/properties'.", ignore);
+ this.servletContext.log("Continuing initialization.");
} finally {
resolver.release(directory);
}
@@ -860,9 +853,9 @@
}
protected static final class LoggerWrapper implements Logger {
- private final BootstrapEnvironment env;
+ private final ServletContext env;
- public LoggerWrapper(BootstrapEnvironment env) {
+ public LoggerWrapper(ServletContext env) {
this.env = env;
}
Modified: cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/core/container/spring/ApplicationContextFactory.java
URL: http://svn.apache.org/viewcvs/cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/core/container/spring/ApplicationContextFactory.java?rev=379124&r1=379123&r2=379124&view=diff
==============================================================================
--- cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/core/container/spring/ApplicationContextFactory.java (original)
+++ cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/core/container/spring/ApplicationContextFactory.java Mon Feb 20 05:01:59 2006
@@ -62,7 +62,7 @@
ApplicationContext parent,
boolean addCocoon)
throws Exception {
- final String xmlConfig = (new XmlConfigCreator()).createConfig(info.getComponents(), addCocoon);
+ final String xmlConfig = (new XmlConfigCreator()).createConfig(info, addCocoon);
Resource rsc = new ByteArrayResource(xmlConfig.getBytes("utf-8"));
Logger logger = env.logger;
if ( info.rootLogger != null ) {
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=379124&r1=379123&r2=379124&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 Feb 20 05:01:59 2006
@@ -169,7 +169,8 @@
if ("include".equals(componentName)) {
this.handleInclude(contextURI, loadedURIs, componentConfig);
-
+ } else if ( "include-beans".equals(componentName) ) {
+ this.handleBeanInclude(contextURI, componentConfig);
} else {
// Component declaration
// Find the role
@@ -348,6 +349,69 @@
uri = uri.substring(pos+1);
}
return WildcardHelper.match(null, uri, parsedPattern);
+ }
+
+ protected void handleBeanInclude(final String contextURI,
+ final Configuration includeStatement)
+ throws ConfigurationException {
+ final String includeURI = includeStatement.getAttribute("src", null);
+ String directoryURI = null;
+ if (includeURI == null) {
+ // check for directories
+ directoryURI = includeStatement.getAttribute("dir", null);
+ }
+ if (includeURI == null && directoryURI == null) {
+ throw new ConfigurationException(
+ "Include statement must either have a 'src' or 'dir' attribute, at "
+ + includeStatement.getLocation());
+ }
+
+ if (includeURI != null) {
+ Source src = null;
+ try {
+ src = this.resolver.resolveURI(includeURI, contextURI, null);
+
+ this.configInfo.addImport(src.getURI());
+ } catch (Exception e) {
+ throw new ConfigurationException("Cannot load '" + includeURI + "' at "
+ + includeStatement.getLocation(), e);
+ } finally {
+ this.resolver.release(src);
+ }
+
+ } else {
+ final String pattern = includeStatement.getAttribute("pattern", null);
+ int[] parsedPattern = null;
+ if (pattern != null) {
+ parsedPattern = WildcardHelper.compilePattern(pattern);
+ }
+ Source directory = null;
+ try {
+ directory = this.resolver.resolveURI(directoryURI, contextURI, CONTEXT_PARAMETERS);
+ if (directory instanceof TraversableSource) {
+ final Iterator children = ((TraversableSource) directory).getChildren()
+ .iterator();
+ while (children.hasNext()) {
+ final Source s = (Source) children.next();
+ try {
+ if (parsedPattern == null || this.match(s.getURI(), parsedPattern)) {
+ this.configInfo.addImport(s.getURI());
+ }
+ } finally {
+ this.resolver.release(s);
+ }
+ }
+ } else {
+ throw new ConfigurationException("Include.dir must point to a directory, '"
+ + directory.getURI() + "' is not a directory.'");
+ }
+ } catch (IOException ioe) {
+ throw new ConfigurationException("Unable to read configurations from "
+ + directoryURI);
+ } finally {
+ this.resolver.release(directory);
+ }
+ }
}
/**
Modified: cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/core/container/spring/ConfigurationInfo.java
URL: http://svn.apache.org/viewcvs/cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/core/container/spring/ConfigurationInfo.java?rev=379124&r1=379123&r2=379124&view=diff
==============================================================================
--- cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/core/container/spring/ConfigurationInfo.java (original)
+++ cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/core/container/spring/ConfigurationInfo.java Mon Feb 20 05:01:59 2006
@@ -15,7 +15,9 @@
*/
package org.apache.cocoon.core.container.spring;
+import java.util.ArrayList;
import java.util.HashMap;
+import java.util.List;
import java.util.Map;
/**
@@ -43,6 +45,9 @@
/** List of components. */
private final Map components = new HashMap();
+ /** List of imports for spring configurations. */
+ private final List imports = new ArrayList();
+
public ConfigurationInfo() {
this.shorthands = new HashMap();
this.classNames = new HashMap();
@@ -85,5 +90,13 @@
public Map getKeyClassNames() {
return this.keyClassNames;
+ }
+
+ public void addImport(String uri) {
+ this.imports.add(uri);
+ }
+
+ public List getImports() {
+ return this.imports;
}
}
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=379124&r1=379123&r2=379124&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 Feb 20 05:01:59 2006
@@ -43,14 +43,23 @@
protected static final String DOCTYPE =
"<!DOCTYPE beans PUBLIC \"-//SPRING//DTD BEAN//EN\" \"http://www.springframework.org/dtd/spring-beans.dtd\">\n";
- public String createConfig(Map components, boolean addCocoon)
+ public String createConfig(ConfigurationInfo info, boolean addCocoon)
throws Exception {
+ final Map components = info.getComponents();
final List pooledRoles = new ArrayList();
final StringBuffer buffer = new StringBuffer();
buffer.append(XMLHEADER);
buffer.append(DOCTYPE);
buffer.append("<beans>\n");
+ // first add includes
+ final Iterator includeIter = info.getImports().iterator();
+ while ( includeIter.hasNext() ) {
+ final String uri = (String)includeIter.next();
+ buffer.append("<import resource=\"");
+ buffer.append(uri);
+ buffer.append("\"/>\n");
+ }
// start with "static" components: ServiceManager
buffer.append("<bean");
this.appendAttribute(buffer, "id", ServiceManager.class.getName());
@@ -183,8 +192,8 @@
final Iterator prI = pooledRoles.iterator();
while ( prI.hasNext() ) {
final String role = (String)prI.next();
- final Object info = components.remove(role);
- components.put(role + "Pooled", info);
+ final Object pooledInfo = components.remove(role);
+ components.put(role + "Pooled", pooledInfo);
}
return buffer.toString();
}
Modified: cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/servlet/CocoonServlet.java
URL: http://svn.apache.org/viewcvs/cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/servlet/CocoonServlet.java?rev=379124&r1=379123&r2=379124&view=diff
==============================================================================
--- cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/servlet/CocoonServlet.java (original)
+++ cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/servlet/CocoonServlet.java Mon Feb 20 05:01:59 2006
@@ -620,20 +620,6 @@
}
/**
- * @see org.apache.cocoon.core.BootstrapEnvironment#log(java.lang.String)
- */
- public void log(String message) {
- this.config.getServletContext().log(message);
- }
-
- /**
- * @see org.apache.cocoon.core.BootstrapEnvironment#log(java.lang.String, java.lang.Throwable)
- */
- public void log(String message, Throwable error) {
- this.config.getServletContext().log(message, error);
- }
-
- /**
* @see org.apache.cocoon.core.BootstrapEnvironment#setLogger(org.apache.avalon.framework.logger.Logger)
*/
public void setLogger(Logger rootLogger) {
Modified: cocoon/trunk/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portlet/CocoonPortlet.java
URL: http://svn.apache.org/viewcvs/cocoon/trunk/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portlet/CocoonPortlet.java?rev=379124&r1=379123&r2=379124&view=diff
==============================================================================
--- cocoon/trunk/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portlet/CocoonPortlet.java (original)
+++ cocoon/trunk/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portlet/CocoonPortlet.java Mon Feb 20 05:01:59 2006
@@ -830,20 +830,6 @@
}
/**
- * @see org.apache.cocoon.core.BootstrapEnvironment#log(java.lang.String)
- */
- public void log(String message) {
- this.config.getPortletContext().log(message);
- }
-
- /**
- * @see org.apache.cocoon.core.BootstrapEnvironment#log(java.lang.String, java.lang.Throwable)
- */
- public void log(String message, Throwable error) {
- this.config.getPortletContext().log(message, error);
- }
-
- /**
* @see org.apache.cocoon.core.BootstrapEnvironment#setLogger(org.apache.avalon.framework.logger.Logger)
*/
public void setLogger(Logger rootLogger) {