From ab6cc105291bc3d5724df1037ddae5e52dba7757 Mon Sep 17 00:00:00 2001 From: Schneider Roland Date: Thu, 28 Nov 2024 13:47:58 +0100 Subject: [PATCH] MMKB-5027: improve old semver update handling --- pom.xml | 2 +- .../updates/IntranetUpdateModuleConfig.java | 4 ++-- .../IntranetUpdateModuleVersionHandler.java | 7 ++++++- .../IntranetUpdateModuleVersionHandlerContext.java | 1 + .../IntranetUpdateModuleVersionHandlerTest.java | 14 ++++++++------ 5 files changed, 18 insertions(+), 10 deletions(-) diff --git a/pom.xml b/pom.xml index 1c3db3f..77b4727 100644 --- a/pom.xml +++ b/pom.xml @@ -10,7 +10,7 @@ at.ucs.magnolia ucs-intranet-magnolia-updates - 2.0.0 + 1.0.42 ucs-intranet-magnolia-updates http://maven.apache.org jar diff --git a/src/main/java/at/ucs/magnolia/updates/IntranetUpdateModuleConfig.java b/src/main/java/at/ucs/magnolia/updates/IntranetUpdateModuleConfig.java index f87ea0d..6d4a80f 100644 --- a/src/main/java/at/ucs/magnolia/updates/IntranetUpdateModuleConfig.java +++ b/src/main/java/at/ucs/magnolia/updates/IntranetUpdateModuleConfig.java @@ -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 getInitialUpdateTasks(); + List getInitialUpdateDeltas(); String getYamlUpdateDir(); String getUpdateTaskPackage(); } diff --git a/src/main/java/at/ucs/magnolia/updates/IntranetUpdateModuleVersionHandler.java b/src/main/java/at/ucs/magnolia/updates/IntranetUpdateModuleVersionHandler.java index 02da567..3aabd48 100644 --- a/src/main/java/at/ucs/magnolia/updates/IntranetUpdateModuleVersionHandler.java +++ b/src/main/java/at/ucs/magnolia/updates/IntranetUpdateModuleVersionHandler.java @@ -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 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 getUpdateDeltas(InstallContext installContext, Version from) { try { + context.initFromJCR(installContext); return new Reflections( getModuleConfig().getUpdateTaskPackage(), diff --git a/src/main/java/at/ucs/magnolia/updates/util/IntranetUpdateModuleVersionHandlerContext.java b/src/main/java/at/ucs/magnolia/updates/util/IntranetUpdateModuleVersionHandlerContext.java index 29fa977..ea9e42b 100644 --- a/src/main/java/at/ucs/magnolia/updates/util/IntranetUpdateModuleVersionHandlerContext.java +++ b/src/main/java/at/ucs/magnolia/updates/util/IntranetUpdateModuleVersionHandlerContext.java @@ -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); } diff --git a/src/test/java/at/ucs/magnolia/updates/IntranetUpdateModuleVersionHandlerTest.java b/src/test/java/at/ucs/magnolia/updates/IntranetUpdateModuleVersionHandlerTest.java index 72e45c2..4e8ae7b 100644 --- a/src/test/java/at/ucs/magnolia/updates/IntranetUpdateModuleVersionHandlerTest.java +++ b/src/test/java/at/ucs/magnolia/updates/IntranetUpdateModuleVersionHandlerTest.java @@ -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 getInitialUpdateTasks() { + public List getInitialUpdateDeltas() { return List.of(); } @@ -66,8 +67,8 @@ public class IntranetUpdateModuleVersionHandlerTest { when(moduleDefinition.getVersion()).thenReturn(null); IntranetUpdateModuleConfig config = new IntranetUpdateModuleConfig() { @Override - public List getInitialUpdateTasks() { - return List.of(new TestTask("install1","install1desc")); + public List 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 getInitialUpdateTasks() { - return List.of(new TestTask("install1","install1desc")); + public List 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(