You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@cocoon.apache.org by da...@apache.org on 2006/04/05 23:04:03 UTC
svn commit: r391810 - in
/cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/core:
CoreUtil.java container/spring/BeanFactoryUtil.java
Author: danielf
Date: Wed Apr 5 14:04:02 2006
New Revision: 391810
URL: http://svn.apache.org/viewcvs?rev=391810&view=rev
Log:
Continued refactor CoreUtil, so that its different products: Settings, (Avalon) Context, BeanFactory, Logger and Cocoon can be created independently. This is needed for setting up blocks and in general for making the setup less monolithic.
Modified:
cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/core/CoreUtil.java
cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/core/container/spring/BeanFactoryUtil.java
Modified: cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/core/CoreUtil.java
URL: http://svn.apache.org/viewcvs/cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/core/CoreUtil.java?rev=391810&r1=391809&r2=391810&view=diff
==============================================================================
--- cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/core/CoreUtil.java (original)
+++ cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/core/CoreUtil.java Wed Apr 5 14:04:02 2006
@@ -188,9 +188,46 @@
// create settings
this.settings = this.createSettings();
+ // Create bootstrap logger
+ this.log = BeanFactoryUtil.createBootstrapLogger(this.environmentContext, settings.getBootstrapLogLevel());
+
+ if (this.log.isDebugEnabled())
+ this.log.debug("Context URL: " + contextUrl);
+
+ // initialize some directories
+ CoreUtil.initSettingsFiles(this.settings, this.log);
+
+ // update configuration
+ final URL u = this.getConfigFile(this.settings.getConfiguration());
+ this.settings.setConfiguration(u.toExternalForm());
+
+ // dump system properties
+ this.dumpSystemProperties();
+
+ // settings can't be changed anymore
+ this.settings.makeReadOnly();
+
+ // Init logger
+ this.log = BeanFactoryUtil.createRootLogger(this.environmentContext,
+ this.settings);
+
+ this.createClassloader();
+ // add the Avalon context attributes that are contained in the settings
+ CoreUtil.addSettingsContext(this.appContext, this.settings, this.classloader);
+
+ // test the setup of the spring based container
+ this.container = this.setupSpringContainer();
+ }
+
+ /**
+ * Init work, upload and cache directory
+ * @param settings
+ * @param log
+ */
+ public static void initSettingsFiles(MutableSettings settings, Logger log) {
// first init the work-directory for the logger.
// this is required if we are running inside a war file!
- final String workDirParam = this.settings.getWorkDirectory();
+ final String workDirParam = settings.getWorkDirectory();
File workDir;
if (workDirParam != null) {
// No context path : consider work-directory as absolute
@@ -199,44 +236,39 @@
workDir = new File("cocoon-files");
}
workDir.mkdirs();
- this.settings.setWorkDirectory(workDir.getAbsolutePath());
-
- // Init logger
- this.log = BeanFactoryUtil.createRootLogger(this.environmentContext,
- this.settings);
+ settings.setWorkDirectory(workDir.getAbsolutePath());
// Output some debug info
- if (this.log.isDebugEnabled()) {
- this.log.debug("Context URL: " + contextUrl);
+ if (log.isDebugEnabled()) {
if (workDirParam != null) {
- this.log.debug("Using work-directory " + workDir);
+ log.debug("Using work-directory " + workDir);
} else {
- this.log.debug("Using default work-directory " + workDir);
+ log.debug("Using default work-directory " + workDir);
}
}
- final String uploadDirParam = this.settings.getUploadDirectory();
+ final String uploadDirParam = settings.getUploadDirectory();
File uploadDir;
if (uploadDirParam != null) {
uploadDir = new File(uploadDirParam);
- if (this.log.isDebugEnabled()) {
- this.log.debug("Using upload-directory " + uploadDir);
+ if (log.isDebugEnabled()) {
+ log.debug("Using upload-directory " + uploadDir);
}
} else {
uploadDir = new File(workDir, "upload-dir" + File.separator);
- if (this.log.isDebugEnabled()) {
- this.log.debug("Using default upload-directory " + uploadDir);
+ if (log.isDebugEnabled()) {
+ log.debug("Using default upload-directory " + uploadDir);
}
}
uploadDir.mkdirs();
- this.settings.setUploadDirectory(uploadDir.getAbsolutePath());
+ settings.setUploadDirectory(uploadDir.getAbsolutePath());
- String cacheDirParam = this.settings.getCacheDirectory();
+ String cacheDirParam = settings.getCacheDirectory();
File cacheDir;
if (cacheDirParam != null) {
cacheDir = new File(cacheDirParam);
- if (this.log.isDebugEnabled()) {
- this.log.debug("Using cache-directory " + cacheDir);
+ if (log.isDebugEnabled()) {
+ log.debug("Using cache-directory " + cacheDir);
}
} else {
cacheDir = new File(workDir, "cache-dir" + File.separator);
@@ -244,29 +276,12 @@
if (parent != null) {
parent.mkdirs();
}
- if (this.log.isDebugEnabled()) {
- this.log.debug("cache-directory was not set - defaulting to " + cacheDir);
+ if (log.isDebugEnabled()) {
+ log.debug("cache-directory was not set - defaulting to " + cacheDir);
}
}
cacheDir.mkdirs();
- this.settings.setCacheDirectory(cacheDir.getAbsolutePath());
-
- // update configuration
- final URL u = this.getConfigFile(this.settings.getConfiguration());
- this.settings.setConfiguration(u.toExternalForm());
-
- // dump system properties
- this.dumpSystemProperties();
-
- // settings can't be changed anymore
- this.settings.makeReadOnly();
-
- this.createClassloader();
- // add the Avalon context attributes that are contained in the settings
- CoreUtil.addSettingsContext(this.appContext, this.settings, this.classloader);
-
- // test the setup of the spring based container
- this.container = this.setupSpringContainer();
+ settings.setCacheDirectory(cacheDir.getAbsolutePath());
}
public static DefaultContext createContext(Settings settings, Context environmentContext,
Modified: cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/core/container/spring/BeanFactoryUtil.java
URL: http://svn.apache.org/viewcvs/cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/core/container/spring/BeanFactoryUtil.java?rev=391810&r1=391809&r2=391810&view=diff
==============================================================================
--- cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/core/container/spring/BeanFactoryUtil.java (original)
+++ cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/core/container/spring/BeanFactoryUtil.java Wed Apr 5 14:04:02 2006
@@ -150,13 +150,16 @@
throw new CoreInitializationException("Cannot setup log4j logging system.", ce);
}
}
-
- protected static Logger initLogger(ServletContext servletContext,
- Settings settings)
- throws Exception {
+
+ /**
+ * Create a bootstrap logger that uses the servlet context
+ * @param servletContext
+ * @param logLevelString
+ * @return the logger
+ */
+ public static Logger createBootstrapLogger(ServletContext servletContext, String logLevelString) {
// create a bootstrap logger
int logLevel;
- final String logLevelString = settings.getBootstrapLogLevel();
if ( "DEBUG".equalsIgnoreCase(logLevelString) ) {
logLevel = ServletLogger.LEVEL_DEBUG;
} else if ( "WARN".equalsIgnoreCase(logLevelString) ) {
@@ -166,7 +169,15 @@
} else {
logLevel = ServletLogger.LEVEL_INFO;
}
- final Logger bootstrapLogger = new ServletLogger(servletContext, "Cocoon", logLevel);
+ return new ServletLogger(servletContext, "Cocoon", logLevel);
+ }
+
+ protected static Logger initLogger(ServletContext servletContext,
+ Settings settings)
+ throws Exception {
+ // create a bootstrap logger
+ final String logLevelString = settings.getBootstrapLogLevel();
+ final Logger bootstrapLogger = BeanFactoryUtil.createBootstrapLogger(servletContext, logLevelString);
// create an own context for the logger manager