# HG changeset patch # User Da Risk # Date 1314276667 -7200 # Node ID 6e5999172eb12b87d8d478b23b3f3906238521b7 # Parent 56e0eadf8e8720356dbac9a32eabd5a9b4bcd28b 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 diff -r 56e0eadf8e87 -r 6e5999172eb1 src/com/beem/project/beem/service/BeemCapsManager.java --- 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("/", "."); + } }