From 856a7b36138eca857680928cbe50b47057888493 Mon Sep 17 00:00:00 2001 From: Robert Varga Date: Mon, 8 Oct 2018 15:12:08 +0200 Subject: [PATCH] Migrate mdsal-binding-dom-codec to JDT annotations This removes the use of javax.annotation nullable annotations to remove import-package. Change-Id: I436b9f0d0b3c835fce9da9e4c99e4dad273f9bbe JIRA: MDSAL-373 Signed-off-by: Robert Varga --- .../dom/codec/api/BindingCodecTree.java | 12 +++---- .../dom/codec/api/BindingCodecTreeNode.java | 34 ++++++++----------- .../codec/api/BindingNormalizedNodeCodec.java | 7 ++-- .../api/BindingNormalizedNodeSerializer.java | 20 +++++------ .../BindingNormalizedNodeWriterFactory.java | 31 +++++++---------- .../dom/codec/impl/BindingCodecContext.java | 6 ++-- .../codec/impl/ChoiceNodeCodecContext.java | 7 ++-- .../codec/impl/DataContainerCodecContext.java | 20 +++++------ .../codec/impl/DataObjectCodecContext.java | 18 +++++----- .../codec/impl/IncorrectNestingException.java | 7 ++-- .../dom/codec/impl/LeafNodeCodecContext.java | 12 ++++--- .../dom/codec/impl/NodeContextSupplier.java | 4 +-- .../codec/impl/SchemaRootCodecContext.java | 9 ++--- 13 files changed, 84 insertions(+), 103 deletions(-) diff --git a/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/api/BindingCodecTree.java b/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/api/BindingCodecTree.java index 4c32107224..5ac2cbb836 100644 --- a/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/api/BindingCodecTree.java +++ b/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/api/BindingCodecTree.java @@ -7,7 +7,7 @@ */ package org.opendaylight.mdsal.binding.dom.codec.api; -import javax.annotation.Nullable; +import org.eclipse.jdt.annotation.Nullable; import org.opendaylight.yangtools.yang.binding.DataObject; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; @@ -21,13 +21,9 @@ import org.opendaylight.yangtools.yang.model.api.SchemaPath; // TODO: Add more detailed documentation public interface BindingCodecTree { - @Nullable - BindingCodecTreeNode getSubtreeCodec(InstanceIdentifier path); + @Nullable BindingCodecTreeNode getSubtreeCodec(InstanceIdentifier path); - @Nullable - BindingCodecTreeNode getSubtreeCodec(YangInstanceIdentifier path); - - @Nullable - BindingCodecTreeNode getSubtreeCodec(SchemaPath path); + @Nullable BindingCodecTreeNode getSubtreeCodec(YangInstanceIdentifier path); + @Nullable BindingCodecTreeNode getSubtreeCodec(SchemaPath path); } diff --git a/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/api/BindingCodecTreeNode.java b/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/api/BindingCodecTreeNode.java index 2106847849..66b3b1abe5 100644 --- a/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/api/BindingCodecTreeNode.java +++ b/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/api/BindingCodecTreeNode.java @@ -11,8 +11,8 @@ import com.google.common.annotations.Beta; import com.google.common.collect.ImmutableCollection; import java.util.List; import java.util.Optional; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; +import org.eclipse.jdt.annotation.NonNull; +import org.eclipse.jdt.annotation.Nullable; import org.opendaylight.yangtools.yang.binding.BindingStreamEventWriter; import org.opendaylight.yangtools.yang.binding.DataObject; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; @@ -32,8 +32,7 @@ public interface BindingCodecTreeNode extends BindingNorma * * @return interface which defines API of binding representation of data. */ - @Nonnull - Class getBindingClass(); + @NonNull Class getBindingClass(); /** * Returns child context as if it was walked by {@link BindingStreamEventWriter}. This means that to enter case, @@ -44,8 +43,8 @@ public interface BindingCodecTreeNode extends BindingNorma * @throws IllegalArgumentException * If supplied child class is not valid in specified context. */ - @Nonnull - BindingCodecTreeNode streamChild(@Nonnull Class childClass); + // FIXME: this may return null in some implementations... + @NonNull BindingCodecTreeNode streamChild(@NonNull Class childClass); /** * Returns child context as if it was walked by {@link BindingStreamEventWriter}. This means that to enter case, @@ -61,7 +60,7 @@ public interface BindingCodecTreeNode extends BindingNorma * applicable in context. */ Optional> possibleStreamChild( - @Nonnull Class childClass); + @NonNull Class childClass); /** * Returns nested node context using supplied YANG Instance Identifier. @@ -72,8 +71,7 @@ public interface BindingCodecTreeNode extends BindingNorma * @throws IllegalArgumentException * If supplied argument does not represent valid child. */ - @Nonnull - BindingCodecTreeNode yangPathArgumentChild(@Nonnull YangInstanceIdentifier.PathArgument child); + @NonNull BindingCodecTreeNode yangPathArgumentChild(YangInstanceIdentifier.@NonNull PathArgument child); /** * Returns nested node context using supplied Binding Instance Identifier and adds YANG instance identifiers to @@ -88,8 +86,7 @@ public interface BindingCodecTreeNode extends BindingNorma * @throws IllegalArgumentException * If supplied argument does not represent valid child. */ - @Nonnull - BindingCodecTreeNode bindingPathArgumentChild(@Nonnull InstanceIdentifier.PathArgument arg, + @NonNull BindingCodecTreeNode bindingPathArgumentChild(InstanceIdentifier.@NonNull PathArgument arg, @Nullable List builder); /** @@ -102,9 +99,8 @@ public interface BindingCodecTreeNode extends BindingNorma * @param cacheSpecifier Set of objects, for which cache may be in place * @return Codec whihc uses cache for serialization / deserialization. */ - @Nonnull - BindingNormalizedNodeCachingCodec createCachingCodec(@Nonnull - ImmutableCollection> cacheSpecifier); + @NonNull BindingNormalizedNodeCachingCodec createCachingCodec( + @NonNull ImmutableCollection> cacheSpecifier); @Beta void writeAsNormalizedNode(T data, NormalizedNodeStreamWriter writer); @@ -119,7 +115,7 @@ public interface BindingCodecTreeNode extends BindingNorma * @throws IllegalArgumentException If supplied {@code arg} is not valid. */ @Beta - @Nullable YangInstanceIdentifier.PathArgument serializePathArgument(@Nullable InstanceIdentifier.PathArgument arg); + YangInstanceIdentifier.@Nullable PathArgument serializePathArgument(InstanceIdentifier.@Nullable PathArgument arg); /** * Deserializes path argument for current node. @@ -131,15 +127,15 @@ public interface BindingCodecTreeNode extends BindingNorma * @throws IllegalArgumentException If supplied {@code arg} is not valid. */ @Beta - @Nullable InstanceIdentifier.PathArgument deserializePathArgument( - @Nullable YangInstanceIdentifier.PathArgument arg); + InstanceIdentifier.@Nullable PathArgument deserializePathArgument( + YangInstanceIdentifier.@Nullable PathArgument arg); /** * Return the schema node associated with this node. * * @return A schema node. */ - @Nonnull WithStatus getSchema(); + @NonNull WithStatus getSchema(); /** * Return a summary of addressability of potential children. Binding specification does not allow all DOM tree @@ -150,7 +146,7 @@ public interface BindingCodecTreeNode extends BindingNorma * * @return Summary children addressability. */ - @Nonnull ChildAddressabilitySummary getChildAddressabilitySummary(); + @NonNull ChildAddressabilitySummary getChildAddressabilitySummary(); /** * Enumeration of possible addressability attribute of all children. diff --git a/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/api/BindingNormalizedNodeCodec.java b/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/api/BindingNormalizedNodeCodec.java index b950182dec..9215b5ade8 100644 --- a/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/api/BindingNormalizedNodeCodec.java +++ b/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/api/BindingNormalizedNodeCodec.java @@ -8,7 +8,7 @@ package org.opendaylight.mdsal.binding.dom.codec.api; import com.google.common.annotations.Beta; -import javax.annotation.Nonnull; +import org.eclipse.jdt.annotation.NonNull; import org.opendaylight.yangtools.yang.binding.DataObject; import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode; @@ -27,7 +27,7 @@ public interface BindingNormalizedNodeCodec { * @param data Normalized Node representation of data * @return Binding representation of data */ - @Nonnull T deserialize(@Nonnull NormalizedNode data); + @NonNull T deserialize(@NonNull NormalizedNode data); /** * Converts from Binding to Normalized Node representation of data. @@ -35,6 +35,5 @@ public interface BindingNormalizedNodeCodec { * @param data Binding representation of data * @return Normalized Node representation of data */ - @Nonnull NormalizedNode serialize(@Nonnull T data); - + @NonNull NormalizedNode serialize(@NonNull T data); } diff --git a/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/api/BindingNormalizedNodeSerializer.java b/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/api/BindingNormalizedNodeSerializer.java index cfd2d118e2..eb6e416645 100644 --- a/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/api/BindingNormalizedNodeSerializer.java +++ b/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/api/BindingNormalizedNodeSerializer.java @@ -9,9 +9,8 @@ package org.opendaylight.mdsal.binding.dom.codec.api; import com.google.common.annotations.Beta; import java.util.Map.Entry; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; import org.eclipse.jdt.annotation.NonNull; +import org.eclipse.jdt.annotation.Nullable; import org.opendaylight.mdsal.binding.spec.reflect.BindingReflections; import org.opendaylight.yangtools.yang.binding.Action; import org.opendaylight.yangtools.yang.binding.DataContainer; @@ -39,7 +38,7 @@ public interface BindingNormalizedNodeSerializer { * @return DOM Instance Identifier * @throws IllegalArgumentException If supplied Instance Identifier is not valid. */ - YangInstanceIdentifier toYangInstanceIdentifier(@Nonnull InstanceIdentifier binding); + YangInstanceIdentifier toYangInstanceIdentifier(@NonNull InstanceIdentifier binding); /** * Translates supplied YANG Instance Identifier into Binding instance identifier. @@ -47,8 +46,8 @@ public interface BindingNormalizedNodeSerializer { * @param dom YANG Instance Identifier * @return Binding Instance Identifier, or null if the instance identifier is not representable. */ - @Nullable - InstanceIdentifier fromYangInstanceIdentifier(@Nonnull YangInstanceIdentifier dom); + @Nullable InstanceIdentifier fromYangInstanceIdentifier( + @NonNull YangInstanceIdentifier dom); /** * Translates supplied Binding Instance Identifier and data into NormalizedNode representation. @@ -68,8 +67,7 @@ public interface BindingNormalizedNodeSerializer { * @param data NormalizedNode representing data * @return DOM Instance Identifier */ - @Nullable - Entry, DataObject> fromNormalizedNode(@Nonnull YangInstanceIdentifier path, + @Nullable Entry, DataObject> fromNormalizedNode(@NonNull YangInstanceIdentifier path, NormalizedNode data); /** @@ -79,7 +77,7 @@ public interface BindingNormalizedNodeSerializer { * @param data NormalizedNode representing data * @return Binding representation of Notification */ - @Nullable Notification fromNormalizedNodeNotification(@Nonnull SchemaPath path,@Nonnull ContainerNode data); + @Nullable Notification fromNormalizedNodeNotification(@NonNull SchemaPath path, @NonNull ContainerNode data); /** * Translates supplied NormalizedNode RPC input or output into Binding data. @@ -88,7 +86,7 @@ public interface BindingNormalizedNodeSerializer { * @param data NormalizedNode representing data * @return Binding representation of RPC data */ - @Nullable DataObject fromNormalizedNodeRpcData(@Nonnull SchemaPath path,@Nonnull ContainerNode data); + @Nullable DataObject fromNormalizedNodeRpcData(@NonNull SchemaPath path, @NonNull ContainerNode data); /** * Translates supplied ContainerNode action input. @@ -120,7 +118,7 @@ public interface BindingNormalizedNodeSerializer { * @param data NormalizedNode representing notification data * @return NormalizedNode representation of notification */ - @Nonnull ContainerNode toNormalizedNodeNotification(@Nonnull Notification data); + @NonNull ContainerNode toNormalizedNodeNotification(@NonNull Notification data); /** * Translates supplied Binding RPC input or output into NormalizedNode data. @@ -128,7 +126,7 @@ public interface BindingNormalizedNodeSerializer { * @param data NormalizedNode representing rpc data * @return NormalizedNode representation of rpc data */ - @Nonnull ContainerNode toNormalizedNodeRpcData(@Nonnull DataContainer data); + @NonNull ContainerNode toNormalizedNodeRpcData(@NonNull DataContainer data); /** * Lazily translates supplied Binding action input into NormalizedNode data. diff --git a/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/api/BindingNormalizedNodeWriterFactory.java b/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/api/BindingNormalizedNodeWriterFactory.java index 691ca3eb3d..2df1e7d3af 100644 --- a/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/api/BindingNormalizedNodeWriterFactory.java +++ b/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/api/BindingNormalizedNodeWriterFactory.java @@ -8,7 +8,7 @@ package org.opendaylight.mdsal.binding.dom.codec.api; import java.util.Map.Entry; -import javax.annotation.Nonnull; +import org.eclipse.jdt.annotation.NonNull; import org.opendaylight.yangtools.yang.binding.Action; import org.opendaylight.yangtools.yang.binding.BindingStreamEventWriter; import org.opendaylight.yangtools.yang.binding.DataContainer; @@ -43,8 +43,8 @@ public interface BindingNormalizedNodeWriterFactory { * which will write to supplied {@link NormalizedNodeStreamWriter}. * @throws IllegalArgumentException If supplied Instance Identifier is not valid. */ - @Nonnull Entry newWriterAndIdentifier( - @Nonnull InstanceIdentifier path, @Nonnull NormalizedNodeStreamWriter domWriter); + @NonNull Entry newWriterAndIdentifier( + @NonNull InstanceIdentifier path, @NonNull NormalizedNodeStreamWriter domWriter); /** * Creates a {@link BindingStreamEventWriter} for data tree path which will translate to NormalizedNode model @@ -62,9 +62,8 @@ public interface BindingNormalizedNodeWriterFactory { * which will write to supplied {@link NormalizedNodeStreamWriter}. * @throws IllegalArgumentException If supplied Instance Identifier is not valid. */ - @Nonnull - BindingStreamEventWriter newWriter(@Nonnull InstanceIdentifier path, - @Nonnull NormalizedNodeStreamWriter domWriter); + @NonNull BindingStreamEventWriter newWriter(@NonNull InstanceIdentifier path, + @NonNull NormalizedNodeStreamWriter domWriter); /** * Creates a {@link BindingStreamEventWriter} for RPC data which will translate to NormalizedNode model and invoke @@ -77,9 +76,8 @@ public interface BindingNormalizedNodeWriterFactory { * @return {@link BindingStreamEventWriter} which will write to supplied * {@link NormalizedNodeStreamWriter}. */ - @Nonnull - BindingStreamEventWriter newRpcWriter(@Nonnull Class rpcInputOrOutput, - @Nonnull NormalizedNodeStreamWriter domWriter); + @NonNull BindingStreamEventWriter newRpcWriter(@NonNull Class rpcInputOrOutput, + @NonNull NormalizedNodeStreamWriter domWriter); /** * Creates a {@link BindingStreamEventWriter} for notification which will translate to NormalizedNode model @@ -92,9 +90,8 @@ public interface BindingNormalizedNodeWriterFactory { * @return {@link BindingStreamEventWriter} which will write to supplied * {@link NormalizedNodeStreamWriter}. */ - @Nonnull - BindingStreamEventWriter newNotificationWriter(@Nonnull Class notification, - @Nonnull NormalizedNodeStreamWriter domWriter); + @NonNull BindingStreamEventWriter newNotificationWriter(@NonNull Class notification, + @NonNull NormalizedNodeStreamWriter domWriter); /** * Creates a {@link BindingStreamEventWriter} for action input which will translate to NormalizedNode model @@ -104,9 +101,8 @@ public interface BindingNormalizedNodeWriterFactory { * @param domWriter Stream writer on which events will be invoked. * @return {@link BindingStreamEventWriter} which will write to supplied {@link NormalizedNodeStreamWriter}. */ - @Nonnull - BindingStreamEventWriter newActionInputWriter(@Nonnull Class> action, - @Nonnull NormalizedNodeStreamWriter domWriter); + @NonNull BindingStreamEventWriter newActionInputWriter(@NonNull Class> action, + @NonNull NormalizedNodeStreamWriter domWriter); /** * Creates a {@link BindingStreamEventWriter} for action output which will translate to NormalizedNode model @@ -116,7 +112,6 @@ public interface BindingNormalizedNodeWriterFactory { * @param domWriter Stream writer on which events will be invoked. * @return {@link BindingStreamEventWriter} which will write to supplied {@link NormalizedNodeStreamWriter}. */ - @Nonnull - BindingStreamEventWriter newActionOutputWriter(@Nonnull Class> action, - @Nonnull NormalizedNodeStreamWriter domWriter); + @NonNull BindingStreamEventWriter newActionOutputWriter(@NonNull Class> action, + @NonNull NormalizedNodeStreamWriter domWriter); } diff --git a/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/BindingCodecContext.java b/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/BindingCodecContext.java index 967e45b5db..16f2d971b2 100644 --- a/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/BindingCodecContext.java +++ b/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/BindingCodecContext.java @@ -20,8 +20,8 @@ import java.util.List; import java.util.Map; import java.util.Map.Entry; import java.util.concurrent.Callable; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; +import org.eclipse.jdt.annotation.NonNull; +import org.eclipse.jdt.annotation.Nullable; import org.opendaylight.mdsal.binding.dom.codec.api.BindingCodecTree; import org.opendaylight.mdsal.binding.dom.codec.api.BindingCodecTreeNode; import org.opendaylight.mdsal.binding.dom.codec.impl.NodeCodecContext.CodecContextFactory; @@ -145,7 +145,7 @@ final class BindingCodecContext implements CodecContextFactory, BindingCodecTree * binding representation (choice, case, leaf). * */ - @Nullable NodeCodecContext getCodecContextNode(final @Nonnull YangInstanceIdentifier dom, + @Nullable NodeCodecContext getCodecContextNode(final @NonNull YangInstanceIdentifier dom, final @Nullable Collection bindingArguments) { NodeCodecContext currentNode = root; ListNodeCodecContext currentList = null; diff --git a/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/ChoiceNodeCodecContext.java b/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/ChoiceNodeCodecContext.java index be96700de3..0d9699e686 100644 --- a/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/ChoiceNodeCodecContext.java +++ b/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/ChoiceNodeCodecContext.java @@ -27,8 +27,7 @@ import java.util.Map.Entry; import java.util.Optional; import java.util.Set; import java.util.concurrent.ConcurrentHashMap; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; +import org.eclipse.jdt.annotation.NonNull; import org.opendaylight.mdsal.binding.spec.reflect.BindingReflections; import org.opendaylight.yangtools.yang.binding.DataObject; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier.PathArgument; @@ -235,7 +234,6 @@ final class ChoiceNodeCodecContext extends DataContainerCo @SuppressWarnings("unchecked") @Override - @Nullable public D deserialize(final NormalizedNode data) { Preconditions.checkArgument(data instanceof ChoiceNode); final NormalizedNodeContainer> casted = @@ -243,6 +241,7 @@ final class ChoiceNodeCodecContext extends DataContainerCo final NormalizedNode first = Iterables.getFirst(casted.getValue(), null); if (first == null) { + // FIXME: this needs to be sorted out return null; } final DataContainerCodecPrototype caze = byYangCaseChild.get(first.getIdentifier()); @@ -266,7 +265,7 @@ final class ChoiceNodeCodecContext extends DataContainerCo return getDomPathArgument(); } - DataContainerCodecContext getCaseByChildClass(final @Nonnull Class type) { + DataContainerCodecContext getCaseByChildClass(final @NonNull Class type) { DataContainerCodecPrototype result = byCaseChildClass.get(type); if (result == null) { // We have not found an unambiguous result, try ambiguous ones diff --git a/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/DataContainerCodecContext.java b/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/DataContainerCodecContext.java index df9ecabf60..c5c02298a7 100644 --- a/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/DataContainerCodecContext.java +++ b/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/DataContainerCodecContext.java @@ -12,8 +12,8 @@ import com.google.common.collect.ImmutableSet; import java.io.IOException; import java.util.List; import java.util.Optional; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; +import org.eclipse.jdt.annotation.NonNull; +import org.eclipse.jdt.annotation.Nullable; import org.opendaylight.mdsal.binding.dom.codec.api.BindingNormalizedNodeCachingCodec; import org.opendaylight.yangtools.yang.binding.BindingStreamEventWriter; import org.opendaylight.yangtools.yang.binding.DataObject; @@ -79,7 +79,6 @@ abstract class DataContainerCodecContext bindingPathArgumentChild(final PathArgument arg, final List builder) { final DataContainerCodecContext child = streamChild(arg.getType()); @@ -118,7 +117,7 @@ abstract class DataContainerCodecContext DataContainerCodecContext streamChild(Class childClass); + public abstract DataContainerCodecContext streamChild(Class childClass); /** * Returns child context as if it was walked by {@link BindingStreamEventWriter}. This means that to enter case, one @@ -149,9 +148,8 @@ abstract class DataContainerCodecContext V childNonNull(@Nullable final V nullable, final YangInstanceIdentifier.PathArgument child, - final String message, final Object... args) { + protected final @NonNull V childNonNull(final @Nullable V nullable, + final YangInstanceIdentifier.PathArgument child, final String message, final Object... args) { if (nullable != null) { return nullable; } @@ -159,8 +157,7 @@ abstract class DataContainerCodecContext V childNonNull(@Nullable final V nullable, final QName child, final String message, + protected final @NonNull V childNonNull(final @Nullable V nullable, final QName child, final String message, final Object... args) { if (nullable != null) { return nullable; @@ -169,9 +166,8 @@ abstract class DataContainerCodecContext V childNonNull(@Nullable final V nullable, final Class childClass, final String message, - final Object... args) { + protected final @NonNull V childNonNull(final @Nullable V nullable, final Class childClass, + final String message, final Object... args) { if (nullable != null) { return nullable; } diff --git a/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/DataObjectCodecContext.java b/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/DataObjectCodecContext.java index 03351f3ac1..3b615f25b0 100644 --- a/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/DataObjectCodecContext.java +++ b/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/DataObjectCodecContext.java @@ -7,7 +7,8 @@ */ package org.opendaylight.mdsal.binding.dom.codec.impl; -import com.google.common.base.Preconditions; +import static com.google.common.base.Preconditions.checkArgument; + import com.google.common.base.Throwables; import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableSortedMap; @@ -28,8 +29,8 @@ import java.util.SortedMap; import java.util.TreeMap; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentMap; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; +import org.eclipse.jdt.annotation.NonNull; +import org.eclipse.jdt.annotation.Nullable; import org.opendaylight.mdsal.binding.generator.api.ClassLoadingStrategy; import org.opendaylight.mdsal.binding.model.api.Type; import org.opendaylight.mdsal.binding.spec.reflect.BindingReflections; @@ -279,8 +280,7 @@ abstract class DataObjectCodecContext augmentationByClass(@Nonnull final Class childClass) { + private @Nullable DataContainerCodecPrototype augmentationByClass(final @NonNull Class childClass) { final DataContainerCodecPrototype firstTry = augmentationByClassOrEquivalentClass(childClass); if (firstTry != null) { return firstTry; @@ -289,8 +289,8 @@ abstract class DataObjectCodecContext augmentationByClassOrEquivalentClass(@Nonnull final Class childClass) { + private @Nullable DataContainerCodecPrototype augmentationByClassOrEquivalentClass( + final @NonNull Class childClass) { final DataContainerCodecPrototype childProto = byStreamAugmented.get(childClass); if (childProto != null) { return childProto; @@ -389,13 +389,13 @@ abstract class DataObjectCodecContext V checkNonNull(@Nullable final V nullable, final String message, final Object... args) { + public static @NonNull V checkNonNull(final @Nullable V nullable, final String message, final Object... args) { if (nullable != null) { return nullable; } diff --git a/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/LeafNodeCodecContext.java b/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/LeafNodeCodecContext.java index a72145217f..e681979d8b 100644 --- a/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/LeafNodeCodecContext.java +++ b/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/LeafNodeCodecContext.java @@ -7,7 +7,9 @@ */ package org.opendaylight.mdsal.binding.dom.codec.impl; -import com.google.common.base.Preconditions; +import static com.google.common.base.Preconditions.checkArgument; +import static java.util.Objects.requireNonNull; + import com.google.common.collect.ImmutableCollection; import java.lang.reflect.Method; import java.util.ArrayList; @@ -15,7 +17,7 @@ import java.util.Collection; import java.util.List; import java.util.Optional; import java.util.Set; -import javax.annotation.Nullable; +import org.eclipse.jdt.annotation.Nullable; import org.opendaylight.mdsal.binding.dom.codec.api.BindingCodecTreeNode; import org.opendaylight.mdsal.binding.dom.codec.api.BindingNormalizedNodeCachingCodec; import org.opendaylight.yangtools.concepts.Codec; @@ -49,9 +51,9 @@ final class LeafNodeCodecContext extends NodeCodecContext< LeafNodeCodecContext(final DataSchemaNode schema, final Codec codec, final Method getter, final SchemaContext schemaContext) { this.yangIdentifier = new YangInstanceIdentifier.NodeIdentifier(schema.getQName()); - this.valueCodec = Preconditions.checkNotNull(codec); + this.valueCodec = requireNonNull(codec); this.getter = getter; - this.schema = Preconditions.checkNotNull(schema); + this.schema = requireNonNull(schema); this.defaultObject = createDefaultObject(schema, valueCodec, schemaContext); } @@ -209,7 +211,7 @@ final class LeafNodeCodecContext extends NodeCodecContext< @Override public InstanceIdentifier.PathArgument deserializePathArgument(final YangInstanceIdentifier.PathArgument arg) { - Preconditions.checkArgument(getDomPathArgument().equals(arg)); + checkArgument(getDomPathArgument().equals(arg)); return null; } diff --git a/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/NodeContextSupplier.java b/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/NodeContextSupplier.java index 9c7c12fc38..30e022782e 100644 --- a/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/NodeContextSupplier.java +++ b/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/NodeContextSupplier.java @@ -8,12 +8,12 @@ package org.opendaylight.mdsal.binding.dom.codec.impl; import java.util.function.Supplier; -import javax.annotation.Nonnull; +import org.eclipse.jdt.annotation.NonNull; /** * Type capture of an entity producing NodeCodecContexts. */ interface NodeContextSupplier extends Supplier> { @Override - @Nonnull NodeCodecContext get(); + @NonNull NodeCodecContext get(); } diff --git a/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/SchemaRootCodecContext.java b/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/SchemaRootCodecContext.java index 21a8cc179e..095d5e94ba 100644 --- a/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/SchemaRootCodecContext.java +++ b/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/SchemaRootCodecContext.java @@ -314,12 +314,13 @@ final class SchemaRootCodecContext extends DataContainerCo @Override public DataContainerCodecContext bindingPathArgumentChild(final InstanceIdentifier.PathArgument arg, final List builder) { - final java.util.Optional> caseType = arg.getCaseType(); + final Optional> caseType = arg.getCaseType(); if (caseType.isPresent()) { - final Class type = caseType.get(); - final ChoiceNodeCodecContext choice = choicesByClass.getUnchecked(type); + // XXX: we use two caseType.get()s because of https://bugs.openjdk.java.net/browse/JDK-8144185, + // which makes JaCoCo blow up if we try using @NonNull on the local variable. + final ChoiceNodeCodecContext choice = choicesByClass.getUnchecked(caseType.get()); choice.addYangPathArgument(arg, builder); - final DataContainerCodecContext caze = choice.streamChild(type); + final DataContainerCodecContext caze = choice.streamChild(caseType.get()); caze.addYangPathArgument(arg, builder); return caze.bindingPathArgumentChild(arg, builder); } -- 2.36.6