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>
<groupId>at.ucs.magnolia</groupId>
<artifactId>ucs-intranet-magnolia-updates</artifactId>
<version>2.0.0</version>
<version>1.0.42</version>
<name>ucs-intranet-magnolia-updates</name>
<url>http://maven.apache.org</url>
<packaging>jar</packaging>

View File

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

View File

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

View File

@ -77,6 +77,7 @@ public class IntranetUpdateModuleVersionHandlerContext {
} else {
folderNode.setProperty(INSTALLED_TASKS, BigDecimal.ONE);
}
installContext.getConfigJCRSession().save();
} catch (RepositoryException 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 info.magnolia.module.InstallContext;
import info.magnolia.module.delta.Delta;
import info.magnolia.module.delta.DeltaBuilder;
import info.magnolia.module.delta.Task;
import info.magnolia.module.model.ModuleDefinition;
import info.magnolia.module.model.Version;
@ -35,7 +36,7 @@ public class IntranetUpdateModuleVersionHandlerTest {
when(moduleDefinition.getVersion()).thenReturn(Version.parseVersion("9.9.9"));
IntranetUpdateModuleConfig config = new IntranetUpdateModuleConfig() {
@Override
public List<Task> getInitialUpdateTasks() {
public List<Delta> getInitialUpdateDeltas() {
return List.of();
}
@ -66,8 +67,8 @@ public class IntranetUpdateModuleVersionHandlerTest {
when(moduleDefinition.getVersion()).thenReturn(null);
IntranetUpdateModuleConfig config = new IntranetUpdateModuleConfig() {
@Override
public List<Task> getInitialUpdateTasks() {
return List.of(new TestTask("install1","install1desc"));
public List<Delta> getInitialUpdateDeltas() {
return List.of(DeltaBuilder.update( Version.parseVersion("0.0.1"), "", new TestTask("install1","install1desc")));
}
@Override
public String getYamlUpdateDir() {
@ -96,8 +97,9 @@ public class IntranetUpdateModuleVersionHandlerTest {
when(moduleDefinition.getVersion()).thenReturn(Version.parseVersion("9.9.9"));
IntranetUpdateModuleConfig config = new IntranetUpdateModuleConfig() {
@Override
public List<Task> getInitialUpdateTasks() {
return List.of(new TestTask("install1","install1desc"));
public List<Delta> getInitialUpdateDeltas() {
return List.of(DeltaBuilder.update( Version.parseVersion("0.0.1"), "", new TestTask("install1","install1desc")));
}
@Override
public String getYamlUpdateDir() {
@ -117,7 +119,7 @@ public class IntranetUpdateModuleVersionHandlerTest {
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());
when(contextMock.alreadyApplied(Mockito.any()))
.thenAnswer(