cziegeler 2003/07/26 06:26:47
Modified: . gump.xml
src/java/org/apache/cocoon/components/store/impl
DefaultStore.java
src/deprecated/java/org/apache/cocoon/components/store
JispFilesystemStore.java JispStringKey.java
lib jars.xml
Added: lib/core jisp-2.5.1.jar excalibur-store-20030726.jar
Removed: lib/core excalibur-store-20030317.jar jisp-2.0.1.jar
Log:
Updating to latest jisp and excalibur store
Revision Changes Path
1.71 +2 -2 cocoon-2.1/gump.xml
Index: gump.xml
===================================================================
RCS file: /home/cvs/cocoon-2.1/gump.xml,v
retrieving revision 1.70
retrieving revision 1.71
diff -u -r1.70 -r1.71
--- gump.xml 14 Jul 2003 02:52:25 -0000 1.70
+++ gump.xml 26 Jul 2003 13:26:47 -0000 1.71
@@ -984,7 +984,7 @@
Java Indexed Serialization Package
</description>
<home nested="lib/core"/>
- <jar name="jisp-2.0.1.jar"/>
+ <jar name="jisp-2.5.1.jar"/>
</project>
<project name="jing">
1.3 +2 -2
cocoon-2.1/src/java/org/apache/cocoon/components/store/impl/DefaultStore.java
Index: DefaultStore.java
===================================================================
RCS file:
/home/cvs/cocoon-2.1/src/java/org/apache/cocoon/components/store/impl/DefaultStore.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- DefaultStore.java 14 Jul 2003 19:09:00 -0000 1.2
+++ DefaultStore.java 26 Jul 2003 13:26:47 -0000 1.3
@@ -78,7 +78,7 @@
* @author <a href="mailto:[EMAIL PROTECTED]">Vadim Gritsenko</a>
* @version CVS $Id$
*/
-public final class DefaultStore extends AbstractJispFilesystemStore
+public class DefaultStore extends AbstractJispFilesystemStore
implements org.apache.excalibur.store.Store,
Contextualizable,
ThreadSafe,
1.3 +7 -423
cocoon-2.1/src/deprecated/java/org/apache/cocoon/components/store/JispFilesystemStore.java
Index: JispFilesystemStore.java
===================================================================
RCS file:
/home/cvs/cocoon-2.1/src/deprecated/java/org/apache/cocoon/components/store/JispFilesystemStore.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- JispFilesystemStore.java 27 Apr 2003 15:16:15 -0000 1.2
+++ JispFilesystemStore.java 26 Jul 2003 13:26:47 -0000 1.3
@@ -50,435 +50,19 @@
*/
package org.apache.cocoon.components.store;
-import com.coyotegulch.jisp.BTreeIndex;
-import com.coyotegulch.jisp.BTreeObjectIterator;
-import com.coyotegulch.jisp.IndexedObjectDatabase;
-import com.coyotegulch.jisp.KeyNotFound;
-import com.coyotegulch.jisp.KeyObject;
-
-import org.apache.avalon.framework.activity.Initializable;
-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.AbstractLogEnabled;
-import org.apache.avalon.framework.parameters.ParameterException;
-import org.apache.avalon.framework.parameters.Parameterizable;
-import org.apache.avalon.framework.parameters.Parameters;
-import org.apache.avalon.framework.thread.ThreadSafe;
-import org.apache.cocoon.Constants;
-import org.apache.cocoon.util.IOUtils;
-
-import java.io.File;
-import java.io.IOException;
-import java.io.Serializable;
-import java.util.Enumeration;
+import org.apache.cocoon.components.store.impl.DefaultStore;
/**
* This store is based on the Jisp library
* (http://www.coyotegulch.com/jisp/index.html). This store uses B-Tree indexes
* to access variable-length serialized data stored in files.
- *
+ *
+ * @deprecated Use the [EMAIL PROTECTED]
org.apache.cocoon.components.store.impl.DefaultStore} instead.
+ *
* @author <a href="mailto:[EMAIL PROTECTED]">Gerhard Froehlich</a>
* @author <a href="mailto:[EMAIL PROTECTED]">Vadim Gritsenko</a>
* @version CVS $Id$
*/
-public final class JispFilesystemStore extends AbstractLogEnabled
- implements org.apache.excalibur.store.Store,
- Contextualizable,
- ThreadSafe,
- Initializable,
- Parameterizable {
-
- protected File m_workDir;
- protected File m_cacheDir;
-
- /**
- * The directory repository
- */
- protected File m_directoryFile;
- protected volatile String m_directoryPath;
-
- /**
- * The database
- */
- private File m_databaseFile;
- private File m_indexFile;
-
- private int m_Order;
- private IndexedObjectDatabase m_Database;
- private BTreeIndex m_Index;
-
- /**
- * Sets the repository's location
- *
- * @param directory the new directory value
- * @exception IOException
- */
- public void setDirectory(final String directory)
- throws IOException {
- this.setDirectory(new File(directory));
- }
-
- /**
- * Sets the repository's location
- *
- * @param directory the new directory value
- * @exception IOException
- */
-
- public void setDirectory(final File directory)
- throws IOException {
- this.m_directoryFile = directory;
-
- /* Save directory path prefix */
- this.m_directoryPath = IOUtils.getFullFilename(this.m_directoryFile);
- this.m_directoryPath += File.separator;
-
- if (!this.m_directoryFile.exists()) {
- /* Create it new */
- if (!this.m_directoryFile.mkdir()) {
- throw new IOException("Error creating store directory '" +
- this.m_directoryPath + "'");
- }
- }
-
- /* Is given file actually a directory? */
- if (!this.m_directoryFile.isDirectory()) {
- throw new IOException("'" + this.m_directoryPath + "' is not a
directory");
- }
-
- /* Is directory readable and writable? */
- if (!(this.m_directoryFile.canRead() && this.m_directoryFile.canWrite())) {
- throw new IOException("Directory '" + this.m_directoryPath +
- "' is not readable/writable");
- }
- }
-
- /**
- * Contextualize the Component
- *
- * @param context the Context of the Application
- * @exception ContextException
- */
- public void contextualize(final Context context) throws ContextException {
- this.m_workDir = (File)context.get(Constants.CONTEXT_WORK_DIR);
- this.m_cacheDir = (File)context.get(Constants.CONTEXT_CACHE_DIR);
- }
-
- /**
- * Configure the Component.<br>
- * A few options can be used
- * <UL>
- * <LI> datafile = the name of the data file (Default: cocoon.dat)
- * </LI>
- * <LI> m_indexFile = the name of the index file (Default: cocoon.idx)
- * </LI>
- * <LI> order = The page size of the B-Tree</LI>
- * </UL>
- *
- * @param params the configuration paramters
- * @exception ParameterException
- */
- public void parameterize(Parameters params) throws ParameterException {
-
- try {
- if (params.getParameterAsBoolean("use-cache-directory", false)) {
- if (getLogger().isDebugEnabled()) {
- getLogger().debug("Using cache directory: " + m_cacheDir);
- }
- setDirectory(m_cacheDir);
- } else if (params.getParameterAsBoolean("use-work-directory", false)) {
- if (getLogger().isDebugEnabled()) {
- getLogger().debug("Using work directory: " + m_workDir);
- }
- setDirectory(m_workDir);
- } else if (params.getParameter("directory", null) != null) {
- String dir = params.getParameter("directory");
- dir = IOUtils.getContextFilePath(m_workDir.getPath(), dir);
- if (getLogger().isDebugEnabled()) {
- getLogger().debug("Using directory: " + dir);
- }
- setDirectory(new File(dir));
- } else {
- try {
- // Default
- setDirectory(m_workDir);
- } catch (IOException e) {
- // Ignored
- }
- }
- } catch (IOException e) {
- throw new ParameterException("Unable to set directory", e);
- }
-
- String databaseName = params.getParameter("datafile", "cocoon.dat");
- String indexName = params.getParameter("m_indexFile", "cocoon.idx");
- m_Order = params.getParameterAsInteger("order", 301);
- if (getLogger().isDebugEnabled()) {
- getLogger().debug("Database file name = " + databaseName);
- getLogger().debug("Index file name = " + indexName);
- getLogger().debug("Order=" + m_Order);
- }
-
- m_databaseFile = new File(m_directoryFile, databaseName);
- m_indexFile = new File(m_directoryFile, indexName);
- }
-
- /**
- * Initialize the Component
- */
- public void initialize() {
- if (getLogger().isDebugEnabled()) {
- getLogger().debug("initialize() JispFilesystemStore");
- }
-
- try {
- if (m_databaseFile.exists()) {
- if (getLogger().isDebugEnabled()) {
- getLogger().debug("initialize(): Datafile exists");
- }
- m_Database = new IndexedObjectDatabase(m_databaseFile.toString(),
false);
- m_Index = new BTreeIndex(m_indexFile.toString());
- m_Database.attachIndex(m_Index);
- } else {
- if (getLogger().isDebugEnabled()) {
- getLogger().debug("initialize(): Datafile does not exist");
- }
- m_Database = new IndexedObjectDatabase(m_databaseFile.toString(),
false);
- m_Index = new BTreeIndex(m_indexFile.toString(),
- m_Order, new JispStringKey(), false);
- m_Database.attachIndex(m_Index);
- }
- } catch (KeyNotFound ignore) {
- } catch (Exception e) {
- getLogger().error("initialize(..) Exception", e);
- }
- }
-
- /**
- * Returns the repository's full pathname
- *
- * @return the directory as String
- */
- public String getDirectoryPath() {
- return this.m_directoryPath;
- }
-
- /**
- * Returns a Object from the store associated with the Key Object
- *
- * @param key the Key object
- * @return the Object associated with Key Object
- */
- public synchronized Object get(Object key) {
- Object value = null;
- try {
- value = m_Database.read(wrapKeyObject(key), m_Index);
- if (getLogger().isDebugEnabled()) {
- if (value != null) {
- if (getLogger().isDebugEnabled()) {
- getLogger().debug("Found key: " + key);
- }
- } else {
- if (getLogger().isDebugEnabled()) {
- getLogger().debug("NOT Found key: " + key);
- }
- }
- }
- } catch (Exception e) {
- getLogger().error("get(..): Exception", e);
- }
- return value;
- }
-
- /**
- * Store the given object in the indexed data file.
- *
- * @param key the key object
- * @param value the value object
- * @exception IOException
- */
- public synchronized void store(Object key, Object value)
- throws IOException {
-
- if (getLogger().isDebugEnabled()) {
- getLogger().debug("store(): Store file with key: "
- + key.toString());
- getLogger().debug("store(): Store file with value: "
- + value.toString());
- }
-
- if (value instanceof Serializable) {
- try {
- KeyObject[] keyArray = new KeyObject[1];
- keyArray[0] = wrapKeyObject(key);
- m_Database.write(keyArray, (Serializable) value);
- } catch (Exception e) {
- getLogger().error("store(..): Exception", e);
- }
- } else {
- throw new IOException("Object not Serializable");
- }
- }
-
- /**
- * Holds the given object in the indexed data file.
- *
- * @param key the key object
- * @param value the value object
- * @exception IOException
- */
- public synchronized void hold(Object key, Object value)
- throws IOException {
- this.store(key, value);
- }
-
- /**
- * Frees some values of the data file.<br>
- */
- public synchronized void free() {
- // implementation is missing
- }
-
- /**
- * Clear the Store of all elements
- */
- public synchronized void clear() {
- BTreeObjectEnumeration enum = new
BTreeObjectEnumeration(m_Database.createIterator(m_Index),this);
-
- if (getLogger().isDebugEnabled()) {
- getLogger().debug("clear(): Clearing the database ");
- }
-
- while(enum.hasMoreElements()) {
- Object tmp = enum.nextElement();
- if (getLogger().isDebugEnabled()) {
- getLogger().debug("clear(): Removing key: " + tmp.toString());
- }
- this.remove(tmp);
- }
- }
-
- /**
- * Removes a value from the data file with the given key.
- *
- * @param key the key object
- */
- public synchronized void remove(Object key) {
- if (getLogger().isDebugEnabled()) {
- getLogger().debug("remove(..) Remove item");
- }
-
- try {
- KeyObject[] keyArray = new KeyObject[1];
- keyArray[0] = wrapKeyObject(key);
- m_Database.remove(keyArray);
- } catch (KeyNotFound ignore) {
- } catch (Exception e) {
- getLogger().error("remove(..): Exception", e);
- }
- }
-
- /**
- * Test if the the index file contains the given key
- *
- * @param key the key object
- * @return true if Key exists and false if not
- */
- public synchronized boolean containsKey(Object key) {
- long res = -1;
-
- try {
- res = m_Index.findKey(wrapKeyObject(key));
- if (getLogger().isDebugEnabled()) {
- getLogger().debug("containsKey(..): res=" + res);
- }
- } catch (KeyNotFound ignore) {
- } catch (Exception e) {
- getLogger().error("containsKey(..): Exception", e);
- }
-
- if (res > 0) {
- return true;
- } else {
- return false;
- }
- }
-
- /**
- * Returns a Enumeration of all Keys in the indexed file.<br>
- *
- * @return Enumeration Object with all existing keys
- */
- public Enumeration keys() {
- BTreeObjectEnumeration enum = new
BTreeObjectEnumeration(m_Database.createIterator(m_Index),this);
- return enum;
- }
-
- public int size() {
- int cnt = 0;
-
- BTreeObjectEnumeration enum = new
BTreeObjectEnumeration(m_Database.createIterator(m_Index),this);
-
- while(enum.hasMoreElements()) {
- cnt++;
- }
- return cnt;
- }
-
- /**
- * This method wraps around the key Object a Jisp KeyObject.
- *
- * @param key the key object
- * @return the wrapped key object
- */
- private KeyObject wrapKeyObject(Object key) {
- return new JispStringKey(String.valueOf(key));
- }
-
- class BTreeObjectEnumeration implements Enumeration {
- private BTreeObjectIterator m_Iterator;
- private JispFilesystemStore m_Store;
-
- public BTreeObjectEnumeration(BTreeObjectIterator iterator,
JispFilesystemStore store) {
- m_Iterator = iterator;
- m_Store = store;
- }
-
- public boolean hasMoreElements() {
- boolean hasMore = false;
- Object tmp = null;
-
- try {
- tmp = m_Iterator.getKey();
-
- if(m_Iterator.moveNext()) {
- hasMore = true;
- }
-
- /* resets iterator to the old state **/
- m_Iterator.moveTo((KeyObject)tmp);
- } catch (IOException ioe) {
- m_Store.getLogger().error("store(..): Exception", ioe);
- } catch (ClassNotFoundException cnfe) {
- m_Store.getLogger().error("store(..): Exception", cnfe);
- }
- return hasMore;
- }
-
- public Object nextElement() {
- Object tmp = null;
-
- try {
- tmp = m_Iterator.getKey();
- m_Iterator.moveNext();
- } catch (IOException ioe) {
- m_Store.getLogger().error("store(..): Exception", ioe);
- } catch (ClassNotFoundException cnfe) {
- m_Store.getLogger().error("store(..): Exception", cnfe);
- }
- // make a string out of it (JispStringKey is not usefull here)
- return tmp.toString();
- }
- }
+public final class JispFilesystemStore
+extends DefaultStore {
}
1.2 +2 -1
cocoon-2.1/src/deprecated/java/org/apache/cocoon/components/store/JispStringKey.java
Index: JispStringKey.java
===================================================================
RCS file:
/home/cvs/cocoon-2.1/src/deprecated/java/org/apache/cocoon/components/store/JispStringKey.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- JispStringKey.java 9 Mar 2003 00:07:06 -0000 1.1
+++ JispStringKey.java 26 Jul 2003 13:26:47 -0000 1.2
@@ -60,6 +60,7 @@
* Wrapper class for String Keys to be compatible with the
* Jisp KeyObject.
*
+ * @deprecated Use the Avalon Excalibur Store instead.
* @author <a href="mailto:[EMAIL PROTECTED]">Gerhard Froehlich</a>
* @version CVS $Id$
*/
1.1 cocoon-2.1/lib/core/jisp-2.5.1.jar
<<Binary file>>
1.1 cocoon-2.1/lib/core/excalibur-store-20030726.jar
<<Binary file>>
1.70 +3 -3 cocoon-2.1/lib/jars.xml
Index: jars.xml
===================================================================
RCS file: /home/cvs/cocoon-2.1/lib/jars.xml,v
retrieving revision 1.69
retrieving revision 1.70
diff -u -r1.69 -r1.70
--- jars.xml 25 Jul 2003 16:20:30 -0000 1.69
+++ jars.xml 26 Jul 2003 13:26:47 -0000 1.70
@@ -206,7 +206,7 @@
support high level server development.
</description>
<used-by>Cocoon</used-by>
- <lib>core/excalibur-store-20030317.jar</lib>
+ <lib>core/excalibur-store-20030726.jar</lib>
<homepage>http://avalon.apache.org/excalibur/</homepage>
</file>
@@ -479,7 +479,7 @@
<title>JISP</title>
<description></description>
<used-by>JISP file storage</used-by>
- <lib>core/jisp-2.0.1.jar</lib>
+ <lib>core/jisp-2.5.1.jar</lib>
<homepage>http://www.coyotegulch.com/algorithm/jisp/index.html</homepage>
</file>