Skip to content

Commit

Permalink
Merge branch 'master' of github.com:FasterXML/jackson-databind
Browse files Browse the repository at this point in the history
  • Loading branch information
cowtowncoder committed Jan 7, 2015
2 parents 9236000 + d180bed commit 8c36f1c
Showing 1 changed file with 52 additions and 3 deletions.
Original file line number Diff line number Diff line change
@@ -1,14 +1,19 @@
package com.fasterxml.jackson.databind.struct;

import java.io.IOException;

import com.fasterxml.jackson.annotation.JsonIdentityInfo;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonTypeInfo;
import com.fasterxml.jackson.annotation.JsonTypeInfo.As;
import com.fasterxml.jackson.annotation.JsonTypeInfo.Id;
import com.fasterxml.jackson.annotation.ObjectIdGenerator;
import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.databind.BaseMapTest;
import com.fasterxml.jackson.databind.DeserializationContext;
import com.fasterxml.jackson.databind.JsonDeserializer;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.databind.*;
import java.io.IOException;

/**
* Unit test(s) for [databind#622], supporting non-scalar-Object-ids,
Expand Down Expand Up @@ -187,4 +192,48 @@ public void testPolymorphicRoundTrip() throws Exception
assertEquals(123, jsog.foo);
assertSame(jsog, jsog.next);
}

//
// For databind issue #669
//

@JsonIdentityInfo(generator=JSOGGenerator.class)
@JsonTypeInfo(use=Id.CLASS, include= As.PROPERTY, property="@class")
public static class Inner {
public String bar;

public Inner() {}
public Inner(String bar) { this.bar = bar; }
}

public static class SubInner extends Inner {
public String extra;

public SubInner() {}
public SubInner(String bar, String extra) {
super(bar);
this.extra = extra;
}
}

@JsonIdentityInfo(generator=JSOGGenerator.class)
public static class Outer {
public String foo;
public Inner inner1;
public Inner inner2;
}

// polymorphic alternative for [#669]
public void testAlterativePolymorphicRoundTrip() throws Exception
{
Outer outer = new Outer();
outer.foo = "foo";
outer.inner1 = outer.inner2 = new SubInner("bar", "extra");

String jsog = MAPPER.writeValueAsString(outer);

Outer back = MAPPER.readValue(jsog, Outer.class);

assertSame(back.inner1, back.inner2);
}
}

0 comments on commit 8c36f1c

Please sign in to comment.