@Override public List<Extension> getExtensions(Locale locale) { List<Extension> extensions = new LinkedList<>(); try { for (Feature feature : featuresService.listFeatures()) { if (feature.getName().startsWith(FeatureInstaller.PREFIX) && Arrays.asList(FeatureInstaller.addonTypes).contains(getType(feature.getName()))) { Extension extension = getExtension(feature); // for simple packaging, we filter out all openHAB 1 add-ons as they cannot be used through the UI if (!"simple".equals(featureInstaller.getCurrentPackage()) || !extension.getVersion().startsWith("1.")) { extensions.add(extension); } } } } catch (Exception e) { logger.error("Exception while retrieving features: {}", e.getMessage()); return Collections.emptyList(); } // let's sort the result alphabetically Collections.sort(extensions, new Comparator<Extension>() { @Override public int compare(Extension ext1, Extension ext2) { return ext1.getLabel().compareTo(ext2.getLabel()); } }); return extensions; }