You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@cocoon.apache.org by un...@apache.org on 2004/03/06 16:18:46 UTC
cvs commit: cocoon-2.1/src/blocks/scratchpad/WEB-INF cache.ccf
unico 2004/03/06 07:18:46
Modified: src/blocks/scratchpad/conf jcs-store.xconf
Added: src/blocks/scratchpad/java/org/apache/cocoon/components/store
AbstractJCSStore.java default.ccf transient.ccf
JCSTransientStore.java JCSDefaultStore.java
Removed: src/blocks/scratchpad/java/org/apache/cocoon/components/store
JCSStore.java
src/blocks/scratchpad/WEB-INF cache.ccf
Log:
- configuration from parameters
- two flavors: transient and default
Revision Changes Path
1.5 +11 -7 cocoon-2.1/src/blocks/scratchpad/conf/jcs-store.xconf
Index: jcs-store.xconf
===================================================================
RCS file: /home/cvs/cocoon-2.1/src/blocks/scratchpad/conf/jcs-store.xconf,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- jcs-store.xconf 6 Mar 2004 02:25:52 -0000 1.4
+++ jcs-store.xconf 6 Mar 2004 15:18:46 -0000 1.5
@@ -15,14 +15,18 @@
limitations under the License.
-->
-<xconf xpath="/cocoon" unless="persistent-store[@class='org.apache.cocoon.components.store.JCSStore']">
+<xconf xpath="/cocoon" unless="store[@class='org.apache.cocoon.components.store.JCSDefaultStore']">
<!-- Experimental JCS Store implementation -->
- <persistent-store class="org.apache.cocoon.components.store.JCSStore"
- logger="core.store.persistent">
- <parameter name="region-name" value="indexedRegion4"/>
- <parameter name="group-name" value="indexedDiskCache2"/>
- <parameter name="config-file" value="context://WEB-INF/cache.ccf"/>
- </persistent-store>
+ <store class="org.apache.cocoon.components.store.JCSDefaultStore"
+ logger="core.store">
+ <parameter name="maxobjects" value="100"/>
+ <parameter name="use-cache-directory" value="true"/>
+ </store>
+ <transient-store class="org.apache.cocoon.components.store.JCSTransientStore"
+ logger="core.store.transient">
+ <parameter name="maxobjects" value="100"/>
+ </transient-store>
+
</xconf>
1.6 +129 -158 cocoon-2.1/src/blocks/scratchpad/java/org/apache/cocoon/components/store/AbstractJCSStore.java
1.1 cocoon-2.1/src/blocks/scratchpad/java/org/apache/cocoon/components/store/default.ccf
Index: default.ccf
===================================================================
# Cache configuration defaults.
jcs.default=DC
jcs.default.cacheattributes=org.apache.jcs.engine.CompositeCacheAttributes
jcs.default.cacheattributes.MaxObjects=100
jcs.default.cacheattributes.MemoryCacheName=org.apache.jcs.engine.memory.lru.LRUMemoryCache
# SYSTEM GROUP ID CACHE
jcs.system.groupIdCache=DC
jcs.system.groupIdCache.cacheattributes=org.apache.jcs.engine.CompositeCacheAttributes
jcs.system.groupIdCache.cacheattributes.MaxObjects=1000
jcs.system.groupIdCache.cacheattributes.MemoryCacheName=org.apache.jcs.engine.memory.lru.LRUMemoryCache
##### AUXILIARY CACHES
# Indexed Disk Cache
jcs.auxiliary.DC=org.apache.jcs.auxiliary.disk.indexed.IndexedDiskCacheFactory
jcs.auxiliary.DC.attributes=org.apache.jcs.auxiliary.disk.indexed.IndexedDiskCacheAttributes
#jcs.auxiliary.DC.attributes.DiskPath=
# PRE-DEFINED CACHE REGIONS
jcs.region.main=DC
jcs.region.main.cacheattributes=org.apache.jcs.engine.CompositeCacheAttributes
jcs.region.main.cacheattributes.MaxObjects=100
jcs.region.main.cacheattributes.MemoryCacheName=org.apache.jcs.engine.memory.lru.LRUMemoryCache
jcs.region.main.cacheattributes.UseMemoryShrinker=true
jcs.region.main.cacheattributes.MaxMemoryIdleTimeSeconds=3600
jcs.region.main.cacheattributes.ShrinkerIntervalSeconds=60
1.1 cocoon-2.1/src/blocks/scratchpad/java/org/apache/cocoon/components/store/transient.ccf
Index: transient.ccf
===================================================================
# Cache configuration defaults.
jcs.default=
jcs.default.cacheattributes=org.apache.jcs.engine.CompositeCacheAttributes
jcs.default.cacheattributes.MaxObjects=100
jcs.default.cacheattributes.MemoryCacheName=org.apache.jcs.engine.memory.lru.LRUMemoryCache
# SYSTEM GROUP ID CACHE
jcs.system.groupIdCache=
jcs.system.groupIdCache.cacheattributes=org.apache.jcs.engine.CompositeCacheAttributes
jcs.system.groupIdCache.cacheattributes.MaxObjects=1000
jcs.system.groupIdCache.cacheattributes.MemoryCacheName=org.apache.jcs.engine.memory.lru.LRUMemoryCache
jcs.region.main=
jcs.region.main.cacheattributes=org.apache.jcs.engine.CompositeCacheAttributes
jcs.region.main.cacheattributes.MaxObjects=100
jcs.region.main.cacheattributes.MemoryCacheName=org.apache.jcs.engine.memory.lru.LRUMemoryCache
jcs.region.main.cacheattributes.UseMemoryShrinker=true
jcs.region.main.cacheattributes.MaxMemoryIdleTimeSeconds=3600
jcs.region.main.cacheattributes.ShrinkerIntervalSeconds=60
1.1 cocoon-2.1/src/blocks/scratchpad/java/org/apache/cocoon/components/store/JCSTransientStore.java
Index: JCSTransientStore.java
===================================================================
/*
* Copyright 2004,2004 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.
*/
package org.apache.cocoon.components.store;
import org.apache.avalon.framework.parameters.ParameterException;
import org.apache.avalon.framework.parameters.Parameters;
public class JCSTransientStore extends AbstractJCSStore {
/** The location of the JCS default properties file */
private static final String DEFAULT_PROPERTIES = "org/apache/cocoon/components/store/transient.ccf";
public JCSTransientStore() {
}
public void parameterize(Parameters parameters) throws ParameterException {
super.parameterize(parameters);
int maxobjects = parameters.getParameterAsInteger("maxobjects",-1);
if (maxobjects != -1) {
String key = "jcs.region." + m_region + ".cacheattributes.MaxObjects";
m_properties.setProperty(key,String.valueOf(maxobjects));
}
}
protected String getDefaultPropertiesFile() {
return DEFAULT_PROPERTIES;
}
}
1.1 cocoon-2.1/src/blocks/scratchpad/java/org/apache/cocoon/components/store/JCSDefaultStore.java
Index: JCSDefaultStore.java
===================================================================
/*
* Copyright 2004,2004 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.
*/
package org.apache.cocoon.components.store;
import java.io.File;
import java.io.IOException;
import org.apache.avalon.framework.context.Context;
import org.apache.avalon.framework.context.ContextException;
import org.apache.avalon.framework.context.Contextualizable;
import org.apache.avalon.framework.parameters.ParameterException;
import org.apache.avalon.framework.parameters.Parameterizable;
import org.apache.avalon.framework.parameters.Parameters;
import org.apache.cocoon.Constants;
import org.apache.cocoon.util.IOUtils;
public class JCSDefaultStore extends JCSTransientStore implements Contextualizable, Parameterizable {
/** The location of the JCS default properties file */
private static final String DEFAULT_PROPERTIES = "org/apache/cocoon/components/store/default.ccf";
/** The context containing the work and the cache directory */
private Context m_context;
// ---------------------------------------------------- Lifecycle
public JCSDefaultStore() {
}
/**
* Contextualize the Component
*
* @param context the Context of the Application
* @exception ContextException
*/
public void contextualize(Context context) throws ContextException {
m_context = context;
}
/**
* Configure the Component.<br>
* A few options can be used
*
* TODO: describe options
*
* @param params the configuration paramters
* @exception ParameterException
*/
public void parameterize(Parameters parameters) throws ParameterException {
super.parameterize(parameters);
int maxobjects = parameters.getParameterAsInteger("maxobjects",-1);
if (maxobjects != -1) {
m_properties.setProperty("jcs.default.cacheattributes.MaxObjects",String.valueOf(maxobjects));
}
// get the directory to use
try {
File workDir = (File) m_context.get(Constants.CONTEXT_WORK_DIR);
if (parameters.getParameterAsBoolean("use-cache-directory", false)) {
final File cacheDir = (File) m_context.get(Constants.CONTEXT_CACHE_DIR);
if (getLogger().isDebugEnabled()) {
getLogger().debug("Using cache directory: " + cacheDir);
}
setDirectory(cacheDir);
} else if (parameters.getParameterAsBoolean("use-work-directory", false)) {
if (getLogger().isDebugEnabled()) {
getLogger().debug("Using work directory: " + workDir);
}
setDirectory(workDir);
} else if (parameters.getParameter("directory", null) != null) {
String dir = parameters.getParameter("directory");
dir = IOUtils.getContextFilePath(workDir.getPath(), dir);
if (getLogger().isDebugEnabled()) {
getLogger().debug("Using directory: " + dir);
}
setDirectory(new File(dir));
} else {
if (getLogger().isDebugEnabled()) {
getLogger().debug("Using default directory: " + workDir);
}
setDirectory(workDir);
}
} catch (ContextException ce) {
throw new ParameterException("Unable to get directory information from context.", ce);
} catch (IOException e) {
throw new ParameterException("Unable to set directory", e);
}
}
protected String getDefaultPropertiesFile() {
return DEFAULT_PROPERTIES;
}
/**
* Sets the disk cache location.
*/
private void setDirectory(final File directory)
throws IOException
{
/* Does directory exist? */
if (!directory.exists())
{
/* Create it anew */
if (!directory.mkdirs())
{
throw new IOException(
"Error creating store directory '" + directory.getAbsolutePath() + "'. ");
}
}
/* Is given file actually a directory? */
if (!directory.isDirectory())
{
throw new IOException("'" + directory.getAbsolutePath() + "' is not a directory");
}
/* Is directory readable and writable? */
if (!(directory.canRead() && directory.canWrite()))
{
throw new IOException(
"Directory '" + directory.getAbsolutePath() + "' is not readable/writable"
);
}
m_properties.setProperty("jcs.auxiliary.DC.attributes.DiskPath",directory.getAbsolutePath());
}
}