From 324fc0781d127b81bc3be0728e5780778be618ae Mon Sep 17 00:00:00 2001 From: Tony Tkacik Date: Thu, 16 Jan 2014 19:44:35 +0100 Subject: [PATCH 1/1] Added cache for YANG models downloaded from Netconf devices Change-Id: I43653e3d42169ca578ec6daaab991a3eb03a5e85 Signed-off-by: Tony Tkacik --- .../netconf/NetconfConnectorModule.java | 3 ++- ...etconfDeviceTwoPhaseCommitTransaction.java | 19 ++++++++++++++----- 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/opendaylight/md-sal/sal-netconf-connector/src/main/java/org/opendaylight/controller/config/yang/md/sal/connector/netconf/NetconfConnectorModule.java b/opendaylight/md-sal/sal-netconf-connector/src/main/java/org/opendaylight/controller/config/yang/md/sal/connector/netconf/NetconfConnectorModule.java index f5d592c007..2403027e01 100644 --- a/opendaylight/md-sal/sal-netconf-connector/src/main/java/org/opendaylight/controller/config/yang/md/sal/connector/netconf/NetconfConnectorModule.java +++ b/opendaylight/md-sal/sal-netconf-connector/src/main/java/org/opendaylight/controller/config/yang/md/sal/connector/netconf/NetconfConnectorModule.java @@ -118,7 +118,8 @@ public final class NetconfConnectorModule extends org.opendaylight.controller.co private synchronized AbstractCachingSchemaSourceProvider getGlobalNetconfSchemaProvider(BundleContext bundleContext) { if(GLOBAL_NETCONF_SOURCE_PROVIDER == null) { String storageFile = "cache/schema"; - File directory = bundleContext.getDataFile(storageFile); +// File directory = bundleContext.getDataFile(storageFile); + File directory = new File("cache/schema"); SchemaSourceProvider defaultProvider = SchemaSourceProviders.noopProvider(); GLOBAL_NETCONF_SOURCE_PROVIDER = FilesystemSchemaCachingProvider.createFromStringSourceProvider(defaultProvider, directory); } diff --git a/opendaylight/md-sal/sal-netconf-connector/src/main/java/org/opendaylight/controller/sal/connect/netconf/NetconfDeviceTwoPhaseCommitTransaction.java b/opendaylight/md-sal/sal-netconf-connector/src/main/java/org/opendaylight/controller/sal/connect/netconf/NetconfDeviceTwoPhaseCommitTransaction.java index 216a27aaaa..6df34cdb9e 100644 --- a/opendaylight/md-sal/sal-netconf-connector/src/main/java/org/opendaylight/controller/sal/connect/netconf/NetconfDeviceTwoPhaseCommitTransaction.java +++ b/opendaylight/md-sal/sal-netconf-connector/src/main/java/org/opendaylight/controller/sal/connect/netconf/NetconfDeviceTwoPhaseCommitTransaction.java @@ -1,6 +1,8 @@ package org.opendaylight.controller.sal.connect.netconf; +import java.util.Collections; import java.util.List; +import java.util.Map; import java.util.Map.Entry; import java.util.Set; @@ -90,19 +92,26 @@ public class NetconfDeviceTwoPhaseCommitTransaction implements DataCommitTransac for (PathArgument arg : reversed) { CompositeNodeBuilder builder = ImmutableCompositeNode.builder(); builder.setQName(arg.getNodeType()); - + Map predicates = Collections.emptyMap(); if (arg instanceof NodeIdentifierWithPredicates) { - for (Entry entry : ((NodeIdentifierWithPredicates) arg).getKeyValues().entrySet()) { - builder.addLeaf(entry.getKey(), entry.getValue()); - } + predicates = ((NodeIdentifierWithPredicates) arg).getKeyValues(); + } + for (Entry entry : predicates.entrySet()) { + builder.addLeaf(entry.getKey(), entry.getValue()); } + if (isLast) { if (action.isPresent()) { builder.setAttribute(NETCONF_ACTION_QNAME, action.get()); } if (lastChildOverride.isPresent()) { List> children = lastChildOverride.get().getChildren(); - builder.addAll(children); + for(Node child : children) { + if(!predicates.containsKey(child.getKey())) { + builder.add(child); + } + } + } } else { builder.add(previous); -- 2.36.6