T6431257.java revision 2689:f839b50088bc
1166124Srafan/*
2174993Srafan * Copyright (c) 2006, 2014, Oracle and/or its affiliates. All rights reserved.
3166124Srafan * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4166124Srafan *
5166124Srafan * This code is free software; you can redistribute it and/or modify it
6166124Srafan * under the terms of the GNU General Public License version 2 only, as
7166124Srafan * published by the Free Software Foundation.
8166124Srafan *
9166124Srafan * This code is distributed in the hope that it will be useful, but WITHOUT
10166124Srafan * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11166124Srafan * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
12166124Srafan * version 2 for more details (a copy is included in the LICENSE file that
13166124Srafan * accompanied this code).
14166124Srafan *
15166124Srafan * You should have received a copy of the GNU General Public License version
16166124Srafan * 2 along with this work; if not, write to the Free Software Foundation,
17166124Srafan * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18166124Srafan *
19166124Srafan * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20166124Srafan * or visit www.oracle.com if you need additional information or have any
21166124Srafan * questions.
22166124Srafan */
23166124Srafan
24166124Srafan/*
25166124Srafan * @test
26166124Srafan * @bug     6431257
27166124Srafan * @summary JSR 199: Changes to JavaFileManager to support JSR 269 Filer API
28174993Srafan * @author  Peter von der Ah\u00e9
2976726Speter * @library ../lib
3097049Speter * @build ToolTester
3197049Speter * @compile T6431257.java package-info.java
3276726Speter * @run main T6431257 foo.bar.baz foo/bar/baz
33166124Srafan */
34166124Srafan
35166124Srafanimport java.io.IOException;
36166124Srafanimport java.util.EnumSet;
37166124Srafanimport javax.tools.*;
38166124Srafanimport static javax.tools.JavaFileObject.Kind.CLASS;
3997049Speterimport static javax.tools.StandardLocation.CLASS_OUTPUT;
4076726Speterimport static javax.tools.StandardLocation.PLATFORM_CLASS_PATH;
4176726Speter
4276726Speterpublic class T6431257 extends ToolTester {
4376726Speter    void test(String... args) throws IOException {
4476726Speter        for (String arg : args)
4576726Speter            testPackage(arg);
4676726Speter    }
4776726Speter
48166124Srafan    void testPackage(String packageName) throws IOException {
49166124Srafan        JavaFileObject object
5076726Speter            = fm.getJavaFileForInput(PLATFORM_CLASS_PATH, "java.lang.Object", CLASS);
5176726Speter        Iterable<? extends JavaFileObject> files
5276726Speter            = fm.list(CLASS_OUTPUT, packageName, EnumSet.of(CLASS), false);
5376726Speter        boolean found = false;
5476726Speter        String binaryPackageName = packageName.replace('/', '.');
5576726Speter        for (JavaFileObject file : files) {
5676726Speter            System.out.println("Found " + file.getName() + " in " + packageName);
5776726Speter            String name = fm.inferBinaryName(CLASS_OUTPUT, file);
5876726Speter            found |= name.equals(binaryPackageName + ".package-info");
5976726Speter            JavaFileObject other = fm.getJavaFileForInput(CLASS_OUTPUT, name, CLASS);
6076726Speter            if (!fm.isSameFile(file, other))
6176726Speter                throw new AssertionError(file + " != " + other);
6276726Speter            if (fm.isSameFile(file, object))
6376726Speter                throw new AssertionError(file + " == " + object);
6476726Speter        }
6576726Speter        if (!found)
6676726Speter            throw new AssertionError("Did not find " + binaryPackageName + ".package-info");
6776726Speter    }
6876726Speter
6976726Speter    public static void main(String... args) throws IOException {
7076726Speter        try (T6431257 t = new T6431257()) {
7176726Speter            t.test(args);
7276726Speter        }
7376726Speter    }
7476726Speter}
7576726Speter