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/08/22 23:08:32 UTC
svn commit: r433754 - in /cocoon/trunk/core:
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/core/container/spring/avalon/
cocoon-webapp/sr...
Author: cziegeler
Date: Tue Aug 22 14:08:31 2006
New Revision: 433754
URL: http://svn.apache.org/viewvc?rev=433754&view=rev
Log:
Configure spring context listener for testing
Updates to the avalon configuration readers
Added:
cocoon/trunk/core/cocoon-webapp/src/main/webapp/WEB-INF/applicationContext.xml (with props)
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/ConfigReader.java
cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/core/container/spring/avalon/ConfigReader.java
cocoon/trunk/core/cocoon-webapp/src/main/webapp/WEB-INF/web.xml
Modified: cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/core/CoreUtil.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/core/CoreUtil.java?rev=433754&r1=433753&r2=433754&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 Tue Aug 22 14:08:31 2006
@@ -33,8 +33,6 @@
import org.apache.avalon.framework.logger.Logger;
import org.apache.cocoon.Constants;
import org.apache.cocoon.components.ContextHelper;
-import org.apache.cocoon.components.source.SourceUtil;
-import org.apache.cocoon.components.source.impl.DelayedRefreshSourceWrapper;
import org.apache.cocoon.configuration.PropertyProvider;
import org.apache.cocoon.configuration.Settings;
import org.apache.cocoon.configuration.impl.MutableSettings;
@@ -44,17 +42,13 @@
import org.apache.cocoon.core.container.spring.ConfigReader;
import org.apache.cocoon.core.container.spring.ConfigurationInfo;
import org.apache.cocoon.core.container.util.ComponentContext;
-import org.apache.cocoon.core.container.util.ConfigurationBuilder;
import org.apache.cocoon.core.container.util.SimpleSourceResolver;
import org.apache.cocoon.util.ClassUtils;
import org.apache.cocoon.util.location.Location;
import org.apache.cocoon.util.location.LocationImpl;
import org.apache.cocoon.util.location.LocationUtils;
-import org.apache.excalibur.source.Source;
import org.apache.excalibur.source.SourceResolver;
-import org.apache.excalibur.source.impl.URLSource;
import org.springframework.beans.factory.config.ConfigurableBeanFactory;
-import org.xml.sax.InputSource;
/**
* This is an utility class to create a new Cocoon instance.
@@ -349,25 +343,6 @@
throws Exception {
if (log.isInfoEnabled()) {
log.info("Reading root configuration: " + settings.getConfiguration());
- }
-
- URLSource urlSource = new URLSource();
- urlSource.init(new URL(settings.getConfiguration()), null);
- final Source configurationFile = new DelayedRefreshSourceWrapper(urlSource,
- settings.getReloadDelay("config"));
- final InputSource is = SourceUtil.getInputSource(configurationFile);
-
- final ConfigurationBuilder builder = new ConfigurationBuilder(settings);
- final Configuration rootConfig = builder.build(is);
-
- if (!"cocoon".equals(rootConfig.getName())) {
- throw new ConfigurationException("Invalid configuration file\n" + rootConfig.toString());
- }
- if (log.isDebugEnabled()) {
- log.debug("Configuration version: " + rootConfig.getAttribute("version"));
- }
- if (!Constants.CONF_VERSION.equals(rootConfig.getAttribute("version"))) {
- throw new ConfigurationException("Invalid configuration schema version. Must be '" + Constants.CONF_VERSION + "'.");
}
if (log.isInfoEnabled()) {
Modified: cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/core/container/spring/ConfigReader.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/core/container/spring/ConfigReader.java?rev=433754&r1=433753&r2=433754&view=diff
==============================================================================
--- cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/core/container/spring/ConfigReader.java (original)
+++ cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/core/container/spring/ConfigReader.java Tue Aug 22 14:08:31 2006
@@ -29,6 +29,7 @@
import org.apache.avalon.framework.configuration.Configuration;
import org.apache.avalon.framework.configuration.ConfigurationException;
import org.apache.avalon.framework.logger.AbstractLogEnabled;
+import org.apache.cocoon.Constants;
import org.apache.cocoon.components.source.SourceUtil;
import org.apache.cocoon.core.container.util.ConfigurationBuilder;
import org.apache.cocoon.core.container.util.SimpleSourceResolver;
@@ -133,7 +134,16 @@
try {
final ConfigurationBuilder b = new ConfigurationBuilder(this.environment.settings);
final Configuration config = b.build(SourceUtil.getInputSource(root));
-
+ // validate cocoon.xconf
+ if (!"cocoon".equals(config.getName())) {
+ throw new ConfigurationException("Invalid configuration file\n" + config.toString());
+ }
+ if (this.getLogger().isDebugEnabled()) {
+ this.getLogger().debug("Configuration version: " + config.getAttribute("version"));
+ }
+ if (!Constants.CONF_VERSION.equals(config.getAttribute("version"))) {
+ throw new ConfigurationException("Invalid configuration schema version. Must be '" + Constants.CONF_VERSION + "'.");
+ }
this.convert(config, null, root.getURI());
} finally {
Modified: cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/core/container/spring/avalon/ConfigReader.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/core/container/spring/avalon/ConfigReader.java?rev=433754&r1=433753&r2=433754&view=diff
==============================================================================
--- cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/core/container/spring/avalon/ConfigReader.java (original)
+++ cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/core/container/spring/avalon/ConfigReader.java Tue Aug 22 14:08:31 2006
@@ -27,7 +27,8 @@
import org.apache.avalon.framework.configuration.Configuration;
import org.apache.avalon.framework.configuration.ConfigurationException;
-import org.apache.cocoon.core.container.spring.AvalonEnvironment;
+import org.apache.cocoon.Constants;
+import org.apache.cocoon.configuration.Settings;
import org.apache.cocoon.core.container.spring.ComponentInfo;
import org.apache.cocoon.core.container.spring.ConfigurationInfo;
import org.apache.cocoon.core.container.util.ConfigurationBuilder;
@@ -56,40 +57,40 @@
/** The configuration info. */
protected final ConfigurationInfo configInfo;
- /** Avalon environment. */
- protected final AvalonEnvironment environment;
+ /** Settings. */
+ protected final Settings settings;
/** All component configurations. */
protected final List componentConfigs = new ArrayList();
- public static ConfigurationInfo readConfiguration(String source, AvalonEnvironment env)
+ public static ConfigurationInfo readConfiguration(String source, Settings settings)
throws Exception {
- final ConfigReader converter = new ConfigReader(env, null, null);
+ final ConfigReader converter = new ConfigReader(settings, null, null);
converter.convert(source);
return converter.configInfo;
}
public static ConfigurationInfo readConfiguration(Configuration config,
ConfigurationInfo parentInfo,
- AvalonEnvironment env,
+ Settings settings,
ResourceLoader resourceLoader)
throws Exception {
- return readConfiguration(config, null, parentInfo, env, resourceLoader);
+ return readConfiguration(config, null, parentInfo, settings, resourceLoader);
}
// PathMatchingResourcePatternResolver resolver = new PathMatchingResourcePatternResolver(new ServletContextResourceLoader(this.servletContext));
public static ConfigurationInfo readConfiguration(Configuration rolesConfig,
Configuration componentConfig,
ConfigurationInfo parentInfo,
- AvalonEnvironment env,
+ Settings settings,
ResourceLoader resourceLoader)
throws Exception {
- final ConfigReader converter = new ConfigReader(env, parentInfo, resourceLoader);
+ final ConfigReader converter = new ConfigReader(settings, parentInfo, resourceLoader);
converter.convert(rolesConfig, componentConfig, null);
return converter.configInfo;
}
- private ConfigReader(AvalonEnvironment env,
+ private ConfigReader(Settings settings,
ConfigurationInfo parentInfo,
ResourceLoader resourceLoader)
throws Exception {
@@ -98,7 +99,7 @@
} else {
this.resolver = new PathMatchingResourcePatternResolver();
}
- this.environment = env;
+ this.settings = settings;
// now add selectors from parent
if ( parentInfo != null ) {
@@ -156,10 +157,23 @@
this.logger.info("Reading Avalon configuration from " + relativePath);
}
Resource root = this.resolver.getResource(this.convertUrl(relativePath));
- final ConfigurationBuilder b = new ConfigurationBuilder(this.environment.settings);
+ final ConfigurationBuilder b = new ConfigurationBuilder(this.settings);
final Configuration config = b.build(this.getInputSource(root));
-
+ // validate cocoon.xconf
+ if (!"cocoon".equals(config.getName())) {
+ throw new ConfigurationException("Invalid configuration file\n"
+ + config.toString());
+ }
+ if (this.logger.isDebugEnabled()) {
+ this.logger.debug("Configuration version: "
+ + config.getAttribute("version"));
+ }
+ if (!Constants.CONF_VERSION.equals(config.getAttribute("version"))) {
+ throw new ConfigurationException(
+ "Invalid configuration schema version. Must be '"
+ + Constants.CONF_VERSION + "'.");
+ }
this.convert(config, null, root.getURL().toExternalForm());
}
@@ -189,7 +203,7 @@
this.logger.info("Reading additional user roles: " + userRoles);
}
final Resource userRolesSource = this.resolver.getResource(this.getUrl(userRoles, rootUri));
- final ConfigurationBuilder b = new ConfigurationBuilder(this.environment.settings);
+ final ConfigurationBuilder b = new ConfigurationBuilder(this.settings);
final Configuration userRolesConfig = b.build(this.getInputSource(userRolesSource));
this.parseConfiguration(userRolesConfig, userRolesSource.getURL().toExternalForm(), loadedConfigs);
}
@@ -392,7 +406,7 @@
// load it and store it in the read set
Configuration includeConfig = null;
try {
- ConfigurationBuilder builder = new ConfigurationBuilder(this.environment.settings);
+ ConfigurationBuilder builder = new ConfigurationBuilder(this.settings);
includeConfig = builder.build(src.getInputStream(), uri);
} catch (Exception e) {
throw new ConfigurationException("Cannot load '" + uri + "' at " + includeStatement.getLocation(), e);
Added: cocoon/trunk/core/cocoon-webapp/src/main/webapp/WEB-INF/applicationContext.xml
URL: http://svn.apache.org/viewvc/cocoon/trunk/core/cocoon-webapp/src/main/webapp/WEB-INF/applicationContext.xml?rev=433754&view=auto
==============================================================================
--- cocoon/trunk/core/cocoon-webapp/src/main/webapp/WEB-INF/applicationContext.xml (added)
+++ cocoon/trunk/core/cocoon-webapp/src/main/webapp/WEB-INF/applicationContext.xml Tue Aug 22 14:08:31 2006
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright 2006 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
+
+ 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.
+-->
+<!-- @version $Id$ -->
+<beans xmlns="http://www.springframework.org/schema/beans"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:util="http://www.springframework.org/schema/util"
+ xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd">
+
+ <!-- The following bean definitions will be replaced later on with
+ the use of the new namespace handling in spring:
+ <cocoon:settings/>
+ <cocoon:avalon-logger/>
+ <cocoon:avalon-support config="/WEB-INF/cocoon/cocoon.xconf"/>
+ -->
+ <bean id="org.apache.cocoon.configuration.Settings"
+ class="org.apache.cocoon.core.container.spring.SettingsBeanFactoryPostProcessor"
+ singleton="true" init-method="init"/>
+
+ <bean id="org.apache.avalon.framework.logger.Logger"
+ class="org.apache.cocoon.core.container.spring.avalon.AvalonLoggerFactoryBean"
+ singleton="true" init-method="init">
+ <property name="settings"><ref bean="org.apache.cocoon.configuration.Settings"/></property>
+ </bean>
+
+ <bean id="org.apache.avalon.framework.context.Context"
+ class="org.apache.cocoon.core.container.spring.avalon.AvalonContextFactoryBean"
+ singleton="true" init-method="init">
+ <property name="settings"><ref bean="org.apache.cocoon.configuration.Settings"/></property>
+ </bean>
+</beans>
\ No newline at end of file
Propchange: cocoon/trunk/core/cocoon-webapp/src/main/webapp/WEB-INF/applicationContext.xml
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: cocoon/trunk/core/cocoon-webapp/src/main/webapp/WEB-INF/applicationContext.xml
------------------------------------------------------------------------------
svn:keywords = Id
Modified: cocoon/trunk/core/cocoon-webapp/src/main/webapp/WEB-INF/web.xml
URL: http://svn.apache.org/viewvc/cocoon/trunk/core/cocoon-webapp/src/main/webapp/WEB-INF/web.xml?rev=433754&r1=433753&r2=433754&view=diff
==============================================================================
--- cocoon/trunk/core/cocoon-webapp/src/main/webapp/WEB-INF/web.xml (original)
+++ cocoon/trunk/core/cocoon-webapp/src/main/webapp/WEB-INF/web.xml Tue Aug 22 14:08:31 2006
@@ -86,6 +86,13 @@
<!-- Servlet Context Listener ======================================= -->
<!--+
+ | Declare Spring context listener (for testing)
+ +-->
+ <listener>
+ <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
+ </listener>
+
+ <!--+
| Declare a context listener that sets up the Cocoon Spring bean factory
| and makes it available as a context parameter.
+-->
Re: svn commit: r433754 - in /cocoon/trunk/core: 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/core/container/spring/avalon/
cocoon-webapp/sr...
Posted by Leszek Gawron <lg...@mobilebox.pl>.
Carsten Ziegeler wrote:
> Leszek Gawron wrote:
>> Leszek Gawron wrote:
>>> Two questions:
>>>
>>> 1. Does it mean that soon I will be able to do:
>>> public class StartUp extends AbstractTransactionalSpringContextTests {
>>> public StartUp() {
>>> setPopulateProtectedVariables( true );
>>> }
>>>
>>> @Override
>>> protected String[] getConfigLocations() {
>>> return new String[]{
>>> "META-INF/spring/applicationContext-common.xml",
>>> "META-INF/spring/applicationContext-services.xml",
>>> "META-INF/spring/applicationContext-acegi.xml",
>>> "WEB-INF/applicationContext.xml" };
>>> }
>>>
>>> public void testStart() {
>>> // and have cocoon up and running here in test case?
>>> }
>>> }
>>>
> Yes, exactly.
Casten, that is worth a hero plate:
_____________________
| |
| . . |
| :+: H*E*R*O :+: |
| | | |
|--,---------------. |
| |:O: :O:|WwW WwW| |
| | ' . ' |)_WwW_(| |
| | :O: | )_( | |
:--+---'---|-------+--;
: :WwW WwW|:O: :O:; ;
\ \_( )_(| ' '/ /
\ `. WwW|:O: ,' /
`. `._(| ',' ,'
`. `.|,' ,'
`. | ,'
`+'
:) !
--
Leszek Gawron, IT Manager MobileBox sp. z o.o.
+48 (61) 855 06 67 http://www.mobilebox.pl
mobile: +48 (501) 720 812 fax: +48 (61) 853 29 65
Re: svn commit: r433754 - in /cocoon/trunk/core: 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/core/container/spring/avalon/
cocoon-webapp/sr...
Posted by Carsten Ziegeler <cz...@apache.org>.
Leszek Gawron wrote:
> Leszek Gawron wrote:
>> Two questions:
>>
>> 1. Does it mean that soon I will be able to do:
>> public class StartUp extends AbstractTransactionalSpringContextTests {
>> public StartUp() {
>> setPopulateProtectedVariables( true );
>> }
>>
>> @Override
>> protected String[] getConfigLocations() {
>> return new String[]{
>> "META-INF/spring/applicationContext-common.xml",
>> "META-INF/spring/applicationContext-services.xml",
>> "META-INF/spring/applicationContext-acegi.xml",
>> "WEB-INF/applicationContext.xml" };
>> }
>>
>> public void testStart() {
>> // and have cocoon up and running here in test case?
>> }
>> }
>>
Yes, exactly.
>> 2. Could we put the file into some jar (cocoon-core.jar)? If this is put
>> into cocoon-webapp/WEB-INF/applicationContext.xml every user has to sync
>> it once a while after creating a webapp from older version of archetype.
>>
>
The current applicationContxt.xml is just for testing until it works.
Now, I don't think that we should put it into a jar file. All you need
to do later on is putting an <cocoon:something/> tag into your own
applicationContext.xml and are done.
Carsten
--
Carsten Ziegeler - Open Source Group, S&N AG
http://www.s-und-n.de
http://www.osoco.org/weblogs/rael/
Re: svn commit: r433754 - in /cocoon/trunk/core: 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/core/container/spring/avalon/
cocoon-webapp/sr...
Posted by Leszek Gawron <lg...@mobilebox.pl>.
Leszek Gawron wrote:
> Two questions:
>
> 1. Does it mean that soon I will be able to do:
> public class StartUp extends AbstractTransactionalSpringContextTests {
> public StartUp() {
> setPopulateProtectedVariables( true );
> }
>
> @Override
> protected String[] getConfigLocations() {
> return new String[]{
> "META-INF/spring/applicationContext-common.xml",
> "META-INF/spring/applicationContext-services.xml",
> "META-INF/spring/applicationContext-acegi.xml",
> "WEB-INF/applicationContext.xml" };
> }
>
> public void testStart() {
> // and have cocoon up and running here in test case?
> }
> }
>
> 2. Could we put the file into some jar (cocoon-core.jar)? If this is put
> into cocoon-webapp/WEB-INF/applicationContext.xml every user has to sync
> it once a while after creating a webapp from older version of archetype.
>
Shoot ... I am sorry for such stupid citing.
--
Leszek Gawron, IT Manager MobileBox sp. z o.o.
+48 (61) 855 06 67 http://www.mobilebox.pl
mobile: +48 (501) 720 812 fax: +48 (61) 853 29 65
Re: svn commit: r433754 - in /cocoon/trunk/core: 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/core/container/spring/avalon/
cocoon-webapp/sr...
Posted by Leszek Gawron <lg...@mobilebox.pl>.
cziegeler@apache.org wrote:
> Author: cziegeler
> Date: Tue Aug 22 14:08:31 2006
> New Revision: 433754
>
> URL: http://svn.apache.org/viewvc?rev=433754&view=rev
> Log:
> Configure spring context listener for testing
> Updates to the avalon configuration readers
>
> Added:
> cocoon/trunk/core/cocoon-webapp/src/main/webapp/WEB-INF/applicationContext.xml (with props)
> 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/ConfigReader.java
> cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/core/container/spring/avalon/ConfigReader.java
> cocoon/trunk/core/cocoon-webapp/src/main/webapp/WEB-INF/web.xml
>
> Modified: cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/core/CoreUtil.java
> URL: http://svn.apache.org/viewvc/cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/core/CoreUtil.java?rev=433754&r1=433753&r2=433754&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 Tue Aug 22 14:08:31 2006
> @@ -33,8 +33,6 @@
> import org.apache.avalon.framework.logger.Logger;
> import org.apache.cocoon.Constants;
> import org.apache.cocoon.components.ContextHelper;
> -import org.apache.cocoon.components.source.SourceUtil;
> -import org.apache.cocoon.components.source.impl.DelayedRefreshSourceWrapper;
> import org.apache.cocoon.configuration.PropertyProvider;
> import org.apache.cocoon.configuration.Settings;
> import org.apache.cocoon.configuration.impl.MutableSettings;
> @@ -44,17 +42,13 @@
> import org.apache.cocoon.core.container.spring.ConfigReader;
> import org.apache.cocoon.core.container.spring.ConfigurationInfo;
> import org.apache.cocoon.core.container.util.ComponentContext;
> -import org.apache.cocoon.core.container.util.ConfigurationBuilder;
> import org.apache.cocoon.core.container.util.SimpleSourceResolver;
> import org.apache.cocoon.util.ClassUtils;
> import org.apache.cocoon.util.location.Location;
> import org.apache.cocoon.util.location.LocationImpl;
> import org.apache.cocoon.util.location.LocationUtils;
> -import org.apache.excalibur.source.Source;
> import org.apache.excalibur.source.SourceResolver;
> -import org.apache.excalibur.source.impl.URLSource;
> import org.springframework.beans.factory.config.ConfigurableBeanFactory;
> -import org.xml.sax.InputSource;
>
> /**
> * This is an utility class to create a new Cocoon instance.
> @@ -349,25 +343,6 @@
> throws Exception {
> if (log.isInfoEnabled()) {
> log.info("Reading root configuration: " + settings.getConfiguration());
> - }
> -
> - URLSource urlSource = new URLSource();
> - urlSource.init(new URL(settings.getConfiguration()), null);
> - final Source configurationFile = new DelayedRefreshSourceWrapper(urlSource,
> - settings.getReloadDelay("config"));
> - final InputSource is = SourceUtil.getInputSource(configurationFile);
> -
> - final ConfigurationBuilder builder = new ConfigurationBuilder(settings);
> - final Configuration rootConfig = builder.build(is);
> -
> - if (!"cocoon".equals(rootConfig.getName())) {
> - throw new ConfigurationException("Invalid configuration file\n" + rootConfig.toString());
> - }
> - if (log.isDebugEnabled()) {
> - log.debug("Configuration version: " + rootConfig.getAttribute("version"));
> - }
> - if (!Constants.CONF_VERSION.equals(rootConfig.getAttribute("version"))) {
> - throw new ConfigurationException("Invalid configuration schema version. Must be '" + Constants.CONF_VERSION + "'.");
> }
>
> if (log.isInfoEnabled()) {
>
> Modified: cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/core/container/spring/ConfigReader.java
> URL: http://svn.apache.org/viewvc/cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/core/container/spring/ConfigReader.java?rev=433754&r1=433753&r2=433754&view=diff
> ==============================================================================
> --- cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/core/container/spring/ConfigReader.java (original)
> +++ cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/core/container/spring/ConfigReader.java Tue Aug 22 14:08:31 2006
> @@ -29,6 +29,7 @@
> import org.apache.avalon.framework.configuration.Configuration;
> import org.apache.avalon.framework.configuration.ConfigurationException;
> import org.apache.avalon.framework.logger.AbstractLogEnabled;
> +import org.apache.cocoon.Constants;
> import org.apache.cocoon.components.source.SourceUtil;
> import org.apache.cocoon.core.container.util.ConfigurationBuilder;
> import org.apache.cocoon.core.container.util.SimpleSourceResolver;
> @@ -133,7 +134,16 @@
> try {
> final ConfigurationBuilder b = new ConfigurationBuilder(this.environment.settings);
> final Configuration config = b.build(SourceUtil.getInputSource(root));
> -
> + // validate cocoon.xconf
> + if (!"cocoon".equals(config.getName())) {
> + throw new ConfigurationException("Invalid configuration file\n" + config.toString());
> + }
> + if (this.getLogger().isDebugEnabled()) {
> + this.getLogger().debug("Configuration version: " + config.getAttribute("version"));
> + }
> + if (!Constants.CONF_VERSION.equals(config.getAttribute("version"))) {
> + throw new ConfigurationException("Invalid configuration schema version. Must be '" + Constants.CONF_VERSION + "'.");
> + }
> this.convert(config, null, root.getURI());
>
> } finally {
>
> Modified: cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/core/container/spring/avalon/ConfigReader.java
> URL: http://svn.apache.org/viewvc/cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/core/container/spring/avalon/ConfigReader.java?rev=433754&r1=433753&r2=433754&view=diff
> ==============================================================================
> --- cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/core/container/spring/avalon/ConfigReader.java (original)
> +++ cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/core/container/spring/avalon/ConfigReader.java Tue Aug 22 14:08:31 2006
> @@ -27,7 +27,8 @@
>
> import org.apache.avalon.framework.configuration.Configuration;
> import org.apache.avalon.framework.configuration.ConfigurationException;
> -import org.apache.cocoon.core.container.spring.AvalonEnvironment;
> +import org.apache.cocoon.Constants;
> +import org.apache.cocoon.configuration.Settings;
> import org.apache.cocoon.core.container.spring.ComponentInfo;
> import org.apache.cocoon.core.container.spring.ConfigurationInfo;
> import org.apache.cocoon.core.container.util.ConfigurationBuilder;
> @@ -56,40 +57,40 @@
> /** The configuration info. */
> protected final ConfigurationInfo configInfo;
>
> - /** Avalon environment. */
> - protected final AvalonEnvironment environment;
> + /** Settings. */
> + protected final Settings settings;
>
> /** All component configurations. */
> protected final List componentConfigs = new ArrayList();
>
> - public static ConfigurationInfo readConfiguration(String source, AvalonEnvironment env)
> + public static ConfigurationInfo readConfiguration(String source, Settings settings)
> throws Exception {
> - final ConfigReader converter = new ConfigReader(env, null, null);
> + final ConfigReader converter = new ConfigReader(settings, null, null);
> converter.convert(source);
> return converter.configInfo;
> }
>
> public static ConfigurationInfo readConfiguration(Configuration config,
> ConfigurationInfo parentInfo,
> - AvalonEnvironment env,
> + Settings settings,
> ResourceLoader resourceLoader)
> throws Exception {
> - return readConfiguration(config, null, parentInfo, env, resourceLoader);
> + return readConfiguration(config, null, parentInfo, settings, resourceLoader);
> }
> // PathMatchingResourcePatternResolver resolver = new PathMatchingResourcePatternResolver(new ServletContextResourceLoader(this.servletContext));
>
> public static ConfigurationInfo readConfiguration(Configuration rolesConfig,
> Configuration componentConfig,
> ConfigurationInfo parentInfo,
> - AvalonEnvironment env,
> + Settings settings,
> ResourceLoader resourceLoader)
> throws Exception {
> - final ConfigReader converter = new ConfigReader(env, parentInfo, resourceLoader);
> + final ConfigReader converter = new ConfigReader(settings, parentInfo, resourceLoader);
> converter.convert(rolesConfig, componentConfig, null);
> return converter.configInfo;
> }
>
> - private ConfigReader(AvalonEnvironment env,
> + private ConfigReader(Settings settings,
> ConfigurationInfo parentInfo,
> ResourceLoader resourceLoader)
> throws Exception {
> @@ -98,7 +99,7 @@
> } else {
> this.resolver = new PathMatchingResourcePatternResolver();
> }
> - this.environment = env;
> + this.settings = settings;
>
> // now add selectors from parent
> if ( parentInfo != null ) {
> @@ -156,10 +157,23 @@
> this.logger.info("Reading Avalon configuration from " + relativePath);
> }
> Resource root = this.resolver.getResource(this.convertUrl(relativePath));
> - final ConfigurationBuilder b = new ConfigurationBuilder(this.environment.settings);
> + final ConfigurationBuilder b = new ConfigurationBuilder(this.settings);
>
> final Configuration config = b.build(this.getInputSource(root));
> -
> + // validate cocoon.xconf
> + if (!"cocoon".equals(config.getName())) {
> + throw new ConfigurationException("Invalid configuration file\n"
> + + config.toString());
> + }
> + if (this.logger.isDebugEnabled()) {
> + this.logger.debug("Configuration version: "
> + + config.getAttribute("version"));
> + }
> + if (!Constants.CONF_VERSION.equals(config.getAttribute("version"))) {
> + throw new ConfigurationException(
> + "Invalid configuration schema version. Must be '"
> + + Constants.CONF_VERSION + "'.");
> + }
> this.convert(config, null, root.getURL().toExternalForm());
> }
>
> @@ -189,7 +203,7 @@
> this.logger.info("Reading additional user roles: " + userRoles);
> }
> final Resource userRolesSource = this.resolver.getResource(this.getUrl(userRoles, rootUri));
> - final ConfigurationBuilder b = new ConfigurationBuilder(this.environment.settings);
> + final ConfigurationBuilder b = new ConfigurationBuilder(this.settings);
> final Configuration userRolesConfig = b.build(this.getInputSource(userRolesSource));
> this.parseConfiguration(userRolesConfig, userRolesSource.getURL().toExternalForm(), loadedConfigs);
> }
> @@ -392,7 +406,7 @@
> // load it and store it in the read set
> Configuration includeConfig = null;
> try {
> - ConfigurationBuilder builder = new ConfigurationBuilder(this.environment.settings);
> + ConfigurationBuilder builder = new ConfigurationBuilder(this.settings);
> includeConfig = builder.build(src.getInputStream(), uri);
> } catch (Exception e) {
> throw new ConfigurationException("Cannot load '" + uri + "' at " + includeStatement.getLocation(), e);
>
> Added: cocoon/trunk/core/cocoon-webapp/src/main/webapp/WEB-INF/applicationContext.xml
> URL: http://svn.apache.org/viewvc/cocoon/trunk/core/cocoon-webapp/src/main/webapp/WEB-INF/applicationContext.xml?rev=433754&view=auto
> ==============================================================================
> --- cocoon/trunk/core/cocoon-webapp/src/main/webapp/WEB-INF/applicationContext.xml (added)
> +++ cocoon/trunk/core/cocoon-webapp/src/main/webapp/WEB-INF/applicationContext.xml Tue Aug 22 14:08:31 2006
> @@ -0,0 +1,44 @@
> +<?xml version="1.0" encoding="UTF-8"?>
> +<!--
> + Copyright 2006 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
> +
> + 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.
> +-->
> +<!-- @version $Id$ -->
> +<beans xmlns="http://www.springframework.org/schema/beans"
> + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
> + xmlns:util="http://www.springframework.org/schema/util"
> + xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd">
> +
> + <!-- The following bean definitions will be replaced later on with
> + the use of the new namespace handling in spring:
> + <cocoon:settings/>
> + <cocoon:avalon-logger/>
> + <cocoon:avalon-support config="/WEB-INF/cocoon/cocoon.xconf"/>
> + -->
> + <bean id="org.apache.cocoon.configuration.Settings"
> + class="org.apache.cocoon.core.container.spring.SettingsBeanFactoryPostProcessor"
> + singleton="true" init-method="init"/>
> +
> + <bean id="org.apache.avalon.framework.logger.Logger"
> + class="org.apache.cocoon.core.container.spring.avalon.AvalonLoggerFactoryBean"
> + singleton="true" init-method="init">
> + <property name="settings"><ref bean="org.apache.cocoon.configuration.Settings"/></property>
> + </bean>
> +
> + <bean id="org.apache.avalon.framework.context.Context"
> + class="org.apache.cocoon.core.container.spring.avalon.AvalonContextFactoryBean"
> + singleton="true" init-method="init">
> + <property name="settings"><ref bean="org.apache.cocoon.configuration.Settings"/></property>
> + </bean>
> +</beans>
Two questions:
1. Does it mean that soon I will be able to do:
public class StartUp extends AbstractTransactionalSpringContextTests {
public StartUp() {
setPopulateProtectedVariables( true );
}
@Override
protected String[] getConfigLocations() {
return new String[]{
"META-INF/spring/applicationContext-common.xml",
"META-INF/spring/applicationContext-services.xml",
"META-INF/spring/applicationContext-acegi.xml",
"WEB-INF/applicationContext.xml" };
}
public void testStart() {
// and have cocoon up and running here in test case?
}
}
2. Could we put the file into some jar (cocoon-core.jar)? If this is put
into cocoon-webapp/WEB-INF/applicationContext.xml every user has to sync
it once a while after creating a webapp from older version of archetype.
--
Leszek Gawron, IT Manager MobileBox sp. z o.o.
+48 (61) 855 06 67 http://www.mobilebox.pl
mobile: +48 (501) 720 812 fax: +48 (61) 853 29 65