Skip to content

Commit

Permalink
MPS-24295 Not updating versions before the actual migration is started
Browse files Browse the repository at this point in the history
  • Loading branch information
apyshkin committed Aug 28, 2016
1 parent 2267abe commit 1620e64
Show file tree
Hide file tree
Showing 26 changed files with 1,132 additions and 1,449 deletions.

Large diffs are not rendered by default.

Expand Up @@ -32,10 +32,8 @@
</dependency>
<dependency className="jetbrains.mps.lang.migration.runtime.base.MigrationModuleUtil" file="MigrationModuleUtil.java">
<classNode dependClassName="java.lang.IllegalArgumentException" />
<classNode dependClassName="java.lang.Integer" />
<classNode dependClassName="java.lang.Iterable" />
<classNode dependClassName="java.util.HashSet" />
<classNode dependClassName="java.util.Map" />
<classNode dependClassName="java.util.Set" />
<classNode dependClassName="jetbrains.mps.internal.collections.runtime.IWhereFilter" />
<classNode dependClassName="jetbrains.mps.internal.collections.runtime.Sequence" />
Expand All @@ -49,6 +47,7 @@
<classNode dependClassName="jetbrains.mps.smodel.SLanguageHierarchy" />
<classNode dependClassName="jetbrains.mps.smodel.language.LanguageRegistry" />
<classNode dependClassName="jetbrains.mps.smodel.tempmodel.TempModule" />
<classNode dependClassName="org.jetbrains.annotations.NotNull" />
<classNode dependClassName="org.jetbrains.mps.openapi.language.SLanguage" />
<classNode dependClassName="org.jetbrains.mps.openapi.module.SModule" />
<classNode dependClassName="org.jetbrains.mps.openapi.module.SModuleReference" />
Expand Down
@@ -1,3 +1,3 @@
<?xml version="1.0" encoding="UTF-8"?>
<dependencies version="2" modelHash="egv03pg81a1mhbtxsfg6hybbk35xvof" />
<dependencies version="2" modelHash="7kstlw4bdqt7l7fk6j4mp5sstaco3dr" />

Expand Up @@ -14,12 +14,12 @@
import java.util.HashSet;
import jetbrains.mps.project.dependency.GlobalModuleDependenciesManager;
import org.jetbrains.mps.openapi.language.SLanguage;
import org.jetbrains.annotations.NotNull;
import jetbrains.mps.smodel.SLanguageHierarchy;
import jetbrains.mps.smodel.language.LanguageRegistry;
import org.jetbrains.mps.openapi.module.SModuleReference;
import jetbrains.mps.project.AbstractModule;
import org.jetbrains.mps.openapi.module.SModuleReference;
import jetbrains.mps.project.structure.modules.ModuleDescriptor;
import java.util.Map;

public class MigrationModuleUtil {
public static Iterable<SModule> getMigrateableModulesFromProject(Project p) {
Expand All @@ -30,28 +30,35 @@ public boolean accept(SModule it) {
}
}).ofType(SModule.class);
}

public static boolean isModuleMigrateable(SModule m) {
return !((m instanceof DevKit)) && !((Solution.isBootstrapSolution(m.getModuleReference()))) && !((m.isReadOnly())) && !((m instanceof TempModule));
}

public static Set<SModule> getModuleDependencies(SModule module) {
Set<SModule> dependencies = SetSequence.fromSetWithValues(new HashSet<SModule>(), new GlobalModuleDependenciesManager(module).getModules(GlobalModuleDependenciesManager.Deptype.VISIBLE));
SetSequence.fromSet(dependencies).addElement(module);
return dependencies;
}
public static Set<SLanguage> getUsedLanguages(SModule module) {

public static Set<SLanguage> getUsedLanguages(@NotNull SModule module) {
return new SLanguageHierarchy(LanguageRegistry.getInstance(module.getRepository()), module.getUsedLanguages()).getExtended();
}
public static boolean hasDepVersion(SModule module, SModuleReference dependency) {
Integer result = check_6ishgu_a0a0e(check_6ishgu_a0a0a4(((AbstractModule) module).getModuleDescriptor()), dependency);
return result != null;

public static int getDependencyVersion(@NotNull SModule module, @NotNull SModule dependency) {
if (module instanceof AbstractModule) {
return ((AbstractModule) module).getDependencyVersion(dependency, false);
}
throw new IllegalArgumentException("We are able to work only with AbstractModule instances");
}
public static int getDepVersion(SModule module, SModuleReference dependency) {
Integer result = check_6ishgu_a0a0f(check_6ishgu_a0a0a5(((AbstractModule) module).getModuleDescriptor()), dependency);
if (result == null) {
throw new IllegalArgumentException();

public static int getUsedLanguageVersion(@NotNull SModule module, @NotNull SLanguage usedLang) {
if (module instanceof AbstractModule) {
return ((AbstractModule) module).getUsedLanguageVersion(usedLang, false);
}
return result;
throw new IllegalArgumentException("We are able to work only with AbstractModule instances");
}

public static void setDepVersion(SModule module, SModuleReference dependency, int version) {
ModuleDescriptor moduleDescriptor = ((AbstractModule) module).getModuleDescriptor();
if (moduleDescriptor == null) {
Expand All @@ -60,41 +67,15 @@ public static void setDepVersion(SModule module, SModuleReference dependency, in
moduleDescriptor.getDependencyVersions().put(dependency, version);
((AbstractModule) module).setChanged();
}

public static boolean allDependenciesActual(SModule module) {
for (SModule dep : SetSequence.fromSet(getModuleDependencies(module))) {
if (!(hasDepVersion(module, dep.getModuleReference()))) {
continue;
}
int currentDepVersion = ((AbstractModule) dep).getModuleVersion();
int ver = ((AbstractModule) module).getDependencyVersion(dep);
if (currentDepVersion != ver) {
int ver = getDependencyVersion(module, dep);
if (ver != currentDepVersion) {
return false;
}
}
return true;
}
private static Integer check_6ishgu_a0a0e(Map<SModuleReference, Integer> checkedDotOperand, SModuleReference dependency) {
if (null != checkedDotOperand) {
return checkedDotOperand.get(dependency);
}
return null;
}
private static Map<SModuleReference, Integer> check_6ishgu_a0a0a4(ModuleDescriptor checkedDotOperand) {
if (null != checkedDotOperand) {
return checkedDotOperand.getDependencyVersions();
}
return null;
}
private static Integer check_6ishgu_a0a0f(Map<SModuleReference, Integer> checkedDotOperand, SModuleReference dependency) {
if (null != checkedDotOperand) {
return checkedDotOperand.get(dependency);
}
return null;
}
private static Map<SModuleReference, Integer> check_6ishgu_a0a0a5(ModuleDescriptor checkedDotOperand) {
if (null != checkedDotOperand) {
return checkedDotOperand.getDependencyVersions();
}
return null;
}
}

0 comments on commit 1620e64

Please sign in to comment.