CreatorWithNamingStrategyTest.java
package tools.jackson.databind.deser.creators;
import org.junit.jupiter.api.Test;
import com.fasterxml.jackson.annotation.JsonCreator;
import tools.jackson.databind.*;
import tools.jackson.databind.cfg.MapperConfig;
import tools.jackson.databind.introspect.AnnotatedMember;
import tools.jackson.databind.introspect.AnnotatedParameter;
import tools.jackson.databind.introspect.JacksonAnnotationIntrospector;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static tools.jackson.databind.testutil.DatabindTestUtil.jsonMapperBuilder;
public class CreatorWithNamingStrategyTest
{
@SuppressWarnings("serial")
static class MyParamIntrospector extends JacksonAnnotationIntrospector
{
@Override
public String findImplicitPropertyName(MapperConfig<?> config, AnnotatedMember param) {
if (param instanceof AnnotatedParameter ap) {
return "paramName"+ap.getIndex();
}
return super.findImplicitPropertyName(config, param);
}
}
// [databind#2051]
static class OneProperty {
public String paramName0;
@JsonCreator
public OneProperty(String bogus) {
paramName0 = "CTOR:"+bogus;
}
}
/*
/**********************************************************
/* Test methods
/**********************************************************
*/
// [databind#2051]
@Test
public void testSnakeCaseWithOneArg() throws Exception
{
ObjectMapper mapper = jsonMapperBuilder()
.propertyNamingStrategy(PropertyNamingStrategies.SNAKE_CASE)
.annotationIntrospector(new MyParamIntrospector())
.build();
final String MSG = "1st";
OneProperty actual = mapper.readValue("{\"param_name0\":\""+MSG+"\"}",
OneProperty.class);
assertEquals("CTOR:"+MSG, actual.paramName0);
}
}