*/
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;
@Override
public FeaturesService addingService(ServiceReference<FeaturesService> reference) {
BundleContext bc = reference.getBundle().getBundleContext();
- FeaturesService featureService = bc.getService(reference);
+ final FeaturesService featureService = bc.getService(reference);
+ final Optional<XmlFileStorageAdapter> currentPersister = XmlFileStorageAdapter.getInstance();
+
+ if(XmlFileStorageAdapter.getInstance().isPresent()) {
+ final Set<String> installedFeatureIds = Sets.newHashSet();
+ for (final Feature installedFeature : featureService.listInstalledFeatures()) {
+ installedFeatureIds.add(installedFeature.getId());
+ }
+
+ currentPersister.get().setFeaturesService(new FeatureListProvider() {
+ @Override
+ public Set<String> listFeatures() {
+ return installedFeatureIds;
+ }
+ });
+ }
configFeaturesListener = new ConfigFeaturesListener(configPusher,featureService);
registration = bc.registerService(FeaturesListener.class.getCanonicalName(), configFeaturesListener, null);
return featureService;