vgritsenko 02/02/01 05:27:33 Modified: . changes.xml src/java/org/apache/cocoon/components/store FilesystemStore.java MRUMemoryStore.java MemoryStore.java Store.java StoreJanitorImpl.java src/scratchpad/src/org/apache/cocoon/jispstore JispFilesystemStore.java MRUMemoryStore.java Log: Add size() to the Store interface Revision Changes Path 1.91 +4 -1 xml-cocoon2/changes.xml Index: changes.xml =================================================================== RCS file: /home/cvs/xml-cocoon2/changes.xml,v retrieving revision 1.90 retrieving revision 1.91 diff -u -r1.90 -r1.91 --- changes.xml 31 Jan 2002 19:42:41 -0000 1.90 +++ changes.xml 1 Feb 2002 13:27:32 -0000 1.91 @@ -4,7 +4,7 @@ <!-- History of Cocoon changes - $Id: changes.xml,v 1.90 2002/01/31 19:42:41 stefano Exp $ + $Id: changes.xml,v 1.91 2002/02/01 13:27:32 vgritsenko Exp $ --> <changes title="History of Changes"> @@ -31,6 +31,9 @@ </devs> <release version="@version@" date="@date@"> + <action dev="VG" type="add"> + Added size() method to the Store interface. + </action> <action dev="GP" type="fixed"> Prevent PostInputStream from looping if the available() method of the base InputStream is returning 0. 1.3 +25 -4 xml-cocoon2/src/java/org/apache/cocoon/components/store/FilesystemStore.java Index: FilesystemStore.java =================================================================== RCS file: /home/cvs/xml-cocoon2/src/java/org/apache/cocoon/components/store/FilesystemStore.java,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- FilesystemStore.java 22 Jan 2002 00:17:12 -0000 1.2 +++ FilesystemStore.java 1 Feb 2002 13:27:32 -0000 1.3 @@ -169,23 +169,44 @@ /** * Returns the list of stored files as an Enumeration of Files */ - public Enumeration keys() { + public Enumeration keys() { final FSEnumeration enum = new FSEnumeration(); this.addKeys(enum, this.directoryFile); return enum; } - protected void addKeys(FSEnumeration enum, - File directory) { + /** + * Returns count of the objects in the store, or -1 if could not be + * obtained. + */ + public int size() { + return countKeys(this.directoryFile); + } + + protected void addKeys(FSEnumeration enum, File directory) { final int subStringBegin = this.directoryFile.getAbsolutePath().length() + 1; final File[] files = directory.listFiles(); - for(int i=0; i<files.length; i++) { + for (int i=0; i<files.length; i++) { if (files[i].isDirectory()) { this.addKeys(enum, files[i]); } else { enum.add(files[i].getAbsolutePath().substring(subStringBegin)); } } + } + + protected int countKeys(File directory) { + int count = 0; + final int subStringBegin = this.directoryFile.getAbsolutePath().length() + 1; + final File[] files = directory.listFiles(); + for (int i=0; i<files.length; i++) { + if (files[i].isDirectory()) { + count += this.countKeys(files[i]); + } else { + count ++; + } + } + return count; } final class FSEnumeration implements Enumeration { 1.6 +9 -0 xml-cocoon2/src/java/org/apache/cocoon/components/store/MRUMemoryStore.java Index: MRUMemoryStore.java =================================================================== RCS file: /home/cvs/xml-cocoon2/src/java/org/apache/cocoon/components/store/MRUMemoryStore.java,v retrieving revision 1.5 retrieving revision 1.6 diff -u -r1.5 -r1.6 --- MRUMemoryStore.java 29 Jan 2002 19:39:54 -0000 1.5 +++ MRUMemoryStore.java 1 Feb 2002 13:27:32 -0000 1.6 @@ -286,6 +286,15 @@ } /** + * Returns count of the objects in the store, or -1 if could not be + * obtained. + */ + public int size() + { + return this.cache.size(); + } + + /** * Frees some of the fast memory used by this store. * It removes the last element in the store. */ 1.2 +10 -1 xml-cocoon2/src/java/org/apache/cocoon/components/store/MemoryStore.java Index: MemoryStore.java =================================================================== RCS file: /home/cvs/xml-cocoon2/src/java/org/apache/cocoon/components/store/MemoryStore.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- MemoryStore.java 3 Jan 2002 12:31:14 -0000 1.1 +++ MemoryStore.java 1 Feb 2002 13:27:32 -0000 1.2 @@ -20,7 +20,7 @@ * (Apache Software Foundation) * @author <a href="mailto:[EMAIL PROTECTED]">Pierpaolo Fumagalli</a> * (Apache Software Foundation, Exoffice Technologies) - * @version CVS $Revision: 1.1 $ $Date: 2002/01/03 12:31:14 $ + * @version CVS $Revision: 1.2 $ $Date: 2002/02/01 13:27:32 $ */ public class MemoryStore implements Store, ThreadSafe { /* WARNING: Hashtable is threadsafe, whereas HashMap is not. @@ -82,5 +82,14 @@ */ public Enumeration keys() { return(table.keys()); + } + + /** + * Returns count of the objects in the store, or -1 if could not be + * obtained. + */ + public int size() + { + return table.size(); } } 1.2 +6 -1 xml-cocoon2/src/java/org/apache/cocoon/components/store/Store.java Index: Store.java =================================================================== RCS file: /home/cvs/xml-cocoon2/src/java/org/apache/cocoon/components/store/Store.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- Store.java 3 Jan 2002 12:31:14 -0000 1.1 +++ Store.java 1 Feb 2002 13:27:32 -0000 1.2 @@ -20,7 +20,7 @@ * (Apache Software Foundation) * @author <a href="mailto:[EMAIL PROTECTED]">Pierpaolo Fumagalli</a> * (Apache Software Foundation, Exoffice Technologies) - * @version CVS $Revision: 1.1 $ $Date: 2002/01/03 12:31:14 $ + * @version CVS $Revision: 1.2 $ $Date: 2002/02/01 13:27:32 $ */ public interface Store extends Component { @@ -62,4 +62,9 @@ */ Enumeration keys(); + /** + * Returns count of the objects in the store, or -1 if could not be + * obtained. + */ + int size(); } 1.7 +8 -21 xml-cocoon2/src/java/org/apache/cocoon/components/store/StoreJanitorImpl.java Index: StoreJanitorImpl.java =================================================================== RCS file: /home/cvs/xml-cocoon2/src/java/org/apache/cocoon/components/store/StoreJanitorImpl.java,v retrieving revision 1.6 retrieving revision 1.7 diff -u -r1.6 -r1.7 --- StoreJanitorImpl.java 28 Jan 2002 19:57:52 -0000 1.6 +++ StoreJanitorImpl.java 1 Feb 2002 13:27:32 -0000 1.7 @@ -44,7 +44,7 @@ private ArrayList storelist; private int index = -1; private static boolean doRun = false; - private int m_percent; + private double fraction; /** * Initialize the StoreJanitorImpl. @@ -71,7 +71,7 @@ this.setCleanupthreadinterval(params.getParameterAsInteger("cleanupthreadinterval",10)); this.setPriority(params.getParameterAsInteger( "threadpriority", Thread.currentThread().getPriority())); - this.m_percent = params.getParameterAsInteger( "percent_to_free",10); + int percent = params.getParameterAsInteger("percent_to_free", 10); if ((this.getFreememory() < 1)) { throw new ConfigurationException("StoreJanitorImpl freememory parameter has to be greater then 1"); @@ -85,10 +85,11 @@ if ((this.getPriority() < 1)) { throw new ConfigurationException("StoreJanitorImpl threadpriority has to be greater then 1"); } - if ((this.m_percent > 100 && this.m_percent < 1)) { + if ((percent > 100 && percent < 1)) { throw new ConfigurationException("StoreJanitorImpl percent_to_free, has to be between 1 and 100"); } + this.fraction = percent / 100.0; this.setStoreList(new ArrayList()); } @@ -281,26 +282,12 @@ * @return number of elements to be removed! */ private int calcToFree(Store store) { - int cnt = 0; - try { - this.getLogger().debug("Calculating percentage!"); - Enumeration enum = store.keys(); - - while(enum.hasMoreElements()) { - cnt++; - enum.nextElement(); - } - - this.getLogger().debug("Counted: " + cnt); - double fac = new Integer(this.m_percent).doubleValue() / 100; - double dcnt = new Integer(cnt).doubleValue(); - this.getLogger().debug("Calculated: " + new Double(dcnt * fac).intValue()); - - return new Double(dcnt * fac).intValue(); - } catch (Exception e) { - this.getLogger().error("",e); + int cnt = store.size(); + if (cnt < 0) { + getLogger().debug("Unknown size of the store: " + store); return 0; } + return (int)(cnt * fraction); } /** 1.5 +5 -0 xml-cocoon2/src/scratchpad/src/org/apache/cocoon/jispstore/JispFilesystemStore.java Index: JispFilesystemStore.java =================================================================== RCS file: /home/cvs/xml-cocoon2/src/scratchpad/src/org/apache/cocoon/jispstore/JispFilesystemStore.java,v retrieving revision 1.4 retrieving revision 1.5 diff -u -r1.4 -r1.5 --- JispFilesystemStore.java 15 Jan 2002 18:16:16 -0000 1.4 +++ JispFilesystemStore.java 1 Feb 2002 13:27:32 -0000 1.5 @@ -337,6 +337,11 @@ return null; } + public int size() { + //TODO: Implementation + return 0; + } + /** * This method wraps around the key Object a Jisp KeyObject. * 1.5 +4 -0 xml-cocoon2/src/scratchpad/src/org/apache/cocoon/jispstore/MRUMemoryStore.java Index: MRUMemoryStore.java =================================================================== RCS file: /home/cvs/xml-cocoon2/src/scratchpad/src/org/apache/cocoon/jispstore/MRUMemoryStore.java,v retrieving revision 1.4 retrieving revision 1.5 diff -u -r1.4 -r1.5 --- MRUMemoryStore.java 15 Jan 2002 18:16:16 -0000 1.4 +++ MRUMemoryStore.java 1 Feb 2002 13:27:32 -0000 1.5 @@ -235,6 +235,10 @@ return this.mCache.keys(); } + public int size() { + return this.mCache.size(); + } + /** * Frees some of the fast memory used by this store. It removes the last * element in the store.
---------------------------------------------------------------------- In case of troubles, e-mail: [EMAIL PROTECTED] To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]