From abd162d466dabeb6b18949e86513b1bfa7902add Mon Sep 17 00:00:00 2001 From: Andrey Breslav Date: Fri, 26 Apr 2013 18:12:04 +0400 Subject: [PATCH] Interface extracted from KotlinModuleScriptGenerator --- .../KotlinModuleDescriptionGenerator.java | 43 +++++++++++++++++++ .../runner/KotlinModuleScriptGenerator.java | 18 ++++---- .../jet/plugin/compiler/JetCompiler.java | 8 ++-- .../KotlinBuilderModuleScriptGenerator.java | 7 +-- 4 files changed, 59 insertions(+), 17 deletions(-) create mode 100644 ide-compiler-runner/src/org/jetbrains/jet/compiler/runner/KotlinModuleDescriptionGenerator.java diff --git a/ide-compiler-runner/src/org/jetbrains/jet/compiler/runner/KotlinModuleDescriptionGenerator.java b/ide-compiler-runner/src/org/jetbrains/jet/compiler/runner/KotlinModuleDescriptionGenerator.java new file mode 100644 index 00000000000..0e6e515ae79 --- /dev/null +++ b/ide-compiler-runner/src/org/jetbrains/jet/compiler/runner/KotlinModuleDescriptionGenerator.java @@ -0,0 +1,43 @@ +/* + * Copyright 2010-2013 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.jetbrains.jet.compiler.runner; + +import org.jetbrains.annotations.NotNull; + +import java.io.File; +import java.util.Collection; +import java.util.List; +import java.util.Set; + +public interface KotlinModuleDescriptionGenerator { + CharSequence generateModuleScript( + String moduleName, + DependencyProvider dependencyProvider, + List sourceFiles, + boolean tests, + Set directoriesToFilterOut + ); + + public interface DependencyProvider { + void processClassPath(@NotNull DependencyProcessor processor); + } + + public interface DependencyProcessor { + void processClassPathSection(@NotNull String sectionDescription, @NotNull Collection files); + void processAnnotationRoots(@NotNull List files); + } +} diff --git a/ide-compiler-runner/src/org/jetbrains/jet/compiler/runner/KotlinModuleScriptGenerator.java b/ide-compiler-runner/src/org/jetbrains/jet/compiler/runner/KotlinModuleScriptGenerator.java index 38b9f539f56..ae4a17a0b9c 100644 --- a/ide-compiler-runner/src/org/jetbrains/jet/compiler/runner/KotlinModuleScriptGenerator.java +++ b/ide-compiler-runner/src/org/jetbrains/jet/compiler/runner/KotlinModuleScriptGenerator.java @@ -25,22 +25,20 @@ import java.util.Set; import static com.intellij.openapi.util.io.FileUtil.toSystemIndependentName; -public class KotlinModuleScriptGenerator { +public class KotlinModuleScriptGenerator implements KotlinModuleDescriptionGenerator { - public interface DependencyProvider { - void processClassPath(@NotNull DependencyProcessor processor); - } + public static final KotlinModuleScriptGenerator INSTANCE = new KotlinModuleScriptGenerator(); - public interface DependencyProcessor { - void processClassPathSection(@NotNull String sectionDescription, @NotNull Collection files); - void processAnnotationRoots(@NotNull List files); - } + private KotlinModuleScriptGenerator() {} - public static CharSequence generateModuleScript(String moduleName, + @Override + public CharSequence generateModuleScript( + String moduleName, DependencyProvider dependencyProvider, List sourceFiles, boolean tests, - final Set directoriesToFilterOut) { + final Set directoriesToFilterOut + ) { final StringBuilder script = new StringBuilder(); if (tests) { diff --git a/idea/src/org/jetbrains/jet/plugin/compiler/JetCompiler.java b/idea/src/org/jetbrains/jet/plugin/compiler/JetCompiler.java index 6dacc43ed48..e77859b031b 100644 --- a/idea/src/org/jetbrains/jet/plugin/compiler/JetCompiler.java +++ b/idea/src/org/jetbrains/jet/plugin/compiler/JetCompiler.java @@ -157,7 +157,7 @@ public class JetCompiler implements TranslatingCompiler { if (!tests) { outputDirectoriesToFilter.add(moduleOutputDirectory); } - CharSequence script = KotlinModuleScriptGenerator.generateModuleScript( + CharSequence script = KotlinModuleScriptGenerator.INSTANCE.generateModuleScript( moduleName, getDependencyProvider(chunk, tests, mainOutput), sourceFiles, @@ -176,14 +176,14 @@ public class JetCompiler implements TranslatingCompiler { return scriptFile; } - private static KotlinModuleScriptGenerator.DependencyProvider getDependencyProvider( + private static KotlinModuleDescriptionGenerator.DependencyProvider getDependencyProvider( final ModuleChunk chunk, final boolean tests, final VirtualFile mainOutputPath ) { - return new KotlinModuleScriptGenerator.DependencyProvider() { + return new KotlinModuleDescriptionGenerator.DependencyProvider() { @Override - public void processClassPath(@NotNull KotlinModuleScriptGenerator.DependencyProcessor processor) { + public void processClassPath(@NotNull KotlinModuleDescriptionGenerator.DependencyProcessor processor) { // TODO: have a bootclasspath in script API processor.processClassPathSection("Boot classpath", ioFiles(chunk.getCompilationBootClasspathFiles())); diff --git a/jps-plugin/src/org/jetbrains/jet/jps/build/KotlinBuilderModuleScriptGenerator.java b/jps-plugin/src/org/jetbrains/jet/jps/build/KotlinBuilderModuleScriptGenerator.java index 7d7445c89bf..ed89aac90d1 100644 --- a/jps-plugin/src/org/jetbrains/jet/jps/build/KotlinBuilderModuleScriptGenerator.java +++ b/jps-plugin/src/org/jetbrains/jet/jps/build/KotlinBuilderModuleScriptGenerator.java @@ -20,6 +20,7 @@ import com.intellij.openapi.util.io.FileUtil; import com.intellij.util.containers.ContainerUtil; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import org.jetbrains.jet.compiler.runner.KotlinModuleDescriptionGenerator; import org.jetbrains.jet.compiler.runner.KotlinModuleScriptGenerator; import org.jetbrains.jps.builders.java.JavaSourceRootDescriptor; import org.jetbrains.jps.incremental.CompileContext; @@ -41,13 +42,13 @@ import java.util.Collection; import java.util.Collections; import java.util.List; -import static org.jetbrains.jet.compiler.runner.KotlinModuleScriptGenerator.DependencyProvider; +import static org.jetbrains.jet.compiler.runner.KotlinModuleDescriptionGenerator.DependencyProvider; public class KotlinBuilderModuleScriptGenerator { public static File generateModuleScript(CompileContext context, ModuleBuildTarget target, List sourceFiles) throws IOException { - CharSequence moduleScriptText = KotlinModuleScriptGenerator.generateModuleScript( + CharSequence moduleScriptText = KotlinModuleScriptGenerator.INSTANCE.generateModuleScript( target.getId(), getKotlinModuleDependencies(context, target), sourceFiles, @@ -66,7 +67,7 @@ public class KotlinBuilderModuleScriptGenerator { private static DependencyProvider getKotlinModuleDependencies(final CompileContext context, final ModuleBuildTarget target) { return new DependencyProvider() { @Override - public void processClassPath(@NotNull KotlinModuleScriptGenerator.DependencyProcessor processor) { + public void processClassPath(@NotNull KotlinModuleDescriptionGenerator.DependencyProcessor processor) { processor.processClassPathSection("Classpath", findClassPathRoots(target)); processor.processClassPathSection("Java Source Roots", findSourceRoots(context, target)); processor.processAnnotationRoots(findAnnotationRoots(target));