package org.joget.plugin.base; import freemarker.template.ObjectWrapper; import freemarker.template.SimpleHash; import java.util.Map; import org.apache.commons.collections.SequencedHashMap; import org.apache.commons.collections.map.ListOrderedMap; /** * Modified FreeMarker SimpleHash that supports ordering using ListOrderedMaps. */ public class ListOrderedHash extends SimpleHash { public ListOrderedHash() { super(); } public ListOrderedHash(Map map) { super(map); } public ListOrderedHash(ObjectWrapper wrapper) { super(wrapper); } public ListOrderedHash(Map map, ObjectWrapper wrapper) { super(map, wrapper); } @Override protected Map copyMap(Map map) { if (map instanceof ListOrderedMap || map.getClass().getName().equals(ListOrderedMap.class.getName())) { Map newMap = new ListOrderedMap(); newMap.putAll(map); return newMap; } else if (map instanceof SequencedHashMap || map.getClass().getName().equals(SequencedHashMap.class.getName())) { Map newMap = new SequencedHashMap(); newMap.putAll(map); return newMap; } else { return super.copyMap(map); } } }