Skip to content

Commit cce4726

Browse files
committed
Improve TypeParameterResolver#toString() for messaging
Porting harawata/typeparameterresolver#6
1 parent 29c8c16 commit cce4726

File tree

2 files changed

+27
-2
lines changed

2 files changed

+27
-2
lines changed

src/main/java/org/apache/ibatis/reflection/TypeParameterResolver.java

Lines changed: 24 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -283,8 +283,14 @@ public boolean equals(Object obj) {
283283

284284
@Override
285285
public String toString() {
286-
return "ParameterizedTypeImpl [rawType=" + rawType + ", ownerType=" + ownerType + ", actualTypeArguments="
287-
+ Arrays.toString(actualTypeArguments) + "]";
286+
StringBuilder s = new StringBuilder().append(rawType.getName()).append("<");
287+
for (int i = 0; i < actualTypeArguments.length; i++) {
288+
if (i > 0) {
289+
s.append(", ");
290+
}
291+
s.append(actualTypeArguments[i].getTypeName());
292+
}
293+
return s.append(">").toString();
288294
}
289295
}
290296

@@ -329,6 +335,17 @@ public boolean equals(Object obj) {
329335
WildcardTypeImpl other = (WildcardTypeImpl) obj;
330336
return Arrays.equals(lowerBounds, other.lowerBounds) && Arrays.equals(upperBounds, other.upperBounds);
331337
}
338+
339+
@Override
340+
public String toString() {
341+
StringBuilder s = new StringBuilder().append("?");
342+
if (lowerBounds.length > 0) {
343+
s.append(" super ").append(lowerBounds[0].getTypeName());
344+
} else if (upperBounds.length > 0 && upperBounds[0] != Object.class) {
345+
s.append(" extends ").append(upperBounds[0].getTypeName());
346+
}
347+
return s.toString();
348+
}
332349
}
333350

334351
static class GenericArrayTypeImpl implements GenericArrayType {
@@ -360,5 +377,10 @@ public boolean equals(Object obj) {
360377
GenericArrayTypeImpl other = (GenericArrayTypeImpl) obj;
361378
return Objects.equals(genericComponentType, other.genericComponentType);
362379
}
380+
381+
@Override
382+
public String toString() {
383+
return new StringBuilder().append(genericComponentType.toString()).append("[]").toString();
384+
}
363385
}
364386
}

src/test/java/org/apache/ibatis/reflection/TypeParameterResolverTest.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,7 @@ void returnSimpleMap() throws Exception {
9797
assertEquals(2, paramType.getActualTypeArguments().length);
9898
assertEquals(Integer.class, paramType.getActualTypeArguments()[0]);
9999
assertEquals(Double.class, paramType.getActualTypeArguments()[1]);
100+
assertEquals("java.util.Map<java.lang.Integer, java.lang.Double>", result.toString());
100101
}
101102

102103
@Test
@@ -111,6 +112,7 @@ void returnSimpleWildcard() throws Exception {
111112
assertTrue(paramType.getActualTypeArguments()[0] instanceof WildcardType);
112113
WildcardType wildcard = (WildcardType) paramType.getActualTypeArguments()[0];
113114
assertEquals(String.class, wildcard.getUpperBounds()[0]);
115+
assertEquals("java.util.List<? extends java.lang.String>", paramType.toString());
114116
}
115117

116118
@Test
@@ -364,6 +366,7 @@ void paramLv1Array() throws Exception {
364366
assertTrue(result[0] instanceof GenericArrayType);
365367
GenericArrayType genericArrayType = (GenericArrayType) result[0];
366368
assertTrue(genericArrayType.getGenericComponentType() instanceof ParameterizedType);
369+
assertEquals("java.util.List<java.lang.String>[]", genericArrayType.toString());
367370
ParameterizedType paramType = (ParameterizedType) genericArrayType.getGenericComponentType();
368371
assertEquals(List.class, paramType.getRawType());
369372
assertEquals(String.class, paramType.getActualTypeArguments()[0]);

0 commit comments

Comments
 (0)