diff options
Diffstat (limited to 'jps')
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)); } }; } |