@Override public JsonDeserializer<?> modifyDeserializer(DeserializationConfig config, BeanDescription beanDesc, JsonDeserializer<?> deserializer) { if (deserializer instanceof BeanDeserializerBase) { return new DataBinderDeserializer( (BeanDeserializerBase) deserializer); } // When there is no custom-deserializer implementation returns the // default jackson deserializer return deserializer; }
public BeanAsArrayBuilderDeserializer(BeanDeserializerBase paramBeanDeserializerBase, SettableBeanProperty[] paramArrayOfSettableBeanProperty, AnnotatedMethod paramAnnotatedMethod) { super(paramBeanDeserializerBase); this._delegate = paramBeanDeserializerBase; this._orderedProperties = paramArrayOfSettableBeanProperty; this._buildMethod = paramAnnotatedMethod; }
@Override public void setupModule(SetupContext context) { context.addBeanDeserializerModifier(new BeanDeserializerModifier() { @Override public JsonDeserializer<?> modifyDeserializer(DeserializationConfig config, BeanDescription beanDesc, JsonDeserializer<?> deserializer) { if(deserializer instanceof BeanDeserializer) { return new MigrationBeanDeserializer((BeanDeserializerBase) deserializer, migrationCurrentStack); } return deserializer; } }); }
@Override public JsonDeserializer<?> modifyDeserializer(DeserializationConfig config, BeanDescription beanDesc, JsonDeserializer<?> deserializer) { JsonDeserializer<?> delegatee = deserializer.getDelegatee(); if (delegatee != null) { JsonDeserializer<?> replacementDelegatee = modifyDeserializer(config, beanDesc, delegatee); return deserializer.replaceDelegatee(replacementDelegatee); } else if (deserializer instanceof BeanDeserializerBase) { BeanDeserializerBase beanDeserializer = (BeanDeserializerBase) deserializer; ObjectNode fieldDefaults = config.getNodeFactory().objectNode(); Iterator<SettableBeanProperty> propertyIterator = beanDeserializer.properties(); while (propertyIterator.hasNext()) { SettableBeanProperty prop = propertyIterator.next(); Class<?> declaringClass = prop.getMember().getDeclaringClass(); String canonicalClassName = declaringClass.getCanonicalName(); if ((canonicalClassName != null) && globalDefaults.hasPath(canonicalClassName)) { Config declarerDefaults = globalDefaults.getConfig(canonicalClassName); String propertyName = prop.getName(); if (declarerDefaults.hasPath(propertyName)) { ConfigValue defaultValue = declarerDefaults.getValue(propertyName); JsonNode fieldDefault = Jackson.configConverter(defaultValue); fieldDefaults.set(propertyName, fieldDefault); } } } return new CodecBeanDeserializer(beanDeserializer, fieldDefaults); } else { return deserializer; } }
public DataBinderDeserializer(BeanDeserializerBase source) { super(source); }
public DataBinderDeserializer(BeanDeserializerBase source, ObjectIdReader objectIdReader) { super(source, objectIdReader); }
public DataBinderDeserializer(BeanDeserializerBase source, HashSet<String> ignorableProps) { super(source, ignorableProps); }
/** * {@inheritDoc} * * Uses {@link DataBinderDeserializer} */ @Override public BeanDeserializerBase withIgnorableProperties( HashSet<String> ignorableProps) { return new DataBinderDeserializer(this, ignorableProps); }
/** * {@inheritDoc} * * Not used */ @Override protected BeanDeserializerBase asArrayDeserializer() { // Not used return null; }
EntityBeanDeserializer(BeanDeserializerBase source, ObjectIdReader reader) { super(source, reader); }
public BeanAsArrayDeserializer(BeanDeserializerBase paramBeanDeserializerBase, SettableBeanProperty[] paramArrayOfSettableBeanProperty) { super(paramBeanDeserializerBase); this._delegate = paramBeanDeserializerBase; this._orderedProperties = paramArrayOfSettableBeanProperty; }
protected BeanDeserializerBase asArrayDeserializer() { return this; }
public MigrationBeanDeserializer(BeanDeserializerBase src, MigrationCurrentStack migrationCurrentStack) { super(src); this.migrationCurrentStack = migrationCurrentStack; }
private boolean handleDefaultsAndImplicitPrimary(ObjectNode fieldValues, ConfigObject aliasDefaults, JsonDeserializer<?> deserializer, DeserializationContext ctxt) throws JsonMappingException { if (!aliasDefaults.isEmpty()) { if (deserializer instanceof DelegatingDeserializer) { deserializer = ((DelegatingDeserializer) deserializer).getDelegatee(); } if ((deserializer instanceof BeanDeserializerBase) && (aliasDefaults.get("_primary") != null)) { BeanDeserializerBase beanDeserializer = (BeanDeserializerBase) deserializer; String primaryField = (String) aliasDefaults.get("_primary").unwrapped(); if (!fieldValues.has(primaryField)) { // user has not explicitly set a value where _primary points, see if _primary is a plugin type SettableBeanProperty primaryProperty = beanDeserializer.findProperty(primaryField); if ((primaryProperty != null) && primaryProperty.hasValueTypeDeserializer()) { TypeDeserializer primaryTypeDeserializer = primaryProperty.getValueTypeDeserializer(); if (primaryTypeDeserializer instanceof CodecTypeDeserializer) { CodecTypeIdResolver primaryPropertyTypeIdResolver = ((CodecTypeDeserializer) primaryTypeDeserializer).idRes; String possibleInlinedPrimary = null; Iterator<String> fieldNames = fieldValues.fieldNames(); while (fieldNames.hasNext()) { String fieldName = fieldNames.next(); if ((fieldName.charAt(0) != '_') && !beanDeserializer.hasProperty(fieldName)) { if (primaryPropertyTypeIdResolver.isValidTypeId(fieldName)) { if (possibleInlinedPrimary == null) { possibleInlinedPrimary = fieldName; } else { String message = String.format( "%s and %s are both otherwise unknown properties that " + "could be types for the _primary property %s whose category is " + "%s. This is too ambiguous to resolve.", possibleInlinedPrimary, fieldName, primaryField, ((CodecTypeDeserializer) primaryTypeDeserializer) .pluginMap.category()); JsonMappingException ex = ctxt.instantiationException(_baseType.getRawClass(), message); ex.prependPath(beanDeserializer.getValueType(), fieldName); throw ex; } } } } // did we find a good candidate? if (possibleInlinedPrimary != null) { // then wrap the value with its key (its type), and stash it in our primary field JsonNode inlinedPrimaryValue = fieldValues.remove(possibleInlinedPrimary); fieldValues.with(primaryField).set(possibleInlinedPrimary, inlinedPrimaryValue); Jackson.merge(fieldValues, Jackson.configConverter(aliasDefaults)); return true; } } } } } // merge alias defaults here since we check for empty etc anyway Jackson.merge(fieldValues, Jackson.configConverter(aliasDefaults)); } return false; }
protected CodecBeanDeserializer(BeanDeserializerBase src, ObjectNode fieldDefaults) { super(src); this.fieldDefaults = fieldDefaults; }
@Override public BeanDeserializerBase getDelegatee() { return (BeanDeserializerBase) _delegatee; }
@Override protected JsonDeserializer<?> newDelegatingInstance(JsonDeserializer<?> newDelegatee) { return new CodecBeanDeserializer((BeanDeserializerBase) newDelegatee, fieldDefaults); }
/** * {@inheritDoc} * * Uses {@link DataBinderDeserializer} */ @Override public BeanDeserializerBase withObjectIdReader(ObjectIdReader objectIdReader) { return new DataBinderDeserializer(this, objectIdReader); }