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..4f326b12f0cf 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,12 @@ */ package org.jetbrains.jps.model; +import org.jetbrains.annotations.NotNull; + /** * @author nik */ -public abstract class JpsElementType

{ - private final JpsElementChildRole

myPropertiesRole = new JpsElementChildRole

(); - - public final JpsElementChildRole

getPropertiesRole() { - return myPropertiesRole; - } +public interface JpsElementType

{ + @NotNull + JpsElementChildRole

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 { +public class DirectoryArtifactType extends JpsElementTypeWithDummyProperties implements JpsArtifactType { 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 { +public class JarArtifactType extends JpsElementTypeWithDummyProperties implements JpsArtifactType { 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..68bd879e298b 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 @@ -21,5 +21,5 @@ import org.jetbrains.jps.model.JpsElementType; /** * @author nik */ -public abstract class JpsArtifactType

extends JpsElementType

{ +public interface JpsArtifactType

extends JpsElementType

{ } 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..70b82832dae6 --- /dev/null +++ b/jps/model-api/src/org/jetbrains/jps/model/ex/JpsElementTypeBase.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.JpsElement; +import org.jetbrains.jps.model.JpsElementChildRole; +import org.jetbrains.jps.model.JpsElementType; + +/** + * @author nik + */ +public abstract class JpsElementTypeBase

implements JpsElementType

{ + private final JpsElementChildRole

myPropertiesRole = new JpsElementChildRole

(); + + @NotNull + @Override + public final JpsElementChildRole

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..9fb039c05172 --- /dev/null +++ b/jps/model-api/src/org/jetbrains/jps/model/ex/JpsElementTypeWithDummyProperties.java @@ -0,0 +1,32 @@ +/* + * 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; + +/** + * @author nik + */ +public abstract class JpsElementTypeWithDummyProperties extends JpsElementTypeBase implements JpsElementTypeWithDefaultProperties { + @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 implements JpsElementTypeWithDefaultProperties { +public class JavaResourceRootType extends JpsElementTypeWithDummyProperties implements JpsModuleSourceRootType { 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> implements JpsElementTypeWithDefaultProperties> { +public class JavaSourceRootType extends JpsElementTypeBase> implements JpsModuleSourceRootType> { 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 implements JpsElementTypeWithDefaultProperties { +public class JpsJavaLibraryType extends JpsElementTypeWithDummyProperties implements JpsLibraryType { 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 implements JpsElementTypeWithDefaultProperties { +public class JpsJavaModuleType extends JpsElementTypeWithDummyProperties implements JpsModuleType { 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 { +public class JpsApplicationRunConfigurationType extends JpsElementTypeBase implements JpsRunConfigurationType { 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..bb973ecf713a 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 @@ -21,5 +21,5 @@ import org.jetbrains.jps.model.JpsElementType; /** * @author nik */ -public abstract class JpsLibraryType

extends JpsElementType

{ +public interface JpsLibraryType

extends JpsElementType

{ } 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

extends JpsLibraryType> { +public abstract class JpsSdkType

extends JpsElementTypeBase> implements JpsLibraryType> { private final JpsElementChildRole

mySdkPropertiesRole = new JpsElementChildRole

(); public final JpsElementChildRole

getSdkPropertiesRole() { 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..adc98d447fe6 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,10 @@ package org.jetbrains.jps.model.module; import org.jetbrains.jps.model.JpsElement; import org.jetbrains.jps.model.JpsElementType; +import org.jetbrains.jps.model.JpsElementTypeWithDefaultProperties; /** * @author nik */ -public abstract class JpsModuleSourceRootType

extends JpsElementType

{ +public interface JpsModuleSourceRootType

extends JpsElementType

, JpsElementTypeWithDefaultProperties

{ } 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..d3af4b661b4f 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 @@ -21,5 +21,5 @@ import org.jetbrains.jps.model.JpsElementType; /** * @author nik */ -public abstract class JpsModuleType

extends JpsElementType

{ +public interface JpsModuleType

extends JpsElementType

{ } 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..588453ff9b8c 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 @@ -21,5 +21,5 @@ import org.jetbrains.jps.model.JpsElementType; /** * @author nik */ -public abstract class JpsRunConfigurationType

extends JpsElementType

{ +public interface JpsRunConfigurationType

extends JpsElementType

{ } diff --git a/plugins/devkit/jps-plugin/src/org/jetbrains/jps/devkit/model/JpsPluginModuleType.java b/plugins/devkit/jps-plugin/src/org/jetbrains/jps/devkit/model/JpsPluginModuleType.java index 2cc4166fbe10..296fd243178d 100644 --- a/plugins/devkit/jps-plugin/src/org/jetbrains/jps/devkit/model/JpsPluginModuleType.java +++ b/plugins/devkit/jps-plugin/src/org/jetbrains/jps/devkit/model/JpsPluginModuleType.java @@ -16,12 +16,13 @@ package org.jetbrains.jps.devkit.model; import org.jetbrains.jps.model.JpsSimpleElement; +import org.jetbrains.jps.model.ex.JpsElementTypeBase; import org.jetbrains.jps.model.module.JpsModuleType; /** * @author nik */ -public class JpsPluginModuleType extends JpsModuleType> { +public class JpsPluginModuleType extends JpsElementTypeBase> implements JpsModuleType> { public static final JpsPluginModuleType INSTANCE = new JpsPluginModuleType(); } diff --git a/plugins/javaFX/javaFX-jps-plugin/src/org/jetbrains/plugins/javaFX/JpsJavaFxApplicationArtifactType.java b/plugins/javaFX/javaFX-jps-plugin/src/org/jetbrains/plugins/javaFX/JpsJavaFxApplicationArtifactType.java index 3d1df6e092f2..fbad37aff6ca 100644 --- a/plugins/javaFX/javaFX-jps-plugin/src/org/jetbrains/plugins/javaFX/JpsJavaFxApplicationArtifactType.java +++ b/plugins/javaFX/javaFX-jps-plugin/src/org/jetbrains/plugins/javaFX/JpsJavaFxApplicationArtifactType.java @@ -1,11 +1,12 @@ package org.jetbrains.plugins.javaFX; import org.jetbrains.jps.model.artifact.JpsArtifactType; +import org.jetbrains.jps.model.ex.JpsElementTypeBase; /** * User: anna * Date: 3/13/13 */ -public class JpsJavaFxApplicationArtifactType extends JpsArtifactType { +public class JpsJavaFxApplicationArtifactType extends JpsElementTypeBase implements JpsArtifactType { public static final JpsJavaFxApplicationArtifactType INSTANCE = new JpsJavaFxApplicationArtifactType(); } diff --git a/plugins/javaFX/javaFX-jps-plugin/src/org/jetbrains/plugins/javaFX/preloader/JpsJavaFxPreloaderArtifactType.java b/plugins/javaFX/javaFX-jps-plugin/src/org/jetbrains/plugins/javaFX/preloader/JpsJavaFxPreloaderArtifactType.java index ab0440dc9195..d05fed5d5f54 100644 --- a/plugins/javaFX/javaFX-jps-plugin/src/org/jetbrains/plugins/javaFX/preloader/JpsJavaFxPreloaderArtifactType.java +++ b/plugins/javaFX/javaFX-jps-plugin/src/org/jetbrains/plugins/javaFX/preloader/JpsJavaFxPreloaderArtifactType.java @@ -16,11 +16,12 @@ package org.jetbrains.plugins.javaFX.preloader; import org.jetbrains.jps.model.artifact.JpsArtifactType; +import org.jetbrains.jps.model.ex.JpsElementTypeBase; /** * User: anna * Date: 3/13/13 */ -public class JpsJavaFxPreloaderArtifactType extends JpsArtifactType { +public class JpsJavaFxPreloaderArtifactType extends JpsElementTypeBase implements JpsArtifactType { public static final JpsJavaFxPreloaderArtifactType INSTANCE = new JpsJavaFxPreloaderArtifactType(); }