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

Rafal Krzewski commented on VELOCITY-537:
-----------------------------------------

I agree that the issue needs to be fixed in the parser itself, because the 
change to NodeUtils is just masking out one symptom of the problem.
The parser, or rather the lexer is seriously going haywire. Depending on the 
number and configuration of the comments ParseExceptions occur, or comment 
boundaries get mismatched resulting in cropped literal text and ommitted logic. 
I'll try to provide more testcases showcasing the problems. Too bad that JavaCC 
is an absolute b*tch to debug. It would be most helpful if the folks that 
developed this particular parser could take a look at this...

> 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