X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=opendaylight%2Fnetconf%2Fconfig-netconf-connector%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fnetconf%2Fconfignetconfconnector%2Foperations%2Feditconfig%2FEditStrategyType.java;h=6b81603dcd01cdffa0ce3d4b5c9486fc66db2b8d;hb=386d8f0ac5fa09ee5514d48284f1a4012f408b52;hp=a7a0518cc53f6b1711ee017026bf41bb8928e459;hpb=a92d9d6a21a0f6ca8d2153795721f500eaf29ee9;p=controller.git diff --git a/opendaylight/netconf/config-netconf-connector/src/main/java/org/opendaylight/controller/netconf/confignetconfconnector/operations/editconfig/EditStrategyType.java b/opendaylight/netconf/config-netconf-connector/src/main/java/org/opendaylight/controller/netconf/confignetconfconnector/operations/editconfig/EditStrategyType.java index a7a0518cc5..6b81603dcd 100644 --- a/opendaylight/netconf/config-netconf-connector/src/main/java/org/opendaylight/controller/netconf/confignetconfconnector/operations/editconfig/EditStrategyType.java +++ b/opendaylight/netconf/config-netconf-connector/src/main/java/org/opendaylight/controller/netconf/confignetconfconnector/operations/editconfig/EditStrategyType.java @@ -8,11 +8,13 @@ package org.opendaylight.controller.netconf.confignetconfconnector.operations.editconfig; +import com.google.common.collect.Multimap; +import org.opendaylight.controller.netconf.api.NetconfDocumentedException; +import org.opendaylight.controller.netconf.confignetconfconnector.exception.OperationNotPermittedException; + import java.util.EnumSet; import java.util.Set; -import com.google.common.base.Preconditions; - public enum EditStrategyType { // can be default merge, replace, none, @@ -21,20 +23,8 @@ public enum EditStrategyType { private static final Set defaultStrats = EnumSet.of(merge, replace, none); - private static EditStrategyType defaultStrat = merge; - - public static EditStrategyType defaultStrategy() { - return defaultStrat; - } - - public static void setDefaultStrategy(EditStrategyType strat) { - Preconditions.checkArgument(strat.canBeDefault(), "Default edit strategy can be only of value " + defaultStrats - + ", but was " + strat); - defaultStrat = strat; - } - - public static void resetDefaultStrategy() { - setDefaultStrategy(EditStrategyType.merge); + public static EditStrategyType getDefaultStrategy() { + return merge; } public boolean isEnforcing() { @@ -52,23 +42,28 @@ public enum EditStrategyType { + this); } } + public static void compareParsedStrategyToDefaultEnforcing(EditStrategyType parsedStrategy, + EditStrategyType defaultStrategy) throws OperationNotPermittedException { + if (defaultStrategy.isEnforcing()) { + if (parsedStrategy != defaultStrategy){ + throw new OperationNotPermittedException(String.format("With " + + defaultStrategy + + " as " + + EditConfigXmlParser.DEFAULT_OPERATION_KEY + + " operations on module elements are not permitted since the default option is restrictive"), + NetconfDocumentedException.ErrorType.application, + NetconfDocumentedException.ErrorTag.operation_failed, + NetconfDocumentedException.ErrorSeverity.error); + } + } - private static final EnumSet defaults; - - static { - defaults = EnumSet.of(merge, replace, none); - } - - private boolean canBeDefault() { - return defaults.contains(this); } - - public EditConfigStrategy getFittingStrategy() { + public EditConfigStrategy getFittingStrategy(Multimap providedServices) { switch (this) { case merge: - return new MergeEditConfigStrategy(); + return new MergeEditConfigStrategy(providedServices); case replace: - return new ReplaceEditConfigStrategy(); + return new ReplaceEditConfigStrategy(providedServices); case delete: return new DeleteEditConfigStrategy(); case remove: