|
1 | 1 |
|
2 | 2 | package cz.habarta.typescript.generator; |
3 | 3 |
|
| 4 | +import com.fasterxml.jackson.annotation.JsonSubTypes; |
| 5 | +import com.fasterxml.jackson.annotation.JsonTypeInfo; |
| 6 | +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; |
| 7 | +import com.fasterxml.jackson.databind.annotation.JsonSerialize; |
| 8 | +import org.immutables.value.Value; |
4 | 9 | import org.junit.Assert; |
5 | 10 | import org.junit.Test; |
6 | 11 |
|
@@ -38,4 +43,41 @@ public void testImmutables() { |
38 | 43 | Assert.assertEquals(expected, output); |
39 | 44 | } |
40 | 45 |
|
| 46 | + |
| 47 | + @JsonTypeInfo(use = JsonTypeInfo.Id.NAME, property = "kind") |
| 48 | + @JsonSubTypes({ |
| 49 | + @JsonSubTypes.Type(value = Square.class, name = "square"), |
| 50 | + @JsonSubTypes.Type(value = Rectangle.class, name = "rectangle"), |
| 51 | + @JsonSubTypes.Type(value = Circle.class, name = "circle"), |
| 52 | + }) |
| 53 | + public static interface Shape { |
| 54 | + } |
| 55 | + |
| 56 | + public static class Square implements Shape { |
| 57 | + public double size; |
| 58 | + } |
| 59 | + |
| 60 | + @Value.Immutable |
| 61 | + @JsonSerialize(as = ImmutableRectangle.class) |
| 62 | + @JsonDeserialize(as = ImmutableRectangle.class) |
| 63 | + public static abstract class Rectangle implements Shape { |
| 64 | + public abstract double width(); |
| 65 | + public abstract double height(); |
| 66 | + |
| 67 | + public static Rectangle.Builder builder() { |
| 68 | + return new Rectangle.Builder(); |
| 69 | + } |
| 70 | + |
| 71 | + public static final class Builder extends ImmutableRectangle.Builder {} |
| 72 | + } |
| 73 | + |
| 74 | + @Value.Immutable |
| 75 | + @JsonSerialize(as = ImmutableCircle.class) |
| 76 | + @JsonDeserialize(as = ImmutableCircle.class) |
| 77 | + public static interface Circle extends Shape { |
| 78 | + double radius(); |
| 79 | + |
| 80 | + final class Builder extends ImmutableCircle.Builder {} |
| 81 | + } |
| 82 | + |
41 | 83 | } |
0 commit comments