You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jcs-dev@jakarta.apache.org by tv...@apache.org on 2007/05/10 18:04:27 UTC
svn commit: r536904 [13/38] - in /jakarta/jcs/trunk: ./
auxiliary-builds/javagroups/
auxiliary-builds/javagroups/src/java/org/apache/jcs/auxiliary/javagroups/
auxiliary-builds/javagroups/src/test/org/apache/jcs/auxiliary/javagroups/
auxiliary-builds/jd...
Modified: jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/disk/block/BlockDiskKeyStore.java
URL: http://svn.apache.org/viewvc/jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/disk/block/BlockDiskKeyStore.java?view=diff&rev=536904&r1=536903&r2=536904
==============================================================================
--- jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/disk/block/BlockDiskKeyStore.java (original)
+++ jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/disk/block/BlockDiskKeyStore.java Thu May 10 09:03:42 2007
@@ -1,437 +1,447 @@
-package org.apache.jcs.auxiliary.disk.block;
-
-/*
- * Copyright 2001-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.
- */
-
-import java.io.BufferedInputStream;
-import java.io.BufferedOutputStream;
-import java.io.EOFException;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
-import java.io.ObjectInputStream;
-import java.io.ObjectOutputStream;
-import java.io.Serializable;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.Map;
-import java.util.Set;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.jcs.auxiliary.disk.LRUMapJCS;
-import org.apache.jcs.utils.timing.ElapsedTimer;
-
-import EDU.oswego.cs.dl.util.concurrent.ClockDaemon;
-import EDU.oswego.cs.dl.util.concurrent.ThreadFactory;
-
-/**
- * This is responsible for storing the keys.
- * <p>
- * @author Aaron Smuts
- */
-public class BlockDiskKeyStore
-{
- /** The logger */
- private static final Log log = LogFactory.getLog( BlockDiskKeyStore.class );
-
- /** Attributes governing the behavior of the block disk cache. */
- private BlockDiskCacheAttributes blockDiskCacheAttributes;
-
- /** The key to block map */
- private Map keyHash;
-
- /** The file where we persist the keys */
- private File keyFile;
-
- /** The name to prefix log messages with. */
- private final String logCacheName;
-
- /** Name of the file where we persist the keys */
- private String fileName;
-
- /** The maximum number of keys to store in memory */
- private int maxKeySize;
-
- /** we need this so we can communicate free blocks to the data store when keys fall off the LRU */
- private BlockDiskCache blockDiskCache;
-
- /** The root directory in which the keyFile lives */
- private File rootDirectory;
-
- /**
- * The background key persister, one for all regions.
- */
- private static ClockDaemon persistenceDaemon;
-
- /**
- * Set the configuration options.
- * <p>
- * @param cacheAttributes
- * @param blockDiskCache used for freeing
- * @throws Exception
- */
- public BlockDiskKeyStore( BlockDiskCacheAttributes cacheAttributes, BlockDiskCache blockDiskCache )
- throws Exception
- {
- this.blockDiskCacheAttributes = cacheAttributes;
- this.logCacheName = "Region [" + this.blockDiskCacheAttributes.getCacheName() + "] ";
- this.fileName = this.blockDiskCacheAttributes.getCacheName();
- this.maxKeySize = cacheAttributes.getMaxKeySize();
- this.blockDiskCache = blockDiskCache;
-
- String rootDirName = cacheAttributes.getDiskPath();
- this.rootDirectory = new File( rootDirName );
- this.rootDirectory.mkdirs();
-
- if ( log.isInfoEnabled() )
- {
- log.info( logCacheName + "Cache file root directory [" + rootDirName + "]" );
- }
-
- this.keyFile = new File( rootDirectory, fileName + ".key" );
-
- if ( log.isInfoEnabled() )
- {
- log.info( logCacheName + "Key File [" + this.keyFile.getAbsolutePath() + "]" );
- }
-
- if ( keyFile.length() > 0 )
- {
- loadKeys();
- // TODO verify somehow
- }
- else
- {
- initKeyMap();
- }
-
- // add this region to the persistence thread.
- // TODO we might need to stagger this a bit.
- if ( this.blockDiskCacheAttributes.getKeyPersistenceIntervalSeconds() > 0 )
- {
- if ( persistenceDaemon == null )
- {
- persistenceDaemon = new ClockDaemon();
- persistenceDaemon.setThreadFactory( new MyThreadFactory() );
- }
- persistenceDaemon
- .executePeriodically( this.blockDiskCacheAttributes.getKeyPersistenceIntervalSeconds() * 1000,
- new Runnable()
- {
- public void run()
- {
- saveKeys();
- }
- }, false );
- }
- }
-
- /**
- * Saves key file to disk. This gets the LRUMap entry set and write the entries out one by one
- * after putting them in a wrapper.
- */
- protected void saveKeys()
- {
- try
- {
- ElapsedTimer timer = new ElapsedTimer();
- int numKeys = keyHash.size();
- if ( log.isInfoEnabled() )
- {
- log.info( logCacheName + "Saving keys to [" + this.keyFile.getAbsolutePath() + "], key count ["
- + numKeys + "]" );
- }
-
- keyFile.delete();
-
- keyFile = new File( rootDirectory, fileName + ".key" );
- FileOutputStream fos = new FileOutputStream( keyFile );
- BufferedOutputStream bos = new BufferedOutputStream( fos, 1024 );
- ObjectOutputStream oos = new ObjectOutputStream( bos );
- try
- {
- // don't need to synchronize, since the underlying collection makes a copy
- Iterator keyIt = keyHash.entrySet().iterator();
- while ( keyIt.hasNext() )
- {
- Map.Entry entry = (Map.Entry) keyIt.next();
- BlockDiskElementDescriptor descriptor = new BlockDiskElementDescriptor();
- descriptor.setKey( (Serializable) entry.getKey() );
- descriptor.setBlocks( (int[]) entry.getValue() );
- // stream these out in the loop.
- oos.writeObject( descriptor );
- }
- }
- finally
- {
- oos.flush();
- oos.close();
- }
-
- if ( log.isInfoEnabled() )
- {
- log.info( logCacheName + "Finished saving keys. It took " + timer.getElapsedTimeString() + " to store "
- + numKeys + " keys. Key file length [" + keyFile.length() + "]" );
- }
- }
- catch ( Exception e )
- {
- log.error( logCacheName + "Problem storing keys.", e );
- }
- }
-
- /**
- * Resets the file and creates a new key map.
- */
- protected void reset()
- {
- File keyFileTemp = new File( this.rootDirectory, fileName + ".key" );
- keyFileTemp.delete();
-
- keyFile = new File( this.rootDirectory, fileName + ".key" );
-
- initKeyMap();
- }
-
- /**
- * This is mainly used for testing. It leave the disk in tact, and just clears memory.
- */
- protected void clearMemoryMap()
- {
- this.keyHash.clear();
- }
-
- /**
- * Create the map for keys that contain the index position on disk.
- */
- private void initKeyMap()
- {
- keyHash = null;
- if ( maxKeySize >= 0 )
- {
- keyHash = new LRUMap( maxKeySize );
- if ( log.isInfoEnabled() )
- {
- log.info( logCacheName + "Set maxKeySize to: '" + maxKeySize + "'" );
- }
- }
- else
- {
- // If no max size, use a plain map for memory and processing efficiency.
- keyHash = new HashMap();
- // keyHash = Collections.synchronizedMap( new HashMap() );
- if ( log.isInfoEnabled() )
- {
- log.info( logCacheName + "Set maxKeySize to unlimited'" );
- }
- }
- }
-
- /**
- * Loads the keys from the .key file. The keys are stored individually on disk. They are added
- * one by one to an LRUMap..
- * <p>
- * @throws InterruptedException
- */
- protected void loadKeys()
- throws InterruptedException
- {
- if ( log.isInfoEnabled() )
- {
- log.info( logCacheName + "Loading keys for " + keyFile.toString() );
- }
-
- try
- {
- // create a key map to use.
- initKeyMap();
-
- HashMap keys = new HashMap();
-
- FileInputStream fis = new FileInputStream( keyFile );
- BufferedInputStream bis = new BufferedInputStream( fis );
- ObjectInputStream ois = new ObjectInputStream( bis );
- try
- {
- while ( true )
- {
- BlockDiskElementDescriptor descriptor = (BlockDiskElementDescriptor) ois.readObject();
- if ( descriptor != null )
- {
- keys.put( descriptor.getKey(), descriptor.getBlocks() );
- }
- }
- }
- catch ( EOFException eof )
- {
- // nothing
- }
- finally
- {
- ois.close();
- }
-
- if ( !keys.isEmpty() )
- {
- if ( log.isDebugEnabled() )
- {
- log.debug( logCacheName + "Found " + keys.size() + " in keys file." );
- }
-
- keyHash.putAll( keys );
-
- if ( log.isInfoEnabled() )
- {
- log.info( logCacheName + "Loaded keys from [" + fileName + "], key count: " + keyHash.size()
- + "; up to " + maxKeySize + " will be available." );
- }
- }
- }
- catch ( Exception e )
- {
- log.error( logCacheName + "Problem loading keys for file " + fileName, e );
- }
- }
-
- /**
- * Gets the entry set.
- * <p>
- * @return entry set.
- */
- public Set entrySet()
- {
- return this.keyHash.entrySet();
- }
-
- /**
- * Gets the key set.
- * <p>
- * @return key set.
- */
- public Set keySet()
- {
- return this.keyHash.keySet();
- }
-
- /**
- * Gets the size of the key hash.
- * <p>
- * @return the number of keys.
- */
- public int size()
- {
- return this.keyHash.size();
- }
-
- /**
- * gets the object for the key.
- * <p>
- * @param key
- * @return Object
- */
- public int[] get( Object key )
- {
- return (int[]) this.keyHash.get( key );
- }
-
- /**
- * Puts a int[] in the keyStore.
- * <p>
- * @param key
- * @param value
- */
- public void put( Object key, int[] value )
- {
- this.keyHash.put( key, value );
- }
-
- /**
- * Remove by key.
- * <p>
- * @param key
- * @return BlockDiskElementDescriptor if it was present, else null
- */
- public int[] remove( Object key )
- {
- return (int[]) this.keyHash.remove( key );
- }
-
- /**
- * Class for recylcing and lru. This implments the LRU overflow callback, so we can mark the
- * blocks as free.
- */
- public class LRUMap
- extends LRUMapJCS
- {
- /** Don't change */
- private static final long serialVersionUID = 4955079991472142198L;
-
- /**
- * <code>tag</code> tells us which map we are working on.
- */
- public String tag = "orig";
-
- /**
- * Default
- */
- public LRUMap()
- {
- super();
- }
-
- /**
- * @param maxKeySize
- */
- public LRUMap( int maxKeySize )
- {
- super( maxKeySize );
- }
-
- /**
- * This is called when the may key size is reaced. The least recently used item will be
- * passed here. We will store the position and size of the spot on disk in the recycle bin.
- * <p>
- * @param key
- * @param value
- */
- protected void processRemovedLRU( Object key, Object value )
- {
- blockDiskCache.freeBlocks( (int[]) value );
- if ( log.isDebugEnabled() )
- {
- log.debug( logCacheName + "Removing key: [" + key + "] from key store." );
- log.debug( logCacheName + "Key store size: [" + this.size() + "]." );
- }
- }
- }
-
- /**
- * Allows us to set the daemon status on the clockdaemon
- * @author aaronsm
- */
- class MyThreadFactory
- implements ThreadFactory
- {
-
- /**
- * Ensures that we create daemon threads.
- * <p>
- * (non-Javadoc)
- * @see EDU.oswego.cs.dl.util.concurrent.ThreadFactory#newThread(java.lang.Runnable)
- */
- public Thread newThread( Runnable runner )
- {
- Thread t = new Thread( runner );
- t.setDaemon( true );
- t.setPriority( Thread.MIN_PRIORITY );
- return t;
- }
- }
-}
+package org.apache.jcs.auxiliary.disk.block;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+
+import java.io.BufferedInputStream;
+import java.io.BufferedOutputStream;
+import java.io.EOFException;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
+import java.io.Serializable;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
+import java.util.Set;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.jcs.auxiliary.disk.LRUMapJCS;
+import org.apache.jcs.utils.timing.ElapsedTimer;
+
+import EDU.oswego.cs.dl.util.concurrent.ClockDaemon;
+import EDU.oswego.cs.dl.util.concurrent.ThreadFactory;
+
+/**
+ * This is responsible for storing the keys.
+ * <p>
+ * @author Aaron Smuts
+ */
+public class BlockDiskKeyStore
+{
+ /** The logger */
+ private static final Log log = LogFactory.getLog( BlockDiskKeyStore.class );
+
+ /** Attributes governing the behavior of the block disk cache. */
+ private BlockDiskCacheAttributes blockDiskCacheAttributes;
+
+ /** The key to block map */
+ private Map keyHash;
+
+ /** The file where we persist the keys */
+ private File keyFile;
+
+ /** The name to prefix log messages with. */
+ private final String logCacheName;
+
+ /** Name of the file where we persist the keys */
+ private String fileName;
+
+ /** The maximum number of keys to store in memory */
+ private int maxKeySize;
+
+ /** we need this so we can communicate free blocks to the data store when keys fall off the LRU */
+ private BlockDiskCache blockDiskCache;
+
+ /** The root directory in which the keyFile lives */
+ private File rootDirectory;
+
+ /**
+ * The background key persister, one for all regions.
+ */
+ private static ClockDaemon persistenceDaemon;
+
+ /**
+ * Set the configuration options.
+ * <p>
+ * @param cacheAttributes
+ * @param blockDiskCache used for freeing
+ * @throws Exception
+ */
+ public BlockDiskKeyStore( BlockDiskCacheAttributes cacheAttributes, BlockDiskCache blockDiskCache )
+ throws Exception
+ {
+ this.blockDiskCacheAttributes = cacheAttributes;
+ this.logCacheName = "Region [" + this.blockDiskCacheAttributes.getCacheName() + "] ";
+ this.fileName = this.blockDiskCacheAttributes.getCacheName();
+ this.maxKeySize = cacheAttributes.getMaxKeySize();
+ this.blockDiskCache = blockDiskCache;
+
+ String rootDirName = cacheAttributes.getDiskPath();
+ this.rootDirectory = new File( rootDirName );
+ this.rootDirectory.mkdirs();
+
+ if ( log.isInfoEnabled() )
+ {
+ log.info( logCacheName + "Cache file root directory [" + rootDirName + "]" );
+ }
+
+ this.keyFile = new File( rootDirectory, fileName + ".key" );
+
+ if ( log.isInfoEnabled() )
+ {
+ log.info( logCacheName + "Key File [" + this.keyFile.getAbsolutePath() + "]" );
+ }
+
+ if ( keyFile.length() > 0 )
+ {
+ loadKeys();
+ // TODO verify somehow
+ }
+ else
+ {
+ initKeyMap();
+ }
+
+ // add this region to the persistence thread.
+ // TODO we might need to stagger this a bit.
+ if ( this.blockDiskCacheAttributes.getKeyPersistenceIntervalSeconds() > 0 )
+ {
+ if ( persistenceDaemon == null )
+ {
+ persistenceDaemon = new ClockDaemon();
+ persistenceDaemon.setThreadFactory( new MyThreadFactory() );
+ }
+ persistenceDaemon
+ .executePeriodically( this.blockDiskCacheAttributes.getKeyPersistenceIntervalSeconds() * 1000,
+ new Runnable()
+ {
+ public void run()
+ {
+ saveKeys();
+ }
+ }, false );
+ }
+ }
+
+ /**
+ * Saves key file to disk. This gets the LRUMap entry set and write the entries out one by one
+ * after putting them in a wrapper.
+ */
+ protected void saveKeys()
+ {
+ try
+ {
+ ElapsedTimer timer = new ElapsedTimer();
+ int numKeys = keyHash.size();
+ if ( log.isInfoEnabled() )
+ {
+ log.info( logCacheName + "Saving keys to [" + this.keyFile.getAbsolutePath() + "], key count ["
+ + numKeys + "]" );
+ }
+
+ keyFile.delete();
+
+ keyFile = new File( rootDirectory, fileName + ".key" );
+ FileOutputStream fos = new FileOutputStream( keyFile );
+ BufferedOutputStream bos = new BufferedOutputStream( fos, 1024 );
+ ObjectOutputStream oos = new ObjectOutputStream( bos );
+ try
+ {
+ // don't need to synchronize, since the underlying collection makes a copy
+ Iterator keyIt = keyHash.entrySet().iterator();
+ while ( keyIt.hasNext() )
+ {
+ Map.Entry entry = (Map.Entry) keyIt.next();
+ BlockDiskElementDescriptor descriptor = new BlockDiskElementDescriptor();
+ descriptor.setKey( (Serializable) entry.getKey() );
+ descriptor.setBlocks( (int[]) entry.getValue() );
+ // stream these out in the loop.
+ oos.writeObject( descriptor );
+ }
+ }
+ finally
+ {
+ oos.flush();
+ oos.close();
+ }
+
+ if ( log.isInfoEnabled() )
+ {
+ log.info( logCacheName + "Finished saving keys. It took " + timer.getElapsedTimeString() + " to store "
+ + numKeys + " keys. Key file length [" + keyFile.length() + "]" );
+ }
+ }
+ catch ( Exception e )
+ {
+ log.error( logCacheName + "Problem storing keys.", e );
+ }
+ }
+
+ /**
+ * Resets the file and creates a new key map.
+ */
+ protected void reset()
+ {
+ File keyFileTemp = new File( this.rootDirectory, fileName + ".key" );
+ keyFileTemp.delete();
+
+ keyFile = new File( this.rootDirectory, fileName + ".key" );
+
+ initKeyMap();
+ }
+
+ /**
+ * This is mainly used for testing. It leave the disk in tact, and just clears memory.
+ */
+ protected void clearMemoryMap()
+ {
+ this.keyHash.clear();
+ }
+
+ /**
+ * Create the map for keys that contain the index position on disk.
+ */
+ private void initKeyMap()
+ {
+ keyHash = null;
+ if ( maxKeySize >= 0 )
+ {
+ keyHash = new LRUMap( maxKeySize );
+ if ( log.isInfoEnabled() )
+ {
+ log.info( logCacheName + "Set maxKeySize to: '" + maxKeySize + "'" );
+ }
+ }
+ else
+ {
+ // If no max size, use a plain map for memory and processing efficiency.
+ keyHash = new HashMap();
+ // keyHash = Collections.synchronizedMap( new HashMap() );
+ if ( log.isInfoEnabled() )
+ {
+ log.info( logCacheName + "Set maxKeySize to unlimited'" );
+ }
+ }
+ }
+
+ /**
+ * Loads the keys from the .key file. The keys are stored individually on disk. They are added
+ * one by one to an LRUMap..
+ * <p>
+ * @throws InterruptedException
+ */
+ protected void loadKeys()
+ throws InterruptedException
+ {
+ if ( log.isInfoEnabled() )
+ {
+ log.info( logCacheName + "Loading keys for " + keyFile.toString() );
+ }
+
+ try
+ {
+ // create a key map to use.
+ initKeyMap();
+
+ HashMap keys = new HashMap();
+
+ FileInputStream fis = new FileInputStream( keyFile );
+ BufferedInputStream bis = new BufferedInputStream( fis );
+ ObjectInputStream ois = new ObjectInputStream( bis );
+ try
+ {
+ while ( true )
+ {
+ BlockDiskElementDescriptor descriptor = (BlockDiskElementDescriptor) ois.readObject();
+ if ( descriptor != null )
+ {
+ keys.put( descriptor.getKey(), descriptor.getBlocks() );
+ }
+ }
+ }
+ catch ( EOFException eof )
+ {
+ // nothing
+ }
+ finally
+ {
+ ois.close();
+ }
+
+ if ( !keys.isEmpty() )
+ {
+ if ( log.isDebugEnabled() )
+ {
+ log.debug( logCacheName + "Found " + keys.size() + " in keys file." );
+ }
+
+ keyHash.putAll( keys );
+
+ if ( log.isInfoEnabled() )
+ {
+ log.info( logCacheName + "Loaded keys from [" + fileName + "], key count: " + keyHash.size()
+ + "; up to " + maxKeySize + " will be available." );
+ }
+ }
+ }
+ catch ( Exception e )
+ {
+ log.error( logCacheName + "Problem loading keys for file " + fileName, e );
+ }
+ }
+
+ /**
+ * Gets the entry set.
+ * <p>
+ * @return entry set.
+ */
+ public Set entrySet()
+ {
+ return this.keyHash.entrySet();
+ }
+
+ /**
+ * Gets the key set.
+ * <p>
+ * @return key set.
+ */
+ public Set keySet()
+ {
+ return this.keyHash.keySet();
+ }
+
+ /**
+ * Gets the size of the key hash.
+ * <p>
+ * @return the number of keys.
+ */
+ public int size()
+ {
+ return this.keyHash.size();
+ }
+
+ /**
+ * gets the object for the key.
+ * <p>
+ * @param key
+ * @return Object
+ */
+ public int[] get( Object key )
+ {
+ return (int[]) this.keyHash.get( key );
+ }
+
+ /**
+ * Puts a int[] in the keyStore.
+ * <p>
+ * @param key
+ * @param value
+ */
+ public void put( Object key, int[] value )
+ {
+ this.keyHash.put( key, value );
+ }
+
+ /**
+ * Remove by key.
+ * <p>
+ * @param key
+ * @return BlockDiskElementDescriptor if it was present, else null
+ */
+ public int[] remove( Object key )
+ {
+ return (int[]) this.keyHash.remove( key );
+ }
+
+ /**
+ * Class for recylcing and lru. This implments the LRU overflow callback, so we can mark the
+ * blocks as free.
+ */
+ public class LRUMap
+ extends LRUMapJCS
+ {
+ /** Don't change */
+ private static final long serialVersionUID = 4955079991472142198L;
+
+ /**
+ * <code>tag</code> tells us which map we are working on.
+ */
+ public String tag = "orig";
+
+ /**
+ * Default
+ */
+ public LRUMap()
+ {
+ super();
+ }
+
+ /**
+ * @param maxKeySize
+ */
+ public LRUMap( int maxKeySize )
+ {
+ super( maxKeySize );
+ }
+
+ /**
+ * This is called when the may key size is reaced. The least recently used item will be
+ * passed here. We will store the position and size of the spot on disk in the recycle bin.
+ * <p>
+ * @param key
+ * @param value
+ */
+ protected void processRemovedLRU( Object key, Object value )
+ {
+ blockDiskCache.freeBlocks( (int[]) value );
+ if ( log.isDebugEnabled() )
+ {
+ log.debug( logCacheName + "Removing key: [" + key + "] from key store." );
+ log.debug( logCacheName + "Key store size: [" + this.size() + "]." );
+ }
+ }
+ }
+
+ /**
+ * Allows us to set the daemon status on the clockdaemon
+ * @author aaronsm
+ */
+ class MyThreadFactory
+ implements ThreadFactory
+ {
+
+ /**
+ * Ensures that we create daemon threads.
+ * <p>
+ * (non-Javadoc)
+ * @see EDU.oswego.cs.dl.util.concurrent.ThreadFactory#newThread(java.lang.Runnable)
+ */
+ public Thread newThread( Runnable runner )
+ {
+ Thread t = new Thread( runner );
+ t.setDaemon( true );
+ t.setPriority( Thread.MIN_PRIORITY );
+ return t;
+ }
+ }
+}
Modified: jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/disk/indexed/IndexedDisk.java
URL: http://svn.apache.org/viewvc/jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/disk/indexed/IndexedDisk.java?view=diff&rev=536904&r1=536903&r2=536904
==============================================================================
--- jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/disk/indexed/IndexedDisk.java (original)
+++ jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/disk/indexed/IndexedDisk.java Thu May 10 09:03:42 2007
@@ -1,12 +1,22 @@
package org.apache.jcs.auxiliary.disk.indexed;
/*
- * Copyright 2001-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.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
*/
import java.io.File;
Modified: jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/disk/indexed/IndexedDiskCache.java
URL: http://svn.apache.org/viewvc/jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/disk/indexed/IndexedDiskCache.java?view=diff&rev=536904&r1=536903&r2=536904
==============================================================================
--- jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/disk/indexed/IndexedDiskCache.java (original)
+++ jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/disk/indexed/IndexedDiskCache.java Thu May 10 09:03:42 2007
@@ -1,12 +1,22 @@
package org.apache.jcs.auxiliary.disk.indexed;
/*
- * Copyright 2001-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.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
*/
import java.io.File;
@@ -638,7 +648,7 @@
log.error( logCacheName + "No longer alive so returning false for key = " + key );
return false;
}
-
+
if ( key == null )
{
return false;
@@ -777,7 +787,7 @@
* <p>
* This operates under a lock obtained in doRemove().
* <p>
- * @param key
+ * @param key
* @return true if an item was removed.
*/
private boolean performSingleKeyRemoval( Serializable key )
Modified: jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/disk/indexed/IndexedDiskCacheAttributes.java
URL: http://svn.apache.org/viewvc/jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/disk/indexed/IndexedDiskCacheAttributes.java?view=diff&rev=536904&r1=536903&r2=536904
==============================================================================
--- jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/disk/indexed/IndexedDiskCacheAttributes.java (original)
+++ jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/disk/indexed/IndexedDiskCacheAttributes.java Thu May 10 09:03:42 2007
@@ -1,14 +1,22 @@
package org.apache.jcs.auxiliary.disk.indexed;
/*
- * Copyright 2001-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.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
*/
import org.apache.jcs.auxiliary.AuxiliaryCacheAttributes;
@@ -40,9 +48,9 @@
/** Should we optimize on shutdown. */
public static final boolean DEFAULT_OPTIMIZE_ON_SHUTDOWN = true;
-
+
private boolean optimizeOnShutdown = DEFAULT_OPTIMIZE_ON_SHUTDOWN;
-
+
/**
* Constructor for the DiskCacheAttributes object
*/
Modified: jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/disk/indexed/IndexedDiskCacheFactory.java
URL: http://svn.apache.org/viewvc/jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/disk/indexed/IndexedDiskCacheFactory.java?view=diff&rev=536904&r1=536903&r2=536904
==============================================================================
--- jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/disk/indexed/IndexedDiskCacheFactory.java (original)
+++ jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/disk/indexed/IndexedDiskCacheFactory.java Thu May 10 09:03:42 2007
@@ -1,14 +1,22 @@
package org.apache.jcs.auxiliary.disk.indexed;
/*
- * Copyright 2001-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.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
*/
import org.apache.commons.logging.Log;
Modified: jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/disk/indexed/IndexedDiskCacheManager.java
URL: http://svn.apache.org/viewvc/jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/disk/indexed/IndexedDiskCacheManager.java?view=diff&rev=536904&r1=536903&r2=536904
==============================================================================
--- jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/disk/indexed/IndexedDiskCacheManager.java (original)
+++ jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/disk/indexed/IndexedDiskCacheManager.java Thu May 10 09:03:42 2007
@@ -1,14 +1,22 @@
package org.apache.jcs.auxiliary.disk.indexed;
/*
- * Copyright 2001-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.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
*/
import java.util.Enumeration;
Modified: jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/disk/indexed/IndexedDiskDumper.java
URL: http://svn.apache.org/viewvc/jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/disk/indexed/IndexedDiskDumper.java?view=diff&rev=536904&r1=536903&r2=536904
==============================================================================
--- jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/disk/indexed/IndexedDiskDumper.java (original)
+++ jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/disk/indexed/IndexedDiskDumper.java Thu May 10 09:03:42 2007
@@ -1,14 +1,22 @@
package org.apache.jcs.auxiliary.disk.indexed;
/*
- * Copyright 2001-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.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
*/
/**
Modified: jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/disk/indexed/IndexedDiskElementDescriptor.java
URL: http://svn.apache.org/viewvc/jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/disk/indexed/IndexedDiskElementDescriptor.java?view=diff&rev=536904&r1=536903&r2=536904
==============================================================================
--- jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/disk/indexed/IndexedDiskElementDescriptor.java (original)
+++ jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/disk/indexed/IndexedDiskElementDescriptor.java Thu May 10 09:03:42 2007
@@ -1,12 +1,22 @@
package org.apache.jcs.auxiliary.disk.indexed;
/*
- * Copyright 2001-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.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
*/
import java.io.Serializable;
---------------------------------------------------------------------
To unsubscribe, e-mail: jcs-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: jcs-dev-help@jakarta.apache.org