BUG-7698: do not allow nulls in registrations 52/51152/5
authorRobert Varga <rovarga@cisco.com>
Fri, 27 Jan 2017 20:05:19 +0000 (21:05 +0100)
committerRobert Varga <nite@hq.sk>
Tue, 11 Apr 2017 17:09:33 +0000 (17:09 +0000)
This updates the AbstractObjectRegistration to not allow
nulls and updates ObjectRegistration to promise it will
not return a null from getInstance().

Change-Id: I10229d58af4a9f26f2f18128302b45bc721e546f
Signed-off-by: Robert Varga <rovarga@cisco.com>
common/concepts/src/main/java/org/opendaylight/yangtools/concepts/AbstractListenerRegistration.java
common/concepts/src/main/java/org/opendaylight/yangtools/concepts/AbstractObjectRegistration.java
common/concepts/src/main/java/org/opendaylight/yangtools/concepts/ObjectRegistration.java

index bd467908edb94e05731d574468e00ba513a2e616..fc417133d7fa13700235e3449dd1aac6ff4a72da 100644 (file)
@@ -8,11 +8,12 @@
 package org.opendaylight.yangtools.concepts;
 
 import java.util.EventListener;
+import javax.annotation.Nonnull;
 
 public abstract class AbstractListenerRegistration<T extends EventListener> extends AbstractObjectRegistration<T>
         implements ListenerRegistration<T> {
 
-    protected AbstractListenerRegistration(final T listener) {
+    protected AbstractListenerRegistration(final @Nonnull T listener) {
         super(listener);
     }
 }
index 24044e61e5a5866fd277ab11e7c9555f93646c06..2f9d6cbe16de8f14cd8dab1b219e8095519adaa6 100644 (file)
@@ -7,6 +7,9 @@
  */
 package org.opendaylight.yangtools.concepts;
 
+import com.google.common.base.Preconditions;
+import javax.annotation.Nonnull;
+
 /**
  * Utility registration handle. It is a convenience for register-style method
  * which can return an AutoCloseable realized by a subclass of this class.
@@ -16,8 +19,8 @@ package org.opendaylight.yangtools.concepts;
 public abstract class AbstractObjectRegistration<T> extends AbstractRegistration implements ObjectRegistration<T> {
     private final T instance;
 
-    protected AbstractObjectRegistration(final T instance) {
-        this.instance = instance;
+    protected AbstractObjectRegistration(final @Nonnull T instance) {
+        this.instance = Preconditions.checkNotNull(instance);
     }
 
     @Override
index 6a727ebc91eab2715a80206cac1a17f2128b5247..f2eafef209c0a60a4732ef7bc806231d82b20ff2 100644 (file)
@@ -7,6 +7,8 @@
  */
 package org.opendaylight.yangtools.concepts;
 
+import javax.annotation.Nonnull;
+
 /**
  * Class representing a registration of an object. Such a registration is
  * a proper resource and should be cleaned up when no longer required, so
@@ -20,7 +22,7 @@ public interface ObjectRegistration<T> extends Registration {
      *
      * @return Registered object.
      */
-    T getInstance();
+    @Nonnull T getInstance();
 
     /**
      * Unregisters the object. This operation is required not to invoke