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 |
Wrapper around JSONObject that uses a filter |
4404 |
17 Mar 17 |
nicklas |
implementation before accepting values. For |
4404 |
17 Mar 17 |
nicklas |
example, use the {@link NotNullFilter} implementation |
4404 |
17 Mar 17 |
nicklas |
to ignore null values. |
4404 |
17 Mar 17 |
nicklas |
@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 |
} |