fitnesse icon indicating copy to clipboard operation
fitnesse copied to clipboard

Where Used wikiWord="" leads to Exception

Open starguy opened this issue 8 years ago • 0 comments

Hi,

the "Where used" Function may lead to the folowing Exception. Reason for this is an empty ("") wikiWord.

The method expandPrefix in fitnesse.wiki.WikiWordReference.java should be changed to something like:

public static String expandPrefix(WikiPage wikiPage, String theWord) { if(!theWord.equals("")) { if (theWord.charAt(0) == '^' || theWord.charAt(0) == '>') { String prefix = wikiPage.getName(); return String.format("%s.%s", prefix, theWord.substring(1)); } else if (theWord.charAt(0) == '<') { String undecoratedPath = theWord.substring(1); String[] pathElements = undecoratedPath.split("."); String target = pathElements[0]; for (WikiPage current = wikiPage.getParent(); !current.isRoot(); current = current.getParent()) { if (current.getName().equals(target)) { pathElements[0] = PathParser.render(current.getPageCrawler().getFullPath()); return "." + StringUtils.join(Arrays.asList(pathElements), "."); } } return "." + undecoratedPath; } } return theWord; }

Greetings

c

Searching... java.lang.StringIndexOutOfBoundsException: String index out of range: 0 java.lang.String.charAt(Unknown Source) fitnesse.wiki.WikiWordReference.expandPrefix(WikiWordReference.java:25) fitnesse.wiki.WikiWordReference.getReferencedPage(WikiWordReference.java:19) fitnesse.wiki.search.WhereUsedPageFinder.visit(WhereUsedPageFinder.java:57) fitnesse.wikitext.parser.Symbol.walkPreOrder(Symbol.java:97) fitnesse.wikitext.parser.Symbol.walkPreOrder(Symbol.java:100) fitnesse.wiki.search.WhereUsedPageFinder.process(WhereUsedPageFinder.java:33) fitnesse.wiki.search.WhereUsedPageFinder.process(WhereUsedPageFinder.java:11) fitnesse.wiki.PageCrawlerImpl.traverse(PageCrawlerImpl.java:129) fitnesse.wiki.PageCrawlerImpl.traverse(PageCrawlerImpl.java:131) fitnesse.wiki.PageCrawlerImpl.traverse(PageCrawlerImpl.java:125) fitnesse.wiki.search.WhereUsedPageFinder.search(WhereUsedPageFinder.java:39) fitnesse.responders.search.ResultResponder.traverse(ResultResponder.java:94) fitnesse.html.template.TraverseDirective.render(TraverseDirective.java:43) org.apache.velocity.runtime.parser.node.ASTDirective.render(ASTDirective.java:207) org.apache.velocity.runtime.parser.node.SimpleNode.render(SimpleNode.java:342) org.apache.velocity.runtime.directive.Parse.render(Parse.java:260) org.apache.velocity.runtime.parser.node.ASTDirective.render(ASTDirective.java:207) org.apache.velocity.runtime.parser.node.SimpleNode.render(SimpleNode.java:342) org.apache.velocity.Template.merge(Template.java:356) org.apache.velocity.Template.merge(Template.java:260) fitnesse.html.template.HtmlPage.render(HtmlPage.java:81) fitnesse.responders.search.ResultResponder.doSending(ResultResponder.java:85) fitnesse.responders.ChunkingResponder.startSending(ChunkingResponder.java:74) fitnesse.http.ChunkedResponse.sendTo(ChunkedResponse.java:27) fitnesse.FitNesseExpediter.sendResponse(FitNesseExpediter.java:95) fitnesse.FitNesseExpediter.run(FitNesseExpediter.java:61) java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) java.util.concurrent.FutureTask.run(Unknown Source) java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) java.lang.Thread.run(Unknown Source)

starguy avatar Aug 11 '16 13:08 starguy