From: <jbo...@li...> - 2005-11-12 21:22:20
|
Author: adamw Date: 2005-11-12 16:22:11 -0500 (Sat, 12 Nov 2005) New Revision: 1564 Modified: trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/ContentManager.java trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnContentManager.java trunk/forge/portal-extensions/shotoku/shotoku-test/src/java/org/jboss/shotoku/test/SlashNamesTest.java trunk/forge/portal-extensions/shotoku/shotoku-test/src/java/org/jboss/shotoku/test/servlet/ShotokuServlet.java Log: http://jira.jboss.com/jira/browse/JBSHOTOKU-32 : fix + test Modified: trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/ContentManager.java =================================================================== --- trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/ContentManager.java 2005-11-12 12:58:50 UTC (rev 1563) +++ trunk/forge/portal-extensions/shotoku/shotoku-base/src/java/org/jboss/shotoku/ContentManager.java 2005-11-12 21:22:11 UTC (rev 1564) @@ -279,7 +279,10 @@ */ public static ContentManager getContentManager(String id, String prefix) { if (id == null) id = defaultId; - if (prefix == null) prefix = ""; + if (prefix == null) + prefix = ""; + else + prefix = normalizeSlashes(prefix); Constructor constructor = contentManagers.get(id); @@ -295,4 +298,23 @@ return null; } } + + /** + * From the given string, removes unnecessary / in the middle, beggining + * and ending. For example: "/a//b//c/" is transformed to "a/b/c". + * @param toNormalize String to normalize. + * @return <code>toNormalize</code> with unnecessary / removed. + */ + protected static String normalizeSlashes(String toNormalize) { + while (toNormalize.contains("//")) + toNormalize = toNormalize.replace("//", "/"); + + if (toNormalize.startsWith("/")) + toNormalize = toNormalize.substring(1); + + if (toNormalize.endsWith("/")) + toNormalize = toNormalize.substring(0, toNormalize.length() - 1); + + return toNormalize; + } } Modified: trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnContentManager.java =================================================================== --- trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnContentManager.java 2005-11-12 12:58:50 UTC (rev 1563) +++ trunk/forge/portal-extensions/shotoku/shotoku-svn/src/java/org/jboss/shotoku/svn/SvnContentManager.java 2005-11-12 21:22:11 UTC (rev 1564) @@ -106,15 +106,8 @@ */ String[] getNamesFromPath(String path) { // Compacting path, that is, throwing out unnecessary /. - while (path.contains("//")) - path = path.replace("//", "/"); + path = normalizeSlashes(path); - if (path.startsWith("/")) - path = path.substring(1); - - if (path.endsWith("/")) - path = path.substring(0, path.length() - 1); - // Constructing fullName - just getting rid of the prefix and possible // / on the first position. String fullName = path.trim().substring(prefixLength); Modified: trunk/forge/portal-extensions/shotoku/shotoku-test/src/java/org/jboss/shotoku/test/SlashNamesTest.java =================================================================== --- trunk/forge/portal-extensions/shotoku/shotoku-test/src/java/org/jboss/shotoku/test/SlashNamesTest.java 2005-11-12 12:58:50 UTC (rev 1563) +++ trunk/forge/portal-extensions/shotoku/shotoku-test/src/java/org/jboss/shotoku/test/SlashNamesTest.java 2005-11-12 21:22:11 UTC (rev 1564) @@ -21,6 +21,7 @@ */ package org.jboss.shotoku.test; +import org.jboss.shotoku.ContentManager; import org.jboss.shotoku.Directory; import org.jboss.shotoku.Node; @@ -59,6 +60,18 @@ getDirectory("j").getNode("k").getContent())); assertTrue(TEST_CONTENT.equals(base.getNode(TEST_NESTED_NODE).getContent())); } + + /** + * Checks if content managers work with prefixes that contain unnecessary /. + */ + public void testSlashesInCmPrefix() { + ContentManager cm1 = ContentManager.getContentManager("/shotoku-test/"); + cm1.getRootDirectory().getDirectory(TEST_DIR); + + ContentManager cm2 = ContentManager.getContentManager( + "//shotoku-test///" + TEST_DIR + "///"); + cm2.getRootDirectory(); + } public void tearDown() { cm.getDirectory(TEST_DIR).delete(); Modified: trunk/forge/portal-extensions/shotoku/shotoku-test/src/java/org/jboss/shotoku/test/servlet/ShotokuServlet.java =================================================================== --- trunk/forge/portal-extensions/shotoku/shotoku-test/src/java/org/jboss/shotoku/test/servlet/ShotokuServlet.java 2005-11-12 12:58:50 UTC (rev 1563) +++ trunk/forge/portal-extensions/shotoku/shotoku-test/src/java/org/jboss/shotoku/test/servlet/ShotokuServlet.java 2005-11-12 21:22:11 UTC (rev 1564) @@ -1,11 +1,7 @@ package org.jboss.shotoku.test.servlet; -import java.io.File; -import java.io.FileInputStream; import java.io.IOException; -import java.io.InputStream; import java.io.PrintWriter; -import java.util.Calendar; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; @@ -13,7 +9,6 @@ import javax.servlet.http.HttpServletResponse; import org.jboss.shotoku.ContentManager; -import org.jboss.shotoku.Node; import org.jboss.shotoku.aop.Inject; /** @@ -23,15 +18,16 @@ @Inject(prefix="shotoku-test") ContentManager test; - @Inject(prefix="wiki-content") + //@Inject(prefix="wiki-content") + //@Inject ContentManager wikiCm; - private void readInputStream(InputStream is) throws IOException { + /*private void readInputStream(InputStream is) throws IOException { int b; StringBuffer sb = new StringBuffer(); while ((b = is.read()) != -1) sb.append(b); - } + }*/ @Override protected void service(HttpServletRequest request, @@ -41,13 +37,14 @@ pw.write("Depends test: " + test + "<br />"); pw.write("<br />"); - pw.write("Velocity test:"); - pw.write("<br />"); + wikiCm = ContentManager.getContentManager("wiki-content/"); + wikiCm.getDirectory(""); + //NodeList nl = new NodeList(); //pw.write(nl.getFeed("default/feeds/templates/hello-world.vm", null, new HashMap<String, Object>()).toString()); - int processed; + /*int processed; pw.write("Shotoku file read: <br />"); long start = Calendar.getInstance().getTimeInMillis(); @@ -75,7 +72,7 @@ } } stop = Calendar.getInstance().getTimeInMillis(); - pw.write("Time: " + (stop-start) + ", processed: " + processed); + pw.write("Time: " + (stop-start) + ", processed: " + processed);*/ } } |