MMKB-5027: improve old semver update handling

This commit is contained in:
Schneider Roland 2024-11-28 13:47:58 +01:00
parent cc624d1266
commit ab6cc10529
5 changed files with 18 additions and 10 deletions

View File

@ -10,7 +10,7 @@
</properties> </properties>
<groupId>at.ucs.magnolia</groupId> <groupId>at.ucs.magnolia</groupId>
<artifactId>ucs-intranet-magnolia-updates</artifactId> <artifactId>ucs-intranet-magnolia-updates</artifactId>
<version>2.0.0</version> <version>1.0.42</version>
<name>ucs-intranet-magnolia-updates</name> <name>ucs-intranet-magnolia-updates</name>
<url>http://maven.apache.org</url> <url>http://maven.apache.org</url>
<packaging>jar</packaging> <packaging>jar</packaging>

View File

@ -1,11 +1,11 @@
package at.ucs.magnolia.updates; package at.ucs.magnolia.updates;
import info.magnolia.module.delta.Task; import info.magnolia.module.delta.Delta;
import java.util.List; import java.util.List;
public interface IntranetUpdateModuleConfig { public interface IntranetUpdateModuleConfig {
List<Task> getInitialUpdateTasks(); List<Delta> getInitialUpdateDeltas();
String getYamlUpdateDir(); String getYamlUpdateDir();
String getUpdateTaskPackage(); String getUpdateTaskPackage();
} }

View File

@ -28,11 +28,13 @@ public class IntranetUpdateModuleVersionHandler extends DefaultModuleVersionHand
public IntranetUpdateModuleVersionHandler(IntranetUpdateModuleConfig moduleConfig) { public IntranetUpdateModuleVersionHandler(IntranetUpdateModuleConfig moduleConfig) {
super(); super();
this.moduleConfig = moduleConfig; this.moduleConfig = moduleConfig;
moduleConfig.getInitialUpdateDeltas()
.forEach(super::register);
} }
@Override @Override
protected List<Task> getExtraInstallTasks(InstallContext installContext) { protected List<Task> getExtraInstallTasks(InstallContext installContext) {
return getModuleConfig().getInitialUpdateTasks(); return getModuleConfig().getInitialUpdateDeltas().stream().map(Delta::getTasks).flatMap(List::stream).toList();
} }
@Override @Override
@ -41,6 +43,8 @@ public class IntranetUpdateModuleVersionHandler extends DefaultModuleVersionHand
if (from == null) { if (from == null) {
deltaList.add(getInstall(installContext)); deltaList.add(getInstall(installContext));
} else {
deltaList.addAll(super.getUpdateDeltas(installContext,from));
} }
deltaList.addAll(getUpdateDeltas(installContext, from)); deltaList.addAll(getUpdateDeltas(installContext, from));
@ -49,6 +53,7 @@ public class IntranetUpdateModuleVersionHandler extends DefaultModuleVersionHand
protected List<Delta> getUpdateDeltas(InstallContext installContext, Version from) { protected List<Delta> getUpdateDeltas(InstallContext installContext, Version from) {
try { try {
context.initFromJCR(installContext); context.initFromJCR(installContext);
return new Reflections( return new Reflections(
getModuleConfig().getUpdateTaskPackage(), getModuleConfig().getUpdateTaskPackage(),

View File

@ -77,6 +77,7 @@ public class IntranetUpdateModuleVersionHandlerContext {
} else { } else {
folderNode.setProperty(INSTALLED_TASKS, BigDecimal.ONE); folderNode.setProperty(INSTALLED_TASKS, BigDecimal.ONE);
} }
installContext.getConfigJCRSession().save();
} catch (RepositoryException e) { } catch (RepositoryException e) {
log.error("Could not add version to JCR", e); log.error("Could not add version to JCR", e);
} }

View File

@ -4,6 +4,7 @@ import at.ucs.magnolia.updates.util.IntranetUpdateModuleVersionHandlerContext;
import at.ucs.magnolia.updates.util.TaskWrapper; import at.ucs.magnolia.updates.util.TaskWrapper;
import info.magnolia.module.InstallContext; import info.magnolia.module.InstallContext;
import info.magnolia.module.delta.Delta; import info.magnolia.module.delta.Delta;
import info.magnolia.module.delta.DeltaBuilder;
import info.magnolia.module.delta.Task; import info.magnolia.module.delta.Task;
import info.magnolia.module.model.ModuleDefinition; import info.magnolia.module.model.ModuleDefinition;
import info.magnolia.module.model.Version; import info.magnolia.module.model.Version;
@ -35,7 +36,7 @@ public class IntranetUpdateModuleVersionHandlerTest {
when(moduleDefinition.getVersion()).thenReturn(Version.parseVersion("9.9.9")); when(moduleDefinition.getVersion()).thenReturn(Version.parseVersion("9.9.9"));
IntranetUpdateModuleConfig config = new IntranetUpdateModuleConfig() { IntranetUpdateModuleConfig config = new IntranetUpdateModuleConfig() {
@Override @Override
public List<Task> getInitialUpdateTasks() { public List<Delta> getInitialUpdateDeltas() {
return List.of(); return List.of();
} }
@ -66,8 +67,8 @@ public class IntranetUpdateModuleVersionHandlerTest {
when(moduleDefinition.getVersion()).thenReturn(null); when(moduleDefinition.getVersion()).thenReturn(null);
IntranetUpdateModuleConfig config = new IntranetUpdateModuleConfig() { IntranetUpdateModuleConfig config = new IntranetUpdateModuleConfig() {
@Override @Override
public List<Task> getInitialUpdateTasks() { public List<Delta> getInitialUpdateDeltas() {
return List.of(new TestTask("install1","install1desc")); return List.of(DeltaBuilder.update( Version.parseVersion("0.0.1"), "", new TestTask("install1","install1desc")));
} }
@Override @Override
public String getYamlUpdateDir() { public String getYamlUpdateDir() {
@ -96,8 +97,9 @@ public class IntranetUpdateModuleVersionHandlerTest {
when(moduleDefinition.getVersion()).thenReturn(Version.parseVersion("9.9.9")); when(moduleDefinition.getVersion()).thenReturn(Version.parseVersion("9.9.9"));
IntranetUpdateModuleConfig config = new IntranetUpdateModuleConfig() { IntranetUpdateModuleConfig config = new IntranetUpdateModuleConfig() {
@Override @Override
public List<Task> getInitialUpdateTasks() { public List<Delta> getInitialUpdateDeltas() {
return List.of(new TestTask("install1","install1desc")); return List.of(DeltaBuilder.update( Version.parseVersion("0.0.1"), "", new TestTask("install1","install1desc")));
} }
@Override @Override
public String getYamlUpdateDir() { public String getYamlUpdateDir() {
@ -117,7 +119,7 @@ public class IntranetUpdateModuleVersionHandlerTest {
assertThat("count of testtask must be 1", matching.size(), equalTo(1)); assertThat("count of testtask must be 1", matching.size(), equalTo(1));
} }
private void mockVersionUtil(IntranetUpdateModuleVersionHandlerContext contextMock) throws RepositoryException { private void mockVersionUtil(IntranetUpdateModuleVersionHandlerContext contextMock) {
doNothing().when(contextMock).initFromJCR(Mockito.any()); doNothing().when(contextMock).initFromJCR(Mockito.any());
when(contextMock.alreadyApplied(Mockito.any())) when(contextMock.alreadyApplied(Mockito.any()))
.thenAnswer( .thenAnswer(