X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=opendaylight%2Fconfig%2Fconfig-persister-impl%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fconfig%2Fpersist%2Fimpl%2FCapabilityStrippingConfigSnapshotHolder.java;fp=opendaylight%2Fconfig%2Fconfig-persister-impl%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fconfig%2Fpersist%2Fimpl%2FCapabilityStrippingConfigSnapshotHolder.java;h=0000000000000000000000000000000000000000;hb=ac6f2699cd0c1e340cc32e8f0d0ca94c8e9c0cc0;hp=3d916f60f441052aafb3b38f3c79e48926a25272;hpb=f43b01b81319959b1907e3e04537f5169e7f33d8;p=controller.git diff --git a/opendaylight/config/config-persister-impl/src/main/java/org/opendaylight/controller/config/persist/impl/CapabilityStrippingConfigSnapshotHolder.java b/opendaylight/config/config-persister-impl/src/main/java/org/opendaylight/controller/config/persist/impl/CapabilityStrippingConfigSnapshotHolder.java deleted file mode 100644 index 3d916f60f4..0000000000 --- a/opendaylight/config/config-persister-impl/src/main/java/org/opendaylight/controller/config/persist/impl/CapabilityStrippingConfigSnapshotHolder.java +++ /dev/null @@ -1,104 +0,0 @@ -/* - * Copyright (c) 2013 Cisco Systems, Inc. and others. All rights reserved. - * - * This program and the accompanying materials are made available under the - * 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.config.persist.impl; - -import com.google.common.annotations.VisibleForTesting; -import java.util.Collections; -import java.util.HashSet; -import java.util.Map.Entry; -import java.util.Set; -import java.util.SortedSet; -import java.util.TreeSet; -import org.opendaylight.controller.config.persist.api.ConfigSnapshotHolder; -import org.opendaylight.controller.config.util.xml.XmlElement; -import org.opendaylight.controller.config.util.xml.XmlUtil; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.w3c.dom.Attr; -import org.w3c.dom.Element; - -/** - * 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 LOG = LoggerFactory.getLogger(CapabilityStrippingConfigSnapshotHolder.class); - - private final String configSnapshot; - private final StripCapabilitiesResult stripCapabilitiesResult; - - public CapabilityStrippingConfigSnapshotHolder(final Element snapshot, final Set capabilities) { - final XmlElement configElement = XmlElement.fromDomElement(snapshot); - configSnapshot = XmlUtil.toString(configElement.getDomElement()); - stripCapabilitiesResult = stripCapabilities(configElement, capabilities); - } - - private static class StripCapabilitiesResult { - private final SortedSet requiredCapabilities; - private final SortedSet obsoleteCapabilities; - - private StripCapabilitiesResult(final SortedSet requiredCapabilities, final SortedSet obsoleteCapabilities) { - this.requiredCapabilities = Collections.unmodifiableSortedSet(requiredCapabilities); - this.obsoleteCapabilities = Collections.unmodifiableSortedSet(obsoleteCapabilities); - } - } - - - @VisibleForTesting - static StripCapabilitiesResult stripCapabilities(final XmlElement configElement, final Set allCapabilitiesFromHello) { - // collect all namespaces - Set foundNamespacesInXML = getNamespaces(configElement); - LOG.trace("All capabilities {}\nFound namespaces in XML {}", allCapabilitiesFromHello, foundNamespacesInXML); - // required are referenced both in xml and hello - SortedSet requiredCapabilities = new TreeSet<>(); - // can be removed - SortedSet obsoleteCapabilities = new TreeSet<>(); - for (String capability : allCapabilitiesFromHello) { - String namespace = capability.replaceAll("\\?.*",""); - if (foundNamespacesInXML.contains(namespace)) { - requiredCapabilities.add(capability); - } else { - obsoleteCapabilities.add(capability); - } - } - - LOG.trace("Required capabilities {}, \nObsolete capabilities {}", - requiredCapabilities, obsoleteCapabilities); - - return new StripCapabilitiesResult(requiredCapabilities, obsoleteCapabilities); - } - - static Set getNamespaces(final XmlElement element){ - Set result = new HashSet<>(); - for (Entry attribute : element.getAttributes().entrySet()) { - if (attribute.getKey().startsWith("xmlns")){ - result.add(attribute.getValue().getValue()); - } - } - for(XmlElement child: element.getChildElements()) { - result.addAll(getNamespaces(child)); - } - return result; - } - - @Override - public SortedSet getCapabilities() { - return stripCapabilitiesResult.requiredCapabilities; - } - - @VisibleForTesting - Set getObsoleteCapabilities(){ - return stripCapabilitiesResult.obsoleteCapabilities; - } - - @Override - public String getConfigSnapshot() { - return configSnapshot; - } -}