From f7b206568c973e7d6ca53a54d50d2fa297d1f4cd Mon Sep 17 00:00:00 2001 From: Robert Varga Date: Fri, 27 Jan 2017 21:05:19 +0100 Subject: [PATCH] BUG-7698: do not allow nulls in registrations 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 --- .../yangtools/concepts/AbstractListenerRegistration.java | 3 ++- .../yangtools/concepts/AbstractObjectRegistration.java | 7 +++++-- .../yangtools/concepts/ObjectRegistration.java | 4 +++- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/common/concepts/src/main/java/org/opendaylight/yangtools/concepts/AbstractListenerRegistration.java b/common/concepts/src/main/java/org/opendaylight/yangtools/concepts/AbstractListenerRegistration.java index bd467908ed..fc417133d7 100644 --- a/common/concepts/src/main/java/org/opendaylight/yangtools/concepts/AbstractListenerRegistration.java +++ b/common/concepts/src/main/java/org/opendaylight/yangtools/concepts/AbstractListenerRegistration.java @@ -8,11 +8,12 @@ package org.opendaylight.yangtools.concepts; import java.util.EventListener; +import javax.annotation.Nonnull; public abstract class AbstractListenerRegistration extends AbstractObjectRegistration implements ListenerRegistration { - protected AbstractListenerRegistration(final T listener) { + protected AbstractListenerRegistration(final @Nonnull T listener) { super(listener); } } diff --git a/common/concepts/src/main/java/org/opendaylight/yangtools/concepts/AbstractObjectRegistration.java b/common/concepts/src/main/java/org/opendaylight/yangtools/concepts/AbstractObjectRegistration.java index 24044e61e5..2f9d6cbe16 100644 --- a/common/concepts/src/main/java/org/opendaylight/yangtools/concepts/AbstractObjectRegistration.java +++ b/common/concepts/src/main/java/org/opendaylight/yangtools/concepts/AbstractObjectRegistration.java @@ -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 extends AbstractRegistration implements ObjectRegistration { private final T instance; - protected AbstractObjectRegistration(final T instance) { - this.instance = instance; + protected AbstractObjectRegistration(final @Nonnull T instance) { + this.instance = Preconditions.checkNotNull(instance); } @Override diff --git a/common/concepts/src/main/java/org/opendaylight/yangtools/concepts/ObjectRegistration.java b/common/concepts/src/main/java/org/opendaylight/yangtools/concepts/ObjectRegistration.java index 6a727ebc91..f2eafef209 100644 --- a/common/concepts/src/main/java/org/opendaylight/yangtools/concepts/ObjectRegistration.java +++ b/common/concepts/src/main/java/org/opendaylight/yangtools/concepts/ObjectRegistration.java @@ -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 extends Registration { * * @return Registered object. */ - T getInstance(); + @Nonnull T getInstance(); /** * Unregisters the object. This operation is required not to invoke -- 2.36.6