From c0c4ad0145f0cb4d2af952e8c4573e66385fbd32 Mon Sep 17 00:00:00 2001 From: Mathieu Baudier Date: Sun, 17 Dec 2023 15:09:55 +0100 Subject: [PATCH] Improve overriding A2 modules --- org.argeo.init/src/org/argeo/init/a2/FsA2Source.java | 8 +++++--- .../src/org/argeo/init/a2/ProvisioningManager.java | 4 +++- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/org.argeo.init/src/org/argeo/init/a2/FsA2Source.java b/org.argeo.init/src/org/argeo/init/a2/FsA2Source.java index 151b0023f..921992da3 100644 --- a/org.argeo.init/src/org/argeo/init/a2/FsA2Source.java +++ b/org.argeo.init/src/org/argeo/init/a2/FsA2Source.java @@ -61,9 +61,9 @@ public class FsA2Source extends AbstractProvisioningSource implements A2Source { if (variantPath == null) continue contributions; - if (Files.exists(variantPath)) { - // a variant was found, let's collect its contributions (also common ones in its - // parent) + // a variant was found, let's collect its contributions (also common ones in its + // parent) + if (Files.exists(variantPath.getParent())) { for (Path variantContributionPath : Files.newDirectoryStream(variantPath.getParent())) { String variantContributionId = variantContributionPath.getFileName().toString(); if (variantContributionId.contains(".")) { @@ -71,6 +71,8 @@ public class FsA2Source extends AbstractProvisioningSource implements A2Source { contributions.put(variantContributionPath, contribution); } } + } + if (Files.exists(variantPath)) { for (Path variantContributionPath : Files.newDirectoryStream(variantPath)) { String variantContributionId = variantContributionPath.getFileName().toString(); if (variantContributionId.contains(".")) { diff --git a/org.argeo.init/src/org/argeo/init/a2/ProvisioningManager.java b/org.argeo.init/src/org/argeo/init/a2/ProvisioningManager.java index 92df47ea8..289870abc 100644 --- a/org.argeo.init/src/org/argeo/init/a2/ProvisioningManager.java +++ b/org.argeo.init/src/org/argeo/init/a2/ProvisioningManager.java @@ -158,8 +158,10 @@ public class ProvisioningManager { } else { A2Module lastOsgiModule = osgiBranch.last(); int compare = moduleVersion.compareTo(lastOsgiModule.getVersion()); - if (compare > 0) {// update + if (compare >= 0) {// update (also if same version) Bundle bundle = (Bundle) lastOsgiModule.getLocator(); + if (bundle.getBundleId() == 0)// ignore framework bundle + return null; moduleSource.update(bundle, module); // TODO make it more dynamic, based on OSGi APIs // TODO remove old module? Or keep update history? -- 2.30.2