com.yammer.dropwizard.json.AnnotationSensitivePropertyNamingStrategy Maven / Gradle / Ivy
package com.yammer.dropwizard.json;
import org.codehaus.jackson.map.MapperConfig;
import org.codehaus.jackson.map.PropertyNamingStrategy;
import org.codehaus.jackson.map.introspect.AnnotatedField;
import org.codehaus.jackson.map.introspect.AnnotatedMethod;
import org.codehaus.jackson.map.introspect.AnnotatedParameter;
class AnnotationSensitivePropertyNamingStrategy extends PropertyNamingStrategy {
static final AnnotationSensitivePropertyNamingStrategy INSTANCE =
new AnnotationSensitivePropertyNamingStrategy();
private final PropertyNamingStrategy snakeCase;
AnnotationSensitivePropertyNamingStrategy() {
super();
this.snakeCase = PropertyNamingStrategy.CAMEL_CASE_TO_LOWER_CASE_WITH_UNDERSCORES;
}
@Override
public String nameForConstructorParameter(MapperConfig> config,
AnnotatedParameter ctorParam,
String defaultName) {
if (ctorParam.getDeclaringClass().isAnnotationPresent(JsonSnakeCase.class)) {
return snakeCase.nameForConstructorParameter(config, ctorParam, defaultName);
}
return super.nameForConstructorParameter(config, ctorParam, defaultName);
}
@Override
public String nameForField(MapperConfig> config,
AnnotatedField field,
String defaultName) {
if (field.getDeclaringClass().isAnnotationPresent(JsonSnakeCase.class)) {
return snakeCase.nameForField(config, field, defaultName);
}
return super.nameForField(config, field, defaultName);
}
@Override
public String nameForGetterMethod(MapperConfig> config,
AnnotatedMethod method,
String defaultName) {
if (method.getDeclaringClass().isAnnotationPresent(JsonSnakeCase.class)) {
return snakeCase.nameForGetterMethod(config, method, defaultName);
}
return super.nameForGetterMethod(config, method, defaultName);
}
@Override
public String nameForSetterMethod(MapperConfig> config,
AnnotatedMethod method,
String defaultName) {
if (method.getDeclaringClass().isAnnotationPresent(JsonSnakeCase.class)) {
return snakeCase.nameForSetterMethod(config, method, defaultName);
}
return super.nameForSetterMethod(config, method, defaultName);
}
}