-
- private static @Nullable UserPreferences extractUserCapabilities(final NetconfNode node) {
- final var moduleCaps = node.getYangModuleCapabilities();
- final var nonModuleCaps = node.getNonModuleCapabilities();
-
- if (moduleCaps == null && nonModuleCaps == null) {
- // if none of yang-module-capabilities or non-module-capabilities is specified
- return null;
- }
-
- final var capabilities = new ArrayList<String>();
- final boolean overrideYangModuleCaps;
- if (moduleCaps != null) {
- capabilities.addAll(moduleCaps.getCapability());
- overrideYangModuleCaps = moduleCaps.getOverride();
- } else {
- overrideYangModuleCaps = false;
- }
-
- //non-module capabilities should not exist in yang module capabilities
- final var netconfSessionPreferences = NetconfSessionPreferences.fromStrings(capabilities);
- Preconditions.checkState(netconfSessionPreferences.getNonModuleCaps().isEmpty(),
- "List yang-module-capabilities/capability should contain only module based capabilities. "
- + "Non-module capabilities used: " + netconfSessionPreferences.getNonModuleCaps());
-
- final boolean overrideNonModuleCaps;
- if (nonModuleCaps != null) {
- capabilities.addAll(nonModuleCaps.getCapability());
- overrideNonModuleCaps = nonModuleCaps.getOverride();
- } else {
- overrideNonModuleCaps = false;
- }
-
- return new UserPreferences(NetconfSessionPreferences.fromStrings(capabilities, CapabilityOrigin.UserDefined),
- overrideYangModuleCaps, overrideNonModuleCaps);
- }