Refactor DataObjectCodecContext.getBindingChildValue()
[mdsal.git] / binding / mdsal-binding-dom-codec / src / main / java / org / opendaylight / mdsal / binding / dom / codec / impl / DataObjectCodecContext.java
index e7961a546a5a32c45510bef6f8df87df4d6d8589..584ea26a6e6e9454a46c6de5cb45786a2323a286 100644 (file)
@@ -368,13 +368,10 @@ abstract class DataObjectCodecContext<D extends DataObject, T extends DataNodeCo
         final NodeCodecContext<?> childContext = byMethod.get(method).get();
         @SuppressWarnings("unchecked")
         final Optional<NormalizedNode<?, ?>> domChild = domData.getChild(childContext.getDomPathArgument());
-        if (domChild.isPresent()) {
-            return childContext.deserializeObject(domChild.get());
-        } else if (childContext instanceof LeafNodeCodecContext) {
-            return ((LeafNodeCodecContext)childContext).defaultObject();
-        } else {
-            return null;
-        }
+
+        // We do not want to use Optional.map() here because we do not want to invoke defaultObject() when we have
+        // normal value because defaultObject() may end up throwing an exception intentionally.
+        return domChild.isPresent() ? childContext.deserializeObject(domChild.get()) : childContext.defaultObject();
     }
 
     @SuppressWarnings("checkstyle:illegalCatch")