mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
new project model: java-specific properties for dependencies
This commit is contained in:
@@ -0,0 +1,18 @@
|
||||
package org.jetbrains.jps.model.java;
|
||||
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.jps.model.JpsElement;
|
||||
|
||||
/**
|
||||
* @author nik
|
||||
*/
|
||||
public interface JpsJavaDependencyExtension extends JpsElement {
|
||||
boolean isExported();
|
||||
|
||||
void setExported(boolean exported);
|
||||
|
||||
@NotNull
|
||||
JpsJavaDependencyScope getScope();
|
||||
|
||||
void setScope(@NotNull JpsJavaDependencyScope scope);
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
package org.jetbrains.jps.model.java;
|
||||
|
||||
/**
|
||||
* @author nik
|
||||
*/
|
||||
public enum JpsJavaDependencyScope {
|
||||
COMPILE, TEST, RUNTIME, PROVIDED
|
||||
}
|
||||
@@ -1,10 +1,10 @@
|
||||
package org.jetbrains.jps.model.module;
|
||||
|
||||
import org.jetbrains.jps.model.JpsElement;
|
||||
import org.jetbrains.jps.model.JpsCompositeElement;
|
||||
|
||||
/**
|
||||
* @author nik
|
||||
*/
|
||||
public interface JpsDependencyElement extends JpsElement {
|
||||
public interface JpsDependencyElement extends JpsCompositeElement {
|
||||
void remove();
|
||||
}
|
||||
|
||||
@@ -9,7 +9,7 @@ import org.jetbrains.jps.model.module.JpsModule;
|
||||
* @author nik
|
||||
*/
|
||||
public class JavaModuleExtensionKind extends JpsElementKind<JavaModuleExtensionImpl> implements JpsElementFactory<JavaModuleExtensionImpl> {
|
||||
public static final JavaModuleExtensionKind INSTANCE = new JavaModuleExtensionKind();
|
||||
private static final JavaModuleExtensionKind INSTANCE = new JavaModuleExtensionKind();
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
|
||||
+70
@@ -0,0 +1,70 @@
|
||||
package org.jetbrains.jps.model.java.impl;
|
||||
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.jps.model.JpsEventDispatcher;
|
||||
import org.jetbrains.jps.model.JpsModel;
|
||||
import org.jetbrains.jps.model.JpsParentElement;
|
||||
import org.jetbrains.jps.model.impl.JpsElementBase;
|
||||
import org.jetbrains.jps.model.java.JpsJavaDependencyExtension;
|
||||
import org.jetbrains.jps.model.java.JpsJavaDependencyScope;
|
||||
|
||||
/**
|
||||
* @author nik
|
||||
*/
|
||||
public class JpsJavaDependencyExtensionImpl extends JpsElementBase<JpsJavaDependencyExtensionImpl> implements JpsJavaDependencyExtension {
|
||||
private boolean myExported;
|
||||
private JpsJavaDependencyScope myScope;
|
||||
|
||||
public JpsJavaDependencyExtensionImpl(JpsEventDispatcher eventDispatcher, JpsParentElement parent, boolean exported, JpsJavaDependencyScope scope) {
|
||||
super(eventDispatcher, parent);
|
||||
myExported = exported;
|
||||
myScope = scope;
|
||||
}
|
||||
|
||||
public JpsJavaDependencyExtensionImpl(JpsJavaDependencyExtensionImpl original, JpsEventDispatcher eventDispatcher, JpsParentElement parent) {
|
||||
super(original, eventDispatcher, parent);
|
||||
myExported = original.myExported;
|
||||
myScope = original.myScope;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isExported() {
|
||||
return myExported;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setExported(boolean exported) {
|
||||
if (myExported != exported) {
|
||||
myExported = exported;
|
||||
getEventDispatcher().fireElementChanged(this);
|
||||
}
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
public JpsJavaDependencyScope getScope() {
|
||||
return myScope;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setScope(@NotNull JpsJavaDependencyScope scope) {
|
||||
if (!scope.equals(myScope)) {
|
||||
myScope = scope;
|
||||
getEventDispatcher().fireElementChanged(this);
|
||||
}
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
public JpsJavaDependencyExtensionImpl createCopy(@NotNull JpsModel model,
|
||||
@NotNull JpsEventDispatcher eventDispatcher,
|
||||
JpsParentElement parent) {
|
||||
return new JpsJavaDependencyExtensionImpl(this, eventDispatcher, parent);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void applyChanges(@NotNull JpsJavaDependencyExtensionImpl modified) {
|
||||
setExported(modified.myExported);
|
||||
setScope(modified.myScope);
|
||||
}
|
||||
}
|
||||
+31
@@ -0,0 +1,31 @@
|
||||
package org.jetbrains.jps.model.java.impl;
|
||||
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.jps.model.*;
|
||||
import org.jetbrains.jps.model.java.JpsJavaDependencyExtension;
|
||||
import org.jetbrains.jps.model.java.JpsJavaDependencyScope;
|
||||
import org.jetbrains.jps.model.module.JpsDependencyElement;
|
||||
|
||||
/**
|
||||
* @author nik
|
||||
*/
|
||||
public class JpsJavaDependencyExtensionKind extends JpsElementKind<JpsJavaDependencyExtensionImpl>
|
||||
implements JpsElementFactory<JpsJavaDependencyExtensionImpl> {
|
||||
public static final JpsJavaDependencyExtensionKind INSTANCE = new JpsJavaDependencyExtensionKind();
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
public JpsJavaDependencyExtensionImpl create(@NotNull JpsModel model,
|
||||
@NotNull JpsEventDispatcher eventDispatcher,
|
||||
JpsParentElement parent) {
|
||||
return new JpsJavaDependencyExtensionImpl(eventDispatcher, parent, false, JpsJavaDependencyScope.COMPILE);
|
||||
}
|
||||
|
||||
public static JpsJavaDependencyExtension getExtension(@NotNull JpsDependencyElement element) {
|
||||
JpsJavaDependencyExtensionImpl extension = element.getContainer().getChild(INSTANCE);
|
||||
if (extension == null) {
|
||||
extension = element.getContainer().setChild(INSTANCE);
|
||||
}
|
||||
return extension;
|
||||
}
|
||||
}
|
||||
@@ -1,16 +1,38 @@
|
||||
package org.jetbrains.jps.model;
|
||||
|
||||
import org.jetbrains.jps.model.java.JpsJavaDependencyScope;
|
||||
import org.jetbrains.jps.model.java.JpsJavaLibraryType;
|
||||
import org.jetbrains.jps.model.java.JpsJavaModuleType;
|
||||
import org.jetbrains.jps.model.java.impl.JavaModuleExtensionKind;
|
||||
import org.jetbrains.jps.model.java.impl.JpsJavaDependencyExtensionImpl;
|
||||
import org.jetbrains.jps.model.java.impl.JpsJavaDependencyExtensionKind;
|
||||
import org.jetbrains.jps.model.library.JpsLibrary;
|
||||
import org.jetbrains.jps.model.module.JpsDependencyElement;
|
||||
import org.jetbrains.jps.model.module.JpsLibraryDependency;
|
||||
import org.jetbrains.jps.model.module.JpsModule;
|
||||
|
||||
/**
|
||||
* @author nik
|
||||
*/
|
||||
public class JpsJavaExtensionTest extends JpsModelTestCase {
|
||||
public void test() {
|
||||
public void testModule() {
|
||||
final JpsModule module = myModel.getProject().addModule(JpsJavaModuleType.INSTANCE, "m");
|
||||
JavaModuleExtensionKind.getExtension(module).setOutputUrl("file://path");
|
||||
assertEquals("file://path", JavaModuleExtensionKind.getExtension(module).getOutputUrl());
|
||||
}
|
||||
|
||||
public void testDependency() {
|
||||
final JpsModel model = myModel.createModifiableModel(new TestJpsEventDispatcher());
|
||||
final JpsModule module = model.getProject().addModule(JpsJavaModuleType.INSTANCE, "m");
|
||||
final JpsLibrary library = model.getProject().addLibrary(JpsJavaLibraryType.INSTANCE, "l");
|
||||
final JpsLibraryDependency dependency = module.getDependenciesList().addLibraryDependency(library);
|
||||
JpsJavaDependencyExtensionKind.getExtension(dependency).setScope(JpsJavaDependencyScope.TEST);
|
||||
JpsJavaDependencyExtensionKind.getExtension(dependency).setExported(true);
|
||||
model.commit();
|
||||
|
||||
final JpsDependencyElement dep = assertOneElement(assertOneElement(myModel.getProject().getModules()).getDependenciesList().getDependencies());
|
||||
final JpsJavaDependencyExtensionImpl extension = dep.getContainer().getChild(JpsJavaDependencyExtensionKind.INSTANCE);
|
||||
assertTrue(extension.isExported());
|
||||
assertSame(JpsJavaDependencyScope.TEST, extension.getScope());
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user