velocity-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Nathan Bubna <nbu...@gmail.com>
Subject Re: loadConfiguration() equivalent in Velocity Tools 2.0
Date Wed, 23 Jun 2010 02:31:24 GMT
On Tue, Jun 22, 2010 at 5:34 PM, B. Scott Smith <scott@smithdomain.com> wrote:
> Hi Nathan, thanks again for the reply.
> You make it sound very easy, but for some reason I'm just not getting it. I
> tried to do as you suggest, but the new class won't compile. After
> additionally importing org.apache.velocity.app.VelocityEngine, I still get:
>
> MyVelocityView.java:4: cannot find symbol
>     [javac] symbol  : constructor VelocityView()
>     [javac] location: class org.apache.velocity.tools.view.VelocityView
>
> Do I have to override all the constructors? I added one:
>
> public MyVelocityView( JeeConfig config ) { super( config ); }
>
> and now it compiles, but is this correct?

Shoot, sorry.  I did forget the constructor and the VelocityEngine
import.  Yes, that should do it.

> But even so, I'm still not sure what to do next. I assume where you put "//
> do you stuff here", I will be making a series of calls to
> velocity.setProperty(). But I don't understand how this instantiated class
> would have access to the dynamic information necessary to provide the
> correct property values, such as the local directory and debug variables I
> mentioned in my Servlet code snippet.

I don't know how your former VelocityViewServlet class got the
localDir or debugFlag properties, so i can't really answer that.  You
do have access to the JeeConfig, which should give you access to the
ServletContext and init parameters.

> I know this should be easier, but I'm just not connecting the dots...

s'ok.

> Thanks again.
>  - Scott
>
> On 6/22/2010 4:17 PM, Nathan Bubna wrote:
>
> You subclass VelocityView like this:
>
> package com.foo;
> import org.apache.velocity.tools.view.*;
> public class MyVelocityView extends VelocityView
>   protected void configure(final JeeConfig config, final
> VelocityEngine velocity) {
>    super.configure(config, velocity);
>    //do your stuff here
>  }
> }
>
> so long as you put the context-param i said, your MyVelocityView class
> will automatically be used.  and no, VelocityEngine config has been
> moved into the VelocityView class, so the two options i gave you are
> pretty much it.
>
> On Tue, Jun 22, 2010 at 1:06 PM, B. Scott Smith <scott@smithdomain.com>
> wrote:
>
>
> Thanks for the reply.
> I'm not sure how I would subclass VelocityView, as my application is already
> subclassing VelocityViewServlet. I currently override init() which
> eventually calls super.init(), and I also override handleRequest().
>
> Do I have any choices in this case? Thanks again.
>  - Scott
>
> On 6/22/2010 2:17 PM, Nathan Bubna wrote:
>
>
> Unfortunately, in the quest to simplify other things and improve
> performance, this particular sort of customization is now a little
> more complicated.   There are two ways to do it:
>
> Subclass VelocityView with the following:
>
> protected void configure(final JeeConfig config, final VelocityEngine
> velocity) {
>   super.configure(config, velocity);
>   //do your stuff here
> }
>
> and tell your VelocityView[Servlet/Filter/Tag]s to use it via:
>
> <context-param>
>   <param-name>org.apache.velocity.tools.view.class</param-name>
>   <param-value>com.foo.MyVelocityView</param-value>
> </context-param>
>
> or alternately, you can try subclassing your
> VelocityView[Servlet/Filter/Tag](s) directly and creating your own
> VelocityEngine during init and then calling
> getVelocityView().setVelocityEngine(myEngine), but then, of course,
> you will not be taking advantage of all the VelocityEngine
> configuration done by VelocityView and friends.  So i recommend the
> former option.
>
> On Tue, Jun 22, 2010 at 9:22 AM, B. Scott Smith<scott@smithdomain.com>
>  wrote:
>
>
>
> Hi, I am trying to migrate to Velocity Tools 2.0. My application
> currently
> needs to set a Velocity Property to a value that is determined at
> run-time.
> For example, I would like to set a property to one of two possible
> values,
> based on the current setting of my application's debug value. Before, I
> did
> this by simply overwriting the loadConfiguration() method:
>
>   protected Properties loadConfiguration( ServletConfig config )
>        throws IOException, FileNotFoundException
>   {
>        Properties velocityProps = new Properties(  );
>        if ( localDir != null ) {
>            velocityProps.setProperty(
>   Velocity.FILE_RESOURCE_LOADER_PATH, localDir );
>        }
>        velocityProps.setProperty( Velocity.RUNTIME_LOG, localDir +
>   "velocity.log" );
>        velocityProps.setProperty(
>   Velocity.RUNTIME_LOG_LOGSYSTEM_CLASS, debugFlag ?
>
> "org.apache.velocity.runtime.log.SimpleLog4JLogSystem" :
>
> "org.apache.velocity.runtime.log.NullLogSystem" );
>        return velocityProps;
>   }
>
>
> How can I accomplish the same thing in Tools 2.0?
> Thanks in advance for your help.
>  - Scott Smith
>
>
>
>
>
> ---------------------------------------------------------------------
> 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


Mime
View raw message