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();
}