Loading tools/processors/unsupportedappusage/src/android/processor/unsupportedappusage/UnsupportedAppUsageProcessor.java +21 −2 Original line number Original line Diff line number Diff line Loading @@ -28,6 +28,7 @@ import com.sun.tools.javac.util.Position; import java.io.IOException; import java.io.IOException; import java.io.PrintStream; import java.io.PrintStream; import java.net.URLEncoder; import java.util.Map; import java.util.Map; import java.util.Set; import java.util.Set; import java.util.TreeMap; import java.util.TreeMap; Loading @@ -38,7 +39,9 @@ import javax.annotation.processing.RoundEnvironment; import javax.annotation.processing.SupportedAnnotationTypes; import javax.annotation.processing.SupportedAnnotationTypes; import javax.lang.model.SourceVersion; import javax.lang.model.SourceVersion; import javax.lang.model.element.AnnotationMirror; import javax.lang.model.element.AnnotationMirror; import javax.lang.model.element.AnnotationValue; import javax.lang.model.element.Element; import javax.lang.model.element.Element; import javax.lang.model.element.ExecutableElement; import javax.lang.model.element.TypeElement; import javax.lang.model.element.TypeElement; /** /** Loading Loading @@ -108,10 +111,25 @@ public class UnsupportedAppUsageProcessor extends AbstractProcessor { "startline", "startline", "startcol", "startcol", "endline", "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 * Maps an annotated element to the source position of the @UnsupportedAppUsage annotation * attached to it. It returns CSV in the format: * attached to it. It returns CSV in the format: Loading @@ -137,7 +155,8 @@ public class UnsupportedAppUsageProcessor extends AbstractProcessor { lines.getLineNumber(pair.fst.pos().getStartPosition()), lines.getLineNumber(pair.fst.pos().getStartPosition()), lines.getColumnNumber(pair.fst.pos().getStartPosition()), lines.getColumnNumber(pair.fst.pos().getStartPosition()), lines.getLineNumber(pair.fst.pos().getEndPosition(pair.snd.endPositions)), 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)); } } /** /** Loading Loading
tools/processors/unsupportedappusage/src/android/processor/unsupportedappusage/UnsupportedAppUsageProcessor.java +21 −2 Original line number Original line Diff line number Diff line Loading @@ -28,6 +28,7 @@ import com.sun.tools.javac.util.Position; import java.io.IOException; import java.io.IOException; import java.io.PrintStream; import java.io.PrintStream; import java.net.URLEncoder; import java.util.Map; import java.util.Map; import java.util.Set; import java.util.Set; import java.util.TreeMap; import java.util.TreeMap; Loading @@ -38,7 +39,9 @@ import javax.annotation.processing.RoundEnvironment; import javax.annotation.processing.SupportedAnnotationTypes; import javax.annotation.processing.SupportedAnnotationTypes; import javax.lang.model.SourceVersion; import javax.lang.model.SourceVersion; import javax.lang.model.element.AnnotationMirror; import javax.lang.model.element.AnnotationMirror; import javax.lang.model.element.AnnotationValue; import javax.lang.model.element.Element; import javax.lang.model.element.Element; import javax.lang.model.element.ExecutableElement; import javax.lang.model.element.TypeElement; import javax.lang.model.element.TypeElement; /** /** Loading Loading @@ -108,10 +111,25 @@ public class UnsupportedAppUsageProcessor extends AbstractProcessor { "startline", "startline", "startcol", "startcol", "endline", "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 * Maps an annotated element to the source position of the @UnsupportedAppUsage annotation * attached to it. It returns CSV in the format: * attached to it. It returns CSV in the format: Loading @@ -137,7 +155,8 @@ public class UnsupportedAppUsageProcessor extends AbstractProcessor { lines.getLineNumber(pair.fst.pos().getStartPosition()), lines.getLineNumber(pair.fst.pos().getStartPosition()), lines.getColumnNumber(pair.fst.pos().getStartPosition()), lines.getColumnNumber(pair.fst.pos().getStartPosition()), lines.getLineNumber(pair.fst.pos().getEndPosition(pair.snd.endPositions)), 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)); } } /** /** Loading