[gradle] IJ-CR-3154 fix code duplicate
[idea/community.git] / platform / projectModel-api / src / com / intellij / openapi / roots / CompilerModuleExtension.java
1 // Copyright 2000-2020 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
2 package com.intellij.openapi.roots;
3
4 import com.intellij.openapi.module.Module;
5 import com.intellij.openapi.vfs.VirtualFile;
6 import com.intellij.openapi.vfs.pointers.VirtualFilePointer;
7 import org.jetbrains.annotations.NotNull;
8 import org.jetbrains.annotations.Nullable;
9
10 /**
11  * Provides access to Java-specific settings of a module (output paths for production and test classes).
12  *
13  * @see com.intellij.openapi.roots.CompilerProjectExtension
14  */
15 public abstract class CompilerModuleExtension extends ModuleExtension {
16   public static final String PRODUCTION = "production";
17   public static final String TEST = "test";
18
19   public static @Nullable CompilerModuleExtension getInstance(final Module module) {
20     return ModuleRootManager.getInstance(module).getModuleExtension(CompilerModuleExtension.class);
21   }
22
23   /**
24    * Returns a compiler output path for production sources of the module, if it is valid.
25    */
26   public abstract @Nullable VirtualFile getCompilerOutputPath();
27
28   public abstract void setCompilerOutputPath(VirtualFile file);
29
30   /**
31    * Returns a compiler output path URL for production sources of the module.
32    */
33   public abstract @Nullable String getCompilerOutputUrl();
34
35   public abstract void setCompilerOutputPath(String url);
36
37   /**
38    * Returns a compiler output path for test sources of the module, if it is valid.
39    */
40   public abstract @Nullable VirtualFile getCompilerOutputPathForTests();
41
42   public abstract void setCompilerOutputPathForTests(VirtualFile file);
43
44   /**
45    * Returns a compiler output path URL for test sources of the module.
46    */
47   public abstract @Nullable String getCompilerOutputUrlForTests();
48
49   public abstract void setCompilerOutputPathForTests(String url);
50
51   /**
52    * Makes this module inheriting compiler output from its project
53    *
54    * @param inherit whether or not compiler output is inherited
55    */
56   public abstract void inheritCompilerOutputPath(boolean inherit);
57
58   /**
59    * Returns {@code true} if compiler output for this module is inherited from a project
60    */
61   public abstract boolean isCompilerOutputPathInherited();
62
63   public abstract VirtualFilePointer getCompilerOutputPointer();
64
65   public abstract VirtualFilePointer getCompilerOutputForTestsPointer();
66
67   public abstract void setExcludeOutput(boolean exclude);
68
69   public abstract boolean isExcludeOutput();
70
71   public abstract VirtualFile @NotNull [] getOutputRoots(boolean includeTests);
72
73   public abstract String @NotNull [] getOutputRootUrls(boolean includeTests);
74 }