| package com.fasterxml.jackson.databind.creators; |
| |
| 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 ImplicitParamsForCreatorTest 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 |
| /********************************************************** |
| */ |
| |
| public void testNonSingleArgCreator() throws Exception |
| { |
| ObjectMapper mapper = new ObjectMapper(); |
| mapper.setAnnotationIntrospector(new MyParamIntrospector()); |
| XY value = mapper.readValue(aposToQuotes("{'paramName0':1,'paramName1':2}"), XY.class); |
| assertNotNull(value); |
| assertEquals(1, value.x); |
| assertEquals(2, value.y); |
| } |
| } |