View Javadoc

1   package org.springframework.roo.classpath.details;
2   
3   import java.util.List;
4   import java.util.Set;
5   
6   import org.springframework.roo.model.JavaType;
7   
8   /**
9    * Provides information about an ITD.
10   * 
11   * <p>
12   * For simplicity of implementation this is not a complete representation of all members and other
13   * information available via Java bytecode. For example, static initialisers and inner classes
14   * are unsupported.
15   * 
16   * @author Ben Alex
17   * @author Stefan Schmidt
18   * @since 1.0
19   *
20   */
21  public interface ItdTypeDetails extends MemberHoldingTypeDetails {
22  	
23  	boolean isPrivilegedAspect();
24  	
25  	/**
26  	 * Returns the name of type which holds the aspect itself.
27  	 * 
28  	 * <p>
29  	 * Note that the type receiving the introductions can be determined via {@link #getName()}.
30  	 * 
31  	 * @return the aspect {@link JavaType} (never null)
32  	 */
33  	JavaType getAspect();
34  	
35  	/**
36  	 * @return the explicitly-registered imports this user wishes to have defined in the ITD (cannot be null, but may be empty)
37  	 */
38  	Set<JavaType> getRegisteredImports();
39  	
40  	/**
41  	 * Lists the field-level annotations.
42  	 * 
43  	 * <p>
44  	 * This includes those annotations declared on the field, together with those defined via the ITD
45  	 * "declare @field: DestinationType: @Annotation" feature.
46  	 * 
47  	 * @return an unmodifiable representation of the field and the annotations declared on this field (may be empty, but never null)
48  	 */
49  	List<DeclaredFieldAnnotationDetails> getFieldAnnotations();
50  	
51  	/**
52  	 * Lists the method-level annotations.
53  	 * 
54  	 * <p>
55  	 * This includes those annotations declared on the method, together with those defined via the ITD
56  	 * "declare @field: DestinationType: @Annotation" feature.
57  	 * 
58  	 * @return an unmodifiable representation of the method and the annotations declared on this method (may be empty, but never null)
59  	 */
60  	List<DeclaredMethodAnnotationDetails> getMethodAnnotations();
61  }