@Override public PropertyFilter findPropertyFilter(final Object filterId, final Object valueToFilter) { if (filterId instanceof String) { final String id = (String) filterId; // FilterId should represent a class only in case of root entity is marshalled. if (id.equals(root.getEntityClass().getName())) { stack.clear(); return stack.push(root); } while (!stack.isEmpty()) { final FilteringPropertyFilter peek = stack.peek(); final FilteringPropertyFilter subfilter = peek.findSubfilter(id); if (subfilter != null) { stack.push(subfilter); // Need special handling for maps here - map keys can be filtered as well so we just say that every key is // allowed. if (valueToFilter instanceof Map) { final Map<String, ?> map = (Map<String, ?>) valueToFilter; return new FilteringPropertyFilter(Map.class, map.keySet(), Collections.<String, FilteringPropertyFilter>emptyMap()); } return subfilter; } else { stack.pop(); } } } return SimpleBeanPropertyFilter.filterOutAllExcept(); } }
private ObjectMapper createMapper(JsonFactory mapping, ClassLoader classLoader) { ObjectMapper mapper = new ObjectMapper(mapping); mapper.addMixIn(MasterSlaveServersConfig.class, MasterSlaveServersConfigMixIn.class); mapper.addMixIn(SingleServerConfig.class, SingleSeverConfigMixIn.class); mapper.addMixIn(Config.class, ConfigMixIn.class); mapper.addMixIn(ReferenceCodecProvider.class, ClassMixIn.class); mapper.addMixIn(AddressResolverGroupFactory.class, ClassMixIn.class); mapper.addMixIn(Codec.class, ClassMixIn.class); mapper.addMixIn(RedissonNodeInitializer.class, ClassMixIn.class); mapper.addMixIn(LoadBalancer.class, ClassMixIn.class); FilterProvider filterProvider = new SimpleFilterProvider() .addFilter("classFilter", SimpleBeanPropertyFilter.filterOutAllExcept()); mapper.setFilterProvider(filterProvider); mapper.setSerializationInclusion(Include.NON_NULL); if (classLoader != null) { TypeFactory tf = TypeFactory.defaultInstance() .withClassLoader(classLoader); mapper.setTypeFactory(tf); } return mapper; }
private ObjectMapper createMapper(JsonFactory mapping, ClassLoader classLoader) { ObjectMapper mapper = new ObjectMapper(mapping); mapper.addMixIn(MasterSlaveServersConfig.class, MasterSlaveServersConfigMixIn.class); mapper.addMixIn(SingleServerConfig.class, SingleSeverConfigMixIn.class); mapper.addMixIn(Config.class, ConfigMixIn.class); mapper.addMixIn(ReferenceCodecProvider.class, ClassMixIn.class); mapper.addMixIn(AddressResolverGroupFactory.class, ClassMixIn.class); mapper.addMixIn(Codec.class, ClassMixIn.class); mapper.addMixIn(RedissonNodeInitializer.class, ClassMixIn.class); mapper.addMixIn(LoadBalancer.class, ClassMixIn.class); FilterProvider filterProvider = new SimpleFilterProvider() .addFilter("classFilter", SimpleBeanPropertyFilter.filterOutAllExcept()); mapper.setFilterProvider(filterProvider); mapper.setSerializationInclusion(Include.NON_NULL); if (classLoader != null) { TypeFactory tf = TypeFactory.defaultInstance() .withClassLoader(classLoader); mapper.setTypeFactory(tf); } return mapper; }
@Override public PropertyFilter findPropertyFilter(final Object filterId, final Object valueToFilter) { if (filterId instanceof String) { final String id = (String) filterId; // FilterId should represent a class only in case of root entity is marshalled. if (id.equals(root.getEntityClass().getName())) { stack.clear(); return stack.push(root); } while (!stack.isEmpty()) { final FilteringPropertyFilter peek = stack.peek(); final FilteringPropertyFilter subfilter = peek.findSubfilter(id); if (subfilter != null) { stack.push(subfilter); // Need special handling for maps here - map keys can be filtered as well so we just say that every key is // allowed. if (valueToFilter instanceof Map) { final Map<String, ?> map = (Map<String, ?>) valueToFilter; return new FilteringPropertyFilter(Map.class, map.keySet(), Collections.<String, FilteringPropertyFilter>emptyMap()); } return subfilter; } else { stack.pop(); } } } return SimpleBeanPropertyFilter.filterOutAllExcept(); } }
@ExceptionHandler(CerebroException.class) @ResponseStatus(value = HttpStatus.INTERNAL_SERVER_ERROR) public String getErrorCode(final CerebroException exception) throws IOException { LOGGER.error("Service error", exception); ObjectMapper objectMapper = new ObjectMapper(); FilterProvider filterProvider = new SimpleFilterProvider().addFilter("responseFilter", SimpleBeanPropertyFilter.filterOutAllExcept("errorCode", "errorMessage")); objectMapper.setFilterProvider(filterProvider); return objectMapper.writeValueAsString(exception); } }
private ObjectWriter getObjectWriter(ObjectMapper mapper, String[] fieldsToReturn) { if (fieldsToReturn.length != 0) { mapper.addMixInAnnotations( Object.class, PropertyFilterMixIn.class); HashSet<String> givenFields = new HashSet<String>(); givenFields.add("schemas"); for (String field : fieldsToReturn) { givenFields.add(field); } String[] finalFieldsToReturn = givenFields.toArray(new String[givenFields.size()]); FilterProvider filters = new SimpleFilterProvider() .addFilter("filter properties by name", SimpleBeanPropertyFilter.filterOutAllExcept( finalFieldsToReturn)); return mapper.writer(filters); } return mapper.writer(); } }
public synchronized <T> String serializeOnlyFilter(Object src, Class<T>[] filterClasses, Boolean refresh, String... filterAttr) throws Exception { PropertyFilter pf = null; if (filterAttr != null && filterAttr.length > 0 && ! "".equals(filterAttr[0]) ) { pf = SimpleBeanPropertyFilter.filterOutAllExcept(filterAttr); getLogger().debug("setting filteroutAllexcept filter for size of filterAttr: " + filterAttr.length); } else { getLogger().warn("no filter attributes set!"); pf = SimpleBeanPropertyFilter.filterOutAllExcept("dummy"); } if (filterClasses == null) throw new Exception("You have to provide some class to apply the filtering!"); return filter(src, filterClasses, null, pf, refresh); }
@Override public PropertyFilter findPropertyFilter(final Object filterId, final Object valueToFilter) { if (filterId instanceof String) { final String id = (String) filterId; // FilterId should represent a class only in case of root entity is marshalled. if (id.equals(root.getEntityClass().getName())) { stack.clear(); return stack.push(root); } while (!stack.isEmpty()) { final FilteringPropertyFilter peek = stack.peek(); final FilteringPropertyFilter subfilter = peek.findSubfilter(id); if (subfilter != null) { stack.push(subfilter); // Need special handling for maps here - map keys can be filtered as well so we just say that every key is // allowed. if (valueToFilter instanceof Map) { final Map<String, ?> map = (Map<String, ?>) valueToFilter; return new FilteringPropertyFilter(Map.class, map.keySet(), Collections.<String, FilteringPropertyFilter>emptyMap()); } return subfilter; } else { stack.pop(); } } } return SimpleBeanPropertyFilter.filterOutAllExcept(); } }
@Override public PropertyFilter findPropertyFilter(final Object filterId, final Object valueToFilter) { if (filterId instanceof String) { final String id = (String) filterId; // FilterId should represent a class only in case of root entity is marshalled. if (id.equals(root.getEntityClass().getName())) { stack.clear(); return stack.push(root); } while (!stack.isEmpty()) { final FilteringPropertyFilter peek = stack.peek(); final FilteringPropertyFilter subfilter = peek.findSubfilter(id); if (subfilter != null) { stack.push(subfilter); // Need special handling for maps here - map keys can be filtered as well so we just say that every key is // allowed. if (valueToFilter instanceof Map) { final Map<String, ?> map = (Map<String, ?>) valueToFilter; return new FilteringPropertyFilter(Map.class, map.keySet(), Collections.<String, FilteringPropertyFilter>emptyMap()); } return subfilter; } else { stack.pop(); } } } return SimpleBeanPropertyFilter.filterOutAllExcept(); } }
return SimpleBeanPropertyFilter.filterOutAllExcept();
/** * Configure the ObjectMapper to filter out all fields on the events except those that are * actually needed for the analytics reporting */ private void initMapper() { final BeanPropertyFilter filterOutAllExcept = SimpleBeanPropertyFilter.filterOutAllExcept("fname", "executionTimeNano"); this.mapper.addMixInAnnotations( PortalEvent.class, PortletRenderExecutionEventFilterMixIn.class); final SimpleFilterProvider filterProvider = new SimpleFilterProvider(); filterProvider.addFilter( PortletRenderExecutionEventFilterMixIn.FILTER_NAME, filterOutAllExcept); this.portletEventWriter = this.mapper.writer(filterProvider); }
@GetMapping("/filtering-list") public MappingJacksonValue retrieveListOfSomeBeans() { List<SomeBean> list = Arrays.asList(new SomeBean("value1", "value2", "value3"), new SomeBean("value12", "value22", "value32")); SimpleBeanPropertyFilter filter = SimpleBeanPropertyFilter.filterOutAllExcept("field2", "field3"); FilterProvider filters = new SimpleFilterProvider().addFilter("SomeBeanFilter", filter); MappingJacksonValue mapping = new MappingJacksonValue(list); mapping.setFilters(filters); return mapping; }
@GetMapping("/filtering-list") public MappingJacksonValue retrieveListOfSomeBeans() { List<SomeBean> list = Arrays.asList(new SomeBean("value1", "value2", "value3"), new SomeBean("value12", "value22", "value32")); SimpleBeanPropertyFilter filter = SimpleBeanPropertyFilter.filterOutAllExcept("field2", "field3"); FilterProvider filters = new SimpleFilterProvider().addFilter("SomeBeanFilter", filter); MappingJacksonValue mapping = new MappingJacksonValue(list); mapping.setFilters(filters); return mapping; }
log.debug("filtered output ({})", fields); filterProvider = new SimpleFilterProvider() .addFilter(EC2Instance.INSTANCE_FILTER, SimpleBeanPropertyFilter.filterOutAllExcept(fields)); } else { log.debug("unfiltered output");
@GetMapping("/filtering") public MappingJacksonValue retrieveSomeBean() { SomeBean someBean = new SomeBean("value1", "value2", "value3"); SimpleBeanPropertyFilter filter = SimpleBeanPropertyFilter.filterOutAllExcept("field1", "field2"); FilterProvider filters = new SimpleFilterProvider().addFilter("SomeBeanFilter", filter); MappingJacksonValue mapping = new MappingJacksonValue(someBean); mapping.setFilters(filters); return mapping; }
/** * Create a new JsonManager * @param theClass The class to create a json manager for (yes, also in the diamonds). */ public JsonManager (Class<T> theClass) { this.theClass = theClass; this.mapper = new ObjectMapper(); mapper.addMixInAnnotations(Rectangle2D.class, Rectangle2DMixIn.class); mapper.registerModule(new GeoJsonModule()); SimpleModule deser = new SimpleModule(); deser.addDeserializer(LocalDate.class, new JacksonSerializers.LocalDateStringDeserializer()); deser.addSerializer(LocalDate.class, new JacksonSerializers.LocalDateStringSerializer()); deser.addDeserializer(Rectangle2D.class, new Rectangle2DDeserializer()); mapper.registerModule(deser); mapper.getSerializerProvider().setNullKeySerializer(new JacksonSerializers.MyDtoNullKeySerializer()); filters = new SimpleFilterProvider(); filters.addFilter("bbox", SimpleBeanPropertyFilter.filterOutAllExcept("west", "east", "south", "north")); this.writer = mapper.writer(filters); }
@GetMapping("/filtering") public MappingJacksonValue retrieveSomeBean() { SomeBean someBean = new SomeBean("value1", "value2", "value3"); SimpleBeanPropertyFilter filter = SimpleBeanPropertyFilter.filterOutAllExcept("field1", "field2"); FilterProvider filters = new SimpleFilterProvider().addFilter("SomeBeanFilter", filter); MappingJacksonValue mapping = new MappingJacksonValue(someBean); mapping.setFilters(filters); return mapping; }
@RequestMapping(value = "/{isbn}", params = "fields") public MappingJacksonValue findByIsbnFiltered(@RequestParam String fields, @PathVariable final String isbn) { final Book book = Checks.checkEntityExists(repo.findByIsbn(isbn), "No book found for isbn = " + isbn); final NewBookResource bookResource = new NewBookResource(book); bookResource.add(linkTo(methodOn(CartController.class).addNewBookToCart(bookResource)).withRel("add-to-cart")); final FilterProvider filterProvider = new SimpleFilterProvider().addFilter("bookFilter", SimpleBeanPropertyFilter.filterOutAllExcept(fields)); final MappingJacksonValue wrapper = new MappingJacksonValue(bookResource); wrapper.setFilters(filterProvider); return wrapper; }
private ObjectMapper createMapper(JsonFactory mapping, ClassLoader classLoader) { ObjectMapper mapper = new ObjectMapper(mapping); mapper.addMixIn(MasterSlaveServersConfig.class, MasterSlaveServersConfigMixIn.class); mapper.addMixIn(SingleServerConfig.class, SingleSeverConfigMixIn.class); mapper.addMixIn(Config.class, ConfigMixIn.class); mapper.addMixIn(ReferenceCodecProvider.class, ClassMixIn.class); mapper.addMixIn(AddressResolverGroupFactory.class, ClassMixIn.class); mapper.addMixIn(Codec.class, ClassMixIn.class); mapper.addMixIn(RedissonNodeInitializer.class, ClassMixIn.class); mapper.addMixIn(LoadBalancer.class, ClassMixIn.class); FilterProvider filterProvider = new SimpleFilterProvider() .addFilter("classFilter", SimpleBeanPropertyFilter.filterOutAllExcept()); mapper.setFilterProvider(filterProvider); mapper.setSerializationInclusion(Include.NON_NULL); if (classLoader != null) { TypeFactory tf = TypeFactory.defaultInstance() .withClassLoader(classLoader); mapper.setTypeFactory(tf); } return mapper; }
protected ObjectWriter configureObjectMapper(final ObjectMapper jsonObjectMapper) { jsonObjectMapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false); jsonObjectMapper.setDateFormat(new StdDateFormat()); SimpleFilterProvider filters = new SimpleFilterProvider(); // haven't found out, how to stack filters. Copying the validation one for now. filters.addFilter("validateFilter", SimpleBeanPropertyFilter.serializeAllExcept("valid", "validationErrors")); filters.addFilter("pkPassFilter", SimpleBeanPropertyFilter.serializeAllExcept("valid", "validationErrors", "foregroundColorAsObject", "backgroundColorAsObject", "labelColorAsObject", "passThatWasSet")); filters.addFilter("barcodeFilter", SimpleBeanPropertyFilter.serializeAllExcept("valid", "validationErrors", "messageEncodingAsString", "validInIosVersionsBefore9")); filters.addFilter("charsetFilter", SimpleBeanPropertyFilter.filterOutAllExcept("name")); jsonObjectMapper.setSerializationInclusion(Include.NON_NULL); jsonObjectMapper.addMixIn(Object.class, ValidateFilterMixIn.class); jsonObjectMapper.addMixIn(PKPass.class, PkPassFilterMixIn.class); jsonObjectMapper.addMixIn(PKBarcode.class, BarcodeFilterMixIn.class); jsonObjectMapper.addMixIn(Charset.class, CharsetFilterMixIn.class); return jsonObjectMapper.writer(filters); }