[ 
https://issues.apache.org/jira/browse/VELOCITY-537?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12609609#action_12609609
 ] 

Nathan Bubna commented on VELOCITY-537:
---------------------------------------

Actually, i believe it's that the parser is errantly leaving in the *# token 
when it directly precedes the #end

The start token and bodies of the multi-line comments never get to 
tokenLiteral() or getASTAsStringArray() in my testing.  Changing the tests for 
537 and 580 to have text in the comments does not make any difference, either 
with or without Marnix's patch.   Really, i've tried most variations i can 
think of.  Marnix's patch does seem to fix them all.  Though ideally, the 
parser should eat the *# token along with the rest of the comment.

> Multi-line comments causing ParseException in macros in Velocity engine 1.5
> ---------------------------------------------------------------------------
>
>                 Key: VELOCITY-537
>                 URL: https://issues.apache.org/jira/browse/VELOCITY-537
>             Project: Velocity
>          Issue Type: Bug
>          Components: Engine
>    Affects Versions: 1.5
>            Reporter: Christopher Townson
>             Fix For: 1.5.1
>
>         Attachments: velocity-537.zip
>
>
> Moving from velocity engine 1.4 to 1.5, one of my macros is now causing a 
> ParseException:
> #macro( makeLink $filepath )#*
>     *##if ($request.serverName.equalsIgnoreCase("www.liveserver.com") || 
> $request.serverName.equalsIgnoreCase("liveserver.com"))#*
>         *##set($mirrorDomain = "livemirror.com")#*
>     *##elseif($request.serverName.equalsIgnoreCase("stagingserver.com"))#*
>         *##set($mirrorDomain = "stagingmirror.com")#*
>     *##elseif($request.serverName.equalsIgnoreCase("devserver.com") || 
> $request.serverName.equalsIgnoreCase("localhost"))#*
>         *##set($mirrorDomain = "devmirror.com")#*
>     *##else#*
>         *##set($mirrorDomain = "liveserver.com")#*
>     *##end#*
>     *#http://${mirrorDomain}${filepath}#*
> *##end
> This macro uses the mutli-line comment hack to gobble whitespace (so that 
> none appears in the link text, whilst preserving some kind of readability.
> This works fine in 1.4, but throws a ParseException in 1.5 (stacktrace below)
> -- stacktrace --
> 2007-04-03 16:05:38,712 - VelocimacroManager.parseTree() : exception makeLink
> org.apache.velocity.runtime.parser.ParseException: Lexical error: 
> org.apache.velocity.runtime.parser.TokenMgrError: Lexical error at line 1, 
> column 535.  Encountered: <EOF> after : ""
>       at org.apache.velocity.runtime.parser.Parser.parse(Parser.java:124)
>       at 
> org.apache.velocity.runtime.RuntimeInstance.parse(RuntimeInstance.java:1042)
>       at 
> org.apache.velocity.runtime.directive.VelocimacroProxy.parseTree(VelocimacroProxy.java:342)
>       at 
> org.apache.velocity.runtime.directive.VelocimacroProxy.setupMacro(VelocimacroProxy.java:322)
>       at 
> org.apache.velocity.runtime.directive.VelocimacroProxy.init(VelocimacroProxy.java:309)
>       at 
> org.apache.velocity.runtime.parser.node.ASTDirective.init(ASTDirective.java:134)
>       at 
> org.apache.velocity.runtime.parser.node.SimpleNode.init(SimpleNode.java:285)
>       at org.apache.velocity.Template.initDocument(Template.java:199)
>       at org.apache.velocity.Template.process(Template.java:121)
>       at 
> org.apache.velocity.runtime.resource.ResourceManagerImpl.loadResource(ResourceManagerImpl.java:415)
>       at 
> org.apache.velocity.runtime.resource.ResourceManagerImpl.getResource(ResourceManagerImpl.java:335)
>       at 
> org.apache.velocity.runtime.RuntimeInstance.getTemplate(RuntimeInstance.java:1102)
>       at 
> org.apache.velocity.runtime.RuntimeInstance.getTemplate(RuntimeInstance.java:1077)
>       at 
> org.apache.velocity.app.VelocityEngine.getTemplate(VelocityEngine.java:528)
>       at 
> org.apache.velocity.tools.view.servlet.VelocityViewServlet.getTemplate(VelocityViewServlet.java:667)
>       at 
> org.apache.velocity.tools.view.servlet.VelocityViewServlet.handleRequest(VelocityViewServlet.java:601)
>       at 
> org.apache.velocity.tools.view.servlet.VelocityViewServlet.doRequest(VelocityViewServlet.java:541)
>       at 
> org.apache.velocity.tools.view.servlet.VelocityViewServlet.doGet(VelocityViewServlet.java:507)
>       at javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
>       at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
>       at 
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
>       at 
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
>       at 
> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
>       at 
> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
>       at 
> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
>       at 
> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
>       at 
> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
>       at 
> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
>       at 
> org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
>       at 
> org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)
>       at 
> org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
>       at 
> org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
>       at 
> org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
>       at java.lang.Thread.run(Thread.java:595)

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to