summaryrefslogtreecommitdiff
path: root/jps
diff options
context:
space:
mode:
Diffstat (limited to 'jps')
-rw-r--r--jps/model-api/src/org/jetbrains/jps/model/JpsElementType.java18
-rw-r--r--jps/model-api/src/org/jetbrains/jps/model/artifact/DirectoryArtifactType.java3
-rw-r--r--jps/model-api/src/org/jetbrains/jps/model/artifact/JarArtifactType.java3
-rw-r--r--jps/model-api/src/org/jetbrains/jps/model/artifact/JpsArtifactType.java7
-rw-r--r--jps/model-api/src/org/jetbrains/jps/model/ex/JpsElementTypeBase.java39
-rw-r--r--jps/model-api/src/org/jetbrains/jps/model/ex/JpsElementTypeWithDummyProperties.java34
-rw-r--r--jps/model-api/src/org/jetbrains/jps/model/java/JavaResourceRootType.java4
-rw-r--r--jps/model-api/src/org/jetbrains/jps/model/java/JavaSourceRootType.java4
-rw-r--r--jps/model-api/src/org/jetbrains/jps/model/java/JpsJavaLibraryType.java6
-rw-r--r--jps/model-api/src/org/jetbrains/jps/model/java/JpsJavaModuleType.java4
-rw-r--r--jps/model-api/src/org/jetbrains/jps/model/java/runConfiguration/JpsApplicationRunConfigurationType.java3
-rw-r--r--jps/model-api/src/org/jetbrains/jps/model/library/JpsLibraryType.java6
-rw-r--r--jps/model-api/src/org/jetbrains/jps/model/library/sdk/JpsSdkType.java4
-rw-r--r--jps/model-api/src/org/jetbrains/jps/model/module/JpsModule.java4
-rw-r--r--jps/model-api/src/org/jetbrains/jps/model/module/JpsModuleSourceRootType.java8
-rw-r--r--jps/model-api/src/org/jetbrains/jps/model/module/JpsModuleType.java7
-rw-r--r--jps/model-api/src/org/jetbrains/jps/model/runConfiguration/JpsRunConfigurationType.java7
-rw-r--r--jps/model-impl/src/org/jetbrains/jps/model/java/impl/JavaSdkUtil.java14
-rw-r--r--jps/model-impl/src/org/jetbrains/jps/model/module/impl/JpsModuleImpl.java3
-rw-r--r--jps/model-serialization/src/com/intellij/openapi/components/PathMacroMap.java34
-rw-r--r--jps/standalone-builder/src/org/jetbrains/jps/gant/JpsGantProjectBuilder.java20
21 files changed, 164 insertions, 68 deletions
diff --git a/jps/model-api/src/org/jetbrains/jps/model/JpsElementType.java b/jps/model-api/src/org/jetbrains/jps/model/JpsElementType.java
index 1adee500560a..5ee5146b8806 100644
--- a/jps/model-api/src/org/jetbrains/jps/model/JpsElementType.java
+++ b/jps/model-api/src/org/jetbrains/jps/model/JpsElementType.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2000-2012 JetBrains s.r.o.
+ * Copyright 2000-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.
@@ -15,13 +15,17 @@
*/
package org.jetbrains.jps.model;
+import org.jetbrains.annotations.NotNull;
+
/**
+ * Base interface for all types of elements in JPS model
+ *
+ * <p>
+ * Use {@link org.jetbrains.jps.model.ex.JpsElementTypeBase} as a base class for all implementations of this interface
+ * </p>
* @author nik
*/
-public abstract class JpsElementType<P extends JpsElement> {
- private final JpsElementChildRole<P> myPropertiesRole = new JpsElementChildRole<P>();
-
- public final JpsElementChildRole<P> getPropertiesRole() {
- return myPropertiesRole;
- }
+public interface JpsElementType<P extends JpsElement> {
+ @NotNull
+ JpsElementChildRole<P> getPropertiesRole();
}
diff --git a/jps/model-api/src/org/jetbrains/jps/model/artifact/DirectoryArtifactType.java b/jps/model-api/src/org/jetbrains/jps/model/artifact/DirectoryArtifactType.java
index 3b66462f9d8a..79e970ee1bb3 100644
--- a/jps/model-api/src/org/jetbrains/jps/model/artifact/DirectoryArtifactType.java
+++ b/jps/model-api/src/org/jetbrains/jps/model/artifact/DirectoryArtifactType.java
@@ -16,10 +16,11 @@
package org.jetbrains.jps.model.artifact;
import org.jetbrains.jps.model.JpsDummyElement;
+import org.jetbrains.jps.model.ex.JpsElementTypeWithDummyProperties;
/**
* @author nik
*/
-public class DirectoryArtifactType extends JpsArtifactType<JpsDummyElement> {
+public class DirectoryArtifactType extends JpsElementTypeWithDummyProperties implements JpsArtifactType<JpsDummyElement> {
public static final DirectoryArtifactType INSTANCE = new DirectoryArtifactType();
}
diff --git a/jps/model-api/src/org/jetbrains/jps/model/artifact/JarArtifactType.java b/jps/model-api/src/org/jetbrains/jps/model/artifact/JarArtifactType.java
index c0306a9f447b..bd36fc4c34a7 100644
--- a/jps/model-api/src/org/jetbrains/jps/model/artifact/JarArtifactType.java
+++ b/jps/model-api/src/org/jetbrains/jps/model/artifact/JarArtifactType.java
@@ -16,10 +16,11 @@
package org.jetbrains.jps.model.artifact;
import org.jetbrains.jps.model.JpsDummyElement;
+import org.jetbrains.jps.model.ex.JpsElementTypeWithDummyProperties;
/**
* @author nik
*/
-public class JarArtifactType extends JpsArtifactType<JpsDummyElement> {
+public class JarArtifactType extends JpsElementTypeWithDummyProperties implements JpsArtifactType<JpsDummyElement> {
public static final JarArtifactType INSTANCE = new JarArtifactType();
}
diff --git a/jps/model-api/src/org/jetbrains/jps/model/artifact/JpsArtifactType.java b/jps/model-api/src/org/jetbrains/jps/model/artifact/JpsArtifactType.java
index a4a6c312438d..fe0517838a15 100644
--- a/jps/model-api/src/org/jetbrains/jps/model/artifact/JpsArtifactType.java
+++ b/jps/model-api/src/org/jetbrains/jps/model/artifact/JpsArtifactType.java
@@ -19,7 +19,12 @@ import org.jetbrains.jps.model.JpsElement;
import org.jetbrains.jps.model.JpsElementType;
/**
+ * Represents a type of artifacts in JPS model
+ *
+ * <p>
+ * Use {@link org.jetbrains.jps.model.ex.JpsElementTypeBase} as a base class for implementations of this interface
+ * </p>
* @author nik
*/
-public abstract class JpsArtifactType<P extends JpsElement> extends JpsElementType<P> {
+public interface JpsArtifactType<P extends JpsElement> extends JpsElementType<P> {
}
diff --git a/jps/model-api/src/org/jetbrains/jps/model/ex/JpsElementTypeBase.java b/jps/model-api/src/org/jetbrains/jps/model/ex/JpsElementTypeBase.java
new file mode 100644
index 000000000000..78946974c025
--- /dev/null
+++ b/jps/model-api/src/org/jetbrains/jps/model/ex/JpsElementTypeBase.java
@@ -0,0 +1,39 @@
+/*
+ * Copyright 2000-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.jps.model.ex;
+
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.jps.model.JpsElement;
+import org.jetbrains.jps.model.JpsElementChildRole;
+import org.jetbrains.jps.model.JpsElementType;
+
+/**
+ * A base class for all implementations of {@link org.jetbrains.jps.model.JpsElementType}.
+ *
+ * <p>
+ * If elements of your type don't have any specific properties extend {@link JpsElementTypeWithDummyProperties} instead.
+ * </p>
+ * @author nik
+ */
+public abstract class JpsElementTypeBase<P extends JpsElement>implements JpsElementType<P> {
+ private final JpsElementChildRole<P> myPropertiesRole = new JpsElementChildRole<P>();
+
+ @NotNull
+ @Override
+ public final JpsElementChildRole<P> getPropertiesRole() {
+ return myPropertiesRole;
+ }
+}
diff --git a/jps/model-api/src/org/jetbrains/jps/model/ex/JpsElementTypeWithDummyProperties.java b/jps/model-api/src/org/jetbrains/jps/model/ex/JpsElementTypeWithDummyProperties.java
new file mode 100644
index 000000000000..630340e8d038
--- /dev/null
+++ b/jps/model-api/src/org/jetbrains/jps/model/ex/JpsElementTypeWithDummyProperties.java
@@ -0,0 +1,34 @@
+/*
+ * Copyright 2000-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.jps.model.ex;
+
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.jps.model.JpsDummyElement;
+import org.jetbrains.jps.model.JpsElementFactory;
+import org.jetbrains.jps.model.JpsElementTypeWithDefaultProperties;
+
+/**
+ * A base class for type elements without any specific properties
+ *
+ * @author nik
+ */
+public abstract class JpsElementTypeWithDummyProperties extends JpsElementTypeBase<JpsDummyElement> implements JpsElementTypeWithDefaultProperties<JpsDummyElement> {
+ @NotNull
+ @Override
+ public JpsDummyElement createDefaultProperties() {
+ return JpsElementFactory.getInstance().createDummyElement();
+ }
+}
diff --git a/jps/model-api/src/org/jetbrains/jps/model/java/JavaResourceRootType.java b/jps/model-api/src/org/jetbrains/jps/model/java/JavaResourceRootType.java
index 7baa1a9b8649..33adf96ebf1f 100644
--- a/jps/model-api/src/org/jetbrains/jps/model/java/JavaResourceRootType.java
+++ b/jps/model-api/src/org/jetbrains/jps/model/java/JavaResourceRootType.java
@@ -18,13 +18,13 @@ package org.jetbrains.jps.model.java;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.jps.model.JpsDummyElement;
import org.jetbrains.jps.model.JpsElementFactory;
-import org.jetbrains.jps.model.JpsElementTypeWithDefaultProperties;
+import org.jetbrains.jps.model.ex.JpsElementTypeWithDummyProperties;
import org.jetbrains.jps.model.module.JpsModuleSourceRootType;
/**
* @author nik
*/
-public class JavaResourceRootType extends JpsModuleSourceRootType<JpsDummyElement> implements JpsElementTypeWithDefaultProperties<JpsDummyElement> {
+public class JavaResourceRootType extends JpsElementTypeWithDummyProperties implements JpsModuleSourceRootType<JpsDummyElement> {
public static final JavaResourceRootType RESOURCE = new JavaResourceRootType();
public static final JavaResourceRootType TEST_RESOURCE = new JavaResourceRootType();
diff --git a/jps/model-api/src/org/jetbrains/jps/model/java/JavaSourceRootType.java b/jps/model-api/src/org/jetbrains/jps/model/java/JavaSourceRootType.java
index 2a181f1cd485..97a03687a0fd 100644
--- a/jps/model-api/src/org/jetbrains/jps/model/java/JavaSourceRootType.java
+++ b/jps/model-api/src/org/jetbrains/jps/model/java/JavaSourceRootType.java
@@ -17,14 +17,14 @@ package org.jetbrains.jps.model.java;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.jps.model.JpsElementFactory;
-import org.jetbrains.jps.model.JpsElementTypeWithDefaultProperties;
import org.jetbrains.jps.model.JpsSimpleElement;
+import org.jetbrains.jps.model.ex.JpsElementTypeBase;
import org.jetbrains.jps.model.module.JpsModuleSourceRootType;
/**
* @author nik
*/
-public class JavaSourceRootType extends JpsModuleSourceRootType<JpsSimpleElement<JavaSourceRootProperties>> implements JpsElementTypeWithDefaultProperties<JpsSimpleElement<JavaSourceRootProperties>> {
+public class JavaSourceRootType extends JpsElementTypeBase<JpsSimpleElement<JavaSourceRootProperties>> implements JpsModuleSourceRootType<JpsSimpleElement<JavaSourceRootProperties>> {
public static final JavaSourceRootType SOURCE = new JavaSourceRootType();
public static final JavaSourceRootType TEST_SOURCE = new JavaSourceRootType();
diff --git a/jps/model-api/src/org/jetbrains/jps/model/java/JpsJavaLibraryType.java b/jps/model-api/src/org/jetbrains/jps/model/java/JpsJavaLibraryType.java
index 533036071ee8..0fcc7ec395d3 100644
--- a/jps/model-api/src/org/jetbrains/jps/model/java/JpsJavaLibraryType.java
+++ b/jps/model-api/src/org/jetbrains/jps/model/java/JpsJavaLibraryType.java
@@ -16,13 +16,15 @@
package org.jetbrains.jps.model.java;
import org.jetbrains.annotations.NotNull;
-import org.jetbrains.jps.model.*;
+import org.jetbrains.jps.model.JpsDummyElement;
+import org.jetbrains.jps.model.JpsElementFactory;
+import org.jetbrains.jps.model.ex.JpsElementTypeWithDummyProperties;
import org.jetbrains.jps.model.library.JpsLibraryType;
/**
* @author nik
*/
-public class JpsJavaLibraryType extends JpsLibraryType<JpsDummyElement> implements JpsElementTypeWithDefaultProperties<JpsDummyElement> {
+public class JpsJavaLibraryType extends JpsElementTypeWithDummyProperties implements JpsLibraryType<JpsDummyElement> {
public static final JpsJavaLibraryType INSTANCE = new JpsJavaLibraryType();
@NotNull
diff --git a/jps/model-api/src/org/jetbrains/jps/model/java/JpsJavaModuleType.java b/jps/model-api/src/org/jetbrains/jps/model/java/JpsJavaModuleType.java
index 6a971cf7b8ef..c4f629999d63 100644
--- a/jps/model-api/src/org/jetbrains/jps/model/java/JpsJavaModuleType.java
+++ b/jps/model-api/src/org/jetbrains/jps/model/java/JpsJavaModuleType.java
@@ -18,13 +18,13 @@ package org.jetbrains.jps.model.java;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.jps.model.JpsDummyElement;
import org.jetbrains.jps.model.JpsElementFactory;
-import org.jetbrains.jps.model.JpsElementTypeWithDefaultProperties;
+import org.jetbrains.jps.model.ex.JpsElementTypeWithDummyProperties;
import org.jetbrains.jps.model.module.JpsModuleType;
/**
* @author nik
*/
-public class JpsJavaModuleType extends JpsModuleType<JpsDummyElement> implements JpsElementTypeWithDefaultProperties<JpsDummyElement> {
+public class JpsJavaModuleType extends JpsElementTypeWithDummyProperties implements JpsModuleType<JpsDummyElement> {
public static final JpsJavaModuleType INSTANCE = new JpsJavaModuleType();
@NotNull
diff --git a/jps/model-api/src/org/jetbrains/jps/model/java/runConfiguration/JpsApplicationRunConfigurationType.java b/jps/model-api/src/org/jetbrains/jps/model/java/runConfiguration/JpsApplicationRunConfigurationType.java
index aa0a7a268d91..c5c880ca0958 100644
--- a/jps/model-api/src/org/jetbrains/jps/model/java/runConfiguration/JpsApplicationRunConfigurationType.java
+++ b/jps/model-api/src/org/jetbrains/jps/model/java/runConfiguration/JpsApplicationRunConfigurationType.java
@@ -15,12 +15,13 @@
*/
package org.jetbrains.jps.model.java.runConfiguration;
+import org.jetbrains.jps.model.ex.JpsElementTypeBase;
import org.jetbrains.jps.model.runConfiguration.JpsRunConfigurationType;
/**
* @author nik
*/
-public class JpsApplicationRunConfigurationType extends JpsRunConfigurationType<JpsApplicationRunConfigurationProperties> {
+public class JpsApplicationRunConfigurationType extends JpsElementTypeBase<JpsApplicationRunConfigurationProperties> implements JpsRunConfigurationType<JpsApplicationRunConfigurationProperties> {
public static final JpsApplicationRunConfigurationType INSTANCE = new JpsApplicationRunConfigurationType();
private JpsApplicationRunConfigurationType() {
diff --git a/jps/model-api/src/org/jetbrains/jps/model/library/JpsLibraryType.java b/jps/model-api/src/org/jetbrains/jps/model/library/JpsLibraryType.java
index 81a1de0fa604..238c78e1aeeb 100644
--- a/jps/model-api/src/org/jetbrains/jps/model/library/JpsLibraryType.java
+++ b/jps/model-api/src/org/jetbrains/jps/model/library/JpsLibraryType.java
@@ -19,7 +19,11 @@ import org.jetbrains.jps.model.JpsElement;
import org.jetbrains.jps.model.JpsElementType;
/**
+ * Represents a type of libraries in JPS model.
+ * <p>
+ * Use {@link org.jetbrains.jps.model.ex.JpsElementTypeBase} as a base class for implementations of this interface
+ * </p>
* @author nik
*/
-public abstract class JpsLibraryType<P extends JpsElement> extends JpsElementType<P> {
+public interface JpsLibraryType<P extends JpsElement> extends JpsElementType<P> {
}
diff --git a/jps/model-api/src/org/jetbrains/jps/model/library/sdk/JpsSdkType.java b/jps/model-api/src/org/jetbrains/jps/model/library/sdk/JpsSdkType.java
index 2699fdf8ec57..ecc62a718c38 100644
--- a/jps/model-api/src/org/jetbrains/jps/model/library/sdk/JpsSdkType.java
+++ b/jps/model-api/src/org/jetbrains/jps/model/library/sdk/JpsSdkType.java
@@ -17,13 +17,13 @@ package org.jetbrains.jps.model.library.sdk;
import org.jetbrains.jps.model.JpsElement;
import org.jetbrains.jps.model.JpsElementChildRole;
+import org.jetbrains.jps.model.ex.JpsElementTypeBase;
import org.jetbrains.jps.model.library.JpsLibraryType;
-import org.jetbrains.jps.model.library.sdk.JpsSdk;
/**
* @author nik
*/
-public abstract class JpsSdkType<P extends JpsElement> extends JpsLibraryType<JpsSdk<P>> {
+public abstract class JpsSdkType<P extends JpsElement> extends JpsElementTypeBase<JpsSdk<P>> implements JpsLibraryType<JpsSdk<P>> {
private final JpsElementChildRole<P> mySdkPropertiesRole = new JpsElementChildRole<P>();
public final JpsElementChildRole<P> getSdkPropertiesRole() {
diff --git a/jps/model-api/src/org/jetbrains/jps/model/module/JpsModule.java b/jps/model-api/src/org/jetbrains/jps/model/module/JpsModule.java
index 3a1df16d5267..8a85c2f350b0 100644
--- a/jps/model-api/src/org/jetbrains/jps/model/module/JpsModule.java
+++ b/jps/model-api/src/org/jetbrains/jps/model/module/JpsModule.java
@@ -45,8 +45,8 @@ public interface JpsModule extends JpsNamedElement, JpsReferenceableElement<JpsM
Iterable<JpsTypedModuleSourceRoot<P>> getSourceRoots(@NotNull JpsModuleSourceRootType<P> type);
@NotNull
- <P extends JpsElement, Type extends JpsModuleSourceRootType<P> & JpsElementTypeWithDefaultProperties<P>>
- JpsModuleSourceRoot addSourceRoot(@NotNull String url, @NotNull Type rootType);
+ <P extends JpsElement>
+ JpsModuleSourceRoot addSourceRoot(@NotNull String url, @NotNull JpsModuleSourceRootType<P> rootType);
@NotNull
<P extends JpsElement>
diff --git a/jps/model-api/src/org/jetbrains/jps/model/module/JpsModuleSourceRootType.java b/jps/model-api/src/org/jetbrains/jps/model/module/JpsModuleSourceRootType.java
index 5a2dbb34d9ad..873664a0ff2d 100644
--- a/jps/model-api/src/org/jetbrains/jps/model/module/JpsModuleSourceRootType.java
+++ b/jps/model-api/src/org/jetbrains/jps/model/module/JpsModuleSourceRootType.java
@@ -17,9 +17,15 @@ package org.jetbrains.jps.model.module;
import org.jetbrains.jps.model.JpsElement;
import org.jetbrains.jps.model.JpsElementType;
+import org.jetbrains.jps.model.JpsElementTypeWithDefaultProperties;
/**
+ * Represents a type of source roots of modules in JPS model.
+ *
+ * <p>
+ * Use {@link org.jetbrains.jps.model.ex.JpsElementTypeBase} as a base class for implementations of this interface
+ * </p>
* @author nik
*/
-public abstract class JpsModuleSourceRootType<P extends JpsElement> extends JpsElementType<P> {
+public interface JpsModuleSourceRootType<P extends JpsElement> extends JpsElementType<P>, JpsElementTypeWithDefaultProperties<P> {
}
diff --git a/jps/model-api/src/org/jetbrains/jps/model/module/JpsModuleType.java b/jps/model-api/src/org/jetbrains/jps/model/module/JpsModuleType.java
index 9062744badea..10c71cbea84c 100644
--- a/jps/model-api/src/org/jetbrains/jps/model/module/JpsModuleType.java
+++ b/jps/model-api/src/org/jetbrains/jps/model/module/JpsModuleType.java
@@ -19,7 +19,12 @@ import org.jetbrains.jps.model.JpsElement;
import org.jetbrains.jps.model.JpsElementType;
/**
+ * Represents a type of modules in JPS model
+ *
+ * <p>
+ * Use {@link org.jetbrains.jps.model.ex.JpsElementTypeBase} as a base class for implementations of this interface
+ * </p>
* @author nik
*/
-public abstract class JpsModuleType<P extends JpsElement> extends JpsElementType<P> {
+public interface JpsModuleType<P extends JpsElement> extends JpsElementType<P> {
}
diff --git a/jps/model-api/src/org/jetbrains/jps/model/runConfiguration/JpsRunConfigurationType.java b/jps/model-api/src/org/jetbrains/jps/model/runConfiguration/JpsRunConfigurationType.java
index 558bf0548396..ebf0ab6208fe 100644
--- a/jps/model-api/src/org/jetbrains/jps/model/runConfiguration/JpsRunConfigurationType.java
+++ b/jps/model-api/src/org/jetbrains/jps/model/runConfiguration/JpsRunConfigurationType.java
@@ -19,7 +19,12 @@ import org.jetbrains.jps.model.JpsElement;
import org.jetbrains.jps.model.JpsElementType;
/**
+ * Represents a type of run configurations in JPS model
+ *
+ * <p>
+ * Use {@link org.jetbrains.jps.model.ex.JpsElementTypeBase} as a base class for implementations of this interface
+ * </p>
* @author nik
*/
-public abstract class JpsRunConfigurationType<P extends JpsElement> extends JpsElementType<P> {
+public interface JpsRunConfigurationType<P extends JpsElement> extends JpsElementType<P> {
}
diff --git a/jps/model-impl/src/org/jetbrains/jps/model/java/impl/JavaSdkUtil.java b/jps/model-impl/src/org/jetbrains/jps/model/java/impl/JavaSdkUtil.java
index 32a5a258f268..2610590768ed 100644
--- a/jps/model-impl/src/org/jetbrains/jps/model/java/impl/JavaSdkUtil.java
+++ b/jps/model-impl/src/org/jetbrains/jps/model/java/impl/JavaSdkUtil.java
@@ -83,9 +83,17 @@ public class JavaSdkUtil {
}
}
- File classesZip = new File(home, "lib/classes.zip");
- if (classesZip.isFile()) {
- rootFiles.add(classesZip);
+ String[] additionalJars = {
+ "jre/bin/default/jclSC170/vm.jar",
+ "jre/lib/i386/default/jclSC170/vm.jar",
+ "jre/lib/amd64/default/jclSC170/vm.jar",
+ "lib/classes.zip"
+ };
+ for (String relativePath : additionalJars) {
+ File jar = new File(home, relativePath);
+ if (jar.isFile()) {
+ rootFiles.add(jar);
+ }
}
File classesDir = new File(home, "classes");
diff --git a/jps/model-impl/src/org/jetbrains/jps/model/module/impl/JpsModuleImpl.java b/jps/model-impl/src/org/jetbrains/jps/model/module/impl/JpsModuleImpl.java
index eff6c274eec7..0c76723f89d7 100644
--- a/jps/model-impl/src/org/jetbrains/jps/model/module/impl/JpsModuleImpl.java
+++ b/jps/model-impl/src/org/jetbrains/jps/model/module/impl/JpsModuleImpl.java
@@ -111,8 +111,7 @@ public class JpsModuleImpl<P extends JpsElement> extends JpsNamedCompositeElemen
@NotNull
@Override
- public <P extends JpsElement, T extends JpsModuleSourceRootType<P> & JpsElementTypeWithDefaultProperties<P>>
- JpsModuleSourceRoot addSourceRoot(@NotNull String url, @NotNull T rootType) {
+ public <P extends JpsElement> JpsModuleSourceRoot addSourceRoot(@NotNull String url, @NotNull JpsModuleSourceRootType<P> rootType) {
return addSourceRoot(url, rootType, rootType.createDefaultProperties());
}
diff --git a/jps/model-serialization/src/com/intellij/openapi/components/PathMacroMap.java b/jps/model-serialization/src/com/intellij/openapi/components/PathMacroMap.java
index 05dc780d2e07..22500b2e3674 100644
--- a/jps/model-serialization/src/com/intellij/openapi/components/PathMacroMap.java
+++ b/jps/model-serialization/src/com/intellij/openapi/components/PathMacroMap.java
@@ -18,22 +18,16 @@ package com.intellij.openapi.components;
import com.intellij.openapi.application.PathMacroFilter;
import com.intellij.openapi.diagnostic.Logger;
import com.intellij.openapi.util.io.FileUtil;
-import org.jdom.Attribute;
-import org.jdom.Comment;
-import org.jdom.Element;
-import org.jdom.Text;
+import org.jdom.*;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
-import java.util.List;
-
/**
* @author Eugene Zhuravlev
* @since Dec 6, 2004
*/
public abstract class PathMacroMap {
- private static final Logger LOG = Logger.getInstance("#com.intellij.openapi.components.PathMacroMap");
-
+ private static final Logger LOG = Logger.getInstance(PathMacroMap.class);
public abstract String substitute(String text, boolean caseSensitive);
@@ -41,15 +35,10 @@ public abstract class PathMacroMap {
substitute(e, caseSensitive, false);
}
- public final void substitute(@NotNull Element e, boolean caseSensitive, final boolean recursively,
- @Nullable PathMacroFilter filter) {
- List content = e.getContent();
- //noinspection ForLoopReplaceableByForEach
- for (int i = 0, contentSize = content.size(); i < contentSize; i++) {
- Object child = content.get(i);
+ public final void substitute(@NotNull Element e, boolean caseSensitive, boolean recursively, @Nullable PathMacroFilter filter) {
+ for (Content child : e.getContent()) {
if (child instanceof Element) {
- Element element = (Element)child;
- substitute(element, caseSensitive, recursively, filter);
+ substitute((Element)child, caseSensitive, recursively, filter);
}
else if (child instanceof Text) {
Text t = (Text)child;
@@ -64,16 +53,11 @@ public abstract class PathMacroMap {
}
}
- List attributes = e.getAttributes();
- //noinspection ForLoopReplaceableByForEach
- for (int i = 0, attributesSize = attributes.size(); i < attributesSize; i++) {
- Object attribute1 = attributes.get(i);
- Attribute attribute = (Attribute)attribute1;
+ for (Attribute attribute : e.getAttributes()) {
if (filter == null || !filter.skipPathMacros(attribute)) {
- final String value = (recursively || (filter != null && filter.recursePathMacros(attribute)))
- ? substituteRecursively(attribute.getValue(), caseSensitive)
- : substitute(attribute.getValue(), caseSensitive);
- attribute.setValue(value);
+ attribute.setValue((recursively || (filter != null && filter.recursePathMacros(attribute)))
+ ? substituteRecursively(attribute.getValue(), caseSensitive)
+ : substitute(attribute.getValue(), caseSensitive));
}
}
}
diff --git a/jps/standalone-builder/src/org/jetbrains/jps/gant/JpsGantProjectBuilder.java b/jps/standalone-builder/src/org/jetbrains/jps/gant/JpsGantProjectBuilder.java
index 559ed4d3f00e..6f7d41b2a080 100644
--- a/jps/standalone-builder/src/org/jetbrains/jps/gant/JpsGantProjectBuilder.java
+++ b/jps/standalone-builder/src/org/jetbrains/jps/gant/JpsGantProjectBuilder.java
@@ -93,11 +93,11 @@ public class JpsGantProjectBuilder {
}
public void setUseInProcessJavac(boolean value) {
- //doesn't make sense for new builders
+ warning("projectBuilder.useInProcessJavac option is ignored because it doesn't make sense for new JPS builders");
}
public void setArrangeModuleCyclesOutputs(boolean value) {
- //doesn't make sense for new builders
+ warning("projectBuilder.arrangeModuleCyclesOutputs option is ignored because it doesn't make sense for new JPS builders");
}
public void error(String message) {
@@ -202,6 +202,8 @@ public class JpsGantProjectBuilder {
private void runBuild(final Set<String> modulesSet, final boolean allModules, boolean includeTests) {
if (!myDryRun) {
final AntMessageHandler messageHandler = new AntMessageHandler();
+ //noinspection AssignmentToStaticFieldFromInstanceMethod
+ AntLoggerFactory.ourMessageHandler = new AntMessageHandler();
Logger.setFactory(AntLoggerFactory.class);
boolean forceBuild = true;
@@ -321,14 +323,10 @@ public class JpsGantProjectBuilder {
}
}
- private class AntLoggerFactory implements Logger.Factory {
+ private static class AntLoggerFactory implements Logger.Factory {
private static final String COMPILER_NAME = "build runner";
- private final AntMessageHandler myMessageHandler;
-
- public AntLoggerFactory() {
- myMessageHandler = new AntMessageHandler();
- }
+ private static AntMessageHandler ourMessageHandler;
@Override
public Logger getLoggerInstance(String category) {
@@ -336,16 +334,16 @@ public class JpsGantProjectBuilder {
@Override
public void error(@NonNls String message, @Nullable Throwable t, @NotNull @NonNls String... details) {
if (t != null) {
- myMessageHandler.processMessage(new CompilerMessage(COMPILER_NAME, t));
+ ourMessageHandler.processMessage(new CompilerMessage(COMPILER_NAME, t));
}
else {
- myMessageHandler.processMessage(new CompilerMessage(COMPILER_NAME, BuildMessage.Kind.ERROR, message));
+ ourMessageHandler.processMessage(new CompilerMessage(COMPILER_NAME, BuildMessage.Kind.ERROR, message));
}
}
@Override
public void warn(@NonNls String message, @Nullable Throwable t) {
- myMessageHandler.processMessage(new CompilerMessage(COMPILER_NAME, BuildMessage.Kind.WARNING, message));
+ ourMessageHandler.processMessage(new CompilerMessage(COMPILER_NAME, BuildMessage.Kind.WARNING, message));
}
};
}