velocity-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From trad-ex <trad...@inter7.jp>
Subject Re: Can velocity load a properties file ?
Date Mon, 24 Apr 2006 02:09:49 GMT
Hi Will,

Thanks a lot for your commentary.
I will try to persuade our development team to implement some 
functionality in helper object in order not to use reflections code.

In fact, I hacked (because I don't have priviledge of committing java 
source) the helper object ($util) to add a few line of java source and 
succeeded. It was very simple!

Thanks .


>Hi Trad-Ex,
>
>Far be it from me to dictate how to develop your app.  But I tend to avoid
>reflection in Velocity for the following reasons:
>
>--> It's a complex syntax, easy to mess up, hard to read, hard to debug.
>
>--> There's a much simpler alternative (putting objects and methods directly
>in the context).
>
>--> This is actively dangerous for cases in which third parties submit
>templates as they have full acess to files and other resources on your
>machine
>
>Velocity works well as a markup language where text is directly inserted in
>a template via properties or method calls.  Such templates are easy to use
>and easy to maintain.  If you need a scripting or programming language there
>are much better alternatives.
>
>best,
>WILL
>
>On 4/20/06, trad-ex <trad-ex@inter7.jp> wrote:
>>
>> Hi Barbara,
>> Hi Will,
>>
>> Thanks a lot for your response.
>> As Will says, #set can make any class objects.
>> In fact, I often make instances of ArrayList, and use them.
>> But I think whether there are tools like org.apache.velocity.tools.
>> struts.MessageTool or not.
>>
>> I will follow Will's advice to implement methods like $util.
>> getPropertyResourceBundle( path ) in $util.
>>
>> BTW, why do you propse to limit to use reflection ?
>> It's a powerful way to provide such availability into velocity realm, I
>> guess. Would you mind asking you for reasons ?
>>
>> Best Regards,
>> trad-ex
>>
>>
>> >Are you sure?  I think #set can be used for any class.
>> >
>> >I've proposed to limit this to prohibit reflection by default (such as
>> what
>> >trad-ex is doing), but we haven't applied the patch yet.
>> >
>> >WILL
>> >
>> >On 4/20/06, Barbara Baughman <baughman@utdallas.edu> wrote:
>> >>
>> >> You cannot use the #set directive to designate just any kind of JAVA
>> >> object.  See the User Guide for allowable references.  I believe the
>> >> #set directive you have will automatically call the toString method of
>> >> the class in order to set the variable to a valid reference, but you
>> >> can check by printing the value of the set variable.
>> >>
>> >> Barbara Baughman
>> >> X2157
>> >>
>> >> On Thu, 20 Apr 2006, trad-ex wrote:
>> >>
>> >> > Hi All,
>> >> >
>> >> > I tried to load property resource bundle file, but failed to get an
>> >> > instance of FileInputStream.
>> >> > My code is below:
>> >> >
>> >> > #set( $fStreamClass = $util.class.forName("java.io.FileInputStream")
>> )
>> >> > #set( $iStreamClass = $util.class.forName("java.io.InputStream") )
>> >> > #set( $stringClass = $util.class.forName("java.lang.String") )
>> >> > #set( $bundleClass
>> >> >      = $util.class.forName("java.util.PropertyResourceBundle") )
>> >> > #set( $userNameFilePath = $util.getPortalFile($userNameFile) )
>> >> > #set( $resStream
>> >> >      = $fStreamClass.getConstructor( [$stringClass] )
>> >> >        .newInstance( ["$userNameFile"] ) )
>> >> > #set( $resBundle
>> >> >      = $bundleClass.getConstructor( [$iStreamClass] )
>> >> >      .newInstance( [$resStream] ) )
>> >> >
>> >> > $util object is provided by our application to inject functionality
>> into
>> >> > velocity context.
>> >> > I succeeded to get $fStreamClass & $iStreamClass & $bundleClass
>> >> > But I failed to get $resStream & $resBundle.
>> >> >
>> >> > My questions are:
>> >> > 1. Can I load the specific property file in Velocity context ?
>> >> > 2. What's wrong with my velocity script ?
>> >> >
>> >> > Best Regards, and thanks in advance.
>> >> > trad-ex
>> >> >
>> >> > ---------------------------------------------------------------------
>> >> > To unsubscribe, e-mail: velocity-user-unsubscribe@jakarta.apache.org
>> >> > For additional commands, e-mail:
>> velocity-user-help@jakarta.apache.org
>> >> >
>> >> >
>> >>
>> >> ---------------------------------------------------------------------
>> >> To unsubscribe, e-mail: velocity-user-unsubscribe@jakarta.apache.org
>> >> For additional commands, e-mail: velocity-user-help@jakarta.apache.org
>> >>
>> >>
>> >
>> >
>> >--
>> >Forio Business Simulations
>> >
>> >Will Glass-Husain
>> >wglass@forio.com
>> >www.forio.com
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: velocity-user-unsubscribe@jakarta.apache.org
>> For additional commands, e-mail: velocity-user-help@jakarta.apache.org
>>
>>
>
>
>--
>Forio Business Simulations
>
>Will Glass-Husain
>wglass@forio.com
>www.forio.com

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


Mime
View raw message