1920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson/* 2920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson * Copyright (C) 2010 Google Inc. 3920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson * 4920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson * Licensed under the Apache License, Version 2.0 (the "License"); 5920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson * you may not use this file except in compliance with the License. 6920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson * You may obtain a copy of the License at 7920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson * 8920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson * http://www.apache.org/licenses/LICENSE-2.0 9920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson * 10920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson * Unless required by applicable law or agreed to in writing, software 11920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson * distributed under the License is distributed on an "AS IS" BASIS, 12920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson * See the License for the specific language governing permissions and 14920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson * limitations under the License. 15920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson */ 16920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson 17920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodsonpackage com.google.doclava; 18920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson 19d6eaacbb9eb56763d38a3815fc509b92ed98a585Andrew Sappersteinimport java.util.ArrayList; 20d6eaacbb9eb56763d38a3815fc509b92ed98a585Andrew Sapperstein 21920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodsonpublic abstract class MemberInfo extends DocInfo implements Comparable, Scoped { 22920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson public MemberInfo(String rawCommentText, String name, String signature, 23920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson ClassInfo containingClass, ClassInfo realContainingClass, boolean isPublic, 24920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson boolean isProtected, boolean isPackagePrivate, boolean isPrivate, boolean isFinal, 25920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson boolean isStatic, boolean isSynthetic, String kind, SourcePositionInfo position, 26d6eaacbb9eb56763d38a3815fc509b92ed98a585Andrew Sapperstein ArrayList<AnnotationInstanceInfo> annotations) { 27920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson super(rawCommentText, position); 28920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson mName = name; 29920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson mSignature = signature; 30920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson mContainingClass = containingClass; 31920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson mRealContainingClass = realContainingClass; 32920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson mIsPublic = isPublic; 33920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson mIsProtected = isProtected; 34920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson mIsPackagePrivate = isPackagePrivate; 35920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson mIsPrivate = isPrivate; 36920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson mIsFinal = isFinal; 37920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson mIsStatic = isStatic; 38920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson mIsSynthetic = isSynthetic; 39920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson mKind = kind; 40920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson mAnnotations = annotations; 41920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson } 42920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson 43920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson public abstract boolean isExecutable(); 44920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson 45ca151a9bbea066b0efd0e423bcade8895a83db71Jeff Hamilton @Override 46ca151a9bbea066b0efd0e423bcade8895a83db71Jeff Hamilton public boolean isHidden() { 47ca151a9bbea066b0efd0e423bcade8895a83db71Jeff Hamilton if (mAnnotations != null) { 48ca151a9bbea066b0efd0e423bcade8895a83db71Jeff Hamilton for (AnnotationInstanceInfo info : mAnnotations) { 49ca151a9bbea066b0efd0e423bcade8895a83db71Jeff Hamilton if (Doclava.showAnnotations.contains(info.type().qualifiedName())) { 50ca151a9bbea066b0efd0e423bcade8895a83db71Jeff Hamilton return false; 51ca151a9bbea066b0efd0e423bcade8895a83db71Jeff Hamilton } 52ca151a9bbea066b0efd0e423bcade8895a83db71Jeff Hamilton } 53ca151a9bbea066b0efd0e423bcade8895a83db71Jeff Hamilton } 54ca151a9bbea066b0efd0e423bcade8895a83db71Jeff Hamilton return super.isHidden(); 55ca151a9bbea066b0efd0e423bcade8895a83db71Jeff Hamilton } 56ca151a9bbea066b0efd0e423bcade8895a83db71Jeff Hamilton 57920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson public String anchor() { 58920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson if (mSignature != null) { 59920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson return mName + mSignature; 60920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson } else { 61920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson return mName; 62920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson } 63920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson } 64920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson 65920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson public String htmlPage() { 66920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson return mContainingClass.htmlPage() + "#" + anchor(); 67920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson } 68920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson 69920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson public int compareTo(Object that) { 70920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson return this.htmlPage().compareTo(((MemberInfo) that).htmlPage()); 71920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson } 72920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson 73920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson public String name() { 74920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson return mName; 75920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson } 76920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson 77920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson public String signature() { 78920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson return mSignature; 79920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson } 80920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson 81920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson public ClassInfo realContainingClass() { 82920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson return mRealContainingClass; 83920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson } 84920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson 85920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson public ClassInfo containingClass() { 86920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson return mContainingClass; 87920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson } 88920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson 89920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson public boolean isPublic() { 90920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson return mIsPublic; 91920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson } 92920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson 93920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson public boolean isProtected() { 94920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson return mIsProtected; 95920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson } 96920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson 97920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson public boolean isPackagePrivate() { 98920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson return mIsPackagePrivate; 99920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson } 100920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson 101920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson public boolean isPrivate() { 102920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson return mIsPrivate; 103920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson } 104920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson 105920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson public String scope() { 106920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson if (isPublic()) { 107920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson return "public"; 108920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson } else if (isProtected()) { 109920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson return "protected"; 110920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson } else if (isPackagePrivate()) { 111920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson return ""; 112920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson } else if (isPrivate()) { 113920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson return "private"; 114920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson } else { 115920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson throw new RuntimeException("invalid scope for object " + this); 116920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson } 117920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson } 118920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson 119920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson public boolean isStatic() { 120920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson return mIsStatic; 121920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson } 122920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson 123920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson public boolean isFinal() { 124920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson return mIsFinal; 125920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson } 126920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson 127920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson public boolean isSynthetic() { 128920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson return mIsSynthetic; 129920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson } 130920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson 131920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson @Override 132920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson public ContainerInfo parent() { 133920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson return mContainingClass; 134920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson } 135920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson 136920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson public boolean checkLevel() { 137920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson return Doclava.checkLevel(mIsPublic, mIsProtected, mIsPackagePrivate, mIsPrivate, isHidden()); 138920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson } 139920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson 140920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson public String kind() { 141920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson return mKind; 142920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson } 143920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson 144d6eaacbb9eb56763d38a3815fc509b92ed98a585Andrew Sapperstein public ArrayList<AnnotationInstanceInfo> annotations() { 145920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson return mAnnotations; 146920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson } 147920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson 148920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson ClassInfo mContainingClass; 149920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson ClassInfo mRealContainingClass; 150920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson String mName; 151920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson String mSignature; 152920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson boolean mIsPublic; 153920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson boolean mIsProtected; 154920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson boolean mIsPackagePrivate; 155920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson boolean mIsPrivate; 156920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson boolean mIsFinal; 157920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson boolean mIsStatic; 158920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson boolean mIsSynthetic; 159920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson String mKind; 160d6eaacbb9eb56763d38a3815fc509b92ed98a585Andrew Sapperstein private ArrayList<AnnotationInstanceInfo> mAnnotations; 161920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson 162920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson} 163