Consider language in KarafAddonService when creating Addon (#3341)
* [REST] Consider language when retrieving installed addons Fix openhab/openhab-webui#1666 Signed-off-by: Laurent Garnier <lg.hc@free.fr>pull/3343/head
parent
c079f2cfaf
commit
14bae356c2
|
@ -85,7 +85,7 @@ public class KarafAddonService implements AddonService {
|
||||||
@Override
|
@Override
|
||||||
public List<Addon> getAddons(@Nullable Locale locale) {
|
public List<Addon> getAddons(@Nullable Locale locale) {
|
||||||
try {
|
try {
|
||||||
return Arrays.stream(featuresService.listFeatures()).filter(this::isAddon).map(this::getAddon)
|
return Arrays.stream(featuresService.listFeatures()).filter(this::isAddon).map(f -> getAddon(f, locale))
|
||||||
.sorted(Comparator.comparing(Addon::getLabel)).toList();
|
.sorted(Comparator.comparing(Addon::getLabel)).toList();
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
logger.error("Exception while retrieving features: {}", e.getMessage());
|
logger.error("Exception while retrieving features: {}", e.getMessage());
|
||||||
|
@ -103,7 +103,7 @@ public class KarafAddonService implements AddonService {
|
||||||
Feature feature;
|
Feature feature;
|
||||||
try {
|
try {
|
||||||
feature = featuresService.getFeature(FeatureInstaller.PREFIX + id);
|
feature = featuresService.getFeature(FeatureInstaller.PREFIX + id);
|
||||||
return getAddon(feature);
|
return getAddon(feature, locale);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
logger.error("Exception while querying feature '{}'", id);
|
logger.error("Exception while querying feature '{}'", id);
|
||||||
return null;
|
return null;
|
||||||
|
@ -124,7 +124,7 @@ public class KarafAddonService implements AddonService {
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
private Addon getAddon(Feature feature) {
|
private Addon getAddon(Feature feature, @Nullable Locale locale) {
|
||||||
String name = getName(feature.getName());
|
String name = getName(feature.getName());
|
||||||
String type = getType(feature.getName());
|
String type = getType(feature.getName());
|
||||||
String uid = type + Addon.ADDON_SEPARATOR + name;
|
String uid = type + Addon.ADDON_SEPARATOR + name;
|
||||||
|
@ -133,7 +133,7 @@ public class KarafAddonService implements AddonService {
|
||||||
Addon.Builder addon = Addon.create(uid).withType(type).withId(name).withContentType(ADDONS_CONTENT_TYPE)
|
Addon.Builder addon = Addon.create(uid).withType(type).withId(name).withContentType(ADDONS_CONTENT_TYPE)
|
||||||
.withVersion(feature.getVersion()).withAuthor(ADDONS_AUTHOR, true).withInstalled(isInstalled);
|
.withVersion(feature.getVersion()).withAuthor(ADDONS_AUTHOR, true).withInstalled(isInstalled);
|
||||||
|
|
||||||
AddonInfo addonInfo = addonInfoRegistry.getAddonInfo(uid);
|
AddonInfo addonInfo = addonInfoRegistry.getAddonInfo(uid, locale);
|
||||||
|
|
||||||
if (isInstalled && addonInfo != null) {
|
if (isInstalled && addonInfo != null) {
|
||||||
// only enrich if this add-on is installed, otherwise wrong data might be added
|
// only enrich if this add-on is installed, otherwise wrong data might be added
|
||||||
|
|
|
@ -48,7 +48,7 @@ public class AddonI18nUtil {
|
||||||
return localizedText != null ? localizedText : defaultLabel;
|
return localizedText != null ? localizedText : defaultLabel;
|
||||||
}
|
}
|
||||||
|
|
||||||
private String inferKey(String bindingId, String lastSegment) {
|
private String inferKey(String addonId, String lastSegment) {
|
||||||
return "binding." + bindingId + "." + lastSegment;
|
return "addon." + addonId + "." + lastSegment;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,2 +1,2 @@
|
||||||
binding.acmeweather.name = ACME Wetter Binding
|
addon.acmeweather.name = ACME Wetter Binding
|
||||||
binding.acmeweather.description = Das ACME Wetter Binding stellt verschiedene Wetterdaten wie die Temperatur, die Luftfeuchtigkeit und den Luftdruck für konfigurierbare Orte vom ACME Wetterdienst bereit
|
addon.acmeweather.description = Das ACME Wetter Binding stellt verschiedene Wetterdaten wie die Temperatur, die Luftfeuchtigkeit und den Luftdruck für konfigurierbare Orte vom ACME Wetterdienst bereit
|
||||||
|
|
|
@ -1,2 +1,2 @@
|
||||||
binding.acmeweather.name = ACME Weer Binding
|
addon.acmeweather.name = ACME Weer Binding
|
||||||
binding.acmeweather.description = De ACME Weer Binding biedt verschillende meteorologische gegevens zoals temperatuur, vochtigheid en luchtdruk voor configureerbare locaties uit ACME weerdienst klaar
|
addon.acmeweather.description = De ACME Weer Binding biedt verschillende meteorologische gegevens zoals temperatuur, vochtigheid en luchtdruk voor configureerbare locaties uit ACME weerdienst klaar
|
||||||
|
|
Loading…
Reference in New Issue