0N/A/*
1011N/A * Copyright (c) 2006, 2010, Oracle and/or its affiliates. All rights reserved.
0N/A * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
0N/A *
0N/A * This code is free software; you can redistribute it and/or modify it
0N/A * under the terms of the GNU General Public License version 2 only, as
0N/A * published by the Free Software Foundation.
0N/A *
0N/A * This code is distributed in the hope that it will be useful, but WITHOUT
0N/A * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
0N/A * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
0N/A * version 2 for more details (a copy is included in the LICENSE file that
0N/A * accompanied this code).
0N/A *
0N/A * You should have received a copy of the GNU General Public License version
0N/A * 2 along with this work; if not, write to the Free Software Foundation,
0N/A * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
0N/A *
553N/A * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
553N/A * or visit www.oracle.com if you need additional information or have any
553N/A * questions.
0N/A */
0N/A
0N/A/*
0N/A * @test
0N/A * @bug 6392818
0N/A * @summary Tests Elements.isDeprecated(Element)
0N/A * @author Joseph D. Darcy
698N/A * @library ../../../../lib
698N/A * @build JavacTestingAbstractProcessor
0N/A * @compile TestDeprecation.java
0N/A * @compile -processor TestDeprecation -proc:only Dep1.java
0N/A * @compile Dep1.java
0N/A * @compile -processor TestDeprecation -proc:only Dep1 TestDeprecation.java
0N/A */
0N/A
0N/Aimport java.util.Set;
0N/Aimport java.util.HashSet;
0N/Aimport java.util.Arrays;
0N/Aimport javax.annotation.processing.*;
0N/Aimport javax.lang.model.SourceVersion;
0N/Aimport javax.lang.model.element.*;
0N/Aimport javax.lang.model.util.*;
0N/Aimport static javax.tools.Diagnostic.Kind.*;
0N/Aimport java.io.Writer;
0N/A
0N/A/**
0N/A * This processor verifies that the information returned by
0N/A * getElementsAnnotatedWith is consistent with the expected results
0N/A * stored in an AnnotatedElementInfo annotation.
0N/A */
698N/Apublic class TestDeprecation extends JavacTestingAbstractProcessor {
0N/A
0N/A public boolean process(Set<? extends TypeElement> annotations,
0N/A RoundEnvironment roundEnv) {
0N/A boolean failure = false;
0N/A if (!roundEnv.processingOver()) {
0N/A DeprecationChecker deprecationChecker = new DeprecationChecker();
0N/A
0N/A for(Element element: roundEnv.getRootElements() ) {
0N/A System.out.println("\nRoot Element: " + element.getSimpleName());
0N/A failure = deprecationChecker.scan(element);
0N/A }
0N/A
0N/A if (failure)
0N/A processingEnv.getMessager().printMessage(ERROR, "Deprecation mismatch found!");
0N/A }
0N/A return true;
0N/A }
0N/A
574N/A private class DeprecationChecker extends ElementScanner7<Boolean,Void> {
0N/A private Elements elementUtils;
0N/A private boolean failure;
0N/A DeprecationChecker() {
0N/A super(false);
0N/A elementUtils = processingEnv.getElementUtils();
0N/A failure = false;
0N/A }
0N/A
0N/A @Override
0N/A public Boolean scan(Element e, Void p) {
0N/A boolean expectedDeprecation = false;
0N/A ExpectedDeprecation tmp = e.getAnnotation(ExpectedDeprecation.class);
0N/A if (tmp != null)
0N/A expectedDeprecation = tmp.value();
0N/A boolean actualDeprecation = elementUtils.isDeprecated(e);
0N/A
0N/A System.out.printf("\tVisiting %s\t%s%n", e.getKind(), e.getSimpleName());
0N/A
0N/A if (expectedDeprecation != actualDeprecation) {
0N/A failure = true;
0N/A java.io.StringWriter w = new java.io.StringWriter();
0N/A elementUtils.printElements(w, e);
0N/A System.out.printf("For the deprecation of %n\t%s\t, expected %b, got %b.%n",
0N/A w.getBuffer().toString(),
0N/A expectedDeprecation, actualDeprecation);
0N/A }
0N/A super.scan(e, p);
0N/A return failure;
0N/A }
0N/A }
0N/A}