Author: cziegeler
Date: Sat Mar 12 11:17:13 2005
New Revision: 157268

URL: http://svn.apache.org/viewcvs?view=rev&rev=157268
Log:
Move lazyMode configuration into settings object.
Create new Core object.
Code formatting

Modified:
    
cocoon/blocks/unsupported/profiler/trunk/java/org/apache/cocoon/components/profiler/ProfilingNonCachingProcessingPipeline.java
    cocoon/trunk/src/core/java/org/apache/cocoon/configuration/Settings.java
    cocoon/trunk/src/core/java/org/apache/cocoon/core/Core.java
    
cocoon/trunk/src/core/java/org/apache/cocoon/core/container/CoreServiceManager.java
    cocoon/trunk/src/java/org/apache/cocoon/cocoon.roles
    
cocoon/trunk/src/java/org/apache/cocoon/components/treeprocessor/ProcessorComponentInfo.java
    cocoon/trunk/src/java/org/apache/cocoon/generation/StatusGenerator.java
    cocoon/trunk/src/java/org/apache/cocoon/reading/ImageReader.java

Modified: 
cocoon/blocks/unsupported/profiler/trunk/java/org/apache/cocoon/components/profiler/ProfilingNonCachingProcessingPipeline.java
URL: 
http://svn.apache.org/viewcvs/cocoon/blocks/unsupported/profiler/trunk/java/org/apache/cocoon/components/profiler/ProfilingNonCachingProcessingPipeline.java?view=diff&r1=157267&r2=157268
==============================================================================
--- 
cocoon/blocks/unsupported/profiler/trunk/java/org/apache/cocoon/components/profiler/ProfilingNonCachingProcessingPipeline.java
 (original)
+++ 
cocoon/blocks/unsupported/profiler/trunk/java/org/apache/cocoon/components/profiler/ProfilingNonCachingProcessingPipeline.java
 Sat Mar 12 11:17:13 2005
@@ -55,7 +55,7 @@
      */
     public void service(ServiceManager manager) throws ServiceException {
         super.service(manager);
-`        this.profiler = (Profiler) manager.lookup(Profiler.ROLE);
+        this.profiler = (Profiler) manager.lookup(Profiler.ROLE);
     }
 
     /**

Modified: 
cocoon/trunk/src/core/java/org/apache/cocoon/configuration/Settings.java
URL: 
http://svn.apache.org/viewcvs/cocoon/trunk/src/core/java/org/apache/cocoon/configuration/Settings.java?view=diff&r1=157267&r2=157268
==============================================================================
--- cocoon/trunk/src/core/java/org/apache/cocoon/configuration/Settings.java 
(original)
+++ cocoon/trunk/src/core/java/org/apache/cocoon/configuration/Settings.java 
Sat Mar 12 11:17:13 2005
@@ -275,6 +275,12 @@
     public static final String KEY_CONFIGURATION_RELOAD_DELAY = 
"configuration.reloaddelay";
 
     /**
+     * Lazy mode for component loading
+     */
+    protected boolean lazyMode = false;
+    public static final String KEY_LAZY_MODE = "core.LazyMode";
+
+    /**
      * Create a new settings object
      */
     public Settings() {
@@ -340,6 +346,8 @@
                         this.formEncoding = value;
                     } else if ( key.equals(KEY_LOGGING_OVERRIDE_LOGLEVEL) ) {
                         this.overrideLogLevel = value;
+                    } else if ( key.equals(KEY_LAZY_MODE) ) {
+                        this.lazyMode = BooleanUtils.toBoolean(value);
                     }
                 }
             }
@@ -695,6 +703,20 @@
         this.configurationReloadDelay = configurationReloadDelay;
     }
 
+    /**
+     * @return Returns the lazyMode.
+     */
+    public boolean isLazyMode() {
+        return this.lazyMode;
+    }
+
+    /**
+     * @param lazyMode The lazyMode to set.
+     */
+    public void setLazyMode(boolean lazyMode) {
+        this.lazyMode = lazyMode;
+    }
+
     /* (non-Javadoc)
      * @see java.lang.Object#toString()
      */
@@ -725,7 +747,8 @@
           KEY_WORK_DIRECTORY + " : " + this.workDirectory + '\n' +
           KEY_FORM_ENCODING + " : " + this.formEncoding + '\n' +
           KEY_SHOWTIME + " : " + this.showTime + '\n' +
-          KEY_HIDE_SHOWTIME + " : " + this.hideShowTime + '\n';
+          KEY_HIDE_SHOWTIME + " : " + this.hideShowTime + '\n' +
+          KEY_LAZY_MODE + " : " + this.lazyMode + '\n';
     }
 
     public String getProperty(String name) {
@@ -785,6 +808,8 @@
                 value = this.formEncoding;
             } else if ( sKey.equals(KEY_LOGGING_OVERRIDE_LOGLEVEL) ) {
                 value = this.overrideLogLevel;
+            } else if ( sKey.equals(KEY_LAZY_MODE) ) {
+                value = String.valueOf(this.lazyMode);
             }
        }
 

Modified: cocoon/trunk/src/core/java/org/apache/cocoon/core/Core.java
URL: 
http://svn.apache.org/viewcvs/cocoon/trunk/src/core/java/org/apache/cocoon/core/Core.java?view=diff&r1=157267&r2=157268
==============================================================================
--- cocoon/trunk/src/core/java/org/apache/cocoon/core/Core.java (original)
+++ cocoon/trunk/src/core/java/org/apache/cocoon/core/Core.java Sat Mar 12 
11:17:13 2005
@@ -1,16 +1,16 @@
-/* 
+/*
  * Copyright 2005 The Apache Software Foundation
  * Licensed  under the  Apache License,  Version 2.0  (the "License");
  * you may not use  this file  except in  compliance with the License.
- * You may obtain a copy of the License at 
- * 
+ * You may obtain a copy of the License at
+ *
  *   http://www.apache.org/licenses/LICENSE-2.0
- * 
+ *
  * Unless required by applicable law or agreed to in writing, software
  * distributed  under the  License is distributed on an "AS IS" BASIS,
  * WITHOUT  WARRANTIES OR CONDITIONS  OF ANY KIND, either  express  or
  * implied.
- * 
+ *
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
@@ -23,20 +23,43 @@
 import org.apache.avalon.framework.CascadingRuntimeException;
 import org.apache.avalon.framework.context.Context;
 import org.apache.avalon.framework.context.ContextException;
+import org.apache.avalon.framework.context.Contextualizable;
 import org.apache.cocoon.configuration.Settings;
 
 /**
- * The Core
- * 
+ * This is the core Cocoon component.
+ * It can be looked up to get access to various information about the
+ * current installation.
+ *
+ * The core of Cocoon is a singleton object that is created on startup.
+ *
  * @version SVN $Id$
+ * @since 2.2
  */
-public class Core {
+public class Core
+    implements Contextualizable {
 
-    /** Application <code>Context</code> Key for the settings @since 2.2 */
+    /** Application <code>Context</code> Key for the settings. Please don't
+     * use this constant to lookup the settings object. Lookup the core
+     * component and use [EMAIL PROTECTED] #getSettings()} instead. */
     public static final String CONTEXT_SETTINGS = "settings";
 
+    /**
+     * The cleanup threads that are invoked after the processing of a
+     * request is finished.
+     */
     private static final ThreadLocal cleanup = new ThreadLocal();
-    
+
+    /** The component context. */
+    private Context context;
+
+    /* (non-Javadoc)
+     * @see 
org.apache.avalon.framework.context.Contextualizable#contextualize(org.apache.avalon.framework.context.Context)
+     */
+    public void contextualize(Context context) throws ContextException {
+        this.context = context;
+    }
+
     public static void addCleanupTask(CleanupTask task) {
         List l = (List)cleanup.get();
         if ( l == null ) {
@@ -45,7 +68,7 @@
         }
         l.add(task);
     }
-    
+
     public static void cleanup() {
         List l = (List)cleanup.get();
         if ( l != null ) {
@@ -57,17 +80,34 @@
             l.clear();
         }
     }
-    
+
     public static interface CleanupTask {
-        
+
         void invoke();
     }
-    
+
+    /**
+     * Return the settings.
+     */
+    public Settings getSettings() {
+        return getSettings(this.context);
+    }
+
     /**
-     * Return the current response
-     * @param context The component context
-     * @return The response
-     * @since 2.2
+     * Return the component context.
+     * This method allows access to the component context for other components
+     * that are not created by an Avalon based container.
+     */
+    public Context getContext() {
+        return this.context;
+    }
+
+    /**
+     * Return the current settings.
+     * Please don't use this method directly, look up the Core component
+     * and use [EMAIL PROTECTED] #getSettings()} instead.
+     * @param context The component context.
+     * @return The settings.
      */
     public static final Settings getSettings(Context context) {
         // the settings object is always present
@@ -77,5 +117,5 @@
             throw new CascadingRuntimeException("Unable to get the settings 
object from the context.", ce);
         }
     }
-    
+
 }

Modified: 
cocoon/trunk/src/core/java/org/apache/cocoon/core/container/CoreServiceManager.java
URL: 
http://svn.apache.org/viewcvs/cocoon/trunk/src/core/java/org/apache/cocoon/core/container/CoreServiceManager.java?view=diff&r1=157267&r2=157268
==============================================================================
--- 
cocoon/trunk/src/core/java/org/apache/cocoon/core/container/CoreServiceManager.java
 (original)
+++ 
cocoon/trunk/src/core/java/org/apache/cocoon/core/container/CoreServiceManager.java
 Sat Mar 12 11:17:13 2005
@@ -1,16 +1,16 @@
-/* 
+/*
  * Copyright 2002-2005 The Apache Software Foundation
  * Licensed  under the  Apache License,  Version 2.0  (the "License");
  * you may not use  this file  except in  compliance with the License.
- * You may obtain a copy of the License at 
- * 
+ * You may obtain a copy of the License at
+ *
  *   http://www.apache.org/licenses/LICENSE-2.0
- * 
+ *
  * Unless required by applicable law or agreed to in writing, software
  * distributed  under the  License is distributed on an "AS IS" BASIS,
  * WITHOUT  WARRANTIES OR CONDITIONS  OF ANY KIND, either  express  or
  * implied.
- * 
+ *
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
@@ -65,16 +65,16 @@
 public class CoreServiceManager
         extends AbstractLogEnabled
         implements Contextualizable, ThreadSafe, Disposable, Initializable, 
ServiceManager, Configurable {
-    
+
     /**
      * An empty configuration object, that can be used when no configuration 
is known but one
      * is needed.
      */
     public static final Configuration EMPTY_CONFIGURATION = new 
DefaultConfiguration("-", "unknown location");
-    
+
     /** Parameter map for the context protocol */
     protected static final Map CONTEXT_PARAMETERS = 
Collections.singletonMap("force-traversable", Boolean.TRUE);
-    
+
     /** The application context for components */
     protected Context context;
 
@@ -95,20 +95,21 @@
 
     /** LoggerManager. */
     protected LoggerManager loggerManager;
-    
+
     private ComponentEnvironment componentEnv;
-    
-    private boolean lazyMode = 
Boolean.getBoolean("org.apache.cocoon.core.LazyMode");
-    
+
+    /** The settings */
+    private Settings settings;
+
     /** The location where this manager is defined */
     protected String location;
-    
+
     /** The parent ServiceManager */
     protected ServiceManager parentManager;
-    
+
     /** The classloader to get classes from */
     protected ClassLoader classloader;
-    
+
     /** The resolver used to resolve includes. It is lazily loaded in [EMAIL 
PROTECTED] #getSourceResolver()}. */
     private SourceResolver cachedSourceResolver;
 
@@ -121,14 +122,14 @@
     public CoreServiceManager( final ServiceManager parent, final ClassLoader 
classloader ) {
         this.parentManager = parent;
         this.classloader = classloader;
-        
+
         RoleManager parentRoleManager = null;
         // get role manager and logger manager
         if ( parent instanceof CoreServiceManager ) {
             parentRoleManager = ((CoreServiceManager)parent).roleManager;
             this.loggerManager = ((CoreServiceManager)parent).loggerManager;
         }
-        
+
         // Always create a role manager, it can be filled several times either 
through
         // the root "roles" attribute or through loading of includes
         this.roleManager = new RoleManager(parentRoleManager);
@@ -144,8 +145,6 @@
     public void enableLogging(Logger logger) {
         super.enableLogging(logger);
         this.roleManager.enableLogging(logger);
-        String msg = "Lazy mode: " + this.lazyMode;
-        logger.debug(msg);
     }
 
     /* (non-Javadoc)
@@ -153,15 +152,16 @@
      */
     public void contextualize( final Context context ) {
         this.context = context;
+        this.settings = Core.getSettings(context);
     }
-    
+
     /**
      * Configure the LoggerManager.
      */
     public void setLoggerManager( final LoggerManager manager ) {
         this.loggerManager = manager;
     }
-    
+
     public void setRoleManager (RoleManager rm) {
         if (rm != null) {
             // Override the one eventually got in the parent (see constructor)
@@ -173,12 +173,12 @@
      * @see 
org.apache.avalon.framework.configuration.Configurable#configure(org.apache.avalon.framework.configuration.Configuration)
      */
     public void configure(Configuration configuration) throws 
ConfigurationException {
-                
+
         this.componentEnv = new ComponentEnvironment(this.classloader, 
getLogger(), this.roleManager, this.loggerManager, this.context, this);
-        
+
         // Setup location
         this.location = configuration.getLocation();
-        
+
         // Find the current URI
         String currentURI;
         int pos = this.location.lastIndexOf(':');
@@ -189,7 +189,7 @@
             pos = this.location.lastIndexOf(':', pos);
             currentURI = this.location.substring(0, pos-1);
         }
-        
+
         try {
             // and load configuration with a empty list of loaded 
configurations
             parseConfiguration(configuration, currentURI, new HashSet());
@@ -227,7 +227,7 @@
                 throw e;
             }
         }
-        
+
 //        Object[] keyArray = this.componentHandlers.keySet().toArray();
 //        java.util.Arrays.sort(keyArray);
 //        for (int i = 0; i < keyArray.length; i++) {
@@ -454,11 +454,11 @@
                               " but its handler could not be located." );
         }
     }
-    
+
     
//=============================================================================================
     // Additional public & protected contract
     
//=============================================================================================
-    
+
     /**
      * Add a new component to the manager.
      *
@@ -480,7 +480,7 @@
         if ( 
"org.apache.cocoon.components.ExtendedComponentSelector".equals(className)) {
             className = DefaultServiceSelector.class.getName();
         }
-        
+
         if( this.getLogger().isDebugEnabled() ) {
             this.getLogger().debug( "Adding component (" + role + " = " + 
className + ")" );
         }
@@ -491,7 +491,7 @@
             // the new definition to feed this manager with its components.
             checkComponentOverride(role, className, configuration, handler);
         }
-        
+
         try {
             handler = this.getComponentHandler(role, className, configuration, 
info);
 
@@ -505,7 +505,7 @@
         } catch( final Exception e ) {
             throw new ConfigurationException( "Could not add component defined 
at " + configuration.getLocation(), e );
         }
-        
+
 //        // Initialize shadow selector now, it will feed this service manager
 //        if ( DefaultServiceSelector.class.isAssignableFrom( component )) {
 //            try {
@@ -517,7 +517,7 @@
 //            }
 //        }
     }
-    
+
     /**
      * Add an existing object to the manager. The object should be fully 
configured as no
      * setup lifecycle methods are called. On manager disposal, the 
<code>Disposable</code>
@@ -532,16 +532,16 @@
             throw new ServiceException(role,
                 "Cannot add components to an initialized CoreServiceManager.");
         }
-        
+
         ComponentHandler handler = 
(ComponentHandler)this.componentHandlers.get(role);
         if (handler != null) {
             ComponentInfo info = handler.getInfo();
             throw new ServiceException(role, "Component already defined at " + 
info.getLocation()); 
         }
-        
+
         this.componentHandlers.put(role, new 
InstanceComponentHandler(getLogger(), instance));
     }
-    
+
     /**
      * Add an alias to a role, i.e. define a synonym for the role.
      * 
@@ -563,14 +563,14 @@
                 handler = 
(ComponentHandler)current.componentHandlers.get(existingRole);
             }
         }
-        
+
         if (handler == null) {
             throw new ServiceException(newRole, "Cannot alias non-existing 
role " + existingRole);
         }
- 
+
         this.componentHandlers.put(newRole, new 
AliasComponentHandler(this.getLogger(), handler));
     }
-    
+
     /**
      * Initialize the component
      * @throws ServiceException
@@ -579,11 +579,11 @@
     throws ServiceException {
         // we do nothing here, can be used in subclasses
     }
-    
+
     
//=============================================================================================
     // Private methods
     
//=============================================================================================
-    
+
     /**
      * Obtain a new ComponentHandler for the specified component. 
      * 
@@ -609,8 +609,8 @@
         }
         info.setConfiguration(configuration);
         info.setServiceClassName(className);
-        
-        if (!lazyMode || configuration.getAttributeAsBoolean("preload", false) 
|| role.endsWith("Selector")) {
+
+        if (!this.settings.isLazyMode() || 
configuration.getAttributeAsBoolean("preload", false) || 
role.endsWith("Selector")) {
             return AbstractComponentHandler.getComponentHandler(
                     role, this.componentEnv, info);
         }
@@ -624,9 +624,9 @@
 
         for( int i = 0; i < configurations.length; i++ ) {
             final Configuration componentConfig = configurations[i];
-            
+
             final String componentName = componentConfig.getName();
-            
+
             if ("classpath".equals(componentName)) {
                 // Ignore
             } else if ("include".equals(componentName)) {
@@ -645,7 +645,7 @@
                             "' at " + componentConfig.getLocation());
                     }
                 }
-                
+
                 // Find the className
                 String className = componentConfig.getAttribute("class", null);
                 if (className == null) {
@@ -656,7 +656,7 @@
                     }
                     className = info.getServiceClassName();
                 }
-                
+
                 // If it has a "name" attribute, add it to the role (similar 
to the
                 // declaration within a service selector)
                 // Note: this has to be done *after* finding the className 
above as we change the role
@@ -669,7 +669,7 @@
             }
         }
     }
-    
+
     private void handleInclude(String contextURI, Set loadedURIs, 
Configuration includeStatement)
             throws ConfigurationException {
         String includeURI = includeStatement.getAttribute("src", null);
@@ -682,10 +682,10 @@
             throw new ConfigurationException("Include statement must either 
have a 'src' or 'dir' attribute, at " +
                     includeStatement.getLocation());
         }
-        
+
         // Setup the source resolver if needed
         setupSourceResolver();
-        
+
         if ( includeURI != null ) {
             Source src;
             try {
@@ -727,9 +727,9 @@
     throws ConfigurationException {
         // If already loaded: do nothing
         try {
-            
+
             String uri = src.getURI();
-            
+
             if (!loadedURIs.contains(uri)) {
                 if ( this.getLogger().isDebugEnabled() ) {
                     this.getLogger().debug("Loading configuration from: " + 
uri);
@@ -746,7 +746,7 @@
                     throw new ConfigurationException("Cannot load '" + uri + 
"' at " + includeStatement.getLocation(), e);
                 }
                 loadedURIs.add(uri);
-                
+
                 // what is it?
                 String includeKind = includeConfig.getName();
                 if (includeKind.equals("components")) {
@@ -764,14 +764,14 @@
             this.cachedSourceResolver.release(src);
         }
     }
-    
+
     /**
      * If the parent manager does not exist or does not
      * provide a source resolver, a simple one is created here to load the 
file.
      */
     private void setupSourceResolver() {
         if (this.cachedSourceResolver == null) {
-            
+
             if (this.parentManager != null && 
this.parentManager.hasService(SourceResolver.ROLE)) {
                 try {
                     this.cachedSourceResolver = 
(SourceResolver)this.parentManager.lookup(SourceResolver.ROLE);
@@ -812,7 +812,7 @@
         }
         this.cachedSourceResolver = null;
     }
-    
+
     /** 
      * Check if a component can be overriden. Only [EMAIL PROTECTED] 
DefaultSelector} or its subclasses can be
      * overriden, as they directly feed this manager with their component 
definitions and are empty
@@ -827,7 +827,7 @@
             throw new ConfigurationException("Role " + role + " redefined with 
a different class name, at " +
                     config.getLocation());
         }
-        
+
         Class clazz;
         try {
             clazz = this.componentEnv.loadClass(className);

Modified: cocoon/trunk/src/java/org/apache/cocoon/cocoon.roles
URL: 
http://svn.apache.org/viewcvs/cocoon/trunk/src/java/org/apache/cocoon/cocoon.roles?view=diff&r1=157267&r2=157268
==============================================================================
--- cocoon/trunk/src/java/org/apache/cocoon/cocoon.roles (original)
+++ cocoon/trunk/src/java/org/apache/cocoon/cocoon.roles Sat Mar 12 11:17:13 
2005
@@ -29,6 +29,10 @@
 ]>
 
 <role-list>
+  <!-- This is the Cocoon core -->
+  <role name="org.apache.cocoon.core.Core"
+        default-class="org.apache.cocoon.core.Core"
+        model="singleton"/>
 
   <role name="org.apache.cocoon.components.classloader.ClassLoaderFactory"
         
default-class="org.apache.cocoon.components.classloader.DefaultClassLoaderFactory"/>

Modified: 
cocoon/trunk/src/java/org/apache/cocoon/components/treeprocessor/ProcessorComponentInfo.java
URL: 
http://svn.apache.org/viewcvs/cocoon/trunk/src/java/org/apache/cocoon/components/treeprocessor/ProcessorComponentInfo.java?view=diff&r1=157267&r2=157268
==============================================================================
--- 
cocoon/trunk/src/java/org/apache/cocoon/components/treeprocessor/ProcessorComponentInfo.java
 (original)
+++ 
cocoon/trunk/src/java/org/apache/cocoon/components/treeprocessor/ProcessorComponentInfo.java
 Sat Mar 12 11:17:13 2005
@@ -24,7 +24,6 @@
 
 import org.apache.avalon.framework.configuration.Configuration;
 import org.apache.avalon.framework.configuration.DefaultConfiguration;
-import org.apache.avalon.framework.service.ServiceManager;
 import org.apache.cocoon.acting.Action;
 import org.apache.cocoon.components.ComponentInfo;
 import org.apache.cocoon.components.pipeline.ProcessingPipeline;

Modified: 
cocoon/trunk/src/java/org/apache/cocoon/generation/StatusGenerator.java
URL: 
http://svn.apache.org/viewcvs/cocoon/trunk/src/java/org/apache/cocoon/generation/StatusGenerator.java?view=diff&r1=157267&r2=157268
==============================================================================
--- cocoon/trunk/src/java/org/apache/cocoon/generation/StatusGenerator.java 
(original)
+++ cocoon/trunk/src/java/org/apache/cocoon/generation/StatusGenerator.java Sat 
Mar 12 11:17:13 2005
@@ -359,6 +359,7 @@
         this.addValue(Settings.KEY_FORM_ENCODING, s.getFormEncoding());
         this.addValue(Settings.KEY_SHOWTIME, s.isShowTime());
         this.addValue(Settings.KEY_HIDE_SHOWTIME, s.isHideShowTime());
+        this.addValue(Settings.KEY_LAZY_MODE, s.isLazyMode());
     }
 
     private void genProperties() throws SAXException {

Modified: cocoon/trunk/src/java/org/apache/cocoon/reading/ImageReader.java
URL: 
http://svn.apache.org/viewcvs/cocoon/trunk/src/java/org/apache/cocoon/reading/ImageReader.java?view=diff&r1=157267&r2=157268
==============================================================================
--- cocoon/trunk/src/java/org/apache/cocoon/reading/ImageReader.java (original)
+++ cocoon/trunk/src/java/org/apache/cocoon/reading/ImageReader.java Sat Mar 12 
11:17:13 2005
@@ -31,7 +31,6 @@
 import org.apache.avalon.framework.parameters.Parameters;
 import org.apache.cocoon.ProcessingException;
 import org.apache.cocoon.environment.SourceResolver;
-import org.apache.commons.lang.BooleanUtils;
 import org.xml.sax.SAXException;
 
 import com.sun.image.codec.jpeg.ImageFormatException;


Reply via email to