X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=blobdiff_plain;f=opendaylight%2Fconfig%2Fconfig-persister-feature-adapter%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fconfigpusherfeature%2Finternal%2FFeatureServiceCustomizer.java;fp=opendaylight%2Fconfig%2Fconfig-persister-feature-adapter%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fconfigpusherfeature%2Finternal%2FFeatureServiceCustomizer.java;h=c941e894359f0560044136db0f40c78972c91c12;hp=e72c8278e5047b45b61394f9cc7bf230f81aa0b8;hb=6da2893d4a3a939a1f5d4079f6ffe04a305754e6;hpb=233db109dea38ed45ca3c48eba04f302e38a9139 diff --git a/opendaylight/config/config-persister-feature-adapter/src/main/java/org/opendaylight/controller/configpusherfeature/internal/FeatureServiceCustomizer.java b/opendaylight/config/config-persister-feature-adapter/src/main/java/org/opendaylight/controller/configpusherfeature/internal/FeatureServiceCustomizer.java index e72c8278e5..c941e89435 100644 --- a/opendaylight/config/config-persister-feature-adapter/src/main/java/org/opendaylight/controller/configpusherfeature/internal/FeatureServiceCustomizer.java +++ b/opendaylight/config/config-persister-feature-adapter/src/main/java/org/opendaylight/controller/configpusherfeature/internal/FeatureServiceCustomizer.java @@ -7,9 +7,15 @@ */ package org.opendaylight.controller.configpusherfeature.internal; +import com.google.common.base.Optional; +import com.google.common.collect.Sets; +import java.util.Set; +import org.apache.karaf.features.Feature; import org.apache.karaf.features.FeaturesListener; import org.apache.karaf.features.FeaturesService; import org.opendaylight.controller.config.persist.api.ConfigPusher; +import org.opendaylight.controller.config.persist.storage.file.xml.FeatureListProvider; +import org.opendaylight.controller.config.persist.storage.file.xml.XmlFileStorageAdapter; import org.osgi.framework.BundleContext; import org.osgi.framework.ServiceReference; import org.osgi.framework.ServiceRegistration; @@ -28,7 +34,22 @@ public class FeatureServiceCustomizer implements ServiceTrackerCustomizer reference) { BundleContext bc = reference.getBundle().getBundleContext(); - FeaturesService featureService = bc.getService(reference); + final FeaturesService featureService = bc.getService(reference); + final Optional currentPersister = XmlFileStorageAdapter.getInstance(); + + if(XmlFileStorageAdapter.getInstance().isPresent()) { + final Set installedFeatureIds = Sets.newHashSet(); + for (final Feature installedFeature : featureService.listInstalledFeatures()) { + installedFeatureIds.add(installedFeature.getId()); + } + + currentPersister.get().setFeaturesService(new FeatureListProvider() { + @Override + public Set listFeatures() { + return installedFeatureIds; + } + }); + } configFeaturesListener = new ConfigFeaturesListener(configPusher,featureService); registration = bc.registerService(FeaturesListener.class.getCanonicalName(), configFeaturesListener, null); return featureService;