Uploaded image for project: 'Velocity'
  1. Velocity
  2. VELOCITY-537

Multi-line comments causing ParseException in macros in Velocity engine 1.5

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Major
    • Resolution: Fixed
    • 1.5
    • 1.6
    • Engine
    • None

    Description

      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)

      Attachments

        1. velocity-537.zip
          4 kB
          Marnix van Bochove

        Issue Links

          Activity

            People

              wglass William Glass-Husain
              christopher.townson Christopher Townson
              Votes:
              2 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: