From 1921b831e44f331aa0d4bd7ebebd9d27558b08db Mon Sep 17 00:00:00 2001 From: nik Date: Wed, 8 May 2013 17:20:49 +0400 Subject: [PATCH] jps model: added API which allows to modify ant configuration --- .../jps/ant/model/JpsAntBuildFileOptions.java | 6 ++++++ .../jps/ant/model/JpsAntConfiguration.java | 7 +++++++ .../jps/ant/model/JpsAntExtensionService.java | 11 +++++++++++ .../model/impl/JpsAntBuildFileOptionsImpl.java | 7 +++++-- .../ant/model/impl/JpsAntConfigurationImpl.java | 16 ++++++++++++++-- 5 files changed, 43 insertions(+), 4 deletions(-) diff --git a/plugins/ant/jps-plugin/src/org/jetbrains/jps/ant/model/JpsAntBuildFileOptions.java b/plugins/ant/jps-plugin/src/org/jetbrains/jps/ant/model/JpsAntBuildFileOptions.java index b8c99c0d9405..7f0f94d4807f 100644 --- a/plugins/ant/jps-plugin/src/org/jetbrains/jps/ant/model/JpsAntBuildFileOptions.java +++ b/plugins/ant/jps-plugin/src/org/jetbrains/jps/ant/model/JpsAntBuildFileOptions.java @@ -38,8 +38,14 @@ public interface JpsAntBuildFileOptions { boolean isUseProjectDefaultAnt(); + void setUseProjectDefaultAnt(boolean useProjectDefaultAnt); + List getAdditionalClasspath(); + void addJarPath(@NotNull String path); + + void addJarDirectory(@NotNull String directoryPath); + @NotNull List getProperties(); diff --git a/plugins/ant/jps-plugin/src/org/jetbrains/jps/ant/model/JpsAntConfiguration.java b/plugins/ant/jps-plugin/src/org/jetbrains/jps/ant/model/JpsAntConfiguration.java index 6c58f95429e6..9355632c0aa5 100644 --- a/plugins/ant/jps-plugin/src/org/jetbrains/jps/ant/model/JpsAntConfiguration.java +++ b/plugins/ant/jps-plugin/src/org/jetbrains/jps/ant/model/JpsAntConfiguration.java @@ -19,6 +19,8 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jetbrains.jps.model.JpsElement; +import java.util.Collection; + /** * @author nik */ @@ -28,4 +30,9 @@ public interface JpsAntConfiguration extends JpsElement { @Nullable String getProjectDefaultAntName(); + + void setProjectDefaultAntName(@Nullable String projectDefaultAntName); + + @NotNull + Collection getOptionsForAllBuildFiles(); } diff --git a/plugins/ant/jps-plugin/src/org/jetbrains/jps/ant/model/JpsAntExtensionService.java b/plugins/ant/jps-plugin/src/org/jetbrains/jps/ant/model/JpsAntExtensionService.java index 61a7c99d73b7..6be70de6f4b2 100644 --- a/plugins/ant/jps-plugin/src/org/jetbrains/jps/ant/model/JpsAntExtensionService.java +++ b/plugins/ant/jps-plugin/src/org/jetbrains/jps/ant/model/JpsAntExtensionService.java @@ -32,6 +32,7 @@ import org.jetbrains.jps.model.artifact.JpsArtifact; import java.io.File; import java.util.Collections; +import java.util.HashMap; /** * @author nik @@ -68,6 +69,16 @@ public class JpsAntExtensionService { return project.getContainer().getChild(JpsAntConfigurationImpl.ROLE); } + @NotNull + public static JpsAntConfiguration getOrCreateAntConfiguration(@NotNull JpsProject project) { + JpsAntConfiguration configuration = getAntConfiguration(project); + if (configuration != null) { + return configuration; + } + JpsAntConfigurationImpl antConfiguration = new JpsAntConfigurationImpl(new HashMap(), null); + return project.getContainer().setChild(JpsAntConfigurationImpl.ROLE, antConfiguration); + } + @Nullable private static JpsAntInstallation getBundledAntInstallation() { String antPath = System.getProperty(BUNDLED_ANT_PATH_PROPERTY); diff --git a/plugins/ant/jps-plugin/src/org/jetbrains/jps/ant/model/impl/JpsAntBuildFileOptionsImpl.java b/plugins/ant/jps-plugin/src/org/jetbrains/jps/ant/model/impl/JpsAntBuildFileOptionsImpl.java index 7b4841a3fc4e..4217ad60b27d 100644 --- a/plugins/ant/jps-plugin/src/org/jetbrains/jps/ant/model/impl/JpsAntBuildFileOptionsImpl.java +++ b/plugins/ant/jps-plugin/src/org/jetbrains/jps/ant/model/impl/JpsAntBuildFileOptionsImpl.java @@ -45,6 +45,7 @@ public class JpsAntBuildFileOptionsImpl implements JpsAntBuildFileOptions { myAntCommandLineParameters = antCommandLineParameters; } + @Override public void setUseProjectDefaultAnt(boolean useProjectDefaultAnt) { myUseProjectDefaultAnt = useProjectDefaultAnt; } @@ -58,11 +59,13 @@ public class JpsAntBuildFileOptionsImpl implements JpsAntBuildFileOptions { myAntInstallationName = antInstallationName; } - public void addJarPath(String path) { + @Override + public void addJarPath(@NotNull String path) { myClasspath.add(path); } - public void addJarDirectory(String directoryPath) { + @Override + public void addJarDirectory(@NotNull String directoryPath) { myJarDirectories.add(directoryPath); } diff --git a/plugins/ant/jps-plugin/src/org/jetbrains/jps/ant/model/impl/JpsAntConfigurationImpl.java b/plugins/ant/jps-plugin/src/org/jetbrains/jps/ant/model/impl/JpsAntConfigurationImpl.java index eb1c0c13b2b5..99f864613957 100644 --- a/plugins/ant/jps-plugin/src/org/jetbrains/jps/ant/model/impl/JpsAntConfigurationImpl.java +++ b/plugins/ant/jps-plugin/src/org/jetbrains/jps/ant/model/impl/JpsAntConfigurationImpl.java @@ -24,6 +24,7 @@ import org.jetbrains.jps.model.JpsElementChildRole; import org.jetbrains.jps.model.ex.JpsElementBase; import org.jetbrains.jps.model.ex.JpsElementChildRoleBase; +import java.util.Collection; import java.util.Map; /** @@ -31,8 +32,8 @@ import java.util.Map; */ public class JpsAntConfigurationImpl extends JpsElementBase implements JpsAntConfiguration { public static final JpsElementChildRole ROLE = JpsElementChildRoleBase.create("ant configuration"); - private final String myProjectDefaultAntName; - private Map myOptionsMap = new HashMap(); + private String myProjectDefaultAntName; + private final Map myOptionsMap = new HashMap(); public JpsAntConfigurationImpl(Map options, String projectDefaultAntName) { myProjectDefaultAntName = projectDefaultAntName; @@ -45,6 +46,11 @@ public class JpsAntConfigurationImpl extends JpsElementBase getOptionsForAllBuildFiles() { + return myOptionsMap.values(); + } + @NotNull @Override public JpsAntBuildFileOptions getOptions(@NotNull String buildFileUrl) {