Hashes (in general)

Brian Pontarelli <[email protected]>
Newsgroups gmane.comp.web.freemarker.user
Message-ID <[email protected]>
I've been using FM for a while now and I just ran into a interesting  
snag. I knew that Hashes define in the FTL files had to have a String  
for the key. This seems like it is to support the 'foo.bar' syntax  
(which I'm a huge advocate against). However, I'm using JCatapult,  
which takes properties and fields of an action class and puts them  
into the root FM context. I have this:

public class Foo {
   public Map<Integer, String> guests;
   public Map<Integer, String> miles;

   public void setupForm() {
     guests.put(1, "1");
     ...
   }
}

This Map is then being passed to a custom Directive as an attribute  
like this:

[@jc.select items=guests name="q.guests"/]

There are a few issues I'm running into.

1. FM seems to wrap this Map and rather than converting the keys to  
Strings during wrapping, it keeps the original map around and seems to  
incorrectly duplicate the keys with String versions whose values are  
all null.

2. I get random ConcurrentModificationExceptions out of FM if I use an  
iterator like this:

    for (Map.Entry e : map) {
      ...
    }

So, my questions are:

- Will 2.4 or some other version will support Maps with any type of  
key so that frameworks can use Object comparisons (via the equals  
method)?

- Is there a way currently to get FM to stop wrapping the Map with an  
incorrect version that has String keys and null values?

Thanks,
-bp

------------------------------------------------------------------------------
Crystal Reports - New Free Runtime and 30 Day Trial
Check out the new simplified licensing option that enables unlimited
royalty-free distribution of the report engine for externally facing 
server and web deployment.
http://p.sf.net/sfu/businessobjects
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.