@SuppressWarnings("unchecked") private Object createFilteredBean(Object data, Set<String> fields, String fieldName) { // For null, atomic object or for all fields just return original. if (data == null || fields == null || BeanDelegator.PRIMITIVE_TYPE_CLASSES.contains(data.getClass()) || fields.contains(ALL_FIELDS)) { return data; } // For map, generate a new map with filtered objects if (data instanceof Map<? ,?>) { Map<Object, Object> oldMap = (Map<Object, Object>) data; Map<Object, Object> newMap = Maps.newHashMapWithExpectedSize(oldMap.size()); for (Map.Entry<Object, Object> entry : oldMap.entrySet()) { newMap.put(entry.getKey(), createFilteredBean(entry.getValue(), fields, fieldName)); } return newMap; } // For list, generate a new list of filtered objects if (data instanceof List<?>) { List<Object> oldList = (List<Object>) data; List<Object> newList = Lists.newArrayListWithCapacity(oldList.size()); for (Object entry : oldList) { newList.add(createFilteredBean(entry, fields, fieldName)); } return newList; } // Create a new intercepted object: return Proxy.newProxyInstance( data.getClass().getClassLoader(), data.getClass().getInterfaces(), new FilterInvocationHandler(data, fields, fieldName)); }
@SuppressWarnings("unchecked") private Object createFilteredBean(Object data, Set<String> fields, String fieldName) { // For null, atomic object or for all fields just return original. if (data == null || fields == null || BeanDelegator.PRIMITIVE_TYPE_CLASSES.contains(data.getClass()) || fields.contains(ALL_FIELDS)) { return data; } // For map, generate a new map with filtered objects if (data instanceof Map<? ,?>) { Map<Object, Object> oldMap = (Map<Object, Object>) data; Map<Object, Object> newMap = Maps.newHashMapWithExpectedSize(oldMap.size()); for (Map.Entry<Object, Object> entry : oldMap.entrySet()) { newMap.put(entry.getKey(), createFilteredBean(entry.getValue(), fields, fieldName)); } return newMap; } // For list, generate a new list of filtered objects if (data instanceof List<?>) { List<Object> oldList = (List<Object>) data; List<Object> newList = Lists.newArrayListWithCapacity(oldList.size()); for (Object entry : oldList) { newList.add(createFilteredBean(entry, fields, fieldName)); } return newList; } // Create a new intercepted object: return Proxy.newProxyInstance( data.getClass().getClassLoader(), data.getClass().getInterfaces(), new FilterInvocationHandler(data, fields, fieldName)); }
@SuppressWarnings("unchecked") private Object createFilteredBean(Object data, Set<String> fields, String fieldName) { // For null, atomic object or for all fields just return original. if (data == null || fields == null || BeanDelegator.PRIMITIVE_TYPE_CLASSES.contains(data.getClass()) || fields.contains(ALL_FIELDS)) { return data; } // For map, generate a new map with filtered objects if (data instanceof Map<? ,?>) { Map<Object, Object> oldMap = (Map<Object, Object>) data; Map<Object, Object> newMap = Maps.newHashMapWithExpectedSize(oldMap.size()); for (Map.Entry<Object, Object> entry : oldMap.entrySet()) { newMap.put(entry.getKey(), createFilteredBean(entry.getValue(), fields, fieldName)); } return newMap; } // For list, generate a new list of filtered objects if (data instanceof List<?>) { List<Object> oldList = (List<Object>) data; List<Object> newList = Lists.newArrayListWithCapacity(oldList.size()); for (Object entry : oldList) { newList.add(createFilteredBean(entry, fields, fieldName)); } return newList; } // Create a new intercepted object: return Proxy.newProxyInstance( data.getClass().getClassLoader(), data.getClass().getInterfaces(), new FilterInvocationHandler(data, fields, fieldName)); }
@SuppressWarnings("unchecked") private Object createFilteredBean(Object data, Set<String> fields, String fieldName) { // For null, atomic object or for all fields just return original. if (data == null || fields == null || BeanDelegator.PRIMITIVE_TYPE_CLASSES.contains(data.getClass()) || fields.contains(ALL_FIELDS)) { return data; } // For map, generate a new map with filtered objects if (data instanceof Map<? ,?>) { Map<Object, Object> oldMap = (Map<Object, Object>) data; Map<Object, Object> newMap = Maps.newHashMapWithExpectedSize(oldMap.size()); for (Map.Entry<Object, Object> entry : oldMap.entrySet()) { newMap.put(entry.getKey(), createFilteredBean(entry.getValue(), fields, fieldName)); } return newMap; } // For list, generate a new list of filtered objects if (data instanceof List<?>) { List<Object> oldList = (List<Object>) data; List<Object> newList = Lists.newArrayListWithCapacity(oldList.size()); for (Object entry : oldList) { newList.add(createFilteredBean(entry, fields, fieldName)); } return newList; } // Create a new intercepted object: return Proxy.newProxyInstance( data.getClass().getClassLoader(), data.getClass().getInterfaces(), new FilterInvocationHandler(data, fields, fieldName)); }
@SuppressWarnings("unchecked") private Object createFilteredBean(Object data, Set<String> fields, String fieldName) { // For null, atomic object or for all fields just return original. if (data == null || fields == null || BeanDelegator.PRIMITIVE_TYPE_CLASSES.contains(data.getClass()) || fields.contains(ALL_FIELDS)) { return data; } // For map, generate a new map with filtered objects if (data instanceof Map<? ,?>) { Map<Object, Object> oldMap = (Map<Object, Object>) data; Map<Object, Object> newMap = Maps.newHashMapWithExpectedSize(oldMap.size()); for (Map.Entry<Object, Object> entry : oldMap.entrySet()) { newMap.put(entry.getKey(), createFilteredBean(entry.getValue(), fields, fieldName)); } return newMap; } // For list, generate a new list of filtered objects if (data instanceof List<?>) { List<Object> oldList = (List<Object>) data; List<Object> newList = Lists.newArrayListWithCapacity(oldList.size()); for (Object entry : oldList) { newList.add(createFilteredBean(entry, fields, fieldName)); } return newList; } // Create a new intercepted object: return Proxy.newProxyInstance( data.getClass().getClassLoader(), data.getClass().getInterfaces(), new FilterInvocationHandler(data, fields, fieldName)); }