@Override public BeanDeserializerBuilder updateBuilder(DeserializationConfig config, BeanDescription beanDesc, BeanDeserializerBuilder builder) { for (BeanPropertyDefinition propDef : beanDesc.findProperties()) { if (!propDef.hasGetter() || propDef.hasSetter()) { continue; } AnnotatedMember getter = propDef.getAccessor(); if (!Keeper.class.equals(getter.getRawType())) { continue; } builder.addOrReplaceProperty(new CustomGetterBeanProperty(propDef, getter), true); } return builder; }
/** * Creates a BeanDeserializerModifier that replaces the * SettableBeanProperties in the BeanDeserializerBuilder with * ErrorReportingSettableBeanProperty instances that forward * information about errors when setting bean properties to the * given consumer. (Don't ask ... ) * * @param jsonErrorConsumer The consumer for {@link JsonError}s. * If this is <code>null</code>, then no errors will be reported. * @return The modifier */ private static BeanDeserializerModifier createErrorHandlingBeanDeserializerModifier( Consumer<? super JsonError> jsonErrorConsumer) { return new BeanDeserializerModifier() { @Override public BeanDeserializerBuilder updateBuilder( DeserializationConfig config, BeanDescription beanDesc, BeanDeserializerBuilder builder) { Iterator<SettableBeanProperty> propertiesIterator = builder.getProperties(); while (propertiesIterator.hasNext()) { SettableBeanProperty property = propertiesIterator.next(); SettableBeanProperty wrappedProperty = new ErrorReportingSettableBeanProperty( property, jsonErrorConsumer); builder.addOrReplaceProperty(wrappedProperty, true); } return builder; } }; }
@Override public BeanDeserializerBuilder updateBuilder(DeserializationConfig config, BeanDescription beanDesc, BeanDeserializerBuilder builder) { if (!thinnables.contains(beanDesc.getBeanClass())) { return builder; } for (String ignore : ignorables) { builder.addIgnorable(ignore); } return builder; }
@Override public void setupModule(SetupContext context) { context.addBeanDeserializerModifier(new BeanDeserializerModifier(){ @Override public BeanDeserializerBuilder updateBuilder(DeserializationConfig config, BeanDescription beanDesc, BeanDeserializerBuilder builder) { //TODO: use clotho Value Instantiator (gets objects from pre-processing) builder.setValueInstantiator(null); return builder; } }); }
@Override public BeanDeserializerBuilder updateBuilder(DeserializationConfig config, BeanDescription beanDesc, BeanDeserializerBuilder builder) { Iterator<SettableBeanProperty> it = builder.getProperties(); while (it.hasNext()) { SettableBeanProperty p = it.next(); if (p.getAnnotation(JsonRawValue.class) != null) { builder.addOrReplaceProperty(p.withValueDeserializer(JsonAsStringDeserializer.INSTANCE), true); } } return builder; }
@Override public BeanDeserializerBuilder updateBuilder(DeserializationConfig config, BeanDescription desc, BeanDeserializerBuilder deserializerBuilder) { return (this.canModify(desc) ? this.updateBuilderInternal(config, desc, deserializerBuilder) : super.updateBuilder(config, desc, deserializerBuilder)); }
protected BeanDeserializerBuilder updateBuilderInternal(DeserializationConfig config, BeanDescription desc, BeanDeserializerBuilder deserializerBuilder) { return super.updateBuilder(config, desc, deserializerBuilder); }