summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMorad Abdelrahman <moradabdr@google.com>2015-12-29 13:25:05 +0000
committerMorad Abdelrahman <moradabdr@google.com>2015-12-29 13:35:05 +0000
commit7c80d0e9086eef289d323661977cbfb771d95a2a (patch)
treeec0a1af9623f507d4fa9cdcae11ffb5b157777af
parent54c8e62674dc7900c316c3e4b3762ef1c9a9578a (diff)
downloadplatform_external_doclava-7c80d0e9086eef289d323661977cbfb771d95a2a.tar.gz
platform_external_doclava-7c80d0e9086eef289d323661977cbfb771d95a2a.tar.bz2
platform_external_doclava-7c80d0e9086eef289d323661977cbfb771d95a2a.zip
Make doclava keep parameter annotations in generated stubs.
Curently doclava only keeps annotations on classes and methods, this change makes it keep stuff like @Nullable on method parameters. Change-Id: I757f1f515e5f88ecae3a28cef74238e3f82bc30b Bug: 25209803
-rw-r--r--src/com/google/doclava/Converter.java3
-rw-r--r--src/com/google/doclava/InfoBuilder.java4
-rw-r--r--src/com/google/doclava/ParameterInfo.java12
-rw-r--r--src/com/google/doclava/Stubs.java4
-rw-r--r--src/com/google/doclava/apicheck/ApiFile.java7
-rw-r--r--src/com/google/doclava/apicheck/XmlApiFile.java8
6 files changed, 30 insertions, 8 deletions
diff --git a/src/com/google/doclava/Converter.java b/src/com/google/doclava/Converter.java
index 555fc39..af3068e 100644
--- a/src/com/google/doclava/Converter.java
+++ b/src/com/google/doclava/Converter.java
@@ -227,7 +227,8 @@ public class Converter {
if (p == null) return null;
ParameterInfo pi =
new ParameterInfo(p.name(), p.typeName(), Converter.obtainType(p.type()), isVarArg,
- Converter.convertSourcePosition(pos));
+ Converter.convertSourcePosition(pos),
+ Arrays.asList(Converter.convertAnnotationInstances(p.annotations())));
return pi;
}
diff --git a/src/com/google/doclava/InfoBuilder.java b/src/com/google/doclava/InfoBuilder.java
index a07f990..9f7e340 100644
--- a/src/com/google/doclava/InfoBuilder.java
+++ b/src/com/google/doclava/InfoBuilder.java
@@ -29,6 +29,7 @@ import org.antlr.runtime.tree.Tree;
import java.io.IOException;
import java.util.ArrayList;
+import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
@@ -1142,7 +1143,8 @@ public class InfoBuilder {
commentAndPosition.setPosition(paramPart);
parameters.add(new ParameterInfo(name, type.qualifiedTypeName(), type,
- isVarArg, commentAndPosition.getPosition()));
+ isVarArg, commentAndPosition.getPosition(),
+ Collections.<AnnotationInstanceInfo>emptyList()));
}
}
}
diff --git a/src/com/google/doclava/ParameterInfo.java b/src/com/google/doclava/ParameterInfo.java
index b911283..10000df 100644
--- a/src/com/google/doclava/ParameterInfo.java
+++ b/src/com/google/doclava/ParameterInfo.java
@@ -20,16 +20,18 @@ import com.google.clearsilver.jsilver.data.Data;
import java.util.Collections;
import java.util.HashSet;
+import java.util.List;
import java.util.Map;
public class ParameterInfo {
public ParameterInfo(String name, String typeName, TypeInfo type, boolean isVarArg,
- SourcePositionInfo position) {
+ SourcePositionInfo position, List<AnnotationInstanceInfo> annotationInstanceInfos) {
mName = name;
mTypeName = typeName;
mType = type;
mIsVarArg = isVarArg;
mPosition = position;
+ mAnnotations = annotationInstanceInfos;
}
/**
@@ -37,7 +39,8 @@ public class ParameterInfo {
*/
public ParameterInfo cloneWithTypeArguments(Map<String, TypeInfo> typeArgumentMapping) {
return new ParameterInfo(
- mName, mTypeName, mType.getTypeWithArguments(typeArgumentMapping), mIsVarArg, mPosition);
+ mName, mTypeName, mType.getTypeWithArguments(typeArgumentMapping),
+ mIsVarArg, mPosition, mAnnotations);
}
TypeInfo type() {
@@ -60,6 +63,10 @@ public class ParameterInfo {
return mIsVarArg;
}
+ List<AnnotationInstanceInfo> annotations() {
+ return mAnnotations;
+ }
+
public void makeHDF(Data data, String base, boolean isLastVararg, HashSet<String> typeVariables) {
makeHDF(data, base, isLastVararg, typeVariables, Collections.<String, TypeInfo>emptyMap());
}
@@ -100,4 +107,5 @@ public class ParameterInfo {
TypeInfo mType;
boolean mIsVarArg;
SourcePositionInfo mPosition;
+ List<AnnotationInstanceInfo> mAnnotations;
}
diff --git a/src/com/google/doclava/Stubs.java b/src/com/google/doclava/Stubs.java
index 0578302..21d7d4b 100644
--- a/src/com/google/doclava/Stubs.java
+++ b/src/com/google/doclava/Stubs.java
@@ -667,7 +667,9 @@ public class Stubs {
int count = 1;
int size = method.parameters().size();
for (ParameterInfo param : method.parameters()) {
- stream.print(comma + fullParameterTypeName(method, param.type(), count == size) + " "
+ stream.print(comma);
+ writeAnnotations(stream, param.annotations(), false);
+ stream.print(fullParameterTypeName(method, param.type(), count == size) + " "
+ param.name());
comma = ", ";
count++;
diff --git a/src/com/google/doclava/apicheck/ApiFile.java b/src/com/google/doclava/apicheck/ApiFile.java
index 3f96943..81783fc 100644
--- a/src/com/google/doclava/apicheck/ApiFile.java
+++ b/src/com/google/doclava/apicheck/ApiFile.java
@@ -29,7 +29,9 @@ import com.google.doclava.TypeInfo;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
+import java.util.Collections;
import java.util.LinkedList;
+import java.util.List;
class ApiFile {
@@ -488,10 +490,13 @@ class ApiFile {
} else {
throw new ApiParseException("expected , found " + token, tokenizer.getLine());
}
+ // api file does not preserve annotations.
+ List<AnnotationInstanceInfo> annotations = Collections.emptyList();
method.addParameter(new ParameterInfo(name, type,
Converter.obtainTypeFromString(type),
type.endsWith("..."),
- tokenizer.pos()));
+ tokenizer.pos(),
+ annotations));
if (type.endsWith("...")) {
method.setVarargs(true);
}
diff --git a/src/com/google/doclava/apicheck/XmlApiFile.java b/src/com/google/doclava/apicheck/XmlApiFile.java
index 8b15d09..562fcea 100644
--- a/src/com/google/doclava/apicheck/XmlApiFile.java
+++ b/src/com/google/doclava/apicheck/XmlApiFile.java
@@ -35,6 +35,8 @@ import org.xml.sax.helpers.XMLReaderFactory;
import java.io.InputStream;
import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
import java.util.Stack;
class XmlApiFile extends DefaultHandler {
@@ -202,8 +204,10 @@ class XmlApiFile extends DefaultHandler {
TypeInfo type = Converter.obtainTypeFromString(typeName);
boolean isVarArg = typeName.endsWith("...");
SourcePositionInfo position = null;
-
- mCurrentMethod.addParameter(new ParameterInfo(name, typeName, type, isVarArg, position));
+ List<AnnotationInstanceInfo> annotations = Collections.emptyList();
+
+ mCurrentMethod.addParameter(
+ new ParameterInfo(name, typeName, type, isVarArg, position, annotations));
mCurrentMethod.setVarargs(isVarArg);
} else if (qName.equals("exception")) {
mCurrentMethod.addException(attributes.getValue("type"));