From: <jbo...@li...> - 2005-11-14 22:14:13
|
Author: szimano Date: 2005-11-14 17:14:07 -0500 (Mon, 14 Nov 2005) New Revision: 1572 Modified: trunk/forge/portal-extensions/jbosswiki/forge-wiki/src/java/org/jboss/wiki/fileaccess/WikiFileAccessFilter.java trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/ShotokuDataSource.java Log: http://jira.jboss.com/jira/browse/JBWIKI-68 : redirection for http://localhost/wiki/Wiki.jsp&page=NewPage http://jira.jboss.com/jira/browse/JBWIKI-67 : fruther modifications to ShotokuDataSource (still not working in 100%) Modified: trunk/forge/portal-extensions/jbosswiki/forge-wiki/src/java/org/jboss/wiki/fileaccess/WikiFileAccessFilter.java =================================================================== --- trunk/forge/portal-extensions/jbosswiki/forge-wiki/src/java/org/jboss/wiki/fileaccess/WikiFileAccessFilter.java 2005-11-14 21:54:43 UTC (rev 1571) +++ trunk/forge/portal-extensions/jbosswiki/forge-wiki/src/java/org/jboss/wiki/fileaccess/WikiFileAccessFilter.java 2005-11-14 22:14:07 UTC (rev 1572) @@ -75,6 +75,8 @@ private String wikiHome; private WikiEngine wikiEngine; + + private static final String oldLink = "Wiki.jsp?page="; /* * private ForgeHelper forgeHelper; private ContentManager contentManager; @@ -143,10 +145,16 @@ wikiSession.setAttribute("hostURL", hostURL); String requestURI = httpRequest.getRequestURI(); - + // get off "/wiki/" from the begining requestURI = requestURI.substring("/wiki/".length()); - + + // support old type link with Wiki.jsp?page= + if (requestURI.equals("Wiki.jsp") && httpRequest.getParameter("page") != null) { + httpResponse.sendRedirect(hostURL + wikiHome + "&page=" + httpRequest.getParameter("page")); + return; + } + while (requestURI.endsWith("/")) { // get rid of ending "/" character(s) requestURI = requestURI.substring(0, requestURI.length() - 1); @@ -166,7 +174,7 @@ if ((tokens.length == 1)&&(tokens[0].equals(""))) { //show Main page - as there is no place to go specified :) - httpResponse.sendRedirect(hostURL + wikiHome); + httpResponse.sendRedirect(hostURL + wikiHome ); return; } Modified: trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/ShotokuDataSource.java =================================================================== --- trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/ShotokuDataSource.java 2005-11-14 21:54:43 UTC (rev 1571) +++ trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/ShotokuDataSource.java 2005-11-14 22:14:07 UTC (rev 1572) @@ -35,6 +35,7 @@ import org.jboss.shotoku.ContentManager; import org.jboss.shotoku.Directory; import org.jboss.shotoku.Node; +import org.jboss.shotoku.exceptions.RepositoryException; import org.jboss.shotoku.exceptions.ResourceAlreadyExists; import org.jboss.shotoku.exceptions.ResourceDoesNotExist; import org.jboss.wiki.exceptions.PageRenamingException; @@ -223,13 +224,14 @@ if (pageExists(uid)) { // page exists on // harddisk - add new // version - Properties pageProps = getPageProps(uid); + Node propsNode = getPropsNode(uid); + + Properties pageProps = getPageProps(uid, propsNode); pageProps.setProperty(page.getLastVersion() + ".author", page .getLastAuthor().getName()); - OutputStream os = pagesManager.getNode( - "OLD/" + uid + "/page.properties").getOutputStream(); + OutputStream os = propsNode.getOutputStream(); try { pageProps.store(os, "Saved by ShotokuDataSource of JBoss Wiki"); } catch (Exception e) { @@ -245,6 +247,8 @@ } } + savePageProps(uid, propsNode); + log.info("Opening files"); // File pageFile = new File(pathToMedia + "/OLD/" + uid + "/" + @@ -253,7 +257,7 @@ Node pageFile = pagesManager.getDirectory("").newNode( "OLD/" + uid + "/" + (page.getLastVersion() - 1) + ".txt"); - Node pageOldFile = pagesManager.getDirectory("").newNode( + Node pageOldFile = pagesManager.getNode( uid + ".txt"); OutputStream pageFileWriter; @@ -274,8 +278,6 @@ pageFileWriter.close(); - pageOldFile.delete(); - pageFileWriter = pageOldFile.getOutputStream(); String pageContent = page.getContent(); @@ -286,6 +288,10 @@ pageFileWriter.close(); status = true; + + pageOldFile.save("Adding version "+page.getLastVersion()+" of page "+uid); + pageFile.save("Adding version "+page.getLastVersion()+" of page "+uid); + } catch (IOException ioe) { log.error("[ShotokuDataSource]: Cannot save page: ", ioe); } @@ -326,7 +332,9 @@ pagesManager.getDirectory("").newDirectory(pageDirName); - pageWriter = pagesManager.getNode(uid + ".txt") + Node pageFile = pagesManager.getRootDirectory().newNode(uid + ".txt"); + + pageWriter = pageFile .getOutputStream(); String pageContent = page.getContent(); @@ -338,6 +346,10 @@ pageWriter.close(); status = true; + + newPageFile.save("Adding version "+page.getLastVersion()+" of page "+uid); + pageFile.save("Adding version "+page.getLastVersion()+" of page "+uid); + } catch (Exception e) { log.error("Cannot write new page: ", e); status = false; @@ -354,16 +366,35 @@ return true; } - public Properties getPageProps(String pageName) { + public void savePageProps(String pageName, Node pagePropsNode) { + try { + pagePropsNode.save("Saving page props for page: "+pageName); + } catch (ResourceDoesNotExist e) { + // There is no prop file for some reson - create one. + + getPageProps(pageName, pagePropsNode); + } + } + + private Node getPropsNode(String pageName) { + try { + return pagesManager.getNode( + "OLD/" + pageName + "/page.properties"); + } catch (ResourceDoesNotExist e) { + return null; + } catch (RepositoryException e) { + return null; + } + } + + public Properties getPageProps(String pageName, Node pageNode) { Properties pageProps = new Properties(); try { - InputStream fpi = pagesManager.getNode( - "OLD/" + pageName + "/page.properties") - .getContentInputStream(); + InputStream fpi = pageNode.getContentInputStream(); pageProps.load(fpi); fpi.close(); - } catch (IOException ioe) { + } catch (Exception ioe) { // There is no prop file for some reson - create one. Node pagePropsFile = pagesManager.getDirectory("").newDirectory( @@ -378,6 +409,7 @@ pageProps.setProperty("1.author", "unknown"); pageProps.store(fpo, SAVE_COMMENT); fpo.close(); + pagePropsFile.save("genarating page props for page: "+pageName); } } catch (IOException e) { @@ -447,7 +479,7 @@ try { Node pageFile = pagesManager.getNode(pageName + ".txt"); - Properties pageProps = getPageProps(pageName); + Properties pageProps = getPageProps(pageName, getPropsNode(pageName)); if (pageProps != null) { @@ -602,7 +634,7 @@ } public Credentials getAuthorAtVersion(String pageName, int version) { - return new SimpleCredentials(getPageProps(pageName).getProperty( + return new SimpleCredentials(getPageProps(pageName, getPropsNode(pageName)).getProperty( version + ".author")); } |