private Object applyChildPropertiesFilter(BeanSession session, ClassMeta cm, Object o) { if (o == null) return null; if (cm.isBean()) return new BeanMap(session, o, new BeanMetaFiltered(cm.getBeanMeta(), properties)); if (cm.isMap()) return new FilteredMap(cm, (Map)o, properties); if (cm.isObject()) { if (o instanceof Map) return new FilteredMap(cm, (Map)o, properties); BeanMeta bm = beanContext.getBeanMeta(o.getClass()); if (bm != null) return new BeanMap(session, o, new BeanMetaFiltered(cm.getBeanMeta(), properties)); } return o; }
private Object applyChildPropertiesFilter(BeanSession session, ClassMeta cm, Object o) { if (o == null) return null; if (cm.isBean()) return new BeanMap(session, o, new BeanMetaFiltered(cm.getBeanMeta(), properties)); if (cm.isMap()) return new FilteredMap(cm, (Map)o, properties); if (cm.isObject()) { if (o instanceof Map) return new FilteredMap(cm, (Map)o, properties); BeanMeta bm = beanContext.getBeanMeta(o.getClass()); if (bm != null) return new BeanMap(session, o, new BeanMetaFiltered(cm.getBeanMeta(), properties)); } return o; }
private Object applyChildPropertiesFilter(BeanSession session, ClassMeta cm, Object o) { if (o == null) return null; if (cm.isBean()) return new BeanMap(session, o, new BeanMetaFiltered(cm.getBeanMeta(), properties)); if (cm.isMap()) return new FilteredMap(cm, (Map)o, properties); if (cm.isObject()) { if (o instanceof Map) return new FilteredMap(cm, (Map)o, properties); BeanMeta bm = beanContext.getBeanMeta(o.getClass()); if (bm != null) return new BeanMap(session, o, new BeanMetaFiltered(cm.getBeanMeta(), properties)); } return o; }
@Test public void testBasic() throws Exception { ObjectMap m = new ObjectMap("{a:'1',b:'2'}"); ClassMeta<Map<String,Object>> cm = BeanContext.DEFAULT.getClassMeta(Map.class, String.class, Object.class); ClassMeta<Map<String,String>> cm2 = BeanContext.DEFAULT.getClassMeta(Map.class, String.class, String.class); FilteredMap<String,Object> m2 = new FilteredMap<>(cm, m, new String[]{"a"}); assertObjectEquals("{a:'1'}", m2); m2.entrySet().iterator().next().setValue("3"); assertObjectEquals("{a:'3'}", m2); try { m3 = new FilteredMap<>(cm2, null, new String[0]); fail(); } catch (IllegalArgumentException e) {} try { m3 = new FilteredMap<>(cm, m, null); fail(); } catch (IllegalArgumentException e) {} } }