You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@velocity.apache.org by Jo...@eventim.de on 2009/05/15 13:04:40 UTC

AW: Problem with VM and caching

It's a little bit strange...
I have a #parse directive in my global lib.vm which causes an exception

#macro(setGlobalConstants)
	#set($TEST = "this is a constant var!")
	#parse("setup/default.config")
#end

If I set velocimacro.permissions.allow.inline.local.scope = true, I'll see this exception. If it's set to false, everything is fine.

java.lang.NullPointerException
	at java.util.Hashtable.get(Hashtable.java:333)
	at org.apache.velocity.runtime.VelocimacroManager.getNamespace(VelocimacroManager.java:318)
	at org.apache.velocity.runtime.VelocimacroManager.get(VelocimacroManager.java:215)
	at org.apache.velocity.runtime.VelocimacroFactory.getVelocimacro(VelocimacroFactory.java:563)
	at org.apache.velocity.runtime.RuntimeInstance.getVelocimacro(RuntimeInstance.java:1563)
	at org.apache.velocity.runtime.directive.RuntimeMacro.render(RuntimeMacro.java:218)
	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.runtime.directive.Parse.render(Parse.java:260)
	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)

-----Ursprüngliche Nachricht-----
Von: Nathan Bubna [mailto:nbubna@gmail.com] 
Gesendet: Freitag, 24. April 2009 15:37
An: Velocity Users List
Betreff: Re: Problem with VM and caching

Yes, you should still have access to global macros.  By "seems to be
that i don't", do you mean that you tried it, and it didn't work?  Or
just that the docs are unclear?

On Fri, Apr 24, 2009 at 6:31 AM,  <Jo...@eventim.de> wrote:
> If I set this property to true, do I have access to the global macros which were defined in VM_global_library.vm? It seems to be that I don't. Is there a way to access the global macros?
>
>
> -----Ursprüngliche Nachricht-----
> Von: Nathan Bubna [mailto:nbubna@gmail.com]
> Gesendet: Donnerstag, 23. April 2009 20:19
> An: Velocity Users List
> Betreff: Re: Problem with VM and caching
>
> Keep your inline macros local:
>
> velocimacro.permissions.allow.inline.local.scope = true
>
> and in general, i'd recommend rereading the Velocimacro section of this:
>
> http://velocity.apache.org/engine/devel/developer-guide.html#Velocity_Configuration_Keys_and_Values
>
> On Thu, Apr 23, 2009 at 9:26 AM,  <Jo...@eventim.de> wrote:
>> Hi all,
>>
>>
>>
>> I'm using 2 vm files :
>>
>>
>>
>> The first one, located in
>>
>> /example1/local.vm with
>>
>>
>>
>> #macro(Hello)
>>
>>       Hello from example 1
>>
>> #end
>>
>>
>>
>> And the second one in
>>
>> /example2/local.vm with
>>
>>
>>
>> #macro(Hello)
>>
>>       Hello from example 2
>>
>> #end
>>
>>
>>
>> One index.htm in both directories with #Hello
>>
>>
>>
>> Now, if I try to parse the /example1/index.htm via
>>
>> template.merge(context, velocityWriter, </example1/local.vm >) the
>> output is "Hello from example 1". The second call for
>> /example2/index.htm template.merge(context, velocityWriter,
>> </example2/local.vm >) returns "Hello from example 2". But if I'm
>> parsing the /example1/index.htm template.merge(context, velocityWriter,
>> </example1/local.vm >) again, I'm getting "Hello from example 2". It
>> works correct if I turn off the loader cache.
>>
>> Any suggestions?
>>
>>
>>
>> Regards, Johann
>>
>>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: user-unsubscribe@velocity.apache.org
> For additional commands, e-mail: user-help@velocity.apache.org
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: user-unsubscribe@velocity.apache.org
> For additional commands, e-mail: user-help@velocity.apache.org
>
>

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


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


Re: Problem with VM and caching

Posted by Nathan Bubna <nb...@gmail.com>.
Would you mind opening a JIRA issue for this?  It shouldn't throw an
NPE if the IncludeEventHandler returns null.

https://issues.apache.org/jira/browse/VELOCITY

On Fri, May 15, 2009 at 9:53 AM,  <Jo...@eventim.de> wrote:
> I'm using the last one, 1.6.2.
> The problem is not the macro, I was wrong.
> The thing is, the file default.config is not available. In this case my IncludeEventHandler returns null (public String includeEvent(..) method) to keep the parsing process going.
> When I use the merge method with a list of macro libs, it throws a npe if the file doesn't exist and the IncludeEventHandler returns null.
>
>
> -----Ursprüngliche Nachricht-----
> Von: Nathan Bubna [mailto:nbubna@gmail.com]
> Gesendet: Fr 15.05.2009 18:17
> An: Velocity Users List
> Betreff: Re: Problem with VM and caching
>
> What version of Velocity are you using?
>
> On Fri, May 15, 2009 at 4:04 AM,  <Jo...@eventim.de> wrote:
>> It's a little bit strange...
>> I have a #parse directive in my global lib.vm which causes an exception
>>
>> #macro(setGlobalConstants)
>>        #set($TEST = "this is a constant var!")
>>        #parse("setup/default.config")
>> #end
>>
>> If I set velocimacro.permissions.allow.inline.local.scope = true, I'll see this exception. If it's set to false, everything is fine.
>>
>> java.lang.NullPointerException
>>        at java.util.Hashtable.get(Hashtable.java:333)
>>        at org.apache.velocity.runtime.VelocimacroManager.getNamespace(VelocimacroManager.java:318)
>>        at org.apache.velocity.runtime.VelocimacroManager.get(VelocimacroManager.java:215)
>>        at org.apache.velocity.runtime.VelocimacroFactory.getVelocimacro(VelocimacroFactory.java:563)
>>        at org.apache.velocity.runtime.RuntimeInstance.getVelocimacro(RuntimeInstance.java:1563)
>>        at org.apache.velocity.runtime.directive.RuntimeMacro.render(RuntimeMacro.java:218)
>>        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.runtime.directive.Parse.render(Parse.java:260)
>>        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)
>>
>> -----Ursprüngliche Nachricht-----
>> Von: Nathan Bubna [mailto:nbubna@gmail.com]
>> Gesendet: Freitag, 24. April 2009 15:37
>> An: Velocity Users List
>> Betreff: Re: Problem with VM and caching
>>
>> Yes, you should still have access to global macros.  By "seems to be
>> that i don't", do you mean that you tried it, and it didn't work?  Or
>> just that the docs are unclear?
>>
>> On Fri, Apr 24, 2009 at 6:31 AM,  <Jo...@eventim.de> wrote:
>>> If I set this property to true, do I have access to the global macros which were defined in VM_global_library.vm? It seems to be that I don't. Is there a way to access the global macros?
>>>
>>>
>>> -----Ursprüngliche Nachricht-----
>>> Von: Nathan Bubna [mailto:nbubna@gmail.com]
>>> Gesendet: Donnerstag, 23. April 2009 20:19
>>> An: Velocity Users List
>>> Betreff: Re: Problem with VM and caching
>>>
>>> Keep your inline macros local:
>>>
>>> velocimacro.permissions.allow.inline.local.scope = true
>>>
>>> and in general, i'd recommend rereading the Velocimacro section of this:
>>>
>>> http://velocity.apache.org/engine/devel/developer-guide.html#Velocity_Configuration_Keys_and_Values
>>>
>>> On Thu, Apr 23, 2009 at 9:26 AM,  <Jo...@eventim.de> wrote:
>>>> Hi all,
>>>>
>>>>
>>>>
>>>> I'm using 2 vm files :
>>>>
>>>>
>>>>
>>>> The first one, located in
>>>>
>>>> /example1/local.vm with
>>>>
>>>>
>>>>
>>>> #macro(Hello)
>>>>
>>>>       Hello from example 1
>>>>
>>>> #end
>>>>
>>>>
>>>>
>>>> And the second one in
>>>>
>>>> /example2/local.vm with
>>>>
>>>>
>>>>
>>>> #macro(Hello)
>>>>
>>>>       Hello from example 2
>>>>
>>>> #end
>>>>
>>>>
>>>>
>>>> One index.htm in both directories with #Hello
>>>>
>>>>
>>>>
>>>> Now, if I try to parse the /example1/index.htm via
>>>>
>>>> template.merge(context, velocityWriter, </example1/local.vm >) the
>>>> output is "Hello from example 1". The second call for
>>>> /example2/index.htm template.merge(context, velocityWriter,
>>>> </example2/local.vm >) returns "Hello from example 2". But if I'm
>>>> parsing the /example1/index.htm template.merge(context, velocityWriter,
>>>> </example1/local.vm >) again, I'm getting "Hello from example 2". It
>>>> works correct if I turn off the loader cache.
>>>>
>>>> Any suggestions?
>>>>
>>>>
>>>>
>>>> Regards, Johann
>>>>
>>>>
>>>
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: user-unsubscribe@velocity.apache.org
>>> For additional commands, e-mail: user-help@velocity.apache.org
>>>
>>>
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: user-unsubscribe@velocity.apache.org
>>> For additional commands, e-mail: user-help@velocity.apache.org
>>>
>>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: user-unsubscribe@velocity.apache.org
>> For additional commands, e-mail: user-help@velocity.apache.org
>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: user-unsubscribe@velocity.apache.org
>> For additional commands, e-mail: user-help@velocity.apache.org
>>
>>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: user-unsubscribe@velocity.apache.org
> For additional commands, e-mail: user-help@velocity.apache.org
>
>
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: user-unsubscribe@velocity.apache.org
> For additional commands, e-mail: user-help@velocity.apache.org
>

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


AW: Problem with VM and caching

Posted by Jo...@eventim.de.
I'm using the last one, 1.6.2.
The problem is not the macro, I was wrong.
The thing is, the file default.config is not available. In this case my IncludeEventHandler returns null (public String includeEvent(..) method) to keep the parsing process going.
When I use the merge method with a list of macro libs, it throws a npe if the file doesn't exist and the IncludeEventHandler returns null.


-----Ursprüngliche Nachricht-----
Von: Nathan Bubna [mailto:nbubna@gmail.com]
Gesendet: Fr 15.05.2009 18:17
An: Velocity Users List
Betreff: Re: Problem with VM and caching
 
What version of Velocity are you using?

On Fri, May 15, 2009 at 4:04 AM,  <Jo...@eventim.de> wrote:
> It's a little bit strange...
> I have a #parse directive in my global lib.vm which causes an exception
>
> #macro(setGlobalConstants)
>        #set($TEST = "this is a constant var!")
>        #parse("setup/default.config")
> #end
>
> If I set velocimacro.permissions.allow.inline.local.scope = true, I'll see this exception. If it's set to false, everything is fine.
>
> java.lang.NullPointerException
>        at java.util.Hashtable.get(Hashtable.java:333)
>        at org.apache.velocity.runtime.VelocimacroManager.getNamespace(VelocimacroManager.java:318)
>        at org.apache.velocity.runtime.VelocimacroManager.get(VelocimacroManager.java:215)
>        at org.apache.velocity.runtime.VelocimacroFactory.getVelocimacro(VelocimacroFactory.java:563)
>        at org.apache.velocity.runtime.RuntimeInstance.getVelocimacro(RuntimeInstance.java:1563)
>        at org.apache.velocity.runtime.directive.RuntimeMacro.render(RuntimeMacro.java:218)
>        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.runtime.directive.Parse.render(Parse.java:260)
>        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)
>
> -----Ursprüngliche Nachricht-----
> Von: Nathan Bubna [mailto:nbubna@gmail.com]
> Gesendet: Freitag, 24. April 2009 15:37
> An: Velocity Users List
> Betreff: Re: Problem with VM and caching
>
> Yes, you should still have access to global macros.  By "seems to be
> that i don't", do you mean that you tried it, and it didn't work?  Or
> just that the docs are unclear?
>
> On Fri, Apr 24, 2009 at 6:31 AM,  <Jo...@eventim.de> wrote:
>> If I set this property to true, do I have access to the global macros which were defined in VM_global_library.vm? It seems to be that I don't. Is there a way to access the global macros?
>>
>>
>> -----Ursprüngliche Nachricht-----
>> Von: Nathan Bubna [mailto:nbubna@gmail.com]
>> Gesendet: Donnerstag, 23. April 2009 20:19
>> An: Velocity Users List
>> Betreff: Re: Problem with VM and caching
>>
>> Keep your inline macros local:
>>
>> velocimacro.permissions.allow.inline.local.scope = true
>>
>> and in general, i'd recommend rereading the Velocimacro section of this:
>>
>> http://velocity.apache.org/engine/devel/developer-guide.html#Velocity_Configuration_Keys_and_Values
>>
>> On Thu, Apr 23, 2009 at 9:26 AM,  <Jo...@eventim.de> wrote:
>>> Hi all,
>>>
>>>
>>>
>>> I'm using 2 vm files :
>>>
>>>
>>>
>>> The first one, located in
>>>
>>> /example1/local.vm with
>>>
>>>
>>>
>>> #macro(Hello)
>>>
>>>       Hello from example 1
>>>
>>> #end
>>>
>>>
>>>
>>> And the second one in
>>>
>>> /example2/local.vm with
>>>
>>>
>>>
>>> #macro(Hello)
>>>
>>>       Hello from example 2
>>>
>>> #end
>>>
>>>
>>>
>>> One index.htm in both directories with #Hello
>>>
>>>
>>>
>>> Now, if I try to parse the /example1/index.htm via
>>>
>>> template.merge(context, velocityWriter, </example1/local.vm >) the
>>> output is "Hello from example 1". The second call for
>>> /example2/index.htm template.merge(context, velocityWriter,
>>> </example2/local.vm >) returns "Hello from example 2". But if I'm
>>> parsing the /example1/index.htm template.merge(context, velocityWriter,
>>> </example1/local.vm >) again, I'm getting "Hello from example 2". It
>>> works correct if I turn off the loader cache.
>>>
>>> Any suggestions?
>>>
>>>
>>>
>>> Regards, Johann
>>>
>>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: user-unsubscribe@velocity.apache.org
>> For additional commands, e-mail: user-help@velocity.apache.org
>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: user-unsubscribe@velocity.apache.org
>> For additional commands, e-mail: user-help@velocity.apache.org
>>
>>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: user-unsubscribe@velocity.apache.org
> For additional commands, e-mail: user-help@velocity.apache.org
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: user-unsubscribe@velocity.apache.org
> For additional commands, e-mail: user-help@velocity.apache.org
>
>

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




Re: Problem with VM and caching

Posted by Nathan Bubna <nb...@gmail.com>.
What version of Velocity are you using?

On Fri, May 15, 2009 at 4:04 AM,  <Jo...@eventim.de> wrote:
> It's a little bit strange...
> I have a #parse directive in my global lib.vm which causes an exception
>
> #macro(setGlobalConstants)
>        #set($TEST = "this is a constant var!")
>        #parse("setup/default.config")
> #end
>
> If I set velocimacro.permissions.allow.inline.local.scope = true, I'll see this exception. If it's set to false, everything is fine.
>
> java.lang.NullPointerException
>        at java.util.Hashtable.get(Hashtable.java:333)
>        at org.apache.velocity.runtime.VelocimacroManager.getNamespace(VelocimacroManager.java:318)
>        at org.apache.velocity.runtime.VelocimacroManager.get(VelocimacroManager.java:215)
>        at org.apache.velocity.runtime.VelocimacroFactory.getVelocimacro(VelocimacroFactory.java:563)
>        at org.apache.velocity.runtime.RuntimeInstance.getVelocimacro(RuntimeInstance.java:1563)
>        at org.apache.velocity.runtime.directive.RuntimeMacro.render(RuntimeMacro.java:218)
>        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.runtime.directive.Parse.render(Parse.java:260)
>        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)
>
> -----Ursprüngliche Nachricht-----
> Von: Nathan Bubna [mailto:nbubna@gmail.com]
> Gesendet: Freitag, 24. April 2009 15:37
> An: Velocity Users List
> Betreff: Re: Problem with VM and caching
>
> Yes, you should still have access to global macros.  By "seems to be
> that i don't", do you mean that you tried it, and it didn't work?  Or
> just that the docs are unclear?
>
> On Fri, Apr 24, 2009 at 6:31 AM,  <Jo...@eventim.de> wrote:
>> If I set this property to true, do I have access to the global macros which were defined in VM_global_library.vm? It seems to be that I don't. Is there a way to access the global macros?
>>
>>
>> -----Ursprüngliche Nachricht-----
>> Von: Nathan Bubna [mailto:nbubna@gmail.com]
>> Gesendet: Donnerstag, 23. April 2009 20:19
>> An: Velocity Users List
>> Betreff: Re: Problem with VM and caching
>>
>> Keep your inline macros local:
>>
>> velocimacro.permissions.allow.inline.local.scope = true
>>
>> and in general, i'd recommend rereading the Velocimacro section of this:
>>
>> http://velocity.apache.org/engine/devel/developer-guide.html#Velocity_Configuration_Keys_and_Values
>>
>> On Thu, Apr 23, 2009 at 9:26 AM,  <Jo...@eventim.de> wrote:
>>> Hi all,
>>>
>>>
>>>
>>> I'm using 2 vm files :
>>>
>>>
>>>
>>> The first one, located in
>>>
>>> /example1/local.vm with
>>>
>>>
>>>
>>> #macro(Hello)
>>>
>>>       Hello from example 1
>>>
>>> #end
>>>
>>>
>>>
>>> And the second one in
>>>
>>> /example2/local.vm with
>>>
>>>
>>>
>>> #macro(Hello)
>>>
>>>       Hello from example 2
>>>
>>> #end
>>>
>>>
>>>
>>> One index.htm in both directories with #Hello
>>>
>>>
>>>
>>> Now, if I try to parse the /example1/index.htm via
>>>
>>> template.merge(context, velocityWriter, </example1/local.vm >) the
>>> output is "Hello from example 1". The second call for
>>> /example2/index.htm template.merge(context, velocityWriter,
>>> </example2/local.vm >) returns "Hello from example 2". But if I'm
>>> parsing the /example1/index.htm template.merge(context, velocityWriter,
>>> </example1/local.vm >) again, I'm getting "Hello from example 2". It
>>> works correct if I turn off the loader cache.
>>>
>>> Any suggestions?
>>>
>>>
>>>
>>> Regards, Johann
>>>
>>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: user-unsubscribe@velocity.apache.org
>> For additional commands, e-mail: user-help@velocity.apache.org
>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: user-unsubscribe@velocity.apache.org
>> For additional commands, e-mail: user-help@velocity.apache.org
>>
>>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: user-unsubscribe@velocity.apache.org
> For additional commands, e-mail: user-help@velocity.apache.org
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: user-unsubscribe@velocity.apache.org
> For additional commands, e-mail: user-help@velocity.apache.org
>
>

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