Include annotation property values in output.
When editing annotations, we want the ability *not* to overwrite any
existing annotation properties already in place. Include any properties
set on the annotation in the output, so that the edit_annotations script
can know that they're there.
The annotation properties are encoded like URL query parameters for
convenience; it makes them easy to encode here & subsequently decode on
the other side (in Python).
Test: m framework-annotation-proc & inspect output.
(cherry picked from commit bd7077065c)
Merged-In: I71fb1215ad2790751be336b4955c163bb323a4a6
Change-Id: I0b33e2b379076346ce258d93a9225a9143b7d91a
This commit is contained in:
@@ -28,6 +28,7 @@ import com.sun.tools.javac.util.Position;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.PrintStream;
|
||||
import java.net.URLEncoder;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.TreeMap;
|
||||
@@ -38,7 +39,9 @@ import javax.annotation.processing.RoundEnvironment;
|
||||
import javax.annotation.processing.SupportedAnnotationTypes;
|
||||
import javax.lang.model.SourceVersion;
|
||||
import javax.lang.model.element.AnnotationMirror;
|
||||
import javax.lang.model.element.AnnotationValue;
|
||||
import javax.lang.model.element.Element;
|
||||
import javax.lang.model.element.ExecutableElement;
|
||||
import javax.lang.model.element.TypeElement;
|
||||
|
||||
/**
|
||||
@@ -108,10 +111,25 @@ public class UnsupportedAppUsageProcessor extends AbstractProcessor {
|
||||
"startline",
|
||||
"startcol",
|
||||
"endline",
|
||||
"endcol"
|
||||
"endcol",
|
||||
"properties"
|
||||
);
|
||||
}
|
||||
|
||||
private String encodeAnnotationProperties(AnnotationMirror annotation) {
|
||||
StringBuilder sb = new StringBuilder();
|
||||
for (Map.Entry<? extends ExecutableElement, ? extends AnnotationValue> e
|
||||
: annotation.getElementValues().entrySet()) {
|
||||
if (sb.length() > 0) {
|
||||
sb.append("&");
|
||||
}
|
||||
sb.append(e.getKey().getSimpleName())
|
||||
.append("=")
|
||||
.append(URLEncoder.encode(e.getValue().toString()));
|
||||
}
|
||||
return sb.toString();
|
||||
}
|
||||
|
||||
/**
|
||||
* Maps an annotated element to the source position of the @UnsupportedAppUsage annotation
|
||||
* attached to it. It returns CSV in the format:
|
||||
@@ -137,7 +155,8 @@ public class UnsupportedAppUsageProcessor extends AbstractProcessor {
|
||||
lines.getLineNumber(pair.fst.pos().getStartPosition()),
|
||||
lines.getColumnNumber(pair.fst.pos().getStartPosition()),
|
||||
lines.getLineNumber(pair.fst.pos().getEndPosition(pair.snd.endPositions)),
|
||||
lines.getColumnNumber(pair.fst.pos().getEndPosition(pair.snd.endPositions)));
|
||||
lines.getColumnNumber(pair.fst.pos().getEndPosition(pair.snd.endPositions)),
|
||||
encodeAnnotationProperties(unsupportedAppUsage));
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user