Index: LocalXWikiDataStorage.java =================================================================== --- LocalXWikiDataStorage.java (revision 36367) +++ LocalXWikiDataStorage.java (working copy) @@ -52,9 +52,9 @@ /** * This class implements a local data storage for XWiki elements that uses the Eclipse resource component. The local * storage is rooted at an IFolder passed to the constructor. The structure of the local storage is the following: - * + * *
- * Root
+ * Root
  * + index
  *   + Space1 (directory having its name equals to the space key)
  *     + Page1 (directory having its name equals to the page id)
@@ -78,7 +78,7 @@
  *   |- Class1.xec (the actual class information)
  *   |- ...
  * 
- * + * * All xe* files contains an XML serialization of the corresponding XWiki Eclipse elements. */ public class LocalXWikiDataStorage implements IDataStorage @@ -282,12 +282,13 @@ : new ArrayList()); pageSummary.setUrl(page.getUrl()); CoreUtils.writeDataToXML(baseFolder.getFolder(INDEX_DIRECTORY).getFolder(page.getSpace()) - .getFolder(page.getId()).getFile(getFileNameForPageSummary(pageSummary.getId())), //$NON-NLS-1$ + .getFolder(getFilenameFilesystemFriendly(page.getId())) + .getFile(getFileNameForPageSummary(getFilenameFilesystemFriendly(pageSummary.getId()))), //$NON-NLS-1$ pageSummary.toRawMap()); /* Write the page */ CoreUtils.writeDataToXML(baseFolder.getFolder(PAGES_DIRECTORY).getFile( - getFileNameForPage(page.getId())), page //$NON-NLS-1$ + getFileNameForPage(getFilenameFilesystemFriendly(page.getId()))), page //$NON-NLS-1$ .toRawMap()); } }, null); @@ -481,6 +482,10 @@ return objectFile.exists(); } + private String getFilenameFilesystemFriendly(String url) { + return url.replace("?", "_"); + } + private String getFileNameForPageSummary(String pageId) { return String.format("%s.%s", pageId, PAGE_SUMMARY_FILE_EXTENSION); //$NON-NLS-1$