When saving capabilities replace the '/' character by a '.'
The character '.' is not in the base64 table and can replace the file
separator char '/' in unix.
fix #366
--- a/src/com/beem/project/beem/service/BeemCapsManager.java Mon Aug 22 23:13:38 2011 +0200
+++ b/src/com/beem/project/beem/service/BeemCapsManager.java Thu Aug 25 14:51:07 2011 +0200
@@ -93,7 +93,7 @@
@Override
protected DiscoverInfo load(String ver) {
- File fver = new File(mCacheDir, ver);
+ File fver = new File(mCacheDir, sanitizeName(ver));
try {
Reader fr = new BufferedReader(new FileReader(fver));
try {
@@ -115,7 +115,8 @@
@Override
protected void store(String ver, DiscoverInfo info) {
- File fver = new File(mCacheDir, ver);
+
+ File fver = new File(mCacheDir, sanitizeName(ver));
try {
Writer fw = new BufferedWriter(new FileWriter(fver));
try {
@@ -133,7 +134,7 @@
protected boolean isInCache(String ver) {
boolean result = super.isInCache(ver);
if (!result) {
- File fver = new File(mCacheDir, ver);
+ File fver = new File(mCacheDir, sanitizeName(ver));
result = fver.exists();
}
return result;
@@ -159,4 +160,13 @@
fact.setNamespaceAware(true);
return fact.newPullParser();
}
+
+ /**
+ * Sanitize the base64 ver attribute in order to use it as a filename.
+ * @param ver the base64 ver attribute
+ * @return a sanitize filename for the ver attribute
+ */
+ private String sanitizeName(String ver) {
+ return ver.replaceAll("/", ".");
+ }
}