package com.fasterxml.jackson.failing;
import com.fasterxml.jackson.databind.*;
import com.fasterxml.jackson.databind.introspect.AnnotatedMember;
import com.fasterxml.jackson.databind.introspect.AnnotatedParameter;
import com.fasterxml.jackson.databind.introspect.JacksonAnnotationIntrospector;
public class ImplicitParamsForCreator806Test extends BaseMapTest
{
@SuppressWarnings("serial")
static class MyParamIntrospector extends JacksonAnnotationIntrospector
{
@Override
public String findImplicitPropertyName(AnnotatedMember param) {
if (param instanceof AnnotatedParameter) {
AnnotatedParameter ap = (AnnotatedParameter) param;
return "paramName"+ap.getIndex();
}
return super.findImplicitPropertyName(param);
}
}
static class XY {
protected int x, y;
// annotation should NOT be needed with 2.6 any more (except for single-arg case)
//@com.fasterxml.jackson.annotation.JsonCreator
public XY(int x, int y) {
this.x = x;
this.y = y;
}
}
/*
/**********************************************************
/* Test methods
/**********************************************************
*/
// for [databind#806]
public void testImplicitNameWithNamingStrategy() throws Exception
{
ObjectMapper mapper = new ObjectMapper()
.setAnnotationIntrospector(new MyParamIntrospector())
.setPropertyNamingStrategy(PropertyNamingStrategy.SNAKE_CASE)
;
XY value = mapper.readValue(aposToQuotes("{'param_name0':1,'param_name1':2}"), XY.class);
assertNotNull(value);
assertEquals(1, value.x);
assertEquals(2, value.y);
}
}