package com.fasterxml.jackson.failing; import com.fasterxml.jackson.annotation.*; import com.fasterxml.jackson.databind.BaseMapTest; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.introspect.*; public class IgnoredCreatorProperty1572Test extends BaseMapTest { static class InnerTest { public String str; public String otherStr; } static class OuterTest { InnerTest innerTest; @JsonIgnore String otherOtherStr; @JsonCreator public OuterTest(/*@JsonProperty("innerTest")*/ InnerTest inner, /*@JsonProperty("otherOtherStr")*/ String otherStr) { this.innerTest = inner; } } static class ImplicitNames extends JacksonAnnotationIntrospector { private static final long serialVersionUID = 1L; @Override public String findImplicitPropertyName(AnnotatedMember member) { if (member instanceof AnnotatedParameter) { // A placeholder for legitimate property name detection // such as what the JDK8 module provides AnnotatedParameter param = (AnnotatedParameter) member; switch (param.getIndex()) { case 0: return "innerTest"; case 1: return "otherOtherStr"; default: } } return null; } } /* /******************************************************** /* Test methods /******************************************************** */ // [databind#1572] public void testIgnoredCtorParam() throws Exception { final ObjectMapper mapper = new ObjectMapper(); mapper.setAnnotationIntrospector(new ImplicitNames()); String JSON = aposToQuotes("{'innerTest': {\n" +"'str':'str',\n" +"'otherStr': 'otherStr'\n" +"}}\n"); OuterTest result = mapper.readValue(JSON, OuterTest.class); assertNotNull(result); assertNotNull(result.innerTest); assertEquals("otherStr", result.innerTest.otherStr); } }