X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=opendaylight%2Fnetconf%2Fconfig-persister-impl%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fnetconf%2Fpersist%2Fimpl%2FCapabilityStrippingConfigSnapshotHolder.java;h=ab353e349b2908b67ade7f583f3601b7aa16ce3b;hb=478ce1fa1dc30974b7cf23fd5258f1af5366d547;hp=d9c5dfadede5a02bcd7d6c0f91fffccda499a14f;hpb=a8e8f161be05a865c5ae364b57e76521944c13cf;p=controller.git diff --git a/opendaylight/netconf/config-persister-impl/src/main/java/org/opendaylight/controller/netconf/persist/impl/CapabilityStrippingConfigSnapshotHolder.java b/opendaylight/netconf/config-persister-impl/src/main/java/org/opendaylight/controller/netconf/persist/impl/CapabilityStrippingConfigSnapshotHolder.java index d9c5dfaded..ab353e349b 100644 --- a/opendaylight/netconf/config-persister-impl/src/main/java/org/opendaylight/controller/netconf/persist/impl/CapabilityStrippingConfigSnapshotHolder.java +++ b/opendaylight/netconf/config-persister-impl/src/main/java/org/opendaylight/controller/netconf/persist/impl/CapabilityStrippingConfigSnapshotHolder.java @@ -5,6 +5,7 @@ * terms of the Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html */ + package org.opendaylight.controller.netconf.persist.impl; import com.google.common.annotations.VisibleForTesting; @@ -18,54 +19,50 @@ import org.w3c.dom.Element; import java.util.Collections; import java.util.HashSet; -import java.util.Iterator; import java.util.Map.Entry; import java.util.Set; import java.util.SortedSet; import java.util.TreeSet; -import java.util.regex.Pattern; - -import static com.google.common.base.Preconditions.checkState; +/** + * Inspects snapshot xml to be stored, remove all capabilities that are not referenced by it. + * Useful when persisting current configuration. + */ public class CapabilityStrippingConfigSnapshotHolder implements ConfigSnapshotHolder { private static final Logger logger = LoggerFactory.getLogger(CapabilityStrippingConfigSnapshotHolder.class); private final String configSnapshot; private final StripCapabilitiesResult stripCapabilitiesResult; - public CapabilityStrippingConfigSnapshotHolder(Element snapshot, Set capabilities, Pattern ignoredMissingCapabilityRegex) { + public CapabilityStrippingConfigSnapshotHolder(Element snapshot, Set capabilities) { final XmlElement configElement = XmlElement.fromDomElement(snapshot); configSnapshot = XmlUtil.toString(configElement.getDomElement()); - stripCapabilitiesResult = stripCapabilities(configElement, capabilities, ignoredMissingCapabilityRegex); + stripCapabilitiesResult = stripCapabilities(configElement, capabilities); } private static class StripCapabilitiesResult { - private final SortedSet requiredCapabilities, missingNamespaces; + private final SortedSet requiredCapabilities, obsoleteCapabilities; - private StripCapabilitiesResult(SortedSet requiredCapabilities, SortedSet missingNamespaces) { + private StripCapabilitiesResult(SortedSet requiredCapabilities, SortedSet obsoleteCapabilities) { this.requiredCapabilities = Collections.unmodifiableSortedSet(requiredCapabilities); - this.missingNamespaces = Collections.unmodifiableSortedSet(missingNamespaces); + this.obsoleteCapabilities = Collections.unmodifiableSortedSet(obsoleteCapabilities); } } @VisibleForTesting - static StripCapabilitiesResult stripCapabilities(XmlElement configElement, Set allCapabilitiesFromHello, - Pattern ignoredMissingCapabilityRegex) { + static StripCapabilitiesResult stripCapabilities(XmlElement configElement, Set allCapabilitiesFromHello) { // collect all namespaces Set foundNamespacesInXML = getNamespaces(configElement); logger.trace("All capabilities {}\nFound namespaces in XML {}", allCapabilitiesFromHello, foundNamespacesInXML); // required are referenced both in xml and hello SortedSet requiredCapabilities = new TreeSet<>(); // can be removed - Set obsoleteCapabilities = new HashSet<>(); - // are in xml but not in hello - SortedSet missingNamespaces = new TreeSet<>(foundNamespacesInXML); + SortedSet obsoleteCapabilities = new TreeSet<>(); for (String capability : allCapabilitiesFromHello) { String namespace = capability.replaceAll("\\?.*",""); if (foundNamespacesInXML.contains(namespace)) { requiredCapabilities.add(capability); - checkState(missingNamespaces.remove(namespace)); } else { obsoleteCapabilities.add(capability); } @@ -74,17 +71,7 @@ public class CapabilityStrippingConfigSnapshotHolder implements ConfigSnapshotHo logger.trace("Required capabilities {}, \nObsolete capabilities {}", requiredCapabilities, obsoleteCapabilities); - for(Iterator iterator = missingNamespaces.iterator();iterator.hasNext(); ){ - String capability = iterator.next(); - if (ignoredMissingCapabilityRegex.matcher(capability).matches()){ - logger.trace("Ignoring missing capability {}", capability); - iterator.remove(); - } - } - if (missingNamespaces.size() > 0) { - logger.warn("Some capabilities are missing: {}", missingNamespaces); - } - return new StripCapabilitiesResult(requiredCapabilities, missingNamespaces); + return new StripCapabilitiesResult(requiredCapabilities, obsoleteCapabilities); } static Set getNamespaces(XmlElement element){ @@ -94,7 +81,6 @@ public class CapabilityStrippingConfigSnapshotHolder implements ConfigSnapshotHo result.add(attribute.getValue().getValue()); } } - //element.getAttributes() for(XmlElement child: element.getChildElements()) { result.addAll(getNamespaces(child)); } @@ -107,8 +93,8 @@ public class CapabilityStrippingConfigSnapshotHolder implements ConfigSnapshotHo } @VisibleForTesting - Set getMissingNamespaces(){ - return stripCapabilitiesResult.missingNamespaces; + Set getObsoleteCapabilities(){ + return stripCapabilitiesResult.obsoleteCapabilities; } @Override