From: Robert Varga Date: Sun, 20 Jan 2019 16:34:20 +0000 (+0100) Subject: Check time expiry before attempting to format notification X-Git-Tag: release/neon~23 X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=netconf.git;a=commitdiff_plain;h=e2f149583de143e6d02c5ee90d41619ecbaf6b49 Check time expiry before attempting to format notification If the listener is not started yet, or it has stopped, we should not try to format the document. This splits the checking into two phases, improving things and laying the foundation for a complete factoring out the common bits. Change-Id: Ibff73a4979a5d67385f10647ca7c9ab64a35f42a Signed-off-by: Robert Varga --- diff --git a/restconf/restconf-nb-bierman02/src/main/java/org/opendaylight/netconf/sal/streams/listeners/AbstractQueryParams.java b/restconf/restconf-nb-bierman02/src/main/java/org/opendaylight/netconf/sal/streams/listeners/AbstractQueryParams.java index 618bf4de91..40770f2732 100644 --- a/restconf/restconf-nb-bierman02/src/main/java/org/opendaylight/netconf/sal/streams/listeners/AbstractQueryParams.java +++ b/restconf/restconf-nb-bierman02/src/main/java/org/opendaylight/netconf/sal/streams/listeners/AbstractQueryParams.java @@ -89,20 +89,11 @@ abstract class AbstractQueryParams extends AbstractNotificationsData { return leafNodesOnly; } - /** - * Checking query parameters on specific notification. - * - * @param xml data of notification - * @param listener listener of notification - * @return true if notification meets the requirements of query parameters, - * false otherwise - */ @SuppressWarnings("checkstyle:IllegalCatch") - protected boolean checkQueryParams(final String xml, final T listener) { - final Instant now = Instant.now(); + boolean checkStartStop(final Instant now, final T listener) { if (this.stop != null) { - if ((this.start.compareTo(now) < 0) && (this.stop.compareTo(now) > 0)) { - return checkFilter(xml); + if (this.start.compareTo(now) < 0 && this.stop.compareTo(now) > 0) { + return true; } if (this.stop.compareTo(now) < 0) { try { @@ -114,10 +105,10 @@ abstract class AbstractQueryParams extends AbstractNotificationsData { } else if (this.start != null) { if (this.start.compareTo(now) < 0) { this.start = null; - return checkFilter(xml); + return true; } } else { - return checkFilter(xml); + return true; } return false; } @@ -128,7 +119,7 @@ abstract class AbstractQueryParams extends AbstractNotificationsData { * @param xml data of notification */ @SuppressWarnings("checkstyle:IllegalCatch") - private boolean checkFilter(final String xml) { + boolean checkFilter(final String xml) { if (this.filter == null) { return true; } diff --git a/restconf/restconf-nb-bierman02/src/main/java/org/opendaylight/netconf/sal/streams/listeners/ListenerAdapter.java b/restconf/restconf-nb-bierman02/src/main/java/org/opendaylight/netconf/sal/streams/listeners/ListenerAdapter.java index b014859f92..5a13a0211c 100644 --- a/restconf/restconf-nb-bierman02/src/main/java/org/opendaylight/netconf/sal/streams/listeners/ListenerAdapter.java +++ b/restconf/restconf-nb-bierman02/src/main/java/org/opendaylight/netconf/sal/streams/listeners/ListenerAdapter.java @@ -9,6 +9,7 @@ package org.opendaylight.netconf.sal.streams.listeners; import com.google.common.base.Preconditions; import java.io.IOException; +import java.time.Instant; import java.util.Collection; import java.util.Map; import java.util.Map.Entry; @@ -76,8 +77,13 @@ public class ListenerAdapter extends AbstractCommonSubscriber implements Cluster @Override public void onDataTreeChanged(@Nonnull final Collection dataTreeCandidates) { + final Instant now = Instant.now(); + if (!checkStartStop(now, this)) { + return; + } + final String xml = prepareXml(dataTreeCandidates); - if (checkQueryParams(xml, this)) { + if (checkFilter(xml)) { prepareAndPostData(xml); } } diff --git a/restconf/restconf-nb-bierman02/src/main/java/org/opendaylight/netconf/sal/streams/listeners/NotificationListenerAdapter.java b/restconf/restconf-nb-bierman02/src/main/java/org/opendaylight/netconf/sal/streams/listeners/NotificationListenerAdapter.java index f3193e7993..c131237cb7 100644 --- a/restconf/restconf-nb-bierman02/src/main/java/org/opendaylight/netconf/sal/streams/listeners/NotificationListenerAdapter.java +++ b/restconf/restconf-nb-bierman02/src/main/java/org/opendaylight/netconf/sal/streams/listeners/NotificationListenerAdapter.java @@ -80,9 +80,14 @@ public class NotificationListenerAdapter extends AbstractCommonSubscriber implem @Override public void onNotification(final DOMNotification notification) { + final Instant now = Instant.now(); + if (!checkStartStop(now, this)) { + return; + } + final SchemaContext schemaContext = controllerContext.getGlobalSchema(); final String xml = prepareXml(schemaContext, notification); - if (checkQueryParams(xml, this)) { + if (checkFilter(xml)) { prepareAndPostData(outputType.equals("JSON") ? prepareJson(schemaContext, notification) : xml); } } diff --git a/restconf/restconf-nb-rfc8040/src/main/java/org/opendaylight/restconf/nb/rfc8040/streams/listeners/AbstractQueryParams.java b/restconf/restconf-nb-rfc8040/src/main/java/org/opendaylight/restconf/nb/rfc8040/streams/listeners/AbstractQueryParams.java index 93dfc80309..1854a1dfc5 100644 --- a/restconf/restconf-nb-rfc8040/src/main/java/org/opendaylight/restconf/nb/rfc8040/streams/listeners/AbstractQueryParams.java +++ b/restconf/restconf-nb-rfc8040/src/main/java/org/opendaylight/restconf/nb/rfc8040/streams/listeners/AbstractQueryParams.java @@ -89,20 +89,11 @@ abstract class AbstractQueryParams extends AbstractNotificationsData { return leafNodesOnly; } - /** - * Checking query parameters on specific notification. - * - * @param xml data of notification - * @param listener listener of notification - * @return true if notification meets the requirements of query parameters, - * false otherwise - */ @SuppressWarnings("checkstyle:IllegalCatch") - protected boolean checkQueryParams(final String xml, final T listener) { - final Instant now = Instant.now(); + boolean checkStartStop(final Instant now, final T listener) { if (this.stop != null) { - if ((this.start.compareTo(now) < 0) && (this.stop.compareTo(now) > 0)) { - return checkFilter(xml); + if (this.start.compareTo(now) < 0 && this.stop.compareTo(now) > 0) { + return true; } if (this.stop.compareTo(now) < 0) { try { @@ -114,10 +105,10 @@ abstract class AbstractQueryParams extends AbstractNotificationsData { } else if (this.start != null) { if (this.start.compareTo(now) < 0) { this.start = null; - return checkFilter(xml); + return true; } } else { - return checkFilter(xml); + return true; } return false; } @@ -128,7 +119,7 @@ abstract class AbstractQueryParams extends AbstractNotificationsData { * @param xml data of notification */ @SuppressWarnings("checkstyle:IllegalCatch") - private boolean checkFilter(final String xml) { + boolean checkFilter(final String xml) { if (this.filter == null) { return true; } diff --git a/restconf/restconf-nb-rfc8040/src/main/java/org/opendaylight/restconf/nb/rfc8040/streams/listeners/ListenerAdapter.java b/restconf/restconf-nb-rfc8040/src/main/java/org/opendaylight/restconf/nb/rfc8040/streams/listeners/ListenerAdapter.java index 69744bac1d..386f4d07af 100644 --- a/restconf/restconf-nb-rfc8040/src/main/java/org/opendaylight/restconf/nb/rfc8040/streams/listeners/ListenerAdapter.java +++ b/restconf/restconf-nb-rfc8040/src/main/java/org/opendaylight/restconf/nb/rfc8040/streams/listeners/ListenerAdapter.java @@ -9,6 +9,7 @@ package org.opendaylight.restconf.nb.rfc8040.streams.listeners; import com.google.common.base.Preconditions; import java.io.IOException; +import java.time.Instant; import java.util.Collection; import java.util.Map; import java.util.Map.Entry; @@ -75,8 +76,13 @@ public class ListenerAdapter extends AbstractCommonSubscriber implements Cluster @Override public void onDataTreeChanged(final Collection dataTreeCandidates) { + final Instant now = Instant.now(); + if (!checkStartStop(now, this)) { + return; + } + final String xml = prepareXml(dataTreeCandidates); - if (checkQueryParams(xml, this)) { + if (checkFilter(xml)) { prepareAndPostData(xml); } } diff --git a/restconf/restconf-nb-rfc8040/src/main/java/org/opendaylight/restconf/nb/rfc8040/streams/listeners/NotificationListenerAdapter.java b/restconf/restconf-nb-rfc8040/src/main/java/org/opendaylight/restconf/nb/rfc8040/streams/listeners/NotificationListenerAdapter.java index 14a345a209..1814f07113 100644 --- a/restconf/restconf-nb-rfc8040/src/main/java/org/opendaylight/restconf/nb/rfc8040/streams/listeners/NotificationListenerAdapter.java +++ b/restconf/restconf-nb-rfc8040/src/main/java/org/opendaylight/restconf/nb/rfc8040/streams/listeners/NotificationListenerAdapter.java @@ -78,9 +78,14 @@ public class NotificationListenerAdapter extends AbstractCommonSubscriber implem @Override public void onNotification(final DOMNotification notification) { + final Instant now = Instant.now(); + if (!checkStartStop(now, this)) { + return; + } + final SchemaContext schemaContext = schemaHandler.get(); final String xml = prepareXml(schemaContext, notification); - if (checkQueryParams(xml, this)) { + if (checkFilter(xml)) { prepareAndPostData(outputType.equals("JSON") ? prepareJson(schemaContext, notification) : xml); } }