|
17 | 17 | package org.springframework.core.annotation;
|
18 | 18 |
|
19 | 19 | import java.lang.annotation.Annotation;
|
| 20 | +import java.lang.annotation.Documented; |
20 | 21 | import java.lang.annotation.ElementType;
|
21 | 22 | import java.lang.annotation.Inherited;
|
22 | 23 | import java.lang.annotation.Retention;
|
|
28 | 29 | import java.util.Date;
|
29 | 30 | import java.util.List;
|
30 | 31 | import java.util.Set;
|
| 32 | +import javax.annotation.Nonnull; |
| 33 | +import javax.annotation.ParametersAreNonnullByDefault; |
31 | 34 | import javax.annotation.Resource;
|
32 | 35 |
|
33 | 36 | import org.junit.Ignore;
|
|
36 | 39 | import org.junit.internal.ArrayComparisonFailure;
|
37 | 40 | import org.junit.rules.ExpectedException;
|
38 | 41 |
|
| 42 | +import org.springframework.lang.NonNullApi; |
39 | 43 | import org.springframework.lang.Nullable;
|
40 | 44 | import org.springframework.stereotype.Component;
|
41 | 45 | import org.springframework.stereotype.Indexed;
|
@@ -121,33 +125,70 @@ public void hasMetaAnnotationTypesOnClassWithMetaDepth2() {
|
121 | 125 |
|
122 | 126 | @Test
|
123 | 127 | public void isAnnotatedOnNonAnnotatedClass() {
|
124 |
| - assertFalse(isAnnotated(NonAnnotatedClass.class, TX_NAME)); |
| 128 | + assertFalse(isAnnotated(NonAnnotatedClass.class, Transactional.class)); |
125 | 129 | }
|
126 | 130 |
|
127 | 131 | @Test
|
128 |
| - public void isAnnotatedOnClassWithMetaDepth0() { |
129 |
| - assertTrue(isAnnotated(TransactionalComponentClass.class, TransactionalComponent.class.getName())); |
| 132 | + public void isAnnotatedOnClassWithMetaDepth() { |
| 133 | + assertTrue(isAnnotated(TransactionalComponentClass.class, TransactionalComponent.class)); |
| 134 | + assertFalse("isAnnotated() does not search the class hierarchy.", |
| 135 | + isAnnotated(SubTransactionalComponentClass.class, TransactionalComponent.class)); |
| 136 | + assertTrue(isAnnotated(TransactionalComponentClass.class, Transactional.class)); |
| 137 | + assertTrue(isAnnotated(TransactionalComponentClass.class, Component.class)); |
| 138 | + assertTrue(isAnnotated(ComposedTransactionalComponentClass.class, Transactional.class)); |
| 139 | + assertTrue(isAnnotated(ComposedTransactionalComponentClass.class, Component.class)); |
| 140 | + assertTrue(isAnnotated(ComposedTransactionalComponentClass.class, ComposedTransactionalComponent.class)); |
130 | 141 | }
|
131 | 142 |
|
132 | 143 | @Test
|
133 |
| - public void isAnnotatedOnSubclassWithMetaDepth0() { |
134 |
| - assertFalse("isAnnotated() does not search the class hierarchy.", |
135 |
| - isAnnotated(SubTransactionalComponentClass.class, TransactionalComponent.class.getName())); |
| 144 | + public void isAnnotatedForPlainTypes() { |
| 145 | + assertTrue(isAnnotated(Order.class, Documented.class)); |
| 146 | + assertTrue(isAnnotated(NonNullApi.class, Documented.class)); |
| 147 | + assertTrue(isAnnotated(NonNullApi.class, Nonnull.class)); |
| 148 | + assertTrue(isAnnotated(ParametersAreNonnullByDefault.class, Nonnull.class)); |
136 | 149 | }
|
137 | 150 |
|
138 | 151 | @Test
|
139 |
| - public void isAnnotatedOnClassWithMetaDepth1() { |
140 |
| - assertTrue(isAnnotated(TransactionalComponentClass.class, TX_NAME)); |
141 |
| - assertTrue(isAnnotated(TransactionalComponentClass.class, Component.class.getName())); |
| 152 | + public void isAnnotatedWithNameOnNonAnnotatedClass() { |
| 153 | + assertFalse(isAnnotated(NonAnnotatedClass.class, TX_NAME)); |
142 | 154 | }
|
143 | 155 |
|
144 | 156 | @Test
|
145 |
| - public void isAnnotatedOnClassWithMetaDepth2() { |
| 157 | + public void isAnnotatedWithNameOnClassWithMetaDepth() { |
| 158 | + assertTrue(isAnnotated(TransactionalComponentClass.class, TransactionalComponent.class.getName())); |
| 159 | + assertFalse("isAnnotated() does not search the class hierarchy.", |
| 160 | + isAnnotated(SubTransactionalComponentClass.class, TransactionalComponent.class.getName())); |
| 161 | + assertTrue(isAnnotated(TransactionalComponentClass.class, TX_NAME)); |
| 162 | + assertTrue(isAnnotated(TransactionalComponentClass.class, Component.class.getName())); |
146 | 163 | assertTrue(isAnnotated(ComposedTransactionalComponentClass.class, TX_NAME));
|
147 | 164 | assertTrue(isAnnotated(ComposedTransactionalComponentClass.class, Component.class.getName()));
|
148 | 165 | assertTrue(isAnnotated(ComposedTransactionalComponentClass.class, ComposedTransactionalComponent.class.getName()));
|
149 | 166 | }
|
150 | 167 |
|
| 168 | + @Test |
| 169 | + public void hasAnnotationOnNonAnnotatedClass() { |
| 170 | + assertFalse(hasAnnotation(NonAnnotatedClass.class, Transactional.class)); |
| 171 | + } |
| 172 | + |
| 173 | + @Test |
| 174 | + public void hasAnnotationOnClassWithMetaDepth() { |
| 175 | + assertTrue(hasAnnotation(TransactionalComponentClass.class, TransactionalComponent.class)); |
| 176 | + assertTrue(hasAnnotation(SubTransactionalComponentClass.class, TransactionalComponent.class)); |
| 177 | + assertTrue(hasAnnotation(TransactionalComponentClass.class, Transactional.class)); |
| 178 | + assertTrue(hasAnnotation(TransactionalComponentClass.class, Component.class)); |
| 179 | + assertTrue(hasAnnotation(ComposedTransactionalComponentClass.class, Transactional.class)); |
| 180 | + assertTrue(hasAnnotation(ComposedTransactionalComponentClass.class, Component.class)); |
| 181 | + assertTrue(hasAnnotation(ComposedTransactionalComponentClass.class, ComposedTransactionalComponent.class)); |
| 182 | + } |
| 183 | + |
| 184 | + @Test |
| 185 | + public void hasAnnotationForPlainTypes() { |
| 186 | + assertTrue(hasAnnotation(Order.class, Documented.class)); |
| 187 | + assertTrue(hasAnnotation(NonNullApi.class, Documented.class)); |
| 188 | + assertTrue(hasAnnotation(NonNullApi.class, Nonnull.class)); |
| 189 | + assertTrue(hasAnnotation(ParametersAreNonnullByDefault.class, Nonnull.class)); |
| 190 | + } |
| 191 | + |
151 | 192 | @Test
|
152 | 193 | public void getAllAnnotationAttributesOnNonAnnotatedClass() {
|
153 | 194 | assertNull(getAllAnnotationAttributes(NonAnnotatedClass.class, TX_NAME));
|
|
0 commit comments