Skip to content

Commit 06af743

Browse files
committed
add a failing test for #1415
1 parent 9919f9d commit 06af743

File tree

2 files changed

+68
-6
lines changed

2 files changed

+68
-6
lines changed

src/main/java/com/fasterxml/jackson/databind/type/TypeFactory.java

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -716,7 +716,8 @@ public ArrayType constructArrayType(JavaType elementType) {
716716
* NOTE: type modifiers are NOT called on Collection type itself; but are called
717717
* for contained types.
718718
*/
719-
public CollectionType constructCollectionType(Class<? extends Collection> collectionClass, Class<?> elementClass) {
719+
public CollectionType constructCollectionType(Class<? extends Collection> collectionClass,
720+
Class<?> elementClass) {
720721
return constructCollectionType(collectionClass,
721722
_fromClass(null, elementClass, EMPTY_BINDINGS));
722723
}
@@ -727,7 +728,8 @@ public CollectionType constructCollectionType(Class<? extends Collection> collec
727728
* NOTE: type modifiers are NOT called on Collection type itself; but are called
728729
* for contained types.
729730
*/
730-
public CollectionType constructCollectionType(Class<? extends Collection> collectionClass, JavaType elementType) {
731+
public CollectionType constructCollectionType(Class<? extends Collection> collectionClass,
732+
JavaType elementType) {
731733
// 19-Oct-2015, tatu: Allow case of no-type-variables, since it seems likely to be
732734
// a valid use case here
733735
return (CollectionType) _fromClass(null, collectionClass,
@@ -766,7 +768,8 @@ public CollectionLikeType constructCollectionLikeType(Class<?> collectionClass,
766768
* NOTE: type modifiers are NOT called on constructed type itself; but are called
767769
* for contained types.
768770
*/
769-
public MapType constructMapType(Class<? extends Map> mapClass, Class<?> keyClass, Class<?> valueClass) {
771+
public MapType constructMapType(Class<? extends Map> mapClass,
772+
Class<?> keyClass, Class<?> valueClass) {
770773
JavaType kt, vt;
771774
if (mapClass == Properties.class) {
772775
kt = vt = CORE_TYPE_STRING;
@@ -785,9 +788,7 @@ public MapType constructMapType(Class<? extends Map> mapClass, Class<?> keyClass
785788
*/
786789
public MapType constructMapType(Class<? extends Map> mapClass, JavaType keyType, JavaType valueType) {
787790
return (MapType) _fromClass(null, mapClass,
788-
TypeBindings.create(mapClass, new JavaType[] {
789-
keyType, valueType
790-
}));
791+
TypeBindings.create(mapClass, keyType, valueType));
791792
}
792793

793794
/**
Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
package com.fasterxml.jackson.failing;
2+
3+
import java.util.*;
4+
5+
import com.fasterxml.jackson.databind.BaseMapTest;
6+
import com.fasterxml.jackson.databind.JavaType;
7+
import com.fasterxml.jackson.databind.ObjectMapper;
8+
import com.fasterxml.jackson.databind.type.CollectionType;
9+
import com.fasterxml.jackson.databind.type.MapType;
10+
11+
// for [databind#1415]
12+
public class CollectionType1415Test extends BaseMapTest
13+
{
14+
static abstract class LongList implements List<Long> { }
15+
16+
static abstract class StringLongMap implements Map<String,Long> { }
17+
18+
/*
19+
/**********************************************************
20+
/* Unit tests
21+
/**********************************************************
22+
*/
23+
24+
private final ObjectMapper MAPPER = new ObjectMapper();
25+
26+
public void testExplicitCollectionType() throws Exception
27+
{
28+
JavaType t = MAPPER.getTypeFactory()
29+
.constructCollectionType(LongList.class, Long.class);
30+
assertEquals(LongList.class, t.getRawClass());
31+
assertEquals(Long.class, t.getContentType().getRawClass());
32+
}
33+
34+
public void testImplicitCollectionType() throws Exception
35+
{
36+
JavaType t = MAPPER.getTypeFactory()
37+
.constructParametricType(List.class, Long.class);
38+
assertEquals(CollectionType.class, t.getClass());
39+
assertEquals(List.class, t.getRawClass());
40+
assertEquals(Long.class, t.getContentType().getRawClass());
41+
}
42+
43+
public void testExplicitMapType() throws Exception
44+
{
45+
JavaType t = MAPPER.getTypeFactory()
46+
.constructMapType(StringLongMap.class,
47+
String.class, Long.class);
48+
assertEquals(StringLongMap.class, t.getRawClass());
49+
assertEquals(String.class, t.getKeyType().getRawClass());
50+
assertEquals(Long.class, t.getContentType().getRawClass());
51+
}
52+
53+
public void testImplicitMapType() throws Exception
54+
{
55+
JavaType t = MAPPER.getTypeFactory()
56+
.constructParametricType(Map.class, Long.class, Boolean.class);
57+
assertEquals(MapType.class, t.getClass());
58+
assertEquals(Long.class, t.getKeyType().getRawClass());
59+
assertEquals(Boolean.class, t.getContentType().getRawClass());
60+
}
61+
}

0 commit comments

Comments
 (0)