diff options
author | Jeff Sharkey <jsharkey@google.com> | 2019-03-04 17:09:55 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2019-03-04 17:09:55 +0000 |
commit | 60c1a9f10eab6a82d53ef4db65525b5bfe12de62 (patch) | |
tree | 55ed0773e6e7b9165f667cbfb326da0ea6665c8e | |
parent | eb75011a62b68ae2e74587f352df3efe4ee230be (diff) | |
parent | 176e9f57be142ec55556e0f4ab781df6e393c0ee (diff) | |
download | doclava-android10-qpr1-d-release.tar.gz |
Merge "Automatic documentation for "@Column" annotation."android-mainline-10.0.0_r9android-mainline-10.0.0_r7android-mainline-10.0.0_r5android-mainline-10.0.0_r4android-mainline-10.0.0_r10android-10.0.0_r9android-10.0.0_r8android-10.0.0_r7android-10.0.0_r45android-10.0.0_r44android-10.0.0_r43android-10.0.0_r42android-10.0.0_r41android-10.0.0_r40android-10.0.0_r39android-10.0.0_r38android-10.0.0_r37android-10.0.0_r36android-10.0.0_r35android-10.0.0_r34android-10.0.0_r33android-10.0.0_r32android-10.0.0_r31android-10.0.0_r30android-10.0.0_r29android-10.0.0_r28android-10.0.0_r27android-10.0.0_r26android-10.0.0_r25android-10.0.0_r24android-10.0.0_r23android-10.0.0_r22android-10.0.0_r21android-10.0.0_r20android-10.0.0_r19android-10.0.0_r18android-10.0.0_r16android-10.0.0_r15android-10.0.0_r14android-10.0.0_r13android-10.0.0_r12android10-qpr3-s1-releaseandroid10-qpr3-releaseandroid10-qpr2-s4-releaseandroid10-qpr2-s3-releaseandroid10-qpr2-s2-releaseandroid10-qpr2-s1-releaseandroid10-qpr2-releaseandroid10-qpr1-releaseandroid10-qpr1-mainline-releaseandroid10-qpr1-d-releaseandroid10-qpr1-c-s1-releaseandroid10-qpr1-c-releaseandroid10-qpr1-b-s1-releaseandroid10-qpr1-b-releaseandroid10-mainline-media-releaseandroid10-devandroid10-d4-s1-releaseandroid10-d4-releaseandroid10-c2f2-s2-releaseandroid10-c2f2-s1-releaseandroid10-c2f2-release
-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; |