summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJeff Arneson <jarneson@google.com>2014-08-12 15:22:00 -0700
committerJeff Arneson <jarneson@google.com>2014-09-08 21:15:52 +0000
commitb84c41b0cd0531aa83f51a791d7457b4819bee7a (patch)
treeba8de3a15515d9517ff22d64a0e17be82d46d8e0 /src
parent2177599f538d80833a06783e7d272f97dc941481 (diff)
downloadandroid_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.java30
-rw-r--r--src/com/google/doclava/ClassInfo.java27
-rw-r--r--src/com/google/doclava/MemberInfo.java22
-rw-r--r--src/com/google/doclava/MethodInfo.java7
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);
}