From: <jbo...@li...> - 2005-10-10 13:41:24
|
Author: szimano Date: 2005-10-10 09:41:17 -0400 (Mon, 10 Oct 2005) New Revision: 1355 Added: trunk/forge/portal-extensions/jbosswiki/wiki-common/src/etc/WikiTypes.xml Removed: trunk/forge/portal-extensions/jbosswiki/wiki-common/src/etc/org/jboss/wiki/WikiTypes.xml Modified: trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/FileDataSource.java trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/MediaDataSource.java trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/WikiEngine.java trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/WikiPage.java trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/WikiPageDictionary.java trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/WikiType.java trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/plugins/DirectReferenceWikiType.java trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/plugins/ReTranslateUids.java trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/plugins/TranslateUids.java Log: another changes for renaming Added: trunk/forge/portal-extensions/jbosswiki/wiki-common/src/etc/WikiTypes.xml =================================================================== --- trunk/forge/portal-extensions/jbosswiki/wiki-common/src/etc/WikiTypes.xml 2005-10-10 05:55:33 UTC (rev 1354) +++ trunk/forge/portal-extensions/jbosswiki/wiki-common/src/etc/WikiTypes.xml 2005-10-10 13:41:17 UTC (rev 1355) @@ -0,0 +1,120 @@ +<!-- + JBoss, the OpenSource J2EE webOS + Distributable under LGPL license. + See terms of license at gnu.org. + --> + +<wikiTypes> + <wikiType> + <name>html</name> + <class>org.jboss.wiki.plugins.DefaultWikiType</class> + <plugin> + <name>trail</name> + <class>org.jboss.wiki.plugins.TrailPlugin</class> + </plugin> + <plugin> + <name>subPagesList</name> + <class>org.jboss.wiki.plugins.SubpagesListPlugin</class> + </plugin> + <plugin> + <name>attachmentList</name> + <class>org.jboss.wiki.plugins.AttachmentListPlugin</class> + </plugin> + <plugin> + <name>friendlyLinks</name> + <class>org.jboss.wiki.plugins.FriendlyLinkPlugin</class> + </plugin> + <plugin> + <name>adminConsole</name> + <class>org.jboss.wiki.plugins.AdminConsolePlugin</class> + </plugin> + <plugin> + <name>wikiToHtmlTranslator</name> + <class>org.jboss.wiki.plugins.HTMLTranslatorParts</class> + </plugin> + </wikiType> + <wikiType> + <name>diff</name> + <class>org.jboss.wiki.plugins.DefaultWikiType</class> + <plugin> + <name>Diff</name> + <class>org.jboss.wiki.plugins.DiffPlugin</class> + </plugin> + </wikiType> + <wikiType> + <name>find</name> + <class>org.jboss.wiki.plugins.DefaultWikiType</class> + <plugin> + <name>findResult</name> + <class>org.jboss.wiki.plugins.FindResultPlugin</class> + </plugin> + <plugin> + <name>trail</name> + <class>org.jboss.wiki.plugins.TrailPlugin</class> + </plugin> + <plugin> + <name>wikiToHtmlTranslator</name> + <class>org.jboss.wiki.plugins.HTMLTranslatorParts</class> + </plugin> + </wikiType> + <wikiType> + <name>rss</name> + <class>org.jboss.wiki.plugins.RSSWikiType</class> + <plugin> + <name>RSSPlugin</name> + <class>org.jboss.wiki.plugins.RSSPlugin</class> + </plugin> + </wikiType> + <wikiType> + <name>rdf</name> + <class>org.jboss.wiki.plugins.RSSWikiType</class> + <plugin> + <name>RSSPlugin</name> + <class>org.jboss.wiki.plugins.RDFPlugin</class> + </plugin> + </wikiType> + <wikiType> + <name>atom</name> + <class>org.jboss.wiki.plugins.ATOMWikiType</class> + <plugin> + <name>ATOMPlugin</name> + <class>org.jboss.wiki.plugins.ATOMPlugin</class> + </plugin> + </wikiType> + <wikiType> + <name>fileInfo</name> + <class>org.jboss.wiki.plugins.DefaultWikiType</class> + <plugin> + <name>AttachementInfoPlugin</name> + <class>org.jboss.wiki.plugins.AttachementInfoPlugin</class> + </plugin> + </wikiType> + <wikiType> + <name>recentChanges</name> + <class>org.jboss.wiki.plugins.DefaultWikiType</class> + <plugin> + <name>recentChanges</name> + <class>org.jboss.wiki.plugins.RecentlyChangedPagesPlugin</class> + </plugin> + <plugin> + <name>HTMLTranslatorParts</name> + <class>org.jboss.wiki.plugins.HTMLTranslatorParts</class> + </plugin> + </wikiType> + <wikiType> + <name>edit</name> + <class>org.jboss.wiki.plugins.DefaultWikiType</class> + <plugin> + <name>translateUids</name> + <class>org.jboss.wiki.plugins.TranslateUids</class> + </plugin> + </wikiType> + <wikiType> + <name>postedit</name> + <class>org.jboss.wiki.plugins.DirectReferenceWikiType</class> + <plugin> + <name>reTranslateUids</name> + <class>org.jboss.wiki.plugins.ReTranslateUids</class> + </plugin> + </wikiType> +</wikiTypes> \ No newline at end of file Deleted: trunk/forge/portal-extensions/jbosswiki/wiki-common/src/etc/org/jboss/wiki/WikiTypes.xml =================================================================== --- trunk/forge/portal-extensions/jbosswiki/wiki-common/src/etc/org/jboss/wiki/WikiTypes.xml 2005-10-10 05:55:33 UTC (rev 1354) +++ trunk/forge/portal-extensions/jbosswiki/wiki-common/src/etc/org/jboss/wiki/WikiTypes.xml 2005-10-10 13:41:17 UTC (rev 1355) @@ -1,112 +0,0 @@ -<!-- - JBoss, the OpenSource J2EE webOS - Distributable under LGPL license. - See terms of license at gnu.org. - --> - -<wikiTypes> - <wikiType> - <name>html</name> - <class>org.jboss.wiki.plugins.DefaultWikiType</class> - <plugin> - <name>trail</name> - <class>org.jboss.wiki.plugins.TrailPlugin</class> - </plugin> - <plugin> - <name>subPagesList</name> - <class>org.jboss.wiki.plugins.SubpagesListPlugin</class> - </plugin> - <plugin> - <name>attachmentList</name> - <class>org.jboss.wiki.plugins.AttachmentListPlugin</class> - </plugin> - <plugin> - <name>friendlyLinks</name> - <class>org.jboss.wiki.plugins.FriendlyLinkPlugin</class> - </plugin> - <plugin> - <name>adminConsole</name> - <class>org.jboss.wiki.plugins.AdminConsolePlugin</class> - </plugin> - <plugin> - <name>wikiToHtmlTranslator</name> - <class>org.jboss.wiki.plugins.HTMLTranslatorParts</class> - </plugin> - </wikiType> - <wikiType> - <name>diff</name> - <class>org.jboss.wiki.plugins.DefaultWikiType</class> - <plugin> - <name>Diff</name> - <class>org.jboss.wiki.plugins.DiffPlugin</class> - </plugin> - </wikiType> - <wikiType> - <name>find</name> - <class>org.jboss.wiki.plugins.DefaultWikiType</class> - <plugin> - <name>findResult</name> - <class>org.jboss.wiki.plugins.FindResultPlugin</class> - </plugin> - <plugin> - <name>trail</name> - <class>org.jboss.wiki.plugins.TrailPlugin</class> - </plugin> - <plugin> - <name>wikiToHtmlTranslator</name> - <class>org.jboss.wiki.plugins.HTMLTranslatorParts</class> - </plugin> - </wikiType> - <wikiType> - <name>rss</name> - <class>org.jboss.wiki.plugins.RSSWikiType</class> - <plugin> - <name>RSSPlugin</name> - <class>org.jboss.wiki.plugins.RSSPlugin</class> - </plugin> - </wikiType> - <wikiType> - <name>rdf</name> - <class>org.jboss.wiki.plugins.RSSWikiType</class> - <plugin> - <name>RSSPlugin</name> - <class>org.jboss.wiki.plugins.RDFPlugin</class> - </plugin> - </wikiType> - <wikiType> - <name>atom</name> - <class>org.jboss.wiki.plugins.ATOMWikiType</class> - <plugin> - <name>ATOMPlugin</name> - <class>org.jboss.wiki.plugins.ATOMPlugin</class> - </plugin> - </wikiType> - <wikiType> - <name>fileInfo</name> - <class>org.jboss.wiki.plugins.DefaultWikiType</class> - <plugin> - <name>AttachementInfoPlugin</name> - <class>org.jboss.wiki.plugins.AttachementInfoPlugin</class> - </plugin> - </wikiType> - <wikiType> - <name>recentChanges</name> - <class>org.jboss.wiki.plugins.DefaultWikiType</class> - <plugin> - <name>recentChanges</name> - <class>org.jboss.wiki.plugins.RecentlyChangedPagesPlugin</class> - </plugin> - <plugin> - <name>HTMLTranslatorParts</name> - <class>org.jboss.wiki.plugins.HTMLTranslatorParts</class> - </plugin> - </wikiType> - <wikiType> - <name>edit</name> - <class>org.jboss.wiki.plugins.DefaultWikiType</class> - <plugin> - <name>translateUids</name> - <class>org.jboss.wiki.plugins.TranslateUids</class> - </plugin> - </wikiType> -</wikiTypes> \ No newline at end of file Modified: trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/FileDataSource.java =================================================================== --- trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/FileDataSource.java 2005-10-10 05:55:33 UTC (rev 1354) +++ trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/FileDataSource.java 2005-10-10 13:41:17 UTC (rev 1355) @@ -20,6 +20,7 @@ import java.util.TreeSet; import org.jboss.wiki.exceptions.PageAlreadyExistsException; +import org.jboss.wiki.exceptions.PageRenamingException; import org.jboss.wiki.exceptions.WikiException; /** @@ -51,7 +52,7 @@ private String pathToAttachments; private boolean lock = false; - + // private Properties fileDSProps; private final int BUF_SIZE = 32768; @@ -65,7 +66,7 @@ private File modFile; private File pageDictionaryFile; - + private WikiEngine wikiEngine; public void setWikiEngine(WikiEngine wikiEngine) { @@ -138,9 +139,8 @@ pageDictionary = new Properties(); pageRevDictionary = new Properties(); - - //TODO Do not load dictionary YET ! - + // TODO Do not load dictionary YET ! + pageDictionaryFile = new File(pathToMedia + "/dictionary.properties"); if (!pageDictionaryFile.exists()) { @@ -173,7 +173,6 @@ } - // create pageRevDictionary - to make it work faster Set<Object> keys = pageDictionary.keySet(); @@ -201,22 +200,22 @@ return true; } - public boolean savePage(WikiPage page, String languageCode) { + public boolean savePage(String uid, WikiPage page, String languageCode) { // TODO Languages boolean status = false; - if (pageExists(page.getName())) { // page exists on + if (pageExists(uid)) { // page exists on // harddisk - add new // version - Properties pageProps = getPageProps(page.getName()); + Properties pageProps = getPageProps(uid); pageProps.setProperty(page.getLastVersion() + ".author", page .getLastAuthor().getName()); try { pageProps.store(new FileOutputStream(new File(pathToMedia - + "/OLD/" + page.getName() + "/page.properties")), + + "/OLD/" + uid + "/page.properties")), "Saved by FileDataSource of JBoss Wiki"); } catch (Exception e) { System.err @@ -225,9 +224,9 @@ } System.out.println("Opening files"); - File pageFile = new File(pathToMedia + "/OLD/" + page.getName() + File pageFile = new File(pathToMedia + "/OLD/" + uid + "/" + (page.getLastVersion() - 1) + ".txt"); - File pageOldFile = new File(pathToMedia + "/" + page.getName() + File pageOldFile = new File(pathToMedia + "/" + uid + ".txt"); FileOutputStream pageFileWriter; @@ -273,11 +272,11 @@ // create needed dirs File newPageFile = new File(pathToMedia + "/OLD/" - + page.getName()); + + uid); newPageFile.mkdirs(); // write the page - newPageFile = new File(pathToMedia + "/OLD/" + page.getName() + newPageFile = new File(pathToMedia + "/OLD/" + uid + "/page.properties"); FileOutputStream pageWriter = new FileOutputStream(newPageFile); @@ -291,7 +290,7 @@ pageWriter.close(); String pageDirName = pathToMedia; - String[] pageNames = page.getName().split("/"); + String[] pageNames = uid.split("/"); for (int i = 0; i < pageNames.length - 1; i++) { pageDirName += "/" + pageNames[i]; @@ -302,7 +301,7 @@ pageDir.mkdirs(); pageWriter = new FileOutputStream(new File(pathToMedia + "/" - + page.getName() + ".txt")); + + uid + ".txt")); String pageContent = page.getContent(); @@ -1035,43 +1034,55 @@ } public String getRealName(String uid) { - while (lock); //wait till unlocked (dictionary is changing) - + while (lock) + ; // wait till unlocked (dictionary is changing) + return (pageDictionary.getProperty(uid) != null) ? pageDictionary .getProperty(uid) : uid; } public String getUid(String realName) { - while (lock); //wait till unlocked (dictionary is changing) - + while (lock) + ; // wait till unlocked (dictionary is changing) + return (pageRevDictionary.getProperty(realName) != null) ? pageRevDictionary .getProperty(realName) : realName; } - public synchronized void rename(String uid, String newName) throws PageAlreadyExistsException { + public synchronized void rename(String uid, String newName) + throws PageAlreadyExistsException { lock = true; - + if (wikiEngine.pageExists(newName)) { - throw new PageAlreadyExistsException("Page with the name you're trying to rename already exists."); + throw new PageAlreadyExistsException( + "Page with the name you're trying to rename already exists."); } - + pageDictionary.setProperty(uid, newName); pageRevDictionary.setProperty(newName, uid); - + // add also maping for future name // find apropriate uid - + int i = 2; - - while ((pageExists(uid+String.valueOf(i)))||(pageDictionary.containsKey(uid+String.valueOf(i)))) { + + while ((pageExists(uid + String.valueOf(i))) + || (pageDictionary.containsKey(uid + String.valueOf(i)))) { i++; } - + // add maping for new (to be done) with name translated to old uid - pageDictionary.setProperty(uid+String.valueOf(i), uid); - pageRevDictionary.setProperty(uid, uid+String.valueOf(i)); - + pageDictionary.setProperty(uid + String.valueOf(i), uid); + pageRevDictionary.setProperty(uid, uid + String.valueOf(i)); + + saveDictionary(); + + lock = false; + } + + private void saveDictionary() { + // synchronize dictionary with file on disk FileOutputStream fos; try { fos = new FileOutputStream(pageDictionaryFile); @@ -1091,8 +1102,6 @@ } catch (FileNotFoundException e) { e.printStackTrace(); } - - lock = false; } public boolean uidInDictionary(String uid) { @@ -1102,4 +1111,19 @@ public boolean realNameInDictionary(String realName) { return pageRevDictionary.contains(realName); } + + public void removeDictForPage(String uid) throws PageRenamingException { + if (!pageDictionary.contains(uid)) { + throw new PageRenamingException( + "There is no dictionary entry for uid: " + uid); + } + + String realName = pageDictionary.getProperty(uid); + + // remove all dict entries + pageDictionary.remove(uid); + pageRevDictionary.remove(realName); + + saveDictionary(); + } } Modified: trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/MediaDataSource.java =================================================================== --- trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/MediaDataSource.java 2005-10-10 05:55:33 UTC (rev 1354) +++ trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/MediaDataSource.java 2005-10-10 13:41:17 UTC (rev 1355) @@ -38,11 +38,12 @@ * * @param page * Page to save (with changed version number, author and content) + * @param uid Page's uid * @return true if page was succesfully saved * @param languageCode * langague code */ - public boolean savePage(WikiPage page, String languageCode); + public boolean savePage(String uid, WikiPage page, String languageCode); /** * This function is exeuted after saving page. Modified: trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/WikiEngine.java =================================================================== --- trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/WikiEngine.java 2005-10-10 05:55:33 UTC (rev 1354) +++ trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/WikiEngine.java 2005-10-10 13:41:17 UTC (rev 1355) @@ -320,7 +320,7 @@ SAXParser sp = (SAXParserFactory.newInstance()).newSAXParser(); sp.parse( - WikiTypeHandler.class.getResourceAsStream("WikiTypes.xml"), + WikiTypeHandler.class.getResourceAsStream("/WikiTypes.xml"), new WikiTypeHandler(this)); } catch (Exception se) { System.err.println("Error while parsing WikiType configuration: " @@ -626,7 +626,7 @@ public String getRealName(String uid) { String[] pageTokens = uid.split("/"); - // System.out.println("Looking at page: (realName) "+uid); + System.out.println("Looking at page: (realName) "+uid); if (pageTokens.length > 1) { if (!wikiPageDictionary.getRealName(uid).equals(uid)) { @@ -634,9 +634,10 @@ // this page is in dictionary return wikiPageDictionary.getRealName(uid); } else { + System.out.println("checking parts"); // look if parts of this page are in dictionary - for (int i = pageTokens.length - 2; i > 0; i--) { + for (int i = pageTokens.length - 1; i > 0; i--) { String page = ""; String suffix = ""; for (int j = 0; j < i; j++) { @@ -680,7 +681,7 @@ } else { // look if parts of this page are in dictionary - for (int i = pageTokens.length - 2; i > 0; i--) { + for (int i = pageTokens.length - 1; i > 0; i--) { String page = ""; String suffix = ""; for (int j = 0; j < i; j++) { @@ -781,7 +782,18 @@ } public boolean savePage(WikiPage page, String languageCode) { - return mediaDataSource.savePage(page, languageCode); + WikiType postEditProcess = getWikiType("postedit"); + + if (postEditProcess != null) { + // there are some plugins for postediting a page + page = postEditProcess.process(page, null); + } + + // put processed page to pages map + pages.put(page.getName(), page); + + + return mediaDataSource.savePage(getUid(page.getName()), page, languageCode); } public boolean postSave() { Modified: trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/WikiPage.java =================================================================== --- trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/WikiPage.java 2005-10-10 05:55:33 UTC (rev 1354) +++ trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/WikiPage.java 2005-10-10 13:41:17 UTC (rev 1355) @@ -158,10 +158,7 @@ * */ public synchronized boolean save(Integer editActionId) throws EditSessionExpired{ - System.out.println(editActionId); - for (Integer i : expiredSessionIds) { - System.out.println("exp. session ids: "+i); - } + if (expiredSessionIds.contains(editActionId)) { throw new EditSessionExpired("Your edit session have expired. Please edit page once again !"); } Modified: trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/WikiPageDictionary.java =================================================================== --- trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/WikiPageDictionary.java 2005-10-10 05:55:33 UTC (rev 1354) +++ trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/WikiPageDictionary.java 2005-10-10 13:41:17 UTC (rev 1355) @@ -1,6 +1,7 @@ package org.jboss.wiki; import org.jboss.wiki.exceptions.PageAlreadyExistsException; +import org.jboss.wiki.exceptions.PageRenamingException; public interface WikiPageDictionary { @@ -13,4 +14,6 @@ public boolean uidInDictionary(String uid); public boolean realNameInDictionary(String realName); + + public void removeDictForPage(String uid) throws PageRenamingException; } Modified: trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/WikiType.java =================================================================== --- trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/WikiType.java 2005-10-10 05:55:33 UTC (rev 1354) +++ trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/WikiType.java 2005-10-10 13:41:17 UTC (rev 1355) @@ -91,7 +91,7 @@ System.err.println("cannot clone the page: " + cnse); } } - + // execute the plugins for (int i = 0; i < plugins.size(); i++) { // System.out.println("Executing plugin: @@ -102,10 +102,11 @@ // clear session attributes passed in uri int i = 1; - while (wikiSession.getAttribute("var" + i) != null) { - wikiSession.removeAttribute("var" + i); - i++; - } + if (wikiSession != null) + while (wikiSession.getAttribute("var" + i) != null) { + wikiSession.removeAttribute("var" + i); + i++; + } return newPage; } Modified: trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/plugins/DirectReferenceWikiType.java =================================================================== --- trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/plugins/DirectReferenceWikiType.java 2005-10-10 05:55:33 UTC (rev 1354) +++ trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/plugins/DirectReferenceWikiType.java 2005-10-10 13:41:17 UTC (rev 1355) @@ -9,6 +9,10 @@ return true; } + public DirectReferenceWikiType( ) { + + } + } Modified: trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/plugins/ReTranslateUids.java =================================================================== --- trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/plugins/ReTranslateUids.java 2005-10-10 05:55:33 UTC (rev 1354) +++ trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/plugins/ReTranslateUids.java 2005-10-10 13:41:17 UTC (rev 1355) @@ -12,7 +12,13 @@ return wikiEngine.getUid(link); } + public ReTranslateUids() { + super(); + } + public ReTranslateUids (WikiEngine wikiEngine) { + super(); + this.wikiEngine = wikiEngine; } Modified: trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/plugins/TranslateUids.java =================================================================== --- trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/plugins/TranslateUids.java 2005-10-10 05:55:33 UTC (rev 1354) +++ trunk/forge/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/plugins/TranslateUids.java 2005-10-10 13:41:17 UTC (rev 1355) @@ -17,14 +17,14 @@ private Stack<String> replaces = new Stack<String>(); private String PRE_START = "{{{"; - + private String PRE_END = "}}}"; - + @Override public WikiPage process(WikiPage wikiPage, WikiSession wikiSession) { - + wikiPage.setPageContent(getNewContent(wikiPage.getContent())); - + return wikiPage; } @@ -36,7 +36,7 @@ Integer partBegin = 0; // get all PRE starting {{{ - while ((lastCommStart = sBuf.indexOf(PRE_START, lastCommStart+3)) != -1) { + while ((lastCommStart = sBuf.indexOf(PRE_START, lastCommStart + 3)) != -1) { queue.offer(lastCommStart); } @@ -47,43 +47,42 @@ parsePart(sBuf, 0, sBuf.length()); } else { while (lastCommStart != null) { - + parsePart(sBuf, partBegin, lastCommStart); partBegin = sBuf.indexOf(PRE_END, lastCommStart); if (partBegin != -1) { partBegin += PRE_END.length(); - + while ((lastCommStart != null) && (lastCommStart < partBegin)) { lastCommStart = queue.poll(); } - + if (lastCommStart == null) { lastCommStart = sBuf.length(); } - } - else { + } else { lastCommStart = null; } } } while (begins.size() > 0) { - + int begin; sBuf.delete(begin = begins.pop(), ends.pop()); sBuf.insert(begin, replaces.pop()); } - + return sBuf.toString(); } - + protected void parsePart(StringBuffer sBuf, int start, int end) { - + boolean insideLink = false; Integer wordBegin = null; Integer wordEnd = null; @@ -101,7 +100,7 @@ wordBegin = null; wordEnd = null; } else { - wordBegin = i+1; + wordBegin = i + 1; } } else if (sBuf.charAt(i) == ']') { @@ -166,7 +165,8 @@ if (wordBegin != null) { // there was not closed link ([...) parse what stayed unparsed // (maybe some CamelCase links) - parsePart(sBuf, wordBegin, end); + if (wordBegin != start) + parsePart(sBuf, wordBegin, end); } } |