Search in sources :

Example 1 with JDTBatchCompiler

use of spoon.support.compiler.jdt.JDTBatchCompiler in project spoon by INRIA.

the class CompilationTest method testFilterResourcesFile.

@Test
public void testFilterResourcesFile() throws Exception {
    // shows how to filter input java files, for https://github.com/INRIA/spoon/issues/877
    Launcher launcher = new Launcher() {

        @Override
        public SpoonModelBuilder createCompiler() {
            return new JDTBasedSpoonCompiler(getFactory()) {

                @Override
                protected JDTBatchCompiler createBatchCompiler() {
                    return new JDTBatchCompiler(this) {

                        @Override
                        public CompilationUnit[] getCompilationUnits() {
                            List<CompilationUnit> units = new ArrayList<>();
                            for (CompilationUnit u : super.getCompilationUnits()) {
                                if (new String(u.getMainTypeName()).contains("Foo")) {
                                    units.add(u);
                                }
                            }
                            return units.toArray(new CompilationUnit[0]);
                        }
                    };
                }
            };
        }
    };
    launcher.addInputResource("./src/test/java/spoon/test/imports");
    launcher.buildModel();
    int n = 0;
    // we indeed only have types declared in a file called *Foo*
    for (CtType<?> t : launcher.getFactory().getModel().getAllTypes()) {
        n++;
        assertTrue(t.getPosition().getFile().getAbsolutePath().contains("Foo"));
    }
    assertTrue(n >= 2);
}
Also used : CompilationUnit(org.eclipse.jdt.internal.compiler.batch.CompilationUnit) ArrayList(java.util.ArrayList) Launcher(spoon.Launcher) JDTBatchCompiler(spoon.support.compiler.jdt.JDTBatchCompiler) JDTBasedSpoonCompiler(spoon.support.compiler.jdt.JDTBasedSpoonCompiler) Test(org.junit.Test)

Example 2 with JDTBatchCompiler

use of spoon.support.compiler.jdt.JDTBatchCompiler in project spoon by INRIA.

the class CompilationTest method testFilterResourcesDir.

@Test
public void testFilterResourcesDir() throws Exception {
    // shows how to filter input java dir
    // only in package called "reference"
    Launcher launcher = new Launcher() {

        @Override
        public SpoonModelBuilder createCompiler() {
            return new JDTBasedSpoonCompiler(getFactory()) {

                @Override
                protected JDTBatchCompiler createBatchCompiler() {
                    return new JDTBatchCompiler(this) {

                        @Override
                        public CompilationUnit[] getCompilationUnits() {
                            List<CompilationUnit> units = new ArrayList<>();
                            for (CompilationUnit u : super.getCompilationUnits()) {
                                if (new String(u.getFileName()).replace('\\', '/').contains("/reference/")) {
                                    units.add(u);
                                }
                            }
                            return units.toArray(new CompilationUnit[0]);
                        }
                    };
                }
            };
        }
    };
    launcher.addInputResource("./src/test/java/spoon/test");
    launcher.buildModel();
    // we indeed only have types declared in a file in package reference
    int n = 0;
    for (CtType<?> t : launcher.getModel().getAllTypes()) {
        n++;
        assertTrue(t.getQualifiedName().contains("reference"));
    }
    assertTrue(n >= 2);
}
Also used : CompilationUnit(org.eclipse.jdt.internal.compiler.batch.CompilationUnit) ArrayList(java.util.ArrayList) Launcher(spoon.Launcher) JDTBatchCompiler(spoon.support.compiler.jdt.JDTBatchCompiler) JDTBasedSpoonCompiler(spoon.support.compiler.jdt.JDTBasedSpoonCompiler) Test(org.junit.Test)

Aggregations

ArrayList (java.util.ArrayList)2 CompilationUnit (org.eclipse.jdt.internal.compiler.batch.CompilationUnit)2 Test (org.junit.Test)2 Launcher (spoon.Launcher)2 JDTBasedSpoonCompiler (spoon.support.compiler.jdt.JDTBasedSpoonCompiler)2 JDTBatchCompiler (spoon.support.compiler.jdt.JDTBatchCompiler)2