| /* |
| * Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved. |
| * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
| * |
| * This code is free software; you can redistribute it and/or modify it |
| * under the terms of the GNU General Public License version 2 only, as |
| * published by the Free Software Foundation. |
| * |
| * This code is distributed in the hope that it will be useful, but WITHOUT |
| * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
| * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
| * version 2 for more details (a copy is included in the LICENSE file that |
| * accompanied this code). |
| * |
| * You should have received a copy of the GNU General Public License version |
| * 2 along with this work; if not, write to the Free Software Foundation, |
| * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. |
| * |
| * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
| * or visit www.oracle.com if you need additional information or have any |
| * questions. |
| */ |
| |
| /* |
| * @test |
| * @bug 8042261 |
| * @summary Checking that deprecated attribute does not apply to classes of deprecated package. |
| * @library /tools/lib /tools/javac/lib ../lib |
| * @modules jdk.compiler/com.sun.tools.javac.api |
| * jdk.compiler/com.sun.tools.javac.main |
| * jdk.compiler/com.sun.tools.javac.util |
| * jdk.jdeps/com.sun.tools.classfile |
| * @build toolbox.ToolBox InMemoryFileManager TestResult TestBase |
| * @run main DeprecatedPackageTest |
| */ |
| |
| import com.sun.tools.classfile.Attribute; |
| import com.sun.tools.classfile.ClassFile; |
| import com.sun.tools.classfile.Deprecated_attribute; |
| |
| public class DeprecatedPackageTest extends TestResult { |
| |
| private static final String[] sourceTest = new String[]{ |
| "package deprecated;\n" |
| + "public class notDeprecated{}", |
| "package deprecated;\n" |
| + "public interface notDeprecated{}", |
| "package deprecated;\n" |
| + "public @interface notDeprecated{}", |
| "package deprecated;\n" |
| + "public enum notDeprecated{}" |
| }; |
| |
| private static final String CLASS_NAME = "deprecated.notDeprecated"; |
| |
| private static final String PACKAGE_INFO = |
| "@Deprecated\n" + |
| "package deprecated;"; |
| |
| public static void main(String[] args) throws TestFailedException { |
| new DeprecatedPackageTest().test(); |
| } |
| |
| private void test() throws TestFailedException { |
| try { |
| for (String src : sourceTest) { |
| test(PACKAGE_INFO, src); |
| test(PACKAGE_INFO.replaceAll("@Deprecated", "/** @deprecated */"), src); |
| } |
| } catch (Exception e) { |
| addFailure(e); |
| } finally { |
| checkStatus(); |
| } |
| } |
| |
| private void test(String package_info, String src) { |
| addTestCase(src); |
| printf("Testing test case: \n%s\n", src); |
| try { |
| ClassFile cf = readClassFile(compile( |
| new String[]{"package-info.java", package_info}, |
| new String[]{"notDeprecated.java", src}) |
| .getClasses().get(CLASS_NAME)); |
| Deprecated_attribute attr = |
| (Deprecated_attribute) cf.getAttribute(Attribute.Deprecated); |
| checkNull(attr, "Class can not have deprecated attribute : " + CLASS_NAME); |
| } catch (Exception e) { |
| addFailure(e); |
| } |
| } |
| } |