@Test public void adaptFromEmptyArrayToAnyComponentType() { AttributeMethods methods = AttributeMethods.forAnnotationType(ArrayTypes.class); Map<String, Object> attributes = new HashMap<>(); for (int i = 0; i < methods.size(); i++) { attributes.put(methods.get(i).getName(), new Object[] {}); } MergedAnnotation<ArrayTypes> annotation = TypeMappedAnnotation.of(null, null, ArrayTypes.class, attributes); assertThat(annotation.getValue("stringValue")).contains(new String[] {}); assertThat(annotation.getValue("byteValue")).contains(new byte[] {}); assertThat(annotation.getValue("shortValue")).contains(new short[] {}); assertThat(annotation.getValue("intValue")).contains(new int[] {}); assertThat(annotation.getValue("longValue")).contains(new long[] {}); assertThat(annotation.getValue("booleanValue")).contains(new boolean[] {}); assertThat(annotation.getValue("charValue")).contains(new char[] {}); assertThat(annotation.getValue("doubleValue")).contains(new double[] {}); assertThat(annotation.getValue("floatValue")).contains(new float[] {}); assertThat(annotation.getValue("classValue")).contains(new Class<?>[] {}); assertThat(annotation.getValue("annotationValue")).contains(new MergedAnnotation<?>[] {}); assertThat(annotation.getValue("enumValue")).contains(new ExampleEnum[] {}); }
@Override public <A extends Annotation> MergedAnnotation<A> get(Class<A> annotationType) { return get(annotationType, null, null); }
TypeMappedAnnotations implements MergedAnnotations { @Override public <A extends Annotation> MergedAnnotation<A> get(Class<A> annotationType) { return get(annotationType, null, null); } }
TypeMappedAnnotations implements MergedAnnotations { @Override public <A extends Annotation> MergedAnnotation<A> get(Class<A> annotationType) { return get(annotationType, null, null); } private  TypeMappedAnnotations(AnnotatedElement element, SearchStrategy searchStrategy,
			RepeatableContainers repeatableContainers, AnnotationFilter annotationFilter); private  TypeMappedAnnotations(@Nullable Object source, Annotation[] annotations,
			RepeatableContainers repeatableContainers, AnnotationFilter annotationFilter); }
TypeMappedAnnotations implements MergedAnnotations { @Override public <A extends Annotation> MergedAnnotation<A> get(Class<A> annotationType) { return get(annotationType, null, null); } private  TypeMappedAnnotations(AnnotatedElement element, SearchStrategy searchStrategy,
			RepeatableContainers repeatableContainers, AnnotationFilter annotationFilter); private  TypeMappedAnnotations(@Nullable Object source, Annotation[] annotations,
			RepeatableContainers repeatableContainers, AnnotationFilter annotationFilter); @Override boolean isPresent(Class<A> annotationType); @Override boolean isPresent(String annotationType); @Override boolean isDirectlyPresent(Class<A> annotationType); @Override boolean isDirectlyPresent(String annotationType); @Override MergedAnnotation<A> get(Class<A> annotationType); @Override MergedAnnotation<A> get(Class<A> annotationType,
			@Nullable Predicate<? super MergedAnnotation<A>> predicate); @Override MergedAnnotation<A> get(Class<A> annotationType,
			@Nullable Predicate<? super MergedAnnotation<A>> predicate,
			@Nullable MergedAnnotationSelector<A> selector); @Override MergedAnnotation<A> get(String annotationType); @Override MergedAnnotation<A> get(String annotationType,
			@Nullable Predicate<? super MergedAnnotation<A>> predicate); @Override MergedAnnotation<A> get(String annotationType,
			@Nullable Predicate<? super MergedAnnotation<A>> predicate,
			@Nullable MergedAnnotationSelector<A> selector); @Override Stream<MergedAnnotation<A>> stream(Class<A> annotationType); @Override Stream<MergedAnnotation<A>> stream(String annotationType); @Override Stream<MergedAnnotation<Annotation>> stream(); @Override Iterator<MergedAnnotation<Annotation>> iterator(); @Override Spliterator<MergedAnnotation<Annotation>> spliterator(); }
TypeMappedAnnotations implements MergedAnnotations { @Override public <A extends Annotation> MergedAnnotation<A> get(Class<A> annotationType) { return get(annotationType, null, null); } private  TypeMappedAnnotations(AnnotatedElement element, SearchStrategy searchStrategy,
			RepeatableContainers repeatableContainers, AnnotationFilter annotationFilter); private  TypeMappedAnnotations(@Nullable Object source, Annotation[] annotations,
			RepeatableContainers repeatableContainers, AnnotationFilter annotationFilter); @Override boolean isPresent(Class<A> annotationType); @Override boolean isPresent(String annotationType); @Override boolean isDirectlyPresent(Class<A> annotationType); @Override boolean isDirectlyPresent(String annotationType); @Override MergedAnnotation<A> get(Class<A> annotationType); @Override MergedAnnotation<A> get(Class<A> annotationType,
			@Nullable Predicate<? super MergedAnnotation<A>> predicate); @Override MergedAnnotation<A> get(Class<A> annotationType,
			@Nullable Predicate<? super MergedAnnotation<A>> predicate,
			@Nullable MergedAnnotationSelector<A> selector); @Override MergedAnnotation<A> get(String annotationType); @Override MergedAnnotation<A> get(String annotationType,
			@Nullable Predicate<? super MergedAnnotation<A>> predicate); @Override MergedAnnotation<A> get(String annotationType,
			@Nullable Predicate<? super MergedAnnotation<A>> predicate,
			@Nullable MergedAnnotationSelector<A> selector); @Override Stream<MergedAnnotation<A>> stream(Class<A> annotationType); @Override Stream<MergedAnnotation<A>> stream(String annotationType); @Override Stream<MergedAnnotation<Annotation>> stream(); @Override Iterator<MergedAnnotation<Annotation>> iterator(); @Override Spliterator<MergedAnnotation<Annotation>> spliterator();  }