CAMEL-11559: Work around a NPE in milo 0.1.3

When the sampling interval is unset in the Camel component, then it is
passed to milo as 'null'. Which is acceptable to the milo API, however
internally milo automatically unboxes the value from 'Double' to
'double' and may run into a NPE by doing so.

This patch assures that, although theoretically acceptable,
'null' is never passed in to the Milo API.

Signed-off-by: Jens Reimann <jreim...@redhat.com>

Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/431c3198
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/431c3198
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/431c3198

Branch: refs/heads/master
Commit: 431c3198d1eaa7ef81e1b3331d3822b7efd8e8a3
Parents: b710a07
Author: Jens Reimann <jreim...@redhat.com>
Authored: Wed Jul 19 10:21:33 2017 +0200
Committer: Claus Ibsen <davscl...@apache.org>
Committed: Wed Jul 19 14:17:32 2017 +0200

----------------------------------------------------------------------
 .../component/milo/client/internal/SubscriptionManager.java   | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/431c3198/components/camel-milo/src/main/java/org/apache/camel/component/milo/client/internal/SubscriptionManager.java
----------------------------------------------------------------------
diff --git 
a/components/camel-milo/src/main/java/org/apache/camel/component/milo/client/internal/SubscriptionManager.java
 
b/components/camel-milo/src/main/java/org/apache/camel/component/milo/client/internal/SubscriptionManager.java
index 7502164..877bf08 100644
--- 
a/components/camel-milo/src/main/java/org/apache/camel/component/milo/client/internal/SubscriptionManager.java
+++ 
b/components/camel-milo/src/main/java/org/apache/camel/component/milo/client/internal/SubscriptionManager.java
@@ -174,7 +174,12 @@ public class SubscriptionManager {
                 } else {
                     final NodeId nodeId = 
s.getPartialNodeId().toNodeId(namespaceIndex);
                     final ReadValueId itemId = new ReadValueId(nodeId, 
AttributeId.Value.uid(), null, QualifiedName.NULL_VALUE);
-                    final MonitoringParameters parameters = new 
MonitoringParameters(entry.getKey(), s.getSamplingInterval(), null, null, null);
+                    Double samplingInterval = s.getSamplingInterval();
+                    if (samplingInterval == null) {
+                        // work around a bug (NPE) in Eclipse Milo 0.1.3
+                        samplingInterval = 0.0;
+                    }
+                    final MonitoringParameters parameters = new 
MonitoringParameters(entry.getKey(), samplingInterval, null, null, null);
                     items.add(new MonitoredItemCreateRequest(itemId, 
MonitoringMode.Reporting, parameters));
                 }
             }

Reply via email to