Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 41e0ce14 authored by Mathew Inwood's avatar Mathew Inwood Committed by android-build-merger
Browse files

Merge "Include annotation property values in output." am: 989e767e

am: d12d0a19

Change-Id: Ie32eb0da2c7d21aa8560362ee4a90768cee0e6a9
parents 9a8b8220 d12d0a19
Loading
Loading
Loading
Loading
+21 −2
Original line number Diff line number Diff line
@@ -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));
    }

    /**