dims 01/07/18 03:44:26
Modified: . build.xml
src/org/apache/cocoon Constants.java Main.java
src/org/apache/cocoon/components/store MRUMemoryStore.java
src/org/apache/cocoon/servlet CocoonServlet.java
webapp/WEB-INF web.xml
Log:
- Patches from Gerhard Froehlich for File/MRU system store
- fix problem in build.xml, added dummy prepare-sitewebapp
Revision Changes Path
1.31 +7 -0 xml-cocoon2/build.xml
Index: build.xml
===================================================================
RCS file: /home/cvs/xml-cocoon2/build.xml,v
retrieving revision 1.30
retrieving revision 1.31
diff -u -r1.30 -r1.31
--- build.xml 2001/07/18 07:43:02 1.30
+++ build.xml 2001/07/18 10:44:26 1.31
@@ -504,6 +504,13 @@
</target>
<!-- =================================================================== -->
+ <!-- Prepares the sitewebapp directories -->
+ <!-- =================================================================== -->
+ <target name="prepare-sitewebapp" depends="copy-webapp">
+ <!-- Simply do nothing, just invoke all dependencies -->
+ </target>
+
+ <!-- =================================================================== -->
<!-- Prepares the libraries for the war package -->
<!-- =================================================================== -->
<target name="prepare-xsp" depends="package" if="compile.xsp">
1.10 +2 -1 xml-cocoon2/src/org/apache/cocoon/Constants.java
Index: Constants.java
===================================================================
RCS file: /home/cvs/xml-cocoon2/src/org/apache/cocoon/Constants.java,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -r1.9 -r1.10
--- Constants.java 2001/07/12 12:28:06 1.9
+++ Constants.java 2001/07/18 10:44:26 1.10
@@ -10,7 +10,7 @@
/**
* @author <a href="mailto:[EMAIL PROTECTED]">Stefano Mazzocchi</a>
- * @version CVS $Revision: 1.9 $ $Date: 2001/07/12 12:28:06 $
+ * @version CVS $Revision: 1.10 $ $Date: 2001/07/18 10:44:26 $
*/
public interface Constants {
@@ -67,6 +67,7 @@
String CONTEXT_CLASS_LOADER = "class-loader";
String CONTEXT_WORK_DIR = "work-directory";
String CONTEXT_UPLOAD_DIR = "upload-directory";
+ String CONTEXT_CACHE_DIR = "cache-directory";
String CONTEXT_CLASSPATH = "classpath";
String CONTEXT_CONFIG_URL = "config-url";
String CONTEXT_LOG_DIR = "log-directory";
1.10 +2 -1 xml-cocoon2/src/org/apache/cocoon/Main.java
Index: Main.java
===================================================================
RCS file: /home/cvs/xml-cocoon2/src/org/apache/cocoon/Main.java,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -r1.9 -r1.10
--- Main.java 2001/07/13 14:09:17 1.9
+++ Main.java 2001/07/18 10:44:26 1.10
@@ -48,7 +48,7 @@
* Command line entry point.
*
* @author <a href="mailto:[EMAIL PROTECTED]">Stefano Mazzocchi</a>
- * @version CVS $Revision: 1.9 $ $Date: 2001/07/13 14:09:17 $
+ * @version CVS $Revision: 1.10 $ $Date: 2001/07/18 10:44:26 $
*/
public class Main {
@@ -247,6 +247,7 @@
appContext.put(Constants.CONTEXT_CLASSPATH, getClassPath(contextDir));
appContext.put(Constants.CONTEXT_WORK_DIR, work);
appContext.put(Constants.CONTEXT_UPLOAD_DIR, contextDir + "image-dir");
+ appContext.put(Constants.CONTEXT_CACHE_DIR, contextDir + "cache-dir");
appContext.put(Constants.CONTEXT_CONFIG_URL, conf.toURL());
appContext.put(Constants.CONTEXT_LOG_DIR, logDir);
appContext.put(Constants.CONTEXT_LOG_FILE, logFile);
1.6 +38 -5
xml-cocoon2/src/org/apache/cocoon/components/store/MRUMemoryStore.java
Index: MRUMemoryStore.java
===================================================================
RCS file:
/home/cvs/xml-cocoon2/src/org/apache/cocoon/components/store/MRUMemoryStore.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- MRUMemoryStore.java 2001/07/17 10:41:56 1.5
+++ MRUMemoryStore.java 2001/07/18 10:44:26 1.6
@@ -14,10 +14,14 @@
import java.util.HashMap;
import java.util.LinkedList;
import java.util.Stack;
+import java.util.StringTokenizer;
+import java.util.Vector;
+import org.apache.cocoon.Constants;
import org.apache.cocoon.util.ClassUtils;
import org.apache.cocoon.util.IOUtils;
+
import org.apache.avalon.framework.component.Component;
import org.apache.avalon.framework.component.ComponentException;
import org.apache.avalon.framework.component.ComponentManager;
@@ -25,6 +29,9 @@
import org.apache.avalon.framework.configuration.Configurable;
import org.apache.avalon.framework.configuration.Configuration;
import org.apache.avalon.framework.configuration.ConfigurationException;
+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.logger.AbstractLoggable;
import org.apache.avalon.framework.parameters.Parameters;
import org.apache.avalon.framework.thread.ThreadSafe;
@@ -43,7 +50,9 @@
* @author <a href="mailto:[EMAIL PROTECTED]">Davanum Srinivas</a>
*/
-public class MRUMemoryStore extends AbstractLoggable implements Store,
Configurable, ThreadSafe, Runnable, Composable {
+public class MRUMemoryStore extends AbstractLoggable implements Store,
Configurable,
+ ThreadSafe,
Runnable,
+ Composable,
Contextualizable {
/**
* Indicates how much memory should be left free in the JVM for
* normal operation.
@@ -93,10 +102,15 @@
private Store fsstore;
private Stack writerstack;
private Thread writer;
-
- /** the component manager */
+ private File cachedir;
+ private String cachedirstr;
+
+ /** the component manager */
protected ComponentManager manager;
+ /**
+ * Get the filesystem store from the component manager
+ */
public void compose(ComponentManager manager) throws ComponentException {
try {
this.manager = manager;
@@ -106,6 +120,25 @@
getLogger().error("Error in MRUMemoryStore!",e);
}
}
+
+ /**
+ * Get the caching directory from the servlet context
+ */
+ public void contextualize(Context context) throws ContextException {
+ this.cachedirstr = new String();
+ try {
+ this.cachedir = (File)context.get(Constants.CONTEXT_CACHE_DIR);
+ StringTokenizer stizer = new
StringTokenizer(this.cachedir.getPath(),this.cachedir.separator);
+ Vector v = new Vector();
+ while (stizer.hasMoreTokens()) {
+ v.add(stizer.nextToken());
+ }
+ cachedirstr = (String)v.lastElement();
+ getLogger().debug("MRUMemoryStore contextualize strcachedir=" +
this.cachedirstr);
+ } catch (Exception e) {
+ getLogger().error("Error in MRUMemoryStore()",e);
+ }
+ }
/**
* Initialize the MRUMemoryStore.
@@ -144,7 +177,7 @@
}
this.usecleanupthread =
params.getParameter("usecleanupthread","true").equals("true");
-
+
if (this.usecleanupthread) {
getLogger().debug("MRUMemoryStore intializing checker thread");
Thread checker = new Thread(this);
@@ -195,7 +228,7 @@
tmpstackobject = (TmpStackObject)this.writerstack.pop();
key = tmpstackobject.getKey();
object = tmpstackobject.getObject();
- this.fsstore.store(URLEncoder.encode(key.toString()),object);
+ this.fsstore.store(this.cachedirstr + "/" +
URLEncoder.encode(key.toString()),object);
key = null;
object = null;
tmpstackobject = null;
1.19 +12 -1 xml-cocoon2/src/org/apache/cocoon/servlet/CocoonServlet.java
Index: CocoonServlet.java
===================================================================
RCS file: /home/cvs/xml-cocoon2/src/org/apache/cocoon/servlet/CocoonServlet.java,v
retrieving revision 1.18
retrieving revision 1.19
diff -u -r1.18 -r1.19
--- CocoonServlet.java 2001/07/13 19:07:46 1.18
+++ CocoonServlet.java 2001/07/18 10:44:26 1.19
@@ -59,7 +59,7 @@
* @author <a href="mailto:[EMAIL PROTECTED]">Nicola Ken Barozzi</a> Aisa
* @author <a href="mailto:[EMAIL PROTECTED]">Berin Loritsch</a>
* @author <a href="mailto:[EMAIL PROTECTED]">Carsten Ziegeler</a>
- * @version CVS $Revision: 1.18 $ $Date: 2001/07/13 19:07:46 $
+ * @version CVS $Revision: 1.19 $ $Date: 2001/07/18 10:44:26 $
*/
public class CocoonServlet extends HttpServlet {
@@ -89,6 +89,7 @@
private static final int MAX_UPLOAD_SIZE = 10000000; // 10Mb
private File uploadDir;
private File workDir;
+ private File cacheDir;
protected ServletContext servletContext;
protected RepositoryClassLoader classLoader;
@@ -141,6 +142,16 @@
this.appContext.put(Constants.CONTEXT_UPLOAD_DIR, this.uploadDir);
this.uploadDir.mkdirs();
+ String cacheDirParam = conf.getInitParameter("cache-directory");
+ if ((cacheDirParam != null) && (cacheDirParam.trim().equals("") == false)) {
+ this.cacheDir = IOUtils.createFile( new
File(this.servletContext.getRealPath("/")) , cacheDirParam);
+ } else {
+ this.cacheDir = IOUtils.createFile(workDir, "cache-dir" +
File.separator);
+ }
+
+ this.appContext.put(Constants.CONTEXT_CACHE_DIR, this.cacheDir);
+ this.cacheDir.mkdirs();
+
this.appContext.put(Constants.CONTEXT_CONFIG_URL,
this.getConfigFile(conf.getInitParameter("configurations")));
1.5 +12 -0 xml-cocoon2/webapp/WEB-INF/web.xml
Index: web.xml
===================================================================
RCS file: /home/cvs/xml-cocoon2/webapp/WEB-INF/web.xml,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- web.xml 2001/07/12 11:08:28 1.4
+++ web.xml 2001/07/18 10:44:26 1.5
@@ -113,6 +113,18 @@
<param-value>/WEB-INF/work/image-dir</param-value>
</init-param>
-->
+
+ <!--
+ This parameter allows to specify where Cocoon should put files
+ which are cached by the storing class. The path specified
+ is always relative to the context path of the servlet.
+ The default directory is "cache-dir" in the work-directory
+
+ <init-param>
+ <param-name>cache-directory</param-name>
+ <param-value>/WEB-INF/work/cache-dir</param-value>
+ </init-param>
+ -->
<!--
This parameter allows to specify where Cocoon should put it's
----------------------------------------------------------------------
In case of troubles, e-mail: [EMAIL PROTECTED]
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]