import java.util.EnumSet;
import java.util.Set;
-
-import com.google.common.base.Preconditions;
+import org.opendaylight.controller.netconf.api.NetconfDocumentedException;
+import org.opendaylight.controller.netconf.confignetconfconnector.exception.OperationNotPermittedException;
public enum EditStrategyType {
// can be default
private static final Set<EditStrategyType> 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() {
+ 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<EditStrategyType> defaults;
-
- static {
- defaults = EnumSet.of(merge, replace, none);
- }
-
- private boolean canBeDefault() {
- return defaults.contains(this);
}
-
public EditConfigStrategy getFittingStrategy() {
switch (this) {
case merge: