diff options
author | Jeff Arneson <jarneson@google.com> | 2014-08-12 15:22:00 -0700 |
---|---|---|
committer | Jeff Arneson <jarneson@google.com> | 2014-09-08 21:15:52 +0000 |
commit | b84c41b0cd0531aa83f51a791d7457b4819bee7a (patch) | |
tree | ba8de3a15515d9517ff22d64a0e17be82d46d8e0 /src | |
parent | 2177599f538d80833a06783e7d272f97dc941481 (diff) | |
download | android_external_doclava-b84c41b0cd0531aa83f51a791d7457b4819bee7a.tar.gz android_external_doclava-b84c41b0cd0531aa83f51a791d7457b4819bee7a.tar.bz2 android_external_doclava-b84c41b0cd0531aa83f51a791d7457b4819bee7a.zip |
DO NOT MERGE Spit out annotations used in showAnnotations param
Update Class, Member, and Method infos to track what annotations
were used to bypass @hide and the like. Pass those out as an
array to be rendered in the HTML.
Bug: 16848303
Change-Id: I98ebc574d4b8eaaa1134e260518ddc2ddd43f99f
(cherry picked from commit 051dace82cf6a43923b17f95974d93a23ed3dd87)
Diffstat (limited to 'src')
-rw-r--r-- | src/com/google/doclava/AnnotationInstanceInfo.java | 30 | ||||
-rw-r--r-- | src/com/google/doclava/ClassInfo.java | 27 | ||||
-rw-r--r-- | src/com/google/doclava/MemberInfo.java | 22 | ||||
-rw-r--r-- | src/com/google/doclava/MethodInfo.java | 7 |
4 files changed, 65 insertions, 21 deletions
diff --git a/src/com/google/doclava/AnnotationInstanceInfo.java b/src/com/google/doclava/AnnotationInstanceInfo.java index ff17e8d..c72ca9a 100644 --- a/src/com/google/doclava/AnnotationInstanceInfo.java +++ b/src/com/google/doclava/AnnotationInstanceInfo.java @@ -16,6 +16,8 @@ package com.google.doclava; +import com.google.clearsilver.jsilver.data.Data; + import java.util.ArrayList; import java.util.Arrays; @@ -117,4 +119,32 @@ public class AnnotationInstanceInfo implements Resolvable { return allResolved; } + + public static void makeLinkListHDF(Data data, String base, AnnotationInstanceInfo[] annotations) { + if (annotations == null) return; + + final int N = annotations.length; + for (int i = 0; i < N; i++) { + AnnotationInstanceInfo aii = annotations[i]; + aii.type().makeShortDescrHDF(data, base + "." + i); + } + } + + /** + * Get a new list containing the set of annotations that are shared between + * the input annotations collection and the names of annotations passed in + * the showAnnotations parameter + */ + public static ArrayList<AnnotationInstanceInfo> getShowAnnotationsIntersection( + ArrayList<AnnotationInstanceInfo> annotations) { + ArrayList<AnnotationInstanceInfo> list = new ArrayList<AnnotationInstanceInfo>(); + if (annotations != null) { + for (AnnotationInstanceInfo info : annotations) { + if (Doclava.showAnnotations.contains(info.type().qualifiedName())) { + list.add(info); + } + } + } + return list; + } } diff --git a/src/com/google/doclava/ClassInfo.java b/src/com/google/doclava/ClassInfo.java index 7ab7a6a..e8b1f89 100644 --- a/src/com/google/doclava/ClassInfo.java +++ b/src/com/google/doclava/ClassInfo.java @@ -104,6 +104,7 @@ public class ClassInfo extends DocInfo implements ContainerInfo, Comparable, Sco mQualifiedTypeName = qualifiedTypeName; mIsPrimitive = isPrimitive; mAnnotations = annotations; + mShowAnnotations = AnnotationInstanceInfo.getShowAnnotationsIntersection(annotations); } public void init(TypeInfo typeInfo, ArrayList<ClassInfo> interfaces, @@ -135,6 +136,7 @@ public class ClassInfo extends DocInfo implements ContainerInfo, Comparable, Sco mRealSuperclass = superclass; mRealSuperclassType = superclassType; mAnnotations = annotations; + mShowAnnotations = AnnotationInstanceInfo.getShowAnnotationsIntersection(annotations); // after providing new methods and new superclass info,clear any cached // lists of self + superclass methods, ctors, etc. @@ -1025,6 +1027,12 @@ public class ClassInfo extends DocInfo implements ContainerInfo, Comparable, Sco if (isDeprecated()) { data.setValue(base + ".deprecatedsince", getDeprecatedSince()); } + + AnnotationInstanceInfo.makeLinkListHDF( + data, + base + ".showAnnotations", + showAnnotations().toArray(new AnnotationInstanceInfo[showAnnotations().size()])); + setFederatedReferences(data, base); } @@ -1062,6 +1070,11 @@ public class ClassInfo extends DocInfo implements ContainerInfo, Comparable, Sco data.setValue("class.abstract", "abstract"); } + AnnotationInstanceInfo.makeLinkListHDF( + data, + "class.showAnnotations", + showAnnotations().toArray(new AnnotationInstanceInfo[showAnnotations().size()])); + // class info String kind = kind(); if (kind != null) { @@ -1414,14 +1427,11 @@ public class ClassInfo extends DocInfo implements ContainerInfo, Comparable, Sco } public boolean hasShowAnnotation() { - if (annotations() != null) { - for (AnnotationInstanceInfo info : annotations()) { - if (Doclava.showAnnotations.contains(info.type().qualifiedName())) { - return true; - } - } - } - return false; + return mShowAnnotations.size() > 0; + } + + public ArrayList<AnnotationInstanceInfo> showAnnotations() { + return mShowAnnotations; } private MethodInfo matchMethod(ArrayList<MethodInfo> methods, String name, String[] params, @@ -1686,6 +1696,7 @@ public class ClassInfo extends DocInfo implements ContainerInfo, Comparable, Sco private TypeInfo mRealSuperclassType; private ClassInfo mSuperclass; private ArrayList<AnnotationInstanceInfo> mAnnotations; + private ArrayList<AnnotationInstanceInfo> mShowAnnotations; private boolean mSuperclassInit; private boolean mDeprecatedKnown; diff --git a/src/com/google/doclava/MemberInfo.java b/src/com/google/doclava/MemberInfo.java index 800edba..76087eb 100644 --- a/src/com/google/doclava/MemberInfo.java +++ b/src/com/google/doclava/MemberInfo.java @@ -38,30 +38,23 @@ public abstract class MemberInfo extends DocInfo implements Comparable, Scoped { mIsSynthetic = isSynthetic; mKind = kind; mAnnotations = annotations; + mShowAnnotations = AnnotationInstanceInfo.getShowAnnotationsIntersection(annotations); } public abstract boolean isExecutable(); @Override public boolean isHidden() { - if (mAnnotations != null) { - for (AnnotationInstanceInfo info : mAnnotations) { - if (Doclava.showAnnotations.contains(info.type().qualifiedName())) { - return false; - } - } + if (mShowAnnotations.size() > 0) { + return false; } return super.isHidden(); } @Override public boolean isRemoved() { - if (mAnnotations != null) { - for (AnnotationInstanceInfo info : mAnnotations) { - if (Doclava.showAnnotations.contains(info.type().qualifiedName())) { - return false; - } - } + if (mShowAnnotations.size() > 0) { + return false; } return super.isRemoved(); } @@ -163,6 +156,10 @@ public abstract class MemberInfo extends DocInfo implements Comparable, Scoped { return mAnnotations; } + public ArrayList<AnnotationInstanceInfo> showAnnotations() { + return mShowAnnotations; + } + ClassInfo mContainingClass; ClassInfo mRealContainingClass; String mName; @@ -176,5 +173,6 @@ public abstract class MemberInfo extends DocInfo implements Comparable, Scoped { boolean mIsSynthetic; String mKind; private ArrayList<AnnotationInstanceInfo> mAnnotations; + private ArrayList<AnnotationInstanceInfo> mShowAnnotations; } diff --git a/src/com/google/doclava/MethodInfo.java b/src/com/google/doclava/MethodInfo.java index 999de0b..8c5e271 100644 --- a/src/com/google/doclava/MethodInfo.java +++ b/src/com/google/doclava/MethodInfo.java @@ -575,7 +575,12 @@ public class MethodInfo extends MemberInfo implements AbstractMethodInfo, Resolv if (mTypeParameters != null) { TypeInfo.makeHDF(data, base + ".generic.typeArguments", mTypeParameters, false); } - + + AnnotationInstanceInfo.makeLinkListHDF( + data, + base + ".showAnnotations", + showAnnotations().toArray(new AnnotationInstanceInfo[showAnnotations().size()])); + setFederatedReferences(data, base); } |