You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@avalon.apache.org by cz...@apache.org on 2002/05/06 14:16:16 UTC
cvs commit: jakarta-avalon-excalibur/store/src/java/org/apache/excalibur/store/impl AbstractFilesystemStore.java MRUMemoryStore.java
cziegeler 02/05/06 05:16:15
Modified: store/src/java/org/apache/excalibur/store/impl
AbstractFilesystemStore.java MRUMemoryStore.java
Log:
Fixing key generation for stores
Revision Changes Path
1.2 +21 -2 jakarta-avalon-excalibur/store/src/java/org/apache/excalibur/store/impl/AbstractFilesystemStore.java
Index: AbstractFilesystemStore.java
===================================================================
RCS file: /home/cvs/jakarta-avalon-excalibur/store/src/java/org/apache/excalibur/store/impl/AbstractFilesystemStore.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- AbstractFilesystemStore.java 2 May 2002 10:04:05 -0000 1.1
+++ AbstractFilesystemStore.java 6 May 2002 12:16:15 -0000 1.2
@@ -21,7 +21,7 @@
*
* @author ?
* @author <a href="mailto:vgritsenko@apache.org">Vadim Gritsenko</a>
- * @version CVS $Id: AbstractFilesystemStore.java,v 1.1 2002/05/02 10:04:05 cziegeler Exp $
+ * @version CVS $Id: AbstractFilesystemStore.java,v 1.2 2002/05/06 12:16:15 cziegeler Exp $
*/
public abstract class AbstractFilesystemStore
extends AbstractLogEnabled
@@ -286,6 +286,18 @@
*/
protected String decode( String filename )
{
+ // if the key is longer than 127 bytes a File.separator
+ // is added each 127 bytes
+ if (filename.length() > 127) {
+ int c = filename.length() / 127;
+ int pos = c * 127;
+ StringBuffer out = new StringBuffer(filename);
+ while (pos > 0) {
+ out.delete(pos,pos+1);
+ pos -= 127;
+ }
+ filename = out.toString();
+ }
return java.net.URLDecoder.decode( filename );
}
@@ -324,7 +336,7 @@
* it may normally happen). For this reason, it's highly recommended
* (even if not mandated) that Strings be used as keys.
*/
- public String encode(String s) {
+ protected String encode(String s) {
final StringBuffer out = new StringBuffer( s.length() );
final ByteArrayOutputStream buf = new ByteArrayOutputStream( 32 );
final OutputStreamWriter writer = new OutputStreamWriter( buf );
@@ -370,6 +382,13 @@
}
}
+ // if the key is longer than 127 bytes add a File.separator
+ // each 127 bytes
+ int pos = 127;
+ while (out.length() > pos) {
+ out.insert(pos, File.separatorChar);
+ pos += 127;
+ }
return out.toString();
}
1.2 +5 -18 jakarta-avalon-excalibur/store/src/java/org/apache/excalibur/store/impl/MRUMemoryStore.java
Index: MRUMemoryStore.java
===================================================================
RCS file: /home/cvs/jakarta-avalon-excalibur/store/src/java/org/apache/excalibur/store/impl/MRUMemoryStore.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- MRUMemoryStore.java 2 May 2002 08:55:39 -0000 1.1
+++ MRUMemoryStore.java 6 May 2002 12:16:15 -0000 1.2
@@ -38,7 +38,7 @@
* @author <a href="mailto:g-froehlich@gmx.de">Gerhard Froehlich</a>
* @author <a href="mailto:dims@yahoo.com">Davanum Srinivas</a>
* @author <a href="mailto:vgritsenko@apache.org">Vadim Gritsenko</a>
- * @version CVS $Id: MRUMemoryStore.java,v 1.1 2002/05/02 08:55:39 cziegeler Exp $
+ * @version CVS $Id: MRUMemoryStore.java,v 1.2 2002/05/06 12:16:15 cziegeler Exp $
*/
public final class MRUMemoryStore
extends AbstractLogEnabled
@@ -116,8 +116,7 @@
try {
Object value = this.cache.remove(key);
if(checkSerializable(value)) {
- persistentStore.store(getFileName(key.toString()),
- value);
+ persistentStore.store(key, value);
}
} catch (IOException ioe) {
getLogger().error("Error in dispose()", ioe);
@@ -192,7 +191,7 @@
/** try to fetch from filesystem */
if (this.persistent) {
- value = this.persistentStore.get(getFileName(key.toString()));
+ value = this.persistentStore.get(key);
if (value != null) {
try {
if(!this.cache.containsKey(key)) {
@@ -222,7 +221,7 @@
this.cache.remove(key);
this.mrulist.remove(key);
if(this.persistent && key != null) {
- this.persistentStore.remove(getFileName(key.toString()));
+ this.persistentStore.remove(key);
}
}
@@ -281,8 +280,7 @@
// Swap object on fs.
if(checkSerializable(value)) {
try {
- this.persistentStore.store(
- getFileName(key.toString()), value);
+ this.persistentStore.store(key, value);
} catch(Exception e) {
getLogger().error("Error storing object on fs", e);
}
@@ -311,16 +309,5 @@
return (object instanceof java.io.Serializable);
}
- /**
- * This method puts together a filename for
- * the object, which shall be stored on the
- * filesystem.
- *
- * @param key The key of the object
- * @return the filename of the key
- */
- private String getFileName(String key) {
- return URLEncoder.encode(key.toString());
- }
}
--
To unsubscribe, e-mail: <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>