View Javadoc

1   /*
2    * Copyright 2012 The Kuali Foundation
3    *
4    * Licensed under the the Educational Community License, Version 1.0
5    * (the "License"); you may not use this file except in compliance
6    * with the License.  You may obtain a copy of the License at
7    *
8    * http://www.opensource.org/licenses/ecl1.php
9    *
10   * Unless required by applicable law or agreed to in writing, software
11   * distributed under the License is distributed on an "AS IS" BASIS,
12   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13   * See the License for the specific language governing permissions and
14   * limitations under the License.
15   */
16  package org.kuali.student.common.spring;
17  
18  import java.lang.annotation.Annotation;
19  import java.util.HashSet;
20  import java.util.Set;
21  
22  /**
23   * @author Kuali Student Team
24   *
25   */
26  public final class AnnotationUtils {
27  
28  	private AnnotationUtils() {
29  	}
30  	
31  
32  	/**
33  	 * Extract the set of java interfaces from the class hierarchy of the bean provided that match the annotation provided.
34  	 * 
35  	 * @param bean
36  	 * @param annotation
37  	 * @return the set of java interfaces that match the annotation.
38  	 */
39  	public static Set<Class<?>> extractInterfaceContainingAnnotation(Object bean, Class <? extends Annotation> annotation) {
40  		
41  		Class<? extends Object> beanClass = bean.getClass();
42  		
43  		Class<?>[] interfaces = beanClass.getInterfaces();
44  		
45  		Set<Class<?>>matchingInterfaces = new HashSet<Class<?>>();
46  		
47  		for (Class<?> candidateInterface : interfaces) {
48  			
49  			Annotation ws = candidateInterface.getAnnotation(annotation);
50  			
51  			if (ws != null)
52  				matchingInterfaces.add(candidateInterface);
53  		}
54  		
55  		return matchingInterfaces;
56  	}
57  	
58  }