@Test public void propertyNamingStrategy() { PropertyNamingStrategy strategy = new PropertyNamingStrategy.LowerCaseWithUnderscoresStrategy(); ObjectMapper objectMapper = Jackson2ObjectMapperBuilder.json().propertyNamingStrategy(strategy).build(); assertSame(strategy, objectMapper.getSerializationConfig().getPropertyNamingStrategy()); assertSame(strategy, objectMapper.getDeserializationConfig().getPropertyNamingStrategy()); }
@Test public void propertyNamingStrategy() { PropertyNamingStrategy strategy = new PropertyNamingStrategy.LowerCaseWithUnderscoresStrategy(); this.factory.setPropertyNamingStrategy(strategy); this.factory.afterPropertiesSet(); assertSame(strategy, this.factory.getObject().getSerializationConfig().getPropertyNamingStrategy()); assertSame(strategy, this.factory.getObject().getDeserializationConfig().getPropertyNamingStrategy()); }
@Override public String nameForDeserialization(final BeanPropertyDefinition beanProperty) { DeserializationConfig deserializationConfig = objectMapper.getDeserializationConfig(); Optional<PropertyNamingStrategy> namingStrategy = Optional.fromNullable(deserializationConfig.getPropertyNamingStrategy()); String newName = namingStrategy .transform(overTheWireName(beanProperty, deserializationConfig)) .or(beanProperty.getName()); LOG.debug("Name '{}' renamed to '{}'", beanProperty.getName(), newName); return newName; }
@Override public String nameForDeserialization(final BeanPropertyDefinition beanProperty) { DeserializationConfig deserializationConfig = objectMapper.getDeserializationConfig(); Optional<PropertyNamingStrategy> namingStrategy = Optional.fromNullable(deserializationConfig.getPropertyNamingStrategy()); String newName = namingStrategy .transform(overTheWireName(beanProperty, deserializationConfig)) .or(beanProperty.getName()); LOG.debug("Name '{}' renamed to '{}'", beanProperty.getName(), newName); return newName; }
@Override public PropertyConstraint deserialize(JsonParser jp, DeserializationContext ctxt) throws IOException { ObjectMapper mapper = (ObjectMapper) jp.getCodec(); ObjectNode node = mapper.readTree(jp); String constraintName = null; Iterator<String> fieldIterator = node.fieldNames(); // First field is also the constraint name ? if (fieldIterator.hasNext()) { constraintName = fieldIterator.next(); } else { throw JsonMappingException.from(jp, "Constraint definition must contain one field"); } PropertyNamingStrategy namingStrategy = mapper.getDeserializationConfig().getPropertyNamingStrategy(); Map<String, Class<? extends PropertyConstraint>> constraintsMapping = getTranslatedConstraintsMap(namingStrategy); if (!constraintsMapping.containsKey(constraintName)) { if ("rangeMinValue".equals(constraintName) || "rangeMaxValue".equals(constraintName)) { return mapper.treeToValue(node, InRangeConstraint.class); } else { throw JsonMappingException.from(jp, "Constraint not found [" + constraintName + "], expect one of [" + this.constraints.keySet() + "]"); } } Class<? extends PropertyConstraint> constraintClass = constraintsMapping.get(constraintName); return mapper.treeToValue(node, constraintClass); }
@Override public String nameForDeserialization(final BeanPropertyDefinition beanProperty) { DeserializationConfig deserializationConfig = objectMapper.getDeserializationConfig(); Optional<PropertyNamingStrategy> namingStrategy = Optional.fromNullable(deserializationConfig.getPropertyNamingStrategy()); String newName = namingStrategy .transform(overTheWireName(beanProperty, deserializationConfig)) .or(beanProperty.getName()); LOG.debug("Name '{}' renamed to '{}'", beanProperty.getName(), newName); return newName; }
private Map<String, ExtensionInfo> buildExtensionLookup(Descriptor descriptor, DeserializationContext context) { PropertyNamingStrategyBase namingStrategy = new PropertyNamingStrategyWrapper(context.getConfig().getPropertyNamingStrategy()); Map<String, ExtensionInfo> extensionLookup = new HashMap<>(); for (ExtensionInfo extensionInfo : config.extensionRegistry().getExtensionsByDescriptor(descriptor)) { extensionLookup.put(namingStrategy.translate(extensionInfo.descriptor.getName()), extensionInfo); } return extensionLookup; }
private Map<String, FieldDescriptor> buildFieldLookup(Descriptor descriptor, DeserializationContext context) { PropertyNamingStrategyBase namingStrategy = new PropertyNamingStrategyWrapper(context.getConfig().getPropertyNamingStrategy()); Map<String, FieldDescriptor> fieldLookup = new HashMap<>(); for (FieldDescriptor field : descriptor.getFields()) { fieldLookup.put(namingStrategy.translate(field.getName()), field); } if (config.acceptLiteralFieldnames()) { for (FieldDescriptor field : descriptor.getFields()) { if (!fieldLookup.containsKey(field.getName())) { fieldLookup.put(field.getName(), field); } } } return fieldLookup; }