From 2659c4c7228284b45141ba879cb6476472031719 Mon Sep 17 00:00:00 2001 From: Jimmy Tanagra Date: Tue, 21 Jan 2025 21:31:49 +1000 Subject: [PATCH] Revert "Fix addon name localisation before installation (#3908)" This reverts commit 708a954081499754e3d36adc28cf16b7ffec7ad7 but with some modifications Signed-off-by: Jimmy Tanagra --- .../eclipse/internal/EclipseAddonService.java | 9 +++----- .../org/openhab/core/addon/AddonInfo.java | 23 ++++--------------- .../openhab/core/addon/AddonInfoRegistry.java | 14 +++++------ .../xml/AddonInfoAddonsXmlProvider.java | 4 +--- .../karaf/internal/KarafAddonService.java | 8 ++----- 5 files changed, 17 insertions(+), 41 deletions(-) diff --git a/bundles/org.openhab.core.addon.eclipse/src/main/java/org/openhab/core/addon/eclipse/internal/EclipseAddonService.java b/bundles/org.openhab.core.addon.eclipse/src/main/java/org/openhab/core/addon/eclipse/internal/EclipseAddonService.java index 9dab3dc3a19..262cda64a74 100644 --- a/bundles/org.openhab.core.addon.eclipse/src/main/java/org/openhab/core/addon/eclipse/internal/EclipseAddonService.java +++ b/bundles/org.openhab.core.addon.eclipse/src/main/java/org/openhab/core/addon/eclipse/internal/EclipseAddonService.java @@ -142,12 +142,9 @@ private Addon getAddon(Bundle bundle, @Nullable Locale locale) { AddonInfo addonInfo = addonInfoRegistry.getAddonInfo(uid, locale); if (addonInfo != null) { - if (addonInfo.isMasterAddonInfo()) { - addon = addon.withLabel(addonInfo.getName()).withDescription(addonInfo.getDescription()); - } else { - addon = addon.withLabel(name); - } - addon = addon.withConnection(addonInfo.getConnection()).withCountries(addonInfo.getCountries()) + // only enrich if this add-on is installed, otherwise wrong data might be added + addon = addon.withLabel(addonInfo.getName()).withDescription(addonInfo.getDescription()) + .withConnection(addonInfo.getConnection()).withCountries(addonInfo.getCountries()) .withLink(getDefaultDocumentationLink(type, name)) .withConfigDescriptionURI(addonInfo.getConfigDescriptionURI()); } else { diff --git a/bundles/org.openhab.core.addon/src/main/java/org/openhab/core/addon/AddonInfo.java b/bundles/org.openhab.core.addon/src/main/java/org/openhab/core/addon/AddonInfo.java index bb4ae4c3031..fa8ba1d1fea 100644 --- a/bundles/org.openhab.core.addon/src/main/java/org/openhab/core/addon/AddonInfo.java +++ b/bundles/org.openhab.core.addon/src/main/java/org/openhab/core/addon/AddonInfo.java @@ -33,6 +33,8 @@ @NonNullByDefault public class AddonInfo implements Identifiable { + public static final String NA = "n/a"; + private static final Set SUPPORTED_ADDON_TYPES = Set.of("automation", "binding", "misc", "persistence", "transformation", "ui", "voice"); @@ -48,13 +50,10 @@ public class AddonInfo implements Identifiable { private @Nullable String sourceBundle; private @Nullable List discoveryMethods; - private boolean masterAddonInfo = true; - private AddonInfo(String id, String type, @Nullable String uid, String name, String description, @Nullable String connection, List countries, @Nullable String configDescriptionURI, @Nullable String serviceId, @Nullable String sourceBundle, - @Nullable List discoveryMethods, boolean isMasterAddonInfo) - throws IllegalArgumentException { + @Nullable List discoveryMethods) throws IllegalArgumentException { // mandatory fields if (id.isBlank()) { throw new IllegalArgumentException("The ID must neither be null nor empty!"); @@ -82,8 +81,6 @@ private AddonInfo(String id, String type, @Nullable String uid, String name, Str this.serviceId = Objects.requireNonNullElse(serviceId, type + "." + id); this.sourceBundle = sourceBundle; this.discoveryMethods = discoveryMethods; - - this.masterAddonInfo = isMasterAddonInfo; } /** @@ -158,10 +155,6 @@ public List getDiscoveryMethods() { return discoveryMethods != null ? discoveryMethods : List.of(); } - public boolean isMasterAddonInfo() { - return masterAddonInfo; - } - public static Builder builder(String id, String type) { return new Builder(id, type); } @@ -184,8 +177,6 @@ public static class Builder { private @Nullable String sourceBundle; private @Nullable List discoveryMethods; - private boolean masterAddonInfo = true; - private Builder(String id, String type) { this.id = id; this.type = type; @@ -203,7 +194,6 @@ private Builder(AddonInfo addonInfo) { this.serviceId = addonInfo.serviceId; this.sourceBundle = addonInfo.sourceBundle; this.discoveryMethods = addonInfo.discoveryMethods; - this.masterAddonInfo = addonInfo.masterAddonInfo; } public Builder withUID(@Nullable String uid) { @@ -256,11 +246,6 @@ public Builder withDiscoveryMethods(@Nullable List discove return this; } - public Builder isMasterAddonInfo(boolean masterAddonInfo) { - this.masterAddonInfo = masterAddonInfo; - return this; - } - /** * Build an {@link AddonInfo} from this builder * @@ -269,7 +254,7 @@ public Builder isMasterAddonInfo(boolean masterAddonInfo) { */ public AddonInfo build() throws IllegalArgumentException { return new AddonInfo(id, type, uid, name, description, connection, countries, configDescriptionURI, - serviceId, sourceBundle, discoveryMethods, masterAddonInfo); + serviceId, sourceBundle, discoveryMethods); } } } diff --git a/bundles/org.openhab.core.addon/src/main/java/org/openhab/core/addon/AddonInfoRegistry.java b/bundles/org.openhab.core.addon/src/main/java/org/openhab/core/addon/AddonInfoRegistry.java index cbc3ef01a62..be6f2a2b911 100644 --- a/bundles/org.openhab.core.addon/src/main/java/org/openhab/core/addon/AddonInfoRegistry.java +++ b/bundles/org.openhab.core.addon/src/main/java/org/openhab/core/addon/AddonInfoRegistry.java @@ -95,15 +95,15 @@ public void removeAddonInfoProvider(AddonInfoProvider addonInfoProvider) { return a; } AddonInfo.Builder builder = AddonInfo.builder(a); - if (a.isMasterAddonInfo()) { - builder.withName(a.getName()); - builder.withDescription(a.getDescription()); - } else { + if (AddonInfo.NA.equals(a.getName())) { builder.withName(b.getName()); - builder.withDescription(b.getDescription()); + } else if (AddonInfo.NA.equals(b.getName())) { + builder.withName(a.getName()); } - if (!a.isMasterAddonInfo() && b.isMasterAddonInfo()) { - builder.isMasterAddonInfo(true); + if (AddonInfo.NA.equals(a.getDescription())) { + builder.withDescription(b.getDescription()); + } else if (AddonInfo.NA.equals(b.getDescription())) { + builder.withDescription(a.getDescription()); } if (a.getConnection() == null && b.getConnection() != null) { builder.withConnection(b.getConnection()); diff --git a/bundles/org.openhab.core.addon/src/main/java/org/openhab/core/addon/internal/xml/AddonInfoAddonsXmlProvider.java b/bundles/org.openhab.core.addon/src/main/java/org/openhab/core/addon/internal/xml/AddonInfoAddonsXmlProvider.java index a1bd8f4a219..c16b2ea3334 100644 --- a/bundles/org.openhab.core.addon/src/main/java/org/openhab/core/addon/internal/xml/AddonInfoAddonsXmlProvider.java +++ b/bundles/org.openhab.core.addon/src/main/java/org/openhab/core/addon/internal/xml/AddonInfoAddonsXmlProvider.java @@ -21,7 +21,6 @@ import java.util.Locale; import java.util.Set; import java.util.regex.PatternSyntaxException; -import java.util.stream.Collectors; import org.eclipse.jdt.annotation.NonNullByDefault; import org.eclipse.jdt.annotation.Nullable; @@ -94,8 +93,7 @@ private void initialize() { try { String xml = Files.readString(file.toPath()); if (xml != null && !xml.isBlank()) { - addonInfos.addAll(reader.readFromXML(xml).getAddons().stream() - .map(a -> AddonInfo.builder(a).isMasterAddonInfo(false).build()).collect(Collectors.toSet())); + addonInfos.addAll(reader.readFromXML(xml).getAddons()); } else { logger.warn("File '{}' contents are null or empty", file.getName()); } diff --git a/bundles/org.openhab.core.karaf/src/main/java/org/openhab/core/karaf/internal/KarafAddonService.java b/bundles/org.openhab.core.karaf/src/main/java/org/openhab/core/karaf/internal/KarafAddonService.java index 97845b3bd84..2730b7e7d67 100644 --- a/bundles/org.openhab.core.karaf/src/main/java/org/openhab/core/karaf/internal/KarafAddonService.java +++ b/bundles/org.openhab.core.karaf/src/main/java/org/openhab/core/karaf/internal/KarafAddonService.java @@ -134,12 +134,8 @@ private Addon getAddon(Feature feature, @Nullable Locale locale) { AddonInfo addonInfo = addonInfoRegistry.getAddonInfo(uid, locale); if (addonInfo != null) { - if (addonInfo.isMasterAddonInfo()) { - addon = addon.withLabel(addonInfo.getName()).withDescription(addonInfo.getDescription()); - } else { - addon = addon.withLabel(feature.getDescription()); - } - addon = addon.withConnection(addonInfo.getConnection()).withCountries(addonInfo.getCountries()) + addon = addon.withLabel(addonInfo.getName()).withDescription(addonInfo.getDescription()) + .withConnection(addonInfo.getConnection()).withCountries(addonInfo.getCountries()) .withLink(getDefaultDocumentationLink(type, name)) .withConfigDescriptionURI(addonInfo.getConfigDescriptionURI()); } else {