velocity-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Claude Brisson <cla...@renegat.net>
Subject Re: Lexical error when using Velocity to generate Java comments
Date Wed, 03 Nov 2010 15:52:40 GMT
The upcoming release (2.0) of Velocity will introduce a way to have 
inlined unparsed content:

   #[[ ...unparsed content.. ]]#

Meanwhile, there are several tricks that do work, like:

#set($h = '#")

...DataObject${h}copyFrom(...



   Claude

On 03/11/2010 16:25, Matthew Hall wrote:
> I'm using Velocity to do some Java code generation, and I recently added
> Javadoc comments to the macro so that the generated Java code will be
> documented.  I'm having a problem getting Velocity to give me the output I
> want in my generated code, though.
>
> Here's an example of a Javadoc comment I added to my Velocity macro:
>
>     /**
>
>   * @see
> com.intervolve.prometheus.core.dataobj.DataObject#copyFrom(com.intervolve.prometheus.core.dataobj.DataObject)
>
>   */
>
> When I run the macro containing this comment, I get the following error:
>
> org.apache.velocity.exception.ParseErrorException: Lexical error:
> org.apache.velocity.runtime.parser.TokenMgrError: Lexical error at line 170,
> column 80.  Encountered: "i" (105), after : "."
> at org.apache.velocity.Template.process(Template.java:141)
> at
> org.apache.velocity.runtime.resource.ResourceManagerImpl.loadResource(ResourceManagerImpl.java:446)
> at
> org.apache.velocity.runtime.resource.ResourceManagerImpl.getResource(ResourceManagerImpl.java:354)
> at
> org.apache.velocity.runtime.RuntimeInstance.getTemplate(RuntimeInstance.java:1400)
> at
> org.apache.velocity.runtime.RuntimeInstance.getTemplate(RuntimeInstance.java:1380)
> at
> org.apache.velocity.app.VelocityEngine.getTemplate(VelocityEngine.java:401)
> at org.apache.velocity.texen.Generator.getTemplate(Generator.java:310)
> at org.apache.velocity.texen.Generator.parse(Generator.java:383)
> at org.apache.velocity.texen.Generator.parse(Generator.java:353)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> at java.lang.reflect.Method.invoke(Method.java:597)
> at
> org.apache.velocity.util.introspection.UberspectImpl$VelMethodImpl.doInvoke(UberspectImpl.java:389)
> at
> org.apache.velocity.util.introspection.UberspectImpl$VelMethodImpl.invoke(UberspectImpl.java:378)
> at
> org.apache.velocity.runtime.parser.node.ASTMethod.execute(ASTMethod.java:270)
> at
> org.apache.velocity.runtime.parser.node.ASTReference.execute(ASTReference.java:262)
> at
> org.apache.velocity.runtime.parser.node.ASTReference.render(ASTReference.java:342)
> at org.apache.velocity.runtime.parser.node.ASTBlock.render(ASTBlock.java:72)
> at org.apache.velocity.runtime.directive.Foreach.render(Foreach.java:366)
> at
> org.apache.velocity.runtime.parser.node.ASTDirective.render(ASTDirective.java:175)
> at
> org.apache.velocity.runtime.parser.node.SimpleNode.render(SimpleNode.java:336)
> at org.apache.velocity.Template.merge(Template.java:328)
> at org.apache.velocity.Template.merge(Template.java:235)
> at org.apache.velocity.texen.Generator.parse(Generator.java:445)
> at org.apache.velocity.texen.ant.TexenTask.execute(TexenTask.java:584)
> at
> com.intervolve.prometheus.build.ant.OMGenerationTask.execute(OMGenerationTask.java:35)
> at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:288)
> at sun.reflect.GeneratedMethodAccessor3.invoke(Unknown Source)
> at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> at java.lang.reflect.Method.invoke(Method.java:597)
> at
> org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
> at org.apache.tools.ant.Task.perform(Task.java:348)
> at org.apache.tools.ant.Target.execute(Target.java:357)
> at org.apache.tools.ant.Target.performTasks(Target.java:385)
> at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1337)
> at org.apache.tools.ant.Project.executeTarget(Project.java:1306)
> at
> org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41)
> at
> org.eclipse.ant.internal.launching.remote.EclipseDefaultExecutor.executeTargets(EclipseDefaultExecutor.java:32)
> at org.apache.tools.ant.Project.executeTargets(Project.java:1189)
> at
> org.eclipse.ant.internal.launching.remote.InternalAntRunner.run(InternalAntRunner.java:423)
> at
> org.eclipse.ant.internal.launching.remote.InternalAntRunner.main(InternalAntRunner.java:137)
>
> I believe that this error is happening because Velocity thinks that
> "#copyFrom(com." is a directive, so I add the escape character in front of
> the #, like this:
>
>     /**
>
>   * @see
> com.intervolve.prometheus.core.dataobj.DataObject\#copyFrom(com.intervolve.prometheus.core.dataobj.DataObject)
>
>   */
>
> This resolves the error, and my Velocity macro is now able to run, however,
> the escape character is present in the generated code file as well.  This
> causes Javadoc to not be able to interpret the @see tag and correctly link
> to the specified method.  What can I do to resolve this, so that the escape
> character that is preventing the error does not appear in my generated code
> file?  Thanks in advance!
>
> --Matt
>
>    


---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@velocity.apache.org
For additional commands, e-mail: user-help@velocity.apache.org


Mime
View raw message