diff options
author | android-build-team Robot <android-build-team-robot@google.com> | 2019-03-05 04:03:44 +0000 |
---|---|---|
committer | android-build-team Robot <android-build-team-robot@google.com> | 2019-03-05 04:03:44 +0000 |
commit | 78de805d6b1a71e4d079a8f65d872f42b1263a6f (patch) | |
tree | 55ed0773e6e7b9165f667cbfb326da0ea6665c8e | |
parent | f08f9d07359786f428229cdd3d81c39ab53048f2 (diff) | |
parent | 60c1a9f10eab6a82d53ef4db65525b5bfe12de62 (diff) | |
download | platform_external_doclava-android10-s1-release.tar.gz platform_external_doclava-android10-s1-release.tar.bz2 platform_external_doclava-android10-s1-release.zip |
Snap for 5351881 from 60c1a9f10eab6a82d53ef4db65525b5bfe12de62 to qt-releaseandroid-vts-10.0_r5android-vts-10.0_r4android-vts-10.0_r3android-vts-10.0_r2android-vts-10.0_r1android-mainline-10.0.0_r3android-mainline-10.0.0_r2android-mainline-10.0.0_r1android-cts-10.0_r5android-cts-10.0_r4android-cts-10.0_r3android-cts-10.0_r2android-cts-10.0_r1android-10.0.0_r6android-10.0.0_r5android-10.0.0_r46android-10.0.0_r4android-10.0.0_r3android-10.0.0_r2android-10.0.0_r17android-10.0.0_r11android-10.0.0_r10android-10.0.0_r1android10-tests-releaseandroid10-security-releaseandroid10-s3-releaseandroid10-s2-releaseandroid10-s1-releaseandroid10-releaseandroid10-mainline-releaseandroid10-mainline-a-releaseandroid10-gsi
Change-Id: I647662a72176df6af736ff1721be6bd88241bfee
-rw-r--r-- | res/assets/templates-sdk/macros_override.cs | 12 | ||||
-rw-r--r-- | src/com/google/doclava/AndroidAuxSource.java | 40 |
2 files changed, 52 insertions, 0 deletions
diff --git a/res/assets/templates-sdk/macros_override.cs b/res/assets/templates-sdk/macros_override.cs index 8ef81cf..5c0c482 100644 --- a/res/assets/templates-sdk/macros_override.cs +++ b/res/assets/templates-sdk/macros_override.cs @@ -68,6 +68,7 @@ def:aux_tag_list(tags) ?><?cs elif:tag.kind == "@permission" ?><?cs call:dump_permission(tag) ?><?cs elif:tag.kind == "@service" ?><?cs call:dump_service(tag) ?><?cs elif:tag.kind == "@feature" ?><?cs call:dump_feature(tag) ?><?cs + elif:tag.kind == "@column" ?><?cs call:dump_column(tag) ?><?cs /if ?><?cs /each ?></p><?cs /def ?><?cs @@ -143,3 +144,14 @@ def:dump_feature(tag) ?>Requires the <?cs call:tag_list(tag.values[0].commentTags) ?> feature which can be detected using <?cs call:tag_list(tag.values[1].commentTags) ?>.<?cs /def ?> + +# Print output for @column tags ?><?cs +def:dump_column(tag) ?>This constant represents a column name that can be used with a <?cs + call:tag_list(tag.values[0].commentTags) ?> through a <?cs + call:tag_list(tag.values[1].commentTags) ?> or <?cs + call:tag_list(tag.values[2].commentTags) ?> object. The values stored in this column are <?cs + call:tag_list(tag.values[3].commentTags) ?><?cs + if tag.readOnly ?>, and are read-only and cannot be mutated<?cs + else ?><?cs + /if ?>.<?cs +/def ?> diff --git a/src/com/google/doclava/AndroidAuxSource.java b/src/com/google/doclava/AndroidAuxSource.java index 1c97b18..ca1fbd0 100644 --- a/src/com/google/doclava/AndroidAuxSource.java +++ b/src/com/google/doclava/AndroidAuxSource.java @@ -219,6 +219,46 @@ public class AndroidAuxSource implements AuxSource { valueTags.toArray(TagInfo.getArray(valueTags.size())))); } + // Document provider columns + if ((type == TYPE_FIELD) && annotation.type().qualifiedNameMatches("android", "Column")) { + String value = null; + boolean readOnly = false; + for (AnnotationValueInfo val : annotation.elementValues()) { + switch (val.element().name()) { + case "value": + value = String.valueOf(val.value()); + break; + case "readOnly": + readOnly = Boolean.parseBoolean(String.valueOf(val.value())); + break; + } + } + + ArrayList<TagInfo> valueTags = new ArrayList<>(); + valueTags.add(new ParsedTagInfo("", "", + "{@link android.content.ContentProvider}", null, SourcePositionInfo.UNKNOWN)); + valueTags.add(new ParsedTagInfo("", "", + "{@link android.content.ContentValues}", null, SourcePositionInfo.UNKNOWN)); + valueTags.add(new ParsedTagInfo("", "", + "{@link android.database.Cursor}", null, SourcePositionInfo.UNKNOWN)); + + ClassInfo cursorClass = annotation.type().findClass("android.database.Cursor"); + for (FieldInfo field : cursorClass.fields()) { + if (field.isHiddenOrRemoved()) continue; + if (String.valueOf(field.constantValue()).equals(value)) { + valueTags.add(new ParsedTagInfo("", "", + "{@link android.database.Cursor#" + field.name() + "}", + null, SourcePositionInfo.UNKNOWN)); + } + } + if (valueTags.size() < 4) continue; + + Map<String, String> args = new HashMap<>(); + if (readOnly) args.put("readOnly", "true"); + tags.add(new AuxTagInfo("@column", "@column", SourcePositionInfo.UNKNOWN, args, + valueTags.toArray(TagInfo.getArray(valueTags.size())))); + } + // The remaining annotations below always appear on return docs, and // should not be included in the method body if (type == TYPE_METHOD) continue; |