Skip to content

Commit

Permalink
Replace usage of deprecated PropertyNamingStrategy.SnakeCaseStrategy…
Browse files Browse the repository at this point in the history
… (#3634)

    This has been replaced by `PropertyNamingStrategies.SnakeCaseStrategy` due to a possible class loader deadlock.

    Refs FasterXML/jackson-databind#2715
  • Loading branch information
Luca Di Grazia committed Sep 4, 2022
1 parent 77017da commit 4e71cdb
Showing 1 changed file with 16 additions and 11 deletions.
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package io.dropwizard.jackson;

import com.fasterxml.jackson.databind.PropertyNamingStrategies;
import com.fasterxml.jackson.databind.PropertyNamingStrategy;
import com.fasterxml.jackson.databind.cfg.MapperConfig;
import com.fasterxml.jackson.databind.introspect.AnnotatedField;
Expand All @@ -8,24 +9,22 @@

/**
* A {@link PropertyNamingStrategy} implementation which, if the declaring class of a property is
* annotated with {@link JsonSnakeCase}, uses a {@link LowerCaseWithUnderscoresStrategy}, and uses
* annotated with {@link JsonSnakeCase}, uses a
* {@link com.fasterxml.jackson.databind.PropertyNamingStrategies.SnakeCaseStrategy}, and uses
* the default {@link PropertyNamingStrategy} otherwise.
*/
public class AnnotationSensitivePropertyNamingStrategy extends PropertyNamingStrategy {
private static final long serialVersionUID = -1372862028366311230L;

private final LowerCaseWithUnderscoresStrategy snakeCase;

public AnnotationSensitivePropertyNamingStrategy() {
super();
this.snakeCase = new LowerCaseWithUnderscoresStrategy();
}
private final PropertyNamingStrategy snakeCase = new PropertyNamingStrategies.SnakeCaseStrategy();

@Override
public String nameForConstructorParameter(MapperConfig<?> config,
AnnotatedParameter ctorParam,
String defaultName) {
if (ctorParam.getDeclaringClass().isAnnotationPresent(JsonSnakeCase.class)) {
if (ctorParam == null) {
return defaultName;
} else if (ctorParam.getDeclaringClass().isAnnotationPresent(JsonSnakeCase.class)) {
return snakeCase.nameForConstructorParameter(config, ctorParam, defaultName);
}
return super.nameForConstructorParameter(config, ctorParam, defaultName);
Expand All @@ -35,7 +34,9 @@ public String nameForConstructorParameter(MapperConfig<?> config,
public String nameForField(MapperConfig<?> config,
AnnotatedField field,
String defaultName) {
if (field.getDeclaringClass().isAnnotationPresent(JsonSnakeCase.class)) {
if (field == null) {
return defaultName;
} else if (field.getDeclaringClass().isAnnotationPresent(JsonSnakeCase.class)) {
return snakeCase.nameForField(config, field, defaultName);
}

Expand All @@ -46,7 +47,9 @@ public String nameForField(MapperConfig<?> config,
public String nameForGetterMethod(MapperConfig<?> config,
AnnotatedMethod method,
String defaultName) {
if (method.getDeclaringClass().isAnnotationPresent(JsonSnakeCase.class)) {
if (method == null) {
return defaultName;
} else if (method.getDeclaringClass().isAnnotationPresent(JsonSnakeCase.class)) {
return snakeCase.nameForGetterMethod(config, method, defaultName);
}
return super.nameForGetterMethod(config, method, defaultName);
Expand All @@ -56,7 +59,9 @@ public String nameForGetterMethod(MapperConfig<?> config,
public String nameForSetterMethod(MapperConfig<?> config,
AnnotatedMethod method,
String defaultName) {
if (method.getDeclaringClass().isAnnotationPresent(JsonSnakeCase.class)) {
if (method == null) {
return defaultName;
} else if (method.getDeclaringClass().isAnnotationPresent(JsonSnakeCase.class)) {
return snakeCase.nameForSetterMethod(config, method, defaultName);
}
return super.nameForSetterMethod(config, method, defaultName);
Expand Down

0 comments on commit 4e71cdb

Please sign in to comment.