Migrate mdsal-binding-dom-codec to JDT annotations 52/76752/20
authorRobert Varga <robert.varga@pantheon.tech>
Mon, 8 Oct 2018 13:12:08 +0000 (15:12 +0200)
committerTom Pantelis <tompantelis@gmail.com>
Tue, 9 Oct 2018 16:06:38 +0000 (16:06 +0000)
This removes the use of javax.annotation nullable annotations
to remove import-package.

Change-Id: I436b9f0d0b3c835fce9da9e4c99e4dad273f9bbe
JIRA: MDSAL-373
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
13 files changed:
binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/api/BindingCodecTree.java
binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/api/BindingCodecTreeNode.java
binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/api/BindingNormalizedNodeCodec.java
binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/api/BindingNormalizedNodeSerializer.java
binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/api/BindingNormalizedNodeWriterFactory.java
binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/BindingCodecContext.java
binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/ChoiceNodeCodecContext.java
binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/DataContainerCodecContext.java
binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/DataObjectCodecContext.java
binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/IncorrectNestingException.java
binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/LeafNodeCodecContext.java
binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/NodeContextSupplier.java
binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/SchemaRootCodecContext.java

index 4c3210722433cd59a77fd185155260e65584cbda..5ac2cbb83618b3d516eda3ca1534864860288210 100644 (file)
@@ -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
-    <T extends DataObject> BindingCodecTreeNode<T> getSubtreeCodec(InstanceIdentifier<T> path);
+    @Nullable <T extends DataObject> BindingCodecTreeNode<T> getSubtreeCodec(InstanceIdentifier<T> path);
 
-    @Nullable
-    BindingCodecTreeNode<?> getSubtreeCodec(YangInstanceIdentifier path);
-
-    @Nullable
-    BindingCodecTreeNode<?> getSubtreeCodec(SchemaPath path);
+    @Nullable BindingCodecTreeNode<?> getSubtreeCodec(YangInstanceIdentifier path);
 
+    @Nullable BindingCodecTreeNode<?> getSubtreeCodec(SchemaPath path);
 }
index 210684784904c29a4bdf843f0905cbfecceab55c..66b3b1abe5285084b1a44e45bcb9f573f483b9bb 100644 (file)
@@ -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<T extends DataObject> extends BindingNorma
      *
      * @return interface which defines API of binding representation of data.
      */
-    @Nonnull
-    Class<T> getBindingClass();
+    @NonNull Class<T> 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<T extends DataObject> extends BindingNorma
      * @throws IllegalArgumentException
      *             If supplied child class is not valid in specified context.
      */
-    @Nonnull
-    <E extends DataObject> BindingCodecTreeNode<E> streamChild(@Nonnull Class<E> childClass);
+    // FIXME: this may return null in some implementations...
+    <E extends DataObject> @NonNull BindingCodecTreeNode<E> streamChild(@NonNull Class<E> 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<T extends DataObject> extends BindingNorma
      *         applicable in context.
      */
     <E extends DataObject> Optional<? extends BindingCodecTreeNode<E>> possibleStreamChild(
-            @Nonnull Class<E> childClass);
+            @NonNull Class<E> childClass);
 
     /**
      * Returns nested node context using supplied YANG Instance Identifier.
@@ -72,8 +71,7 @@ public interface BindingCodecTreeNode<T extends DataObject> 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<T extends DataObject> 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<YangInstanceIdentifier.PathArgument> builder);
 
     /**
@@ -102,9 +99,8 @@ public interface BindingCodecTreeNode<T extends DataObject> extends BindingNorma
      * @param cacheSpecifier Set of objects, for which cache may be in place
      * @return Codec whihc uses cache for serialization / deserialization.
      */
-    @Nonnull
-    BindingNormalizedNodeCachingCodec<T> createCachingCodec(@Nonnull
-            ImmutableCollection<Class<? extends DataObject>> cacheSpecifier);
+    @NonNull BindingNormalizedNodeCachingCodec<T> createCachingCodec(
+            @NonNull ImmutableCollection<Class<? extends DataObject>> cacheSpecifier);
 
     @Beta
     void writeAsNormalizedNode(T data, NormalizedNodeStreamWriter writer);
@@ -119,7 +115,7 @@ public interface BindingCodecTreeNode<T extends DataObject> 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<T extends DataObject> 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<T extends DataObject> extends BindingNorma
      *
      * @return Summary children addressability.
      */
-    @Nonnull ChildAddressabilitySummary getChildAddressabilitySummary();
+    @NonNull ChildAddressabilitySummary getChildAddressabilitySummary();
 
     /**
      * Enumeration of possible addressability attribute of all children.
index b950182deccec5899ba4ccde938620f5e70fbe35..9215b5ade8178cb8410be021ef54c75f98342a79 100644 (file)
@@ -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<T extends DataObject> {
      * @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<T extends DataObject> {
      * @param data Binding representation of data
      * @return Normalized Node representation of data
      */
-    @Nonnull NormalizedNode<?,?> serialize(@Nonnull T data);
-
+    @NonNull NormalizedNode<?,?> serialize(@NonNull T data);
 }
index cfd2d118e28f6fbc4cabb7ad22e49ddfb4de47e9..eb6e416645e36298048979674a709e0f9fd2f9cb 100644 (file)
@@ -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
-    <T extends DataObject> InstanceIdentifier<T> fromYangInstanceIdentifier(@Nonnull YangInstanceIdentifier dom);
+    <T extends DataObject> @Nullable InstanceIdentifier<T> 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<InstanceIdentifier<?>, DataObject> fromNormalizedNode(@Nonnull YangInstanceIdentifier path,
+    @Nullable Entry<InstanceIdentifier<?>, 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.
index 691ca3eb3da094574c292b507a6cfe419439c713..2df1e7d3afcee20fea1130c21a160cfc20e4c590 100644 (file)
@@ -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<YangInstanceIdentifier, BindingStreamEventWriter> newWriterAndIdentifier(
-            @Nonnull InstanceIdentifier<?> path, @Nonnull NormalizedNodeStreamWriter domWriter);
+    @NonNull Entry<YangInstanceIdentifier, BindingStreamEventWriter> 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<? extends DataContainer> rpcInputOrOutput,
-            @Nonnull NormalizedNodeStreamWriter domWriter);
+    @NonNull BindingStreamEventWriter newRpcWriter(@NonNull Class<? extends DataContainer> 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<? extends Notification> notification,
-            @Nonnull NormalizedNodeStreamWriter domWriter);
+    @NonNull BindingStreamEventWriter newNotificationWriter(@NonNull Class<? extends Notification> 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<? extends Action<?, ?, ?>> action,
-            @Nonnull NormalizedNodeStreamWriter domWriter);
+    @NonNull BindingStreamEventWriter newActionInputWriter(@NonNull Class<? extends Action<?, ?, ?>> 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<? extends Action<?, ?, ?>> action,
-            @Nonnull NormalizedNodeStreamWriter domWriter);
+    @NonNull BindingStreamEventWriter newActionOutputWriter(@NonNull Class<? extends Action<?, ?, ?>> action,
+            @NonNull NormalizedNodeStreamWriter domWriter);
 }
index 967e45b5db700e99b5b63f6fb85009220d493504..16f2d971b2e92146510ea2f49bd5fc9b8ae19587 100644 (file)
@@ -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<InstanceIdentifier.PathArgument> bindingArguments) {
         NodeCodecContext<?> currentNode = root;
         ListNodeCodecContext<?> currentList = null;
index be96700de3f35bab019a0f50f1b5fb9cedee9ade..0d9699e68621561976357c856f2bd476bbfbc64f 100644 (file)
@@ -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<D extends DataObject> extends DataContainerCo
 
     @SuppressWarnings("unchecked")
     @Override
-    @Nullable
     public D deserialize(final NormalizedNode<?, ?> data) {
         Preconditions.checkArgument(data instanceof ChoiceNode);
         final NormalizedNodeContainer<?, ?, NormalizedNode<?, ?>> casted =
@@ -243,6 +241,7 @@ final class ChoiceNodeCodecContext<D extends DataObject> 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<D extends DataObject> extends DataContainerCo
         return getDomPathArgument();
     }
 
-    DataContainerCodecContext<?, ?> getCaseByChildClass(final @Nonnull Class<? extends DataObject> type) {
+    DataContainerCodecContext<?, ?> getCaseByChildClass(final @NonNull Class<? extends DataObject> type) {
         DataContainerCodecPrototype<?> result = byCaseChildClass.get(type);
         if (result == null) {
             // We have not found an unambiguous result, try ambiguous ones
index df9ecabf6064a25a506802147a13ac667376d7bf..c5c02298a74c02339ba8f00ef71cc29da02e11f1 100644 (file)
@@ -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<D extends DataObject, T extends WithSta
      * @throws IllegalArgumentException If supplied argument does not represent valid child.
      */
     @Override
-    @Nullable
     public DataContainerCodecContext<?,?> bindingPathArgumentChild(final PathArgument arg,
             final List<YangInstanceIdentifier.PathArgument> builder) {
         final DataContainerCodecContext<?,?> child = streamChild(arg.getType());
@@ -118,7 +117,7 @@ abstract class DataContainerCodecContext<D extends DataObject, T extends WithSta
      * @throws IllegalArgumentException If supplied child class is not valid in specified context.
      */
     @Override
-    public abstract @Nullable <C extends DataObject> DataContainerCodecContext<C, ?> streamChild(Class<C> childClass);
+    public abstract <C extends DataObject> DataContainerCodecContext<C, ?> streamChild(Class<C> 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<D extends DataObject, T extends WithSta
         return BindingToNormalizedStreamWriter.create(this, domWriter);
     }
 
-    @Nonnull
-    protected final <V> V childNonNull(@Nullable final V nullable, final YangInstanceIdentifier.PathArgument child,
-            final String message, final Object... args) {
+    protected final <V> @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<D extends DataObject, T extends WithSta
         throw IncorrectNestingException.create(message, args);
     }
 
-    @Nonnull
-    protected final <V> V childNonNull(@Nullable final V nullable, final QName child, final String message,
+    protected final <V> @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<D extends DataObject, T extends WithSta
         throw IncorrectNestingException.create(message, args);
     }
 
-    @Nonnull
-    protected final <V> V childNonNull(@Nullable final V nullable, final Class<?> childClass, final String message,
-            final Object... args) {
+    protected final <V> @NonNull V childNonNull(final @Nullable V nullable, final Class<?> childClass,
+            final String message, final Object... args) {
         if (nullable != null) {
             return nullable;
         }
index 03351f3ac11f1820e9fc125c934ead237f0c84b1..3b615f25b0c199811ad013ba5de89e50b19e3487 100644 (file)
@@ -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<D extends DataObject, T extends DataNodeCo
         return null;
     }
 
-    @Nullable
-    private DataContainerCodecPrototype<?> 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<D extends DataObject, T extends DataNodeCo
         return augmentationByClassOrEquivalentClass(childClass);
     }
 
-    @Nullable
-    private DataContainerCodecPrototype<?> 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<D extends DataObject, T extends DataNodeCo
 
     @Override
     public InstanceIdentifier.PathArgument deserializePathArgument(final YangInstanceIdentifier.PathArgument arg) {
-        Preconditions.checkArgument(getDomPathArgument().equals(arg));
+        checkArgument(getDomPathArgument().equals(arg));
         return bindingArg();
     }
 
     @Override
     public YangInstanceIdentifier.PathArgument serializePathArgument(final InstanceIdentifier.PathArgument arg) {
-        Preconditions.checkArgument(bindingArg().equals(arg));
+        checkArgument(bindingArg().equals(arg));
         return getDomPathArgument();
     }
 }
index 9d5f25f6a2e46cd5f0dde376a23a4c0045484039..e7ee8fae268ee9313c1ba232da5ee04acb671b22 100644 (file)
@@ -7,8 +7,8 @@
  */
 package org.opendaylight.mdsal.binding.dom.codec.impl;
 
-import javax.annotation.Nonnull;
-import javax.annotation.Nullable;
+import org.eclipse.jdt.annotation.NonNull;
+import org.eclipse.jdt.annotation.Nullable;
 
 /**
  * Thrown where incorrect nesting of data structures was detected and was caused by user.
@@ -31,8 +31,7 @@ public class IncorrectNestingException extends IllegalArgumentException {
         }
     }
 
-    @Nonnull
-    public static <V> V checkNonNull(@Nullable final V nullable, final String message, final Object... args) {
+    public static <V> @NonNull V checkNonNull(final @Nullable V nullable, final String message, final Object... args) {
         if (nullable != null) {
             return nullable;
         }
index a72145217f89b0ab6cbd9c9eed697d3c936fc047..e681979d8b539e1c9a3cb7b65a1b8f81c9202804 100644 (file)
@@ -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<D extends DataObject> extends NodeCodecContext<
     LeafNodeCodecContext(final DataSchemaNode schema, final Codec<Object, Object> 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<D extends DataObject> extends NodeCodecContext<
 
     @Override
     public InstanceIdentifier.PathArgument deserializePathArgument(final YangInstanceIdentifier.PathArgument arg) {
-        Preconditions.checkArgument(getDomPathArgument().equals(arg));
+        checkArgument(getDomPathArgument().equals(arg));
         return null;
     }
 
index 9c7c12fc38f20da80552dc6c300cfb7a4343f198..30e022782ecc2c4bff19e88de3b23d0debb42f1b 100644 (file)
@@ -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<NodeCodecContext<?>> {
     @Override
-    @Nonnull NodeCodecContext<?> get();
+    @NonNull NodeCodecContext<?> get();
 }
index 21a8cc179e35efdc35b29d64d70dce5b1eedb75c..095d5e94ba406abef7c93c58aa49d632dd894dee 100644 (file)
@@ -314,12 +314,13 @@ final class SchemaRootCodecContext<D extends DataObject> extends DataContainerCo
     @Override
     public DataContainerCodecContext<?, ?> bindingPathArgumentChild(final InstanceIdentifier.PathArgument arg,
             final List<PathArgument> builder) {
-        final java.util.Optional<? extends Class<? extends DataObject>> caseType = arg.getCaseType();
+        final Optional<? extends Class<? extends DataObject>> caseType = arg.getCaseType();
         if (caseType.isPresent()) {
-            final Class<? extends DataObject> 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);
         }