extensions/net.sf.basedb.reggie/trunk/src/net/sf/basedb/reggie/json/FilteredJSONObject.java

Code
Comments
Other
Rev Date Author Line
4404 17 Mar 17 nicklas 1 package net.sf.basedb.reggie.json;
4404 17 Mar 17 nicklas 2
4404 17 Mar 17 nicklas 3 import java.util.Map;
4404 17 Mar 17 nicklas 4
4404 17 Mar 17 nicklas 5 import org.json.simple.JSONObject;
4404 17 Mar 17 nicklas 6
4404 17 Mar 17 nicklas 7 import net.sf.basedb.util.filter.Filter;
4404 17 Mar 17 nicklas 8 import net.sf.basedb.util.filter.NotNullFilter;
4404 17 Mar 17 nicklas 9
4404 17 Mar 17 nicklas 10 /**
4404 17 Mar 17 nicklas 11   Wrapper around JSONObject that uses a filter
4404 17 Mar 17 nicklas 12   implementation before accepting values. For
4404 17 Mar 17 nicklas 13   example, use the {@link NotNullFilter} implementation
4404 17 Mar 17 nicklas 14   to ignore null values.
4404 17 Mar 17 nicklas 15   @since 4.10
4404 17 Mar 17 nicklas 16 */
4404 17 Mar 17 nicklas 17 public class FilteredJSONObject 
4404 17 Mar 17 nicklas 18   extends JSONObject 
4404 17 Mar 17 nicklas 19 {
4404 17 Mar 17 nicklas 20
4404 17 Mar 17 nicklas 21   private static final long serialVersionUID = -5032543945179269026L;
5319 28 Feb 19 nicklas 22   private final Filter<Object> filter;
4404 17 Mar 17 nicklas 23   
5319 28 Feb 19 nicklas 24   public FilteredJSONObject(Filter<Object> filter)
4404 17 Mar 17 nicklas 25   {
4404 17 Mar 17 nicklas 26     this.filter = filter;
4404 17 Mar 17 nicklas 27   }
4404 17 Mar 17 nicklas 28
4404 17 Mar 17 nicklas 29   @Override
5319 28 Feb 19 nicklas 30   public Object put(String key, Object value) 
4404 17 Mar 17 nicklas 31   {
4404 17 Mar 17 nicklas 32     return filter.evaluate(value) ? super.put(key, value) : null;
4404 17 Mar 17 nicklas 33   }
4404 17 Mar 17 nicklas 34
4404 17 Mar 17 nicklas 35   @Override
5319 28 Feb 19 nicklas 36   public void putAll(Map<? extends String, ? extends Object> m) 
4404 17 Mar 17 nicklas 37   {
5319 28 Feb 19 nicklas 38     for (Map.Entry<? extends String, ? extends Object> entry : m.entrySet())
4404 17 Mar 17 nicklas 39     {
5319 28 Feb 19 nicklas 40       if (filter.evaluate(entry.getValue())) super.put(entry.getKey(),  entry.getValue());
4404 17 Mar 17 nicklas 41     }
4404 17 Mar 17 nicklas 42     super.putAll(m);
4404 17 Mar 17 nicklas 43   }
4404 17 Mar 17 nicklas 44   
4404 17 Mar 17 nicklas 45   
4404 17 Mar 17 nicklas 46 }