Simplify MandatoryLeafEnforcer instantiation 73/105973/4
authorRobert Varga <robert.varga@pantheon.tech>
Mon, 15 May 2023 21:14:45 +0000 (23:14 +0200)
committerRobert Varga <robert.varga@pantheon.tech>
Mon, 15 May 2023 21:29:28 +0000 (23:29 +0200)
Use @Nullable return instead of optional, reducing some verbosity.

Change-Id: Iaa9e68a35be4006bff92db413ccf2174988d5fca
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
data/yang-data-tree-ri/src/main/java/org/opendaylight/yangtools/yang/data/tree/impl/CaseEnforcer.java
data/yang-data-tree-ri/src/main/java/org/opendaylight/yangtools/yang/data/tree/impl/ContainerModificationStrategy.java
data/yang-data-tree-ri/src/main/java/org/opendaylight/yangtools/yang/data/tree/impl/MandatoryLeafEnforcer.java
data/yang-data-tree-ri/src/main/java/org/opendaylight/yangtools/yang/data/tree/impl/MapEntryModificationStrategy.java

index 46ef873a435c4484b6dbfa82b8bc8dc350ef718c..614779cc7a737a298dd58d5463bfd6efdd470a8f 100644 (file)
@@ -13,7 +13,6 @@ import com.google.common.collect.ImmutableMap;
 import com.google.common.collect.ImmutableMap.Builder;
 import com.google.common.collect.Sets;
 import java.util.Map.Entry;
-import java.util.Optional;
 import java.util.Set;
 import org.opendaylight.yangtools.concepts.Immutable;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.AugmentationIdentifier;
@@ -76,8 +75,8 @@ class CaseEnforcer implements Immutable {
             return null;
         }
         final ImmutableMap<AugmentationIdentifier, AugmentationSchemaNode> augmentations = augmentationsBuilder.build();
-        final Optional<MandatoryLeafEnforcer> enforcer = MandatoryLeafEnforcer.forContainer(schema, treeConfig);
-        return enforcer.isPresent() ? new EnforcingMandatory(children, augmentations, enforcer.orElseThrow())
+        final var enforcer = MandatoryLeafEnforcer.forContainer(schema, treeConfig);
+        return enforcer != null ? new EnforcingMandatory(children, augmentations, enforcer)
                 : new CaseEnforcer(children, augmentations);
     }
 
index 845e9287906c19464c45796ed6fe21d4f56f6a62..124a5b36ae27a52f867848a39f25c86c5837991c 100644 (file)
@@ -76,8 +76,8 @@ class ContainerModificationStrategy extends DataNodeContainerModificationStrateg
     static ModificationApplyOperation of(final ContainerSchemaNode schema, final DataTreeConfiguration treeConfig) {
         if (schema.isPresenceContainer()) {
             final var enforcer = MandatoryLeafEnforcer.forContainer(schema, treeConfig);
-            return enforcer.isPresent() ? new EnforcingMandatory(schema, treeConfig, enforcer.orElseThrow())
-                    : new ContainerModificationStrategy(schema, treeConfig);
+            return enforcer != null ? new EnforcingMandatory(schema, treeConfig, enforcer)
+                : new ContainerModificationStrategy(schema, treeConfig);
         }
 
         return new StructuralContainerModificationStrategy(schema, treeConfig);
index 3a57437613231619292871cd50595ed6b3b980c8..398d07f110066f36a12bc516135c5d0610193812 100644 (file)
@@ -12,7 +12,7 @@ import static org.opendaylight.yangtools.yang.data.tree.impl.MandatoryDescendant
 
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ImmutableList.Builder;
-import java.util.Optional;
+import org.eclipse.jdt.annotation.Nullable;
 import org.opendaylight.yangtools.concepts.Immutable;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier;
@@ -41,17 +41,17 @@ final class MandatoryLeafEnforcer implements Immutable {
         this.mandatoryNodes = requireNonNull(mandatoryNodes);
     }
 
-    static Optional<MandatoryLeafEnforcer> forContainer(final DataNodeContainer schema,
+    static @Nullable MandatoryLeafEnforcer forContainer(final DataNodeContainer schema,
             final DataTreeConfiguration treeConfig) {
         if (!treeConfig.isMandatoryNodesValidationEnabled()) {
-            return Optional.empty();
+            return null;
         }
 
-        final Builder<MandatoryDescendant> builder = ImmutableList.builder();
-        final boolean isAugmentingNode = schema instanceof CopyableNode && ((CopyableNode) schema).isAugmenting();
+        final var builder = ImmutableList.<MandatoryDescendant>builder();
+        final var isAugmentingNode = schema instanceof CopyableNode && ((CopyableNode) schema).isAugmenting();
         findMandatoryNodes(builder, YangInstanceIdentifier.empty(), schema, treeConfig.getTreeType(), isAugmentingNode);
-        final ImmutableList<MandatoryDescendant> mandatoryNodes = builder.build();
-        return mandatoryNodes.isEmpty() ? Optional.empty() : Optional.of(new MandatoryLeafEnforcer(mandatoryNodes));
+        final var mandatoryNodes = builder.build();
+        return mandatoryNodes.isEmpty() ? null : new MandatoryLeafEnforcer(mandatoryNodes);
     }
 
     void enforceOnData(final NormalizedNode data) {
@@ -67,13 +67,12 @@ final class MandatoryLeafEnforcer implements Immutable {
         final boolean augmentedSubtree) {
         for (final DataSchemaNode child : schema.getChildNodes()) {
             if (SchemaAwareApplyOperation.belongsToTree(type, child)) {
-                if (child instanceof ContainerSchemaNode) {
-                    final ContainerSchemaNode container = (ContainerSchemaNode) child;
+                if (child instanceof ContainerSchemaNode container) {
                     if (!container.isPresenceContainer()) {
                         if (!augmentedSubtree) {
                             // this container is not part of augmented subtree.
-                            final boolean parentSchemaAugmenting = schema instanceof CopyableNode
-                                && ((CopyableNode)schema).isAugmenting();
+                            final boolean parentSchemaAugmenting = schema instanceof CopyableNode copyable
+                                && copyable.isAugmenting();
                             if (container.isAugmenting() && !parentSchemaAugmenting) {
                                 // the container is augmenting, but the parent schema is not. Meaning this is the root
                                 // of the augmentation (the augmented subtree starts here). The container has to be
@@ -93,9 +92,9 @@ final class MandatoryLeafEnforcer implements Immutable {
                             container, type, augmentedSubtree);
                     }
                 } else {
-                    boolean needEnforce = child instanceof MandatoryAware && ((MandatoryAware) child).isMandatory();
-                    if (!needEnforce && child instanceof ElementCountConstraintAware) {
-                        needEnforce = ((ElementCountConstraintAware) child).getElementCountConstraint()
+                    boolean needEnforce = child instanceof MandatoryAware aware && aware.isMandatory();
+                    if (!needEnforce && child instanceof ElementCountConstraintAware aware) {
+                        needEnforce = aware.getElementCountConstraint()
                             .map(constraint -> {
                                 final Integer min = constraint.getMinElements();
                                 return min != null && min > 0;
index e897bff93cef9aa1f6c19671f12dd51504936771..94a27cbfa76d6790b3b0a9714dd7f3991623c0a2 100644 (file)
@@ -71,7 +71,7 @@ class MapEntryModificationStrategy extends DataNodeContainerModificationStrategy
     static @NonNull MapEntryModificationStrategy of(final ListSchemaNode schema,
             final DataTreeConfiguration treeConfig) {
         final var enforcer = MandatoryLeafEnforcer.forContainer(schema, treeConfig);
-        return enforcer.isPresent() ? new EnforcingMandatory(schema, treeConfig, enforcer.orElseThrow())
-                : new MapEntryModificationStrategy(schema, treeConfig);
+        return enforcer != null ? new EnforcingMandatory(schema, treeConfig, enforcer)
+            : new MapEntryModificationStrategy(schema, treeConfig);
     }
 }