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