diff --git a/org.springframework.core/src/main/java/org/springframework/core/GenericTypeResolver.java b/org.springframework.core/src/main/java/org/springframework/core/GenericTypeResolver.java index 59afdc4e7d3..afbe048e436 100644 --- a/org.springframework.core/src/main/java/org/springframework/core/GenericTypeResolver.java +++ b/org.springframework.core/src/main/java/org/springframework/core/GenericTypeResolver.java @@ -25,7 +25,6 @@ import java.lang.reflect.ParameterizedType; import java.lang.reflect.Type; import java.lang.reflect.TypeVariable; import java.lang.reflect.WildcardType; -import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; import java.util.Map; @@ -205,7 +204,7 @@ public abstract class GenericTypeResolver { return doResolveTypeArguments(ownerClass, (Class) rawType, genericIfc); } } - else if (genericIfc.isAssignableFrom((Class) ifc)) { + else if (ifc != null && genericIfc.isAssignableFrom((Class) ifc)) { return doResolveTypeArguments(ownerClass, (Class) ifc, genericIfc); } return null; diff --git a/org.springframework.core/src/test/java/org/springframework/core/GenericTypeResolverTests.java b/org.springframework.core/src/test/java/org/springframework/core/GenericTypeResolverTests.java index e419c0bc1f6..c1568ff8cda 100644 --- a/org.springframework.core/src/test/java/org/springframework/core/GenericTypeResolverTests.java +++ b/org.springframework.core/src/test/java/org/springframework/core/GenericTypeResolverTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2010 the original author or authors. + * Copyright 2002-2011 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -18,10 +18,12 @@ package org.springframework.core; import java.util.Collection; -import static org.junit.Assert.*; import org.junit.Test; + import org.springframework.util.ReflectionUtils; +import static org.junit.Assert.*; + /** * @author Juergen Hoeller */ @@ -55,6 +57,12 @@ public class GenericTypeResolverTests { assertEquals(null, GenericTypeResolver.resolveReturnTypeArgument(ReflectionUtils.findMethod(MyTypeWithMethods.class, "object"), MyInterfaceType.class)); } + @Test + public void testNullIfNotResolvable() { + GenericClass obj = new GenericClass(); + assertNull(GenericTypeResolver.resolveTypeArgument(obj.getClass(), GenericClass.class)); + } + public interface MyInterfaceType { } @@ -83,4 +91,7 @@ public class GenericTypeResolverTests { public MyInterfaceType raw() { return null; } } + static class GenericClass { + } + }