[
https://issues.apache.org/jira/browse/VELOCITY-537?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12571059#action_12571059
]
Christopher Schultz commented on VELOCITY-537:
----------------------------------------------
Marnix,
I'm no expert in how Velocity parses and executes templates, but this seems
like the kind of thing that should be fixed in the parser itself, not an AST
walker. I'm not sure how the team feels, but I'm not sure there's a reason to
do anything with comments but completely ignore them during the building of the
AST.
>From the stack trace, though, it looks like this is actually /during/ parsing,
>rather than evaluation.
That would indicate to me that the problem /is/ with the parser (probably the
grammar). Is the method indicated in the previous comment automatically
generated by javacc/antlr/jlex+cup or whatever compiler compiler we use? If so,
the opportunities for fixing this bug in an auto-generated method are quite
limited.
> 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
>
>
> 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]