1 19 package org.netbeans.modules.javacore.parser; 20 21 import org.netbeans.lib.java.parser.ASTree; 22 import org.netbeans.lib.java.parser.ASTreeTypes; 23 import org.netbeans.modules.javacore.jmiimpl.javamodel.MetadataElement; 24 import org.netbeans.modules.javacore.jmiimpl.javamodel.SemiPersistentElement; 25 26 30 public class ClassInfo extends FeatureInfo { 31 public static final int CLASS_TYPE = ASTreeTypes.CLASS_DECLARATION; 32 public static final int INTERFACE_TYPE = ASTreeTypes.INTERFACE_DECLARATION; 33 public static final int ANON_CLASS_TYPE = ASTreeTypes.CLASS_BODY_DECLARATIONS; 34 public static final int ANNOTATIONTYPE_TYPE = ASTreeTypes.ANNOTATION_TYPE_DECLARATION; 35 36 public final FeatureInfo[] features; 37 public final NameRef superclass; public final NameRef[] interfaces; public final TypeParamInfo[] typeParams; 40 41 public ClassInfo(ASTree tree, int infoType, String name, int modifiers, 42 FeatureInfo[] features, NameRef superclass, NameRef[] interfaces, 43 TypeParamInfo[] typeParams, AnnotationInfo[] annotations) 44 { 45 super(tree, infoType, name, modifiers, annotations); 46 this.features = features == null ? EMPTY_FEATURES : features; 47 this.superclass = superclass; 48 this.interfaces = interfaces == null ? EMPTY_NAMEREFS : interfaces; 49 this.typeParams = typeParams == null ? EMPTY_TYPE_PARAMS : typeParams; 50 } 51 52 public ASTree[] getInterfacesAST(SemiPersistentElement owner) { 53 ASTree ifcAST; 54 ASTree tree = owner.getASTree(); 55 if (tree != null) { 56 ifcAST = tree.getSubTrees()[4]; 57 } else { 58 ifcAST = null; 59 } 60 return MetadataElement.getChildNodes(ifcAST, ASTreeTypes.TYPE_LIST); 61 } 62 63 public ASTree getTypeAST(SemiPersistentElement owner) { 64 ASTree tree = owner.getASTree(); 65 if (tree != null) { 66 ASTree superClass = tree.getSubTrees()[3]; 67 return superClass == null ? null : superClass.getSubTrees()[0]; 68 } 69 return null; 70 } 71 } 72 | Popular Tags |