Re: In VTL, simply reverse a list with java.util.Collection static method

2013-05-06 Thread Nathan Bubna
Now that is a good question.  Have you tried:

 ??

I kind of doubt that's instantiable, but it might be worth a try.  If
it's not, you might do a hack kind of like:



public class CollectionsTool {

  public void setVelocityContext(Context context) {
 context.put("Collections", java.util.Collections.class);
  }
}

I've never written a self-replacing tool like this, but if you
configure the VelocityViewServlet to let the "user" overwrite tools,
by giving
org.apache.velocity.tools.userCanOverwriteTools a value of true in
your init-params, it should work.

Or a similar tool that just has a:

public List reverse(List list) {
  java.util.Collections.reverse(list);
  return list;
}

method.

I wish i had a better answer.  It would be cool to patch VelocityTools
to support:



But i haven't the time to do it.  Perhaps you could open a feature
request in our JIRA instance.





On Mon, May 6, 2013 at 12:57 PM, Travis P  wrote:
> On Mon, May 6, 2013 at 2:42 PM, Nathan Bubna  wrote:
>
>>
>> http://velocity.apache.org/engine/devel/developer-guide.html#supportforstaticclasses
>
>
> Yes, I'd found that.  I guess how to use that for adding a way to access
>java.util.Collection as $Collection
> within a VTL when using the VelocityViewServlet which supplies me a context
> makes it not obvious how to take that short documentation and translate it
> into my goal.

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



Re: In VTL, simply reverse a list with java.util.Collection static method

2013-05-06 Thread Travis P
On Mon, May 6, 2013 at 2:42 PM, Nathan Bubna  wrote:

>
> http://velocity.apache.org/engine/devel/developer-guide.html#supportforstaticclasses


Yes, I'd found that.  I guess how to use that for adding a way to access
   java.util.Collection as $Collection
within a VTL when using the VelocityViewServlet which supplies me a context
makes it not obvious how to take that short documentation and translate it
into my goal.


Re: In VTL, simply reverse a list with java.util.Collection static method

2013-05-06 Thread Travis P
On Mon, May 6, 2013 at 2:30 PM, Sergiu Dumitriu wrote:

> On 05/06/2013 03:15 PM, Travis P wrote (with minor fix):
> > Via web searching, I've found quite a few people reversing lists by
> writing
> > out loops.
> >
> > Seems to me, we should be able to something like:
> >
> > #set ($lst = ["a","b","c"])
> > #set ($revlst = $lst.clone() )
> > $Collection.reverse($revlst)
> > ...  ...
>
> You should use the existing SortTool tool.
>
>
> http://velocity.apache.org/tools/devel/javadoc/org/apache/velocity/tools/generic/SortTool.html
>
> For security reasons, Velocity doesn't allow accessing raw classes or
> instantiating new objects. You must always start from a valid variable
> placed in the context.
>
> See http://velocity.apache.org/tools/releases/2.0/ for more details
> about tools and how to configure them.
>

Thanks Sergiu.

I have written my own Tools.  I was just wondering if I could use the VTL
for more rather than diving down into my own tools for such basic stuff
(and given that I found several other folks also asking this question, I'm
not alone in that desire).

I don't think the sort tool can be used for this, unless the list elements
have a property which is the their own index (and I don't see that).  I
don't want to sort based on object values.  I want to reverse the order of
a list, independent of what any values may be.

-Travis


Re: In VTL, simply reverse a list with java.util.Collection static method

2013-05-06 Thread Nathan Bubna
http://velocity.apache.org/engine/devel/developer-guide.html#supportforstaticclasses

On Mon, May 6, 2013 at 12:15 PM, Travis P  wrote:
> Via web searching, I've found quite a few people reversing lists by writing
> out loops.
>
> Seems to me, we should be able to something like:
>
> #set ($lst = ["a","b","c"])
> #set ($revlst = $lst)
> $Collection.reverse($revlst)
>
> where $Collection.reverse refers to the java.util.Collections static method
> static 
> void*reverse
> *(List 
>  list)
>   Reverses the order of the elements in the specified list.
>
> but I don't see any way to do that without writing a custom tool.  Which
> seems heavy-handed for such a basic thing.  Am I missing something?
>
> (I'm using velocity-1.7, velocity-tools-view-2.0, running on tomcat-7.0.39)
>
> -Travis

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



Re: In VTL, simply reverse a list with java.util.Collection static method

2013-05-06 Thread Sergiu Dumitriu
On 05/06/2013 03:15 PM, Travis P wrote:
> Via web searching, I've found quite a few people reversing lists by writing
> out loops.
> 
> Seems to me, we should be able to something like:
> 
> #set ($lst = ["a","b","c"])
> #set ($revlst = $lst)
> $Collection.reverse($revlst)
> 
> where $Collection.reverse refers to the java.util.Collections static method
> static 
> void*reverse
> *(List 
>  list)
>   Reverses the order of the elements in the specified list.
> 
> but I don't see any way to do that without writing a custom tool.  Which
> seems heavy-handed for such a basic thing.  Am I missing something?
> 
> (I'm using velocity-1.7, velocity-tools-view-2.0, running on tomcat-7.0.39)
> 
> -Travis
> 

You should use the existing SortTool tool.

http://velocity.apache.org/tools/devel/javadoc/org/apache/velocity/tools/generic/SortTool.html

For security reasons, Velocity doesn't allow accessing raw classes or
instantiating new objects. You must always start from a valid variable
placed in the context.

See http://velocity.apache.org/tools/releases/2.0/ for more details
about tools and how to configure them.

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



In VTL, simply reverse a list with java.util.Collection static method

2013-05-06 Thread Travis P
Via web searching, I've found quite a few people reversing lists by writing
out loops.

Seems to me, we should be able to something like:

#set ($lst = ["a","b","c"])
#set ($revlst = $lst)
$Collection.reverse($revlst)

where $Collection.reverse refers to the java.util.Collections static method
static 
void*reverse
*(List 
 list)
  Reverses the order of the elements in the specified list.

but I don't see any way to do that without writing a custom tool.  Which
seems heavy-handed for such a basic thing.  Am I missing something?

(I'm using velocity-1.7, velocity-tools-view-2.0, running on tomcat-7.0.39)

-Travis