Skip to content
This repository has been archived by the owner on Jun 21, 2022. It is now read-only.

Commit

Permalink
Browse files Browse the repository at this point in the history
  • Loading branch information
6bangs committed Jul 16, 2018
1 parent 496e591 commit 41d2d3f
Show file tree
Hide file tree
Showing 2 changed files with 69 additions and 12 deletions.
Original file line number Diff line number Diff line change
@@ -1,16 +1,32 @@
package com.fasterxml.jackson.databind.deser;

import java.io.IOException;
import java.util.*;

import com.fasterxml.jackson.core.*;
import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.core.JsonToken;
import com.fasterxml.jackson.core.JsonTokenId;
import com.fasterxml.jackson.core.sym.FieldNameMatcher;
import com.fasterxml.jackson.databind.*;
import com.fasterxml.jackson.databind.deser.impl.*;
import com.fasterxml.jackson.databind.BeanDescription;
import com.fasterxml.jackson.databind.DeserializationContext;
import com.fasterxml.jackson.databind.JavaType;
import com.fasterxml.jackson.databind.JsonDeserializer;
import com.fasterxml.jackson.databind.JsonMappingException;
import com.fasterxml.jackson.databind.deser.impl.BeanAsArrayDeserializer;
import com.fasterxml.jackson.databind.deser.impl.BeanPropertyMap;
import com.fasterxml.jackson.databind.deser.impl.ExternalTypeHandler;
import com.fasterxml.jackson.databind.deser.impl.ObjectIdReader;
import com.fasterxml.jackson.databind.deser.impl.PropertyBasedCreator;
import com.fasterxml.jackson.databind.deser.impl.PropertyValueBuffer;
import com.fasterxml.jackson.databind.deser.impl.ReadableObjectId.Referring;
import com.fasterxml.jackson.databind.deser.impl.UnwrappedPropertyHandler;
import com.fasterxml.jackson.databind.util.NameTransformer;
import com.fasterxml.jackson.databind.util.TokenBuffer;

import java.io.IOException;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;

/**
* Deserializer class that can deserialize instances of
* arbitrary bean objects, usually from JSON Object structs,
Expand Down Expand Up @@ -947,7 +963,6 @@ protected Object deserializeUsingPropertyBasedWithUnwrapped(JsonParser p, Deseri
p.setCurrentValue(bean);
// if so, need to copy all remaining tokens into buffer
while (t == JsonToken.FIELD_NAME) {
p.nextToken(); // to skip name
tokens.copyCurrentStructure(p);
t = p.nextToken();
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,14 +1,20 @@
package com.fasterxml.jackson.databind.deser;

import java.io.*;

import com.fasterxml.jackson.annotation.*;
import com.fasterxml.jackson.annotation.JsonAutoDetect;
import com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility;
import com.fasterxml.jackson.core.*;
import com.fasterxml.jackson.databind.*;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonUnwrapped;
import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.BaseMapTest;
import com.fasterxml.jackson.databind.DeserializationContext;
import com.fasterxml.jackson.databind.MapperFeature;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.databind.deser.std.StdDeserializer;

import java.io.IOException;

/**
* This unit test suite tests use of basic Annotations for
* bean deserialization; ones that indicate (non-constructor)
Expand Down Expand Up @@ -61,6 +67,32 @@ final static class SizeClassSetter3
@JsonDeserialize public void x(int value) { _x = value; }
}

static class Issue2088Bean {
int x;
int y;

@JsonUnwrapped
Issue2088UnwrappedBean w;

public Issue2088Bean(@JsonProperty("x") int x, @JsonProperty("y") int y) {
this.x = x;
this.y = y;
}

public void setW(Issue2088UnwrappedBean w) {
this.w = w;
}
}

static class Issue2088UnwrappedBean {
int a;
int b;

public Issue2088UnwrappedBean(@JsonProperty("a") int a, @JsonProperty("b") int b) {
this.a = a;
this.b = b;
}
}

/// Classes for testing Setter discovery with inheritance
static class BaseBean
Expand Down Expand Up @@ -181,6 +213,16 @@ public void testIssue442PrivateUnwrapped() throws Exception
assertEquals(5, bean.w.i);
}

// [databind#2088]
public void testIssue2088UnwrappedFieldsAfterLastCreatorProp() throws Exception
{
Issue2088Bean bean = MAPPER.readValue("{\"x\":1,\"a\":2,\"y\":3,\"b\":4}", Issue2088Bean.class);
assertEquals(1, bean.x);
assertEquals(2, bean.w.a);
assertEquals(3, bean.y);
assertEquals(4, bean.w.b);
}

/*
/**********************************************************
/* Test methods, annotations disabled
Expand Down

0 comments on commit 41d2d3f

Please sign in to comment.