JDK8TypesTest.java
package tools.jackson.databind.ext.jdk8;
import java.util.Optional;
import java.util.OptionalDouble;
import java.util.OptionalInt;
import java.util.OptionalLong;
import org.junit.jupiter.api.Test;
import tools.jackson.databind.*;
import tools.jackson.databind.testutil.DatabindTestUtil;
import tools.jackson.databind.type.ReferenceType;
import static org.junit.jupiter.api.Assertions.*;
public class JDK8TypesTest
extends DatabindTestUtil
{
private final ObjectMapper MAPPER = newJsonMapper();
@Test
public void testOptionalsAreReferentialTypes() throws Exception
{
JavaType t = MAPPER.constructType(Optional.class);
assertTrue(t.isReferenceType());
ReferenceType rt = (ReferenceType) t;
assertEquals(Object.class, rt.getContentType().getRawClass());
t = MAPPER.constructType(OptionalInt.class);
assertTrue(t.isReferenceType());
rt = (ReferenceType) t;
assertEquals(Integer.TYPE, rt.getContentType().getRawClass());
t = MAPPER.constructType(OptionalLong.class);
assertTrue(t.isReferenceType());
rt = (ReferenceType) t;
assertEquals(Long.TYPE, rt.getContentType().getRawClass());
t = MAPPER.constructType(OptionalDouble.class);
assertTrue(t.isReferenceType());
rt = (ReferenceType) t;
assertEquals(Double.TYPE, rt.getContentType().getRawClass());
}
}