diff --git a/src/main/java/com/samskivert/gwt/com/samskivert/mustache/DefaultCollector.java b/src/main/java/com/samskivert/gwt/com/samskivert/mustache/DefaultCollector.java index c7011a8..2686c1e 100644 --- a/src/main/java/com/samskivert/gwt/com/samskivert/mustache/DefaultCollector.java +++ b/src/main/java/com/samskivert/gwt/com/samskivert/mustache/DefaultCollector.java @@ -4,7 +4,9 @@ package com.samskivert.mustache; import java.util.Arrays; +import java.util.HashMap; import java.util.Iterator; +import java.util.Map; /** * A collector used when running in GWT. @@ -22,5 +24,10 @@ public class DefaultCollector extends BasicCollector return null; } + @Override + public Map createFetcherCache () { + return new HashMap(); + } + // TODO: override createFetcher and do some magic for JavaScript/JSON objects } diff --git a/src/main/java/com/samskivert/mustache/BasicCollector.java b/src/main/java/com/samskivert/mustache/BasicCollector.java index 9b1cc5d..03c2ffd 100644 --- a/src/main/java/com/samskivert/mustache/BasicCollector.java +++ b/src/main/java/com/samskivert/mustache/BasicCollector.java @@ -4,14 +4,13 @@ package com.samskivert.mustache; import java.util.Collections; -import java.util.HashMap; import java.util.Iterator; import java.util.Map; /** * A collector that does not use reflection and can be used in GWT. */ -public class BasicCollector implements Mustache.Collector +public abstract class BasicCollector implements Mustache.Collector { public Iterator toIterator (final Object value) { if (value instanceof Iterable) { @@ -36,9 +35,9 @@ public class BasicCollector implements Mustache.Collector return null; } - public Map createFetcherCache () { - return Collections.synchronizedMap(new HashMap()); - } + /** This should return a thread-safe map, either {@link Collections#synchronizedMap} called on + * a standard {@link Map} implementation or something like {@code ConcurrentHashMap}. */ + public abstract Map createFetcherCache (); protected static final Mustache.VariableFetcher MAP_FETCHER = new Mustache.VariableFetcher() { public Object get (Object ctx, String name) throws Exception {