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

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