X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=opendaylight%2Fconfiguration%2Fimplementation%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fconfiguration%2Finternal%2FConfigurationService.java;h=03acfa88eb04e1737650af810c11b1afe809ad88;hb=4c1e9ed9fa2386ca63a0bbf11da620c83a6d7d5e;hp=e6bbcf8eb6cdacfe81232e52201f2588bd91e7d9;hpb=d67608349eca39dd2b4b77923b1500d25a664e52;p=controller.git diff --git a/opendaylight/configuration/implementation/src/main/java/org/opendaylight/controller/configuration/internal/ConfigurationService.java b/opendaylight/configuration/implementation/src/main/java/org/opendaylight/controller/configuration/internal/ConfigurationService.java index e6bbcf8eb6..03acfa88eb 100644 --- a/opendaylight/configuration/implementation/src/main/java/org/opendaylight/controller/configuration/internal/ConfigurationService.java +++ b/opendaylight/configuration/implementation/src/main/java/org/opendaylight/controller/configuration/internal/ConfigurationService.java @@ -12,6 +12,7 @@ package org.opendaylight.controller.configuration.internal; import java.util.Collections; import java.util.EnumSet; import java.util.HashSet; +import java.util.List; import java.util.Set; import java.util.concurrent.ConcurrentMap; @@ -21,10 +22,15 @@ import org.opendaylight.controller.clustering.services.ICacheUpdateAware; import org.opendaylight.controller.clustering.services.IClusterGlobalServices; import org.opendaylight.controller.clustering.services.IClusterServices; import org.opendaylight.controller.configuration.ConfigurationEvent; +import org.opendaylight.controller.configuration.ConfigurationObject; import org.opendaylight.controller.configuration.IConfigurationAware; import org.opendaylight.controller.configuration.IConfigurationService; -import org.opendaylight.controller.sal.utils.StatusCode; +import org.opendaylight.controller.sal.utils.GlobalConstants; +import org.opendaylight.controller.sal.utils.IObjectReader; +import org.opendaylight.controller.sal.utils.ObjectReader; +import org.opendaylight.controller.sal.utils.ObjectWriter; import org.opendaylight.controller.sal.utils.Status; +import org.opendaylight.controller.sal.utils.StatusCode; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -39,10 +45,13 @@ public class ConfigurationService implements IConfigurationService, ICacheUpdate private static final Logger logger = LoggerFactory .getLogger(ConfigurationService.class); public static final String SAVE_EVENT_CACHE = "config.event.save"; + private static final Object ROOT = GlobalConstants.STARTUPHOME.toString(); private IClusterGlobalServices clusterServices; private ConcurrentMap configEvent; private Set configurationAwareList = Collections .synchronizedSet(new HashSet()); + private ObjectReader objReader; + private ObjectWriter objWriter; public int getConfigurationAwareListSize() { @@ -78,6 +87,8 @@ public class ConfigurationService implements IConfigurationService, ICacheUpdate public void start() { allocateCache(); retrieveCache(); + objReader = new ObjectReader(); + objWriter = new ObjectWriter(); } public void destroy() { @@ -164,4 +175,21 @@ public class ConfigurationService implements IConfigurationService, ICacheUpdate logger.error("Failed to retrieve configuration Cache"); } } + + @Override + public Status persistConfiguration(List config, String fileName) { + String destination = String.format("%s%s", ROOT, fileName); + return objWriter.write(config, destination); + } + + @Override + public List retrieveConfiguration(IObjectReader reader, String fileName) { + if (!clusterServices.amICoordinator()) { + return Collections.emptyList(); + } + String source = String.format("%s%s", ROOT, fileName); + Object obj = objReader.read(reader, source); + return (obj == null || !(obj instanceof List)) ? Collections. emptyList() + : (List) obj; + } }