AnnotationAttributes stores and re-throws resolution exceptions

Issue: SPR-13177
This commit is contained in:
Juergen Hoeller
2015-07-06 13:35:16 +02:00
parent 3f0a6e814c
commit b7acddbb19
3 changed files with 43 additions and 22 deletions

View File

@@ -57,6 +57,7 @@ public class AnnotationAttributesTests {
attributes.put("number", 42);
attributes.put("anno", nestedAttributes);
attributes.put("annoArray", new AnnotationAttributes[] { nestedAttributes });
attributes.put("unresolvableClass", new ClassNotFoundException("myclass"));
assertThat(attributes.getString("name"), equalTo("dave"));
assertThat(attributes.getStringArray("names"), equalTo(new String[] { "dave", "frank", "hal" }));
@@ -68,6 +69,15 @@ public class AnnotationAttributesTests {
assertThat(attributes.<Integer>getNumber("number"), equalTo(42));
assertThat(attributes.getAnnotation("anno").<Integer>getNumber("value"), equalTo(10));
assertThat(attributes.getAnnotationArray("annoArray")[0].getString("name"), equalTo("algernon"));
try {
attributes.getClass("unresolvableClass");
fail("Should have thrown IllegalArgumentException");
}
catch (IllegalArgumentException ex) {
assertTrue(ex.getCause() instanceof ClassNotFoundException);
assertTrue(ex.getMessage().contains("myclass"));
}
}
@Test