You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@cocoon.apache.org by vg...@apache.org on 2006/08/23 17:03:17 UTC
svn commit: r434061 - in /cocoon/branches/BRANCH_2_1_X: ./
src/blocks/repository/conf/
src/blocks/repository/java/org/apache/cocoon/components/source/helpers/
src/blocks/repository/java/org/apache/cocoon/components/source/impl/
Author: vgritsenko
Date: Wed Aug 23 08:03:16 2006
New Revision: 434061
URL: http://svn.apache.org/viewvc?rev=434061&view=rev
Log:
<action dev="VG" type="add">
Repository: Add CachingSource source implementation (from trunk).
</action>
Added:
cocoon/branches/BRANCH_2_1_X/src/blocks/repository/conf/repository-caching-source.xconf (with props)
cocoon/branches/BRANCH_2_1_X/src/blocks/repository/conf/repository-source-descriptor.xconf
- copied, changed from r434054, cocoon/branches/BRANCH_2_1_X/src/blocks/repository/conf/sourcedescriptor.xconf
cocoon/branches/BRANCH_2_1_X/src/blocks/repository/conf/repository-source-refresher.xconf (with props)
cocoon/branches/BRANCH_2_1_X/src/blocks/repository/conf/repository-source-repository.xconf
- copied, changed from r434054, cocoon/branches/BRANCH_2_1_X/src/blocks/repository/conf/SourceRepository.xconf
cocoon/branches/BRANCH_2_1_X/src/blocks/repository/conf/repository-source-repository.xroles (contents, props changed)
- copied, changed from r434054, cocoon/branches/BRANCH_2_1_X/src/blocks/repository/conf/SourceRepository.xroles
cocoon/branches/BRANCH_2_1_X/src/blocks/repository/java/org/apache/cocoon/components/source/helpers/DelaySourceRefresher.java
- copied, changed from r434032, cocoon/trunk/blocks/cocoon-repository/cocoon-repository-impl/src/main/java/org/apache/cocoon/components/source/helpers/DelaySourceRefresher.java
cocoon/branches/BRANCH_2_1_X/src/blocks/repository/java/org/apache/cocoon/components/source/helpers/SourceRefresher.java
- copied unchanged from r434032, cocoon/trunk/blocks/cocoon-repository/cocoon-repository-impl/src/main/java/org/apache/cocoon/components/source/helpers/SourceRefresher.java
cocoon/branches/BRANCH_2_1_X/src/blocks/repository/java/org/apache/cocoon/components/source/impl/CachedSourceResponse.java
- copied unchanged from r434032, cocoon/trunk/blocks/cocoon-repository/cocoon-repository-impl/src/main/java/org/apache/cocoon/components/source/impl/CachedSourceResponse.java
cocoon/branches/BRANCH_2_1_X/src/blocks/repository/java/org/apache/cocoon/components/source/impl/CachingSource.java
- copied unchanged from r434032, cocoon/trunk/blocks/cocoon-repository/cocoon-repository-impl/src/main/java/org/apache/cocoon/components/source/impl/CachingSource.java
cocoon/branches/BRANCH_2_1_X/src/blocks/repository/java/org/apache/cocoon/components/source/impl/CachingSourceFactory.java
- copied unchanged from r434032, cocoon/trunk/blocks/cocoon-repository/cocoon-repository-impl/src/main/java/org/apache/cocoon/components/source/impl/CachingSourceFactory.java
cocoon/branches/BRANCH_2_1_X/src/blocks/repository/java/org/apache/cocoon/components/source/impl/InspectableTraversableCachingSource.java
- copied unchanged from r434032, cocoon/trunk/blocks/cocoon-repository/cocoon-repository-impl/src/main/java/org/apache/cocoon/components/source/impl/InspectableTraversableCachingSource.java
cocoon/branches/BRANCH_2_1_X/src/blocks/repository/java/org/apache/cocoon/components/source/impl/TraversableCachingSource.java
- copied unchanged from r434032, cocoon/trunk/blocks/cocoon-repository/cocoon-repository-impl/src/main/java/org/apache/cocoon/components/source/impl/TraversableCachingSource.java
Removed:
cocoon/branches/BRANCH_2_1_X/src/blocks/repository/conf/SourceRepository.xconf
cocoon/branches/BRANCH_2_1_X/src/blocks/repository/conf/SourceRepository.xroles
cocoon/branches/BRANCH_2_1_X/src/blocks/repository/conf/sourcedescriptor.xconf
Modified:
cocoon/branches/BRANCH_2_1_X/src/blocks/repository/conf/repository-manager.xconf
cocoon/branches/BRANCH_2_1_X/src/blocks/repository/conf/repository-source.xconf
cocoon/branches/BRANCH_2_1_X/status.xml
Added: cocoon/branches/BRANCH_2_1_X/src/blocks/repository/conf/repository-caching-source.xconf
URL: http://svn.apache.org/viewvc/cocoon/branches/BRANCH_2_1_X/src/blocks/repository/conf/repository-caching-source.xconf?rev=434061&view=auto
==============================================================================
--- cocoon/branches/BRANCH_2_1_X/src/blocks/repository/conf/repository-caching-source.xconf (added)
+++ cocoon/branches/BRANCH_2_1_X/src/blocks/repository/conf/repository-caching-source.xconf Wed Aug 23 08:03:16 2006
@@ -0,0 +1,61 @@
+<?xml version="1.0"?>
+<!--
+ Copyright 1999-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.
+-->
+
+<!--
+ - SVN $Id$
+ -->
+<xconf xpath="/cocoon/source-factories"
+ unless="component-instance[@name='cached']">
+ <!--+
+ | Caching source protocol.
+ | This protocol extension implements a proxy-like source
+ | that can cache the contents of its delegate source.
+ |
+ | The uri syntax is as follows:
+ | cached:subprotocol:/path[?cocoon:cache-expires=60][&cocoon:cache-name=main]
+ |
+ | Where:
+ | - 'cached' is the caching source protocol scheme name as defined below.
+ | - 'subprotcol:/path' identifies the source to get the actual contents from
+ | eg. http://cocoon.apache.org/doco.html?version=1.2
+ | - optional query string parameters that start with 'cocoon:cache' represent
+ | special instructions to pass to the implementation.
+ |
+ | The protocol can be parametrized as follows:
+ | - 'async' (false). When this is set to true cached source contents are updated
+ | in the background, using SourceRefresher component.
+ | - 'cache-role' (org.apache.cocoon.caching.Cache). Use this if you want to use
+ | a Cache other than the default one.
+ | - 'refresher-role' (org.apache.cocoon.components.source.DelaySourceRefresher).
+ | Use this if you wish to use a SourceRefresher other than the default one.
+ | A SourceRefresher is used when asynchronic caching is turned on. It is responsible for
+ | updating the cached contents in the background and can implement any refresh algorithm.
+ | - 'default-expires' (-1). The expires value if it is not specified on the source
+ | itself. The default value of -1 means to never expire.
+ +-->
+ <component-instance name="cached"
+ class="org.apache.cocoon.components.source.impl.CachingSourceFactory"
+ logger="core.source.cached">
+ <!--
+ <parameter name="async" value="true"/>
+ <parameter name="cache-role" value="org.apache.cocoon.caching.Cache"/>
+ <parameter name="default-expires" value="-1"/>
+ -->
+ <parameter name="refresher-role" value="org.apache.cocoon.components.source.helpers.SourceRefresher/Delay"/>
+ </component-instance>
+
+</xconf>
Propchange: cocoon/branches/BRANCH_2_1_X/src/blocks/repository/conf/repository-caching-source.xconf
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: cocoon/branches/BRANCH_2_1_X/src/blocks/repository/conf/repository-caching-source.xconf
------------------------------------------------------------------------------
svn:keywords = Id
Modified: cocoon/branches/BRANCH_2_1_X/src/blocks/repository/conf/repository-manager.xconf
URL: http://svn.apache.org/viewvc/cocoon/branches/BRANCH_2_1_X/src/blocks/repository/conf/repository-manager.xconf?rev=434061&r1=434060&r2=434061&view=diff
==============================================================================
--- cocoon/branches/BRANCH_2_1_X/src/blocks/repository/conf/repository-manager.xconf (original)
+++ cocoon/branches/BRANCH_2_1_X/src/blocks/repository/conf/repository-manager.xconf Wed Aug 23 08:03:16 2006
@@ -16,16 +16,18 @@
limitations under the License.
-->
-<xconf xpath="/cocoon" unless="component[@role='org.apache.cocoon.components.repository.RepositoryManager']">
+<!--
+ - SVN $Id$
+ -->
+<xconf xpath="/cocoon"
+ unless="component[@role='org.apache.cocoon.components.repository.RepositoryManager']">
<component role="org.apache.cocoon.components.repository.RepositoryManager"
class="org.apache.cocoon.components.repository.RepositoryManager"
logger="core.repository">
-
<!-- put your repository implementations here like
<repository name="webdav" class="org.apache.cocoon.components.repository.impl.WebDAVRepository"/>
-->
-
</component>
</xconf>
Copied: cocoon/branches/BRANCH_2_1_X/src/blocks/repository/conf/repository-source-descriptor.xconf (from r434054, cocoon/branches/BRANCH_2_1_X/src/blocks/repository/conf/sourcedescriptor.xconf)
URL: http://svn.apache.org/viewvc/cocoon/branches/BRANCH_2_1_X/src/blocks/repository/conf/repository-source-descriptor.xconf?p2=cocoon/branches/BRANCH_2_1_X/src/blocks/repository/conf/repository-source-descriptor.xconf&p1=cocoon/branches/BRANCH_2_1_X/src/blocks/repository/conf/sourcedescriptor.xconf&r1=434054&r2=434061&rev=434061&view=diff
==============================================================================
--- cocoon/branches/BRANCH_2_1_X/src/blocks/repository/conf/sourcedescriptor.xconf (original)
+++ cocoon/branches/BRANCH_2_1_X/src/blocks/repository/conf/repository-source-descriptor.xconf Wed Aug 23 08:03:16 2006
@@ -15,7 +15,12 @@
See the License for the specific language governing permissions and
limitations under the License.
-->
-<xconf xpath="/cocoon" unless="component[@role='org.apache.cocoon.components.source.SourceDescriptor']">
+
+<!--
+ - SVN $Id$
+ -->
+<xconf xpath="/cocoon"
+ unless="component[@role='org.apache.cocoon.components.source.SourceDescriptor']">
<component role="org.apache.cocoon.components.source.SourceDescriptor"
class="org.apache.cocoon.components.source.impl.SourceDescriptorManager"
Added: cocoon/branches/BRANCH_2_1_X/src/blocks/repository/conf/repository-source-refresher.xconf
URL: http://svn.apache.org/viewvc/cocoon/branches/BRANCH_2_1_X/src/blocks/repository/conf/repository-source-refresher.xconf?rev=434061&view=auto
==============================================================================
--- cocoon/branches/BRANCH_2_1_X/src/blocks/repository/conf/repository-source-refresher.xconf (added)
+++ cocoon/branches/BRANCH_2_1_X/src/blocks/repository/conf/repository-source-refresher.xconf Wed Aug 23 08:03:16 2006
@@ -0,0 +1,49 @@
+<?xml version="1.0"?>
+<!--
+ Copyright 1999-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.
+-->
+
+<!--
+ - SVN $Id$
+ -->
+<xconf xpath="/cocoon"
+ unless="component[@role='org.apache.cocoon.components.source.helpers.SourceRefresher/Delay']">
+ <!--+
+ | A SourceRefresher is a component that is used by the CachingSource protocol.
+ | It is responsible for updating the cached contents of sources that are
+ | registered with it by the protocol.
+ |
+ | The DelaySourceRefresher is an implementation that periodically updates the
+ | sources. It recognizes the following parameters:
+ | - 'write-interval' (0). The SourceRefresher can periodically persist its
+ | list of registered sources. This parameter specifies how often
+ | it should write this list to file. Specifying a value of 0 (the default)
+ | means that target configurations will not be persisted at all.
+ | - 'write-file' (refresher-targets.xml). Specifying a different value
+ | than the default for this parameter only makes sense if you configure
+ | more than one DelayRefreshers. It represents the file name, relative to
+ | the cocoon working directory of the file the refresher writes its list
+ | of registered target configurations to.
+ +-->
+ <component role="org.apache.cocoon.components.source.helpers.SourceRefresher/Delay"
+ class="org.apache.cocoon.components.source.helpers.DelaySourceRefresher"
+ logger="core.refresher.delay">
+ <!--
+ <parameter name="write-interval" value="0"/>
+ <parameter name="write-file" value="refresher-targets.xml"/>
+ -->
+ </component>
+
+</xconf>
Propchange: cocoon/branches/BRANCH_2_1_X/src/blocks/repository/conf/repository-source-refresher.xconf
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: cocoon/branches/BRANCH_2_1_X/src/blocks/repository/conf/repository-source-refresher.xconf
------------------------------------------------------------------------------
svn:keywords = Id
Copied: cocoon/branches/BRANCH_2_1_X/src/blocks/repository/conf/repository-source-repository.xconf (from r434054, cocoon/branches/BRANCH_2_1_X/src/blocks/repository/conf/SourceRepository.xconf)
URL: http://svn.apache.org/viewvc/cocoon/branches/BRANCH_2_1_X/src/blocks/repository/conf/repository-source-repository.xconf?p2=cocoon/branches/BRANCH_2_1_X/src/blocks/repository/conf/repository-source-repository.xconf&p1=cocoon/branches/BRANCH_2_1_X/src/blocks/repository/conf/SourceRepository.xconf&r1=434054&r2=434061&rev=434061&view=diff
==============================================================================
--- cocoon/branches/BRANCH_2_1_X/src/blocks/repository/conf/SourceRepository.xconf (original)
+++ cocoon/branches/BRANCH_2_1_X/src/blocks/repository/conf/repository-source-repository.xconf Wed Aug 23 08:03:16 2006
@@ -15,6 +15,11 @@
See the License for the specific language governing permissions and
limitations under the License.
-->
+
+<!--
+ - SVN $Id$
+ -->
<xconf xpath="/cocoon" unless="source-repository">
<source-repository logger="core.source-repository" />
+
</xconf>
Copied: cocoon/branches/BRANCH_2_1_X/src/blocks/repository/conf/repository-source-repository.xroles (from r434054, cocoon/branches/BRANCH_2_1_X/src/blocks/repository/conf/SourceRepository.xroles)
URL: http://svn.apache.org/viewvc/cocoon/branches/BRANCH_2_1_X/src/blocks/repository/conf/repository-source-repository.xroles?p2=cocoon/branches/BRANCH_2_1_X/src/blocks/repository/conf/repository-source-repository.xroles&p1=cocoon/branches/BRANCH_2_1_X/src/blocks/repository/conf/SourceRepository.xroles&r1=434054&r2=434061&rev=434061&view=diff
==============================================================================
--- cocoon/branches/BRANCH_2_1_X/src/blocks/repository/conf/SourceRepository.xroles (original)
+++ cocoon/branches/BRANCH_2_1_X/src/blocks/repository/conf/repository-source-repository.xroles Wed Aug 23 08:03:16 2006
@@ -15,6 +15,10 @@
See the License for the specific language governing permissions and
limitations under the License.
-->
+
+<!--
+ - SVN $Id$
+ -->
<xroles xpath="/role-list" unless="role[@shorthand='source-repository']">
<role name="org.apache.cocoon.components.repository.SourceRepository"
Propchange: cocoon/branches/BRANCH_2_1_X/src/blocks/repository/conf/repository-source-repository.xroles
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: cocoon/branches/BRANCH_2_1_X/src/blocks/repository/conf/repository-source-repository.xroles
------------------------------------------------------------------------------
svn:keywords = Id
Modified: cocoon/branches/BRANCH_2_1_X/src/blocks/repository/conf/repository-source.xconf
URL: http://svn.apache.org/viewvc/cocoon/branches/BRANCH_2_1_X/src/blocks/repository/conf/repository-source.xconf?rev=434061&r1=434060&r2=434061&view=diff
==============================================================================
--- cocoon/branches/BRANCH_2_1_X/src/blocks/repository/conf/repository-source.xconf (original)
+++ cocoon/branches/BRANCH_2_1_X/src/blocks/repository/conf/repository-source.xconf Wed Aug 23 08:03:16 2006
@@ -15,12 +15,14 @@
See the License for the specific language governing permissions and
limitations under the License.
-->
-<xconf xpath="/cocoon/source-factories" unless="component-instance[@name='repository']">
+<!--
+ - SVN $Id$
+ -->
+<xconf xpath="/cocoon/source-factories"
+ unless="component-instance[@name='repository']">
<!-- pseudo protocol for the repository source wrapper -->
- <component-instance
- name="repository"
- class="org.apache.cocoon.components.source.impl.RepositorySourceFactory"
- />
+ <component-instance name="repository"
+ class="org.apache.cocoon.components.source.impl.RepositorySourceFactory"/>
</xconf>
Copied: cocoon/branches/BRANCH_2_1_X/src/blocks/repository/java/org/apache/cocoon/components/source/helpers/DelaySourceRefresher.java (from r434032, cocoon/trunk/blocks/cocoon-repository/cocoon-repository-impl/src/main/java/org/apache/cocoon/components/source/helpers/DelaySourceRefresher.java)
URL: http://svn.apache.org/viewvc/cocoon/branches/BRANCH_2_1_X/src/blocks/repository/java/org/apache/cocoon/components/source/helpers/DelaySourceRefresher.java?p2=cocoon/branches/BRANCH_2_1_X/src/blocks/repository/java/org/apache/cocoon/components/source/helpers/DelaySourceRefresher.java&p1=cocoon/trunk/blocks/cocoon-repository/cocoon-repository-impl/src/main/java/org/apache/cocoon/components/source/helpers/DelaySourceRefresher.java&r1=434032&r2=434061&rev=434061&view=diff
==============================================================================
--- cocoon/trunk/blocks/cocoon-repository/cocoon-repository-impl/src/main/java/org/apache/cocoon/components/source/helpers/DelaySourceRefresher.java (original)
+++ cocoon/branches/BRANCH_2_1_X/src/blocks/repository/java/org/apache/cocoon/components/source/helpers/DelaySourceRefresher.java Wed Aug 23 08:03:16 2006
@@ -21,6 +21,7 @@
import java.io.OutputStreamWriter;
import java.io.UnsupportedEncodingException;
import java.io.Writer;
+import java.net.MalformedURLException;
import java.util.Collections;
import java.util.ConcurrentModificationException;
import java.util.HashMap;
@@ -30,6 +31,7 @@
import org.apache.avalon.framework.CascadingException;
import org.apache.avalon.framework.CascadingRuntimeException;
import org.apache.avalon.framework.activity.Disposable;
+import org.apache.avalon.framework.component.WrapperComponentManager;
import org.apache.avalon.framework.configuration.Configurable;
import org.apache.avalon.framework.configuration.Configuration;
import org.apache.avalon.framework.configuration.ConfigurationException;
@@ -48,12 +50,11 @@
import org.apache.excalibur.source.SourceResolver;
import org.apache.cocoon.Constants;
-import org.apache.cocoon.ProcessingException;
import org.apache.cocoon.Processor;
+import org.apache.cocoon.components.CocoonComponentManager;
import org.apache.cocoon.components.source.SourceUtil;
import org.apache.cocoon.components.thread.RunnableManager;
import org.apache.cocoon.environment.background.BackgroundEnvironment;
-import org.apache.cocoon.environment.internal.EnvironmentHelper;
import org.apache.cocoon.util.NetUtils;
/**
@@ -364,6 +365,9 @@
env = new BackgroundEnvironment(getLogger(), ctx);
} catch (ContextException e) {
throw new CascadingRuntimeException("No context found", e);
+ } catch (MalformedURLException e) {
+ // Unlikely to happen
+ throw new CascadingRuntimeException("Invalid URL", e);
}
Processor processor;
try {
@@ -372,12 +376,8 @@
throw new CascadingRuntimeException("No processor found", e);
}
- env.startingProcessing();
- try {
- EnvironmentHelper.enterProcessor(processor, env);
- } catch (ProcessingException e) {
- throw new CascadingRuntimeException("Can not enter processor", e);
- }
+ final Object key = CocoonComponentManager.startProcessing(env);
+ CocoonComponentManager.enterEnvironment(env, new WrapperComponentManager(manager), processor);
try {
// Refresh Source
Source source = null;
@@ -392,8 +392,8 @@
}
}
} finally {
- EnvironmentHelper.leaveProcessor();
- env.finishingProcessing();
+ CocoonComponentManager.leaveEnvironment();
+ CocoonComponentManager.endProcessing(env, key);
if (manager != null) {
manager.release(processor);
}
Modified: cocoon/branches/BRANCH_2_1_X/status.xml
URL: http://svn.apache.org/viewvc/cocoon/branches/BRANCH_2_1_X/status.xml?rev=434061&r1=434060&r2=434061&view=diff
==============================================================================
--- cocoon/branches/BRANCH_2_1_X/status.xml (original)
+++ cocoon/branches/BRANCH_2_1_X/status.xml Wed Aug 23 08:03:16 2006
@@ -184,8 +184,11 @@
<release version="@version@" date="@date@">
-->
<release version="2.1.10" date="TBD">
+ <action dev="VG" type="add">
+ Repository: Add CachingSource source implementation (from trunk).
+ </action>
<action dev="JJ" type="fix">
- ImageOp block: Send info/debug messages to the log rather than System.out.println
+ ImageOp: Send info/debug messages to the log rather than System.out.println
</action>
<action dev="AG" type="fix" fixes-bug="COCOON-1815" due-to="Frédéric Glorieux" due-to-email="frederic.glorieux@ajlsm.com">
Core: CopySourceAction generate NPE.