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 <[EMAIL PROTECTED]> 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 <[EMAIL PROTECTED]> 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: [EMAIL PROTECTED] > >> > For additional commands, e-mail: > [EMAIL PROTECTED] > >> > > >> > > >> > >> --------------------------------------------------------------------- > >> To unsubscribe, e-mail: [EMAIL PROTECTED] > >> For additional commands, e-mail: [EMAIL PROTECTED] > >> > >> > > > > > >-- > >Forio Business Simulations > > > >Will Glass-Husain > >[EMAIL PROTECTED] > >www.forio.com > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > > -- Forio Business Simulations Will Glass-Husain [EMAIL PROTECTED] www.forio.com