This is an automated email from the ASF dual-hosted git repository.

dmvolod pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/camel.git

commit 5abe9fe081baf8b4649b316e4e59e1cbb49b444d
Author: Dmitry Volodin <dmvo...@gmail.com>
AuthorDate: Wed Mar 25 16:38:42 2020 +0300

    CAMEL-14495: OPC UA Client samplingInterval parameter seems not take any 
effect
---
 .../milo/client/MiloClientComponentConfigurer.java      |  5 +++++
 .../milo/client/MiloClientEndpointConfigurer.java       |  5 +++++
 .../apache/camel/component/milo/client/milo-client.json |  4 +++-
 .../camel-milo/src/main/docs/milo-client-component.adoc |  8 +++++---
 .../component/milo/client/MiloClientConfiguration.java  | 17 +++++++++++++++++
 .../camel/component/milo/client/MiloClientEndpoint.java |  4 ++--
 .../milo/client/internal/SubscriptionManager.java       |  7 +------
 7 files changed, 38 insertions(+), 12 deletions(-)

diff --git 
a/components/camel-milo/src/generated/java/org/apache/camel/component/milo/client/MiloClientComponentConfigurer.java
 
b/components/camel-milo/src/generated/java/org/apache/camel/component/milo/client/MiloClientComponentConfigurer.java
index dfb19a8..05bccb7 100644
--- 
a/components/camel-milo/src/generated/java/org/apache/camel/component/milo/client/MiloClientComponentConfigurer.java
+++ 
b/components/camel-milo/src/generated/java/org/apache/camel/component/milo/client/MiloClientComponentConfigurer.java
@@ -67,6 +67,8 @@ public class MiloClientComponentConfigurer extends 
PropertyConfigurerSupport imp
         case "productUri": 
getOrCreateConfiguration(target).setProductUri(property(camelContext, 
java.lang.String.class, value)); return true;
         case "requesttimeout":
         case "requestTimeout": 
getOrCreateConfiguration(target).setRequestTimeout(property(camelContext, 
java.lang.Long.class, value)); return true;
+        case "requestedpublishinginterval":
+        case "requestedPublishingInterval": 
getOrCreateConfiguration(target).setRequestedPublishingInterval(property(camelContext,
 java.lang.Double.class, value)); return true;
         case "sessionname":
         case "sessionName": 
getOrCreateConfiguration(target).setSessionName(property(camelContext, 
java.lang.String.class, value)); return true;
         case "sessiontimeout":
@@ -99,6 +101,7 @@ public class MiloClientComponentConfigurer extends 
PropertyConfigurerSupport imp
         answer.put("overrideHost", boolean.class);
         answer.put("productUri", java.lang.String.class);
         answer.put("requestTimeout", java.lang.Long.class);
+        answer.put("requestedPublishingInterval", java.lang.Double.class);
         answer.put("sessionName", java.lang.String.class);
         answer.put("sessionTimeout", java.lang.Long.class);
         return answer;
@@ -149,6 +152,8 @@ public class MiloClientComponentConfigurer extends 
PropertyConfigurerSupport imp
         case "productUri": return 
getOrCreateConfiguration(target).getProductUri();
         case "requesttimeout":
         case "requestTimeout": return 
getOrCreateConfiguration(target).getRequestTimeout();
+        case "requestedpublishinginterval":
+        case "requestedPublishingInterval": return 
getOrCreateConfiguration(target).getRequestedPublishingInterval();
         case "sessionname":
         case "sessionName": return 
getOrCreateConfiguration(target).getSessionName();
         case "sessiontimeout":
diff --git 
a/components/camel-milo/src/generated/java/org/apache/camel/component/milo/client/MiloClientEndpointConfigurer.java
 
b/components/camel-milo/src/generated/java/org/apache/camel/component/milo/client/MiloClientEndpointConfigurer.java
index e6e85ab..714fc93 100644
--- 
a/components/camel-milo/src/generated/java/org/apache/camel/component/milo/client/MiloClientEndpointConfigurer.java
+++ 
b/components/camel-milo/src/generated/java/org/apache/camel/component/milo/client/MiloClientEndpointConfigurer.java
@@ -67,6 +67,8 @@ public class MiloClientEndpointConfigurer extends 
PropertyConfigurerSupport impl
         case "productUri": 
target.getConfiguration().setProductUri(property(camelContext, 
java.lang.String.class, value)); return true;
         case "requesttimeout":
         case "requestTimeout": 
target.getConfiguration().setRequestTimeout(property(camelContext, 
java.lang.Long.class, value)); return true;
+        case "requestedpublishinginterval":
+        case "requestedPublishingInterval": 
target.getConfiguration().setRequestedPublishingInterval(property(camelContext, 
java.lang.Double.class, value)); return true;
         case "samplinginterval":
         case "samplingInterval": 
target.setSamplingInterval(property(camelContext, java.lang.Double.class, 
value)); return true;
         case "sessionname":
@@ -106,6 +108,7 @@ public class MiloClientEndpointConfigurer extends 
PropertyConfigurerSupport impl
         answer.put("overrideHost", boolean.class);
         answer.put("productUri", java.lang.String.class);
         answer.put("requestTimeout", java.lang.Long.class);
+        answer.put("requestedPublishingInterval", java.lang.Double.class);
         answer.put("samplingInterval", java.lang.Double.class);
         answer.put("sessionName", java.lang.String.class);
         answer.put("sessionTimeout", java.lang.Long.class);
@@ -165,6 +168,8 @@ public class MiloClientEndpointConfigurer extends 
PropertyConfigurerSupport impl
         case "productUri": return target.getConfiguration().getProductUri();
         case "requesttimeout":
         case "requestTimeout": return 
target.getConfiguration().getRequestTimeout();
+        case "requestedpublishinginterval":
+        case "requestedPublishingInterval": return 
target.getConfiguration().getRequestedPublishingInterval();
         case "samplinginterval":
         case "samplingInterval": return target.getSamplingInterval();
         case "sessionname":
diff --git 
a/components/camel-milo/src/generated/resources/org/apache/camel/component/milo/client/milo-client.json
 
b/components/camel-milo/src/generated/resources/org/apache/camel/component/milo/client/milo-client.json
index d464529..6bf2589 100644
--- 
a/components/camel-milo/src/generated/resources/org/apache/camel/component/milo/client/milo-client.json
+++ 
b/components/camel-milo/src/generated/resources/org/apache/camel/component/milo/client/milo-client.json
@@ -39,6 +39,7 @@
     "maxResponseMessageSize": { "kind": "property", "displayName": "Max 
Response Message Size", "group": "client", "label": "client", "required": 
false, "type": "integer", "javaType": "java.lang.Long", "deprecated": false, 
"secret": false, "configurationClass": 
"org.apache.camel.component.milo.client.MiloClientConfiguration", 
"configurationField": "configuration", "description": "The maximum number of 
bytes a response message may have" },
     "overrideHost": { "kind": "property", "displayName": "Override Host", 
"group": "client", "label": "client", "required": false, "type": "boolean", 
"javaType": "boolean", "deprecated": false, "secret": false, "defaultValue": 
false, "configurationClass": 
"org.apache.camel.component.milo.client.MiloClientConfiguration", 
"configurationField": "configuration", "description": "Override the server 
reported endpoint host with the host from the endpoint URI." },
     "productUri": { "kind": "property", "displayName": "Product Uri", "group": 
"client", "label": "client", "required": false, "type": "string", "javaType": 
"java.lang.String", "deprecated": false, "secret": false, "defaultValue": 
"http:\/\/camel.apache.org\/EclipseMilo", "configurationClass": 
"org.apache.camel.component.milo.client.MiloClientConfiguration", 
"configurationField": "configuration", "description": "The product URI" },
+    "requestedPublishingInterval": { "kind": "property", "displayName": 
"Requested Publishing Interval", "group": "client", "label": "client", 
"required": false, "type": "number", "javaType": "java.lang.Double", 
"deprecated": false, "secret": false, "defaultValue": "1_000.0", 
"configurationClass": 
"org.apache.camel.component.milo.client.MiloClientConfiguration", 
"configurationField": "configuration", "description": "The requested publishing 
interval in milliseconds" },
     "requestTimeout": { "kind": "property", "displayName": "Request Timeout", 
"group": "client", "label": "client", "required": false, "type": "integer", 
"javaType": "java.lang.Long", "deprecated": false, "secret": false, 
"configurationClass": 
"org.apache.camel.component.milo.client.MiloClientConfiguration", 
"configurationField": "configuration", "description": "Request timeout in 
milliseconds" },
     "sessionName": { "kind": "property", "displayName": "Session Name", 
"group": "client", "label": "client", "required": false, "type": "string", 
"javaType": "java.lang.String", "deprecated": false, "secret": false, 
"configurationClass": 
"org.apache.camel.component.milo.client.MiloClientConfiguration", 
"configurationField": "configuration", "description": "Session name" },
     "sessionTimeout": { "kind": "property", "displayName": "Session Timeout", 
"group": "client", "label": "client", "required": false, "type": "integer", 
"javaType": "java.lang.Long", "deprecated": false, "secret": false, 
"configurationClass": 
"org.apache.camel.component.milo.client.MiloClientConfiguration", 
"configurationField": "configuration", "description": "Session timeout in 
milliseconds" }
@@ -51,7 +52,7 @@
     "discoveryEndpointUri": { "kind": "parameter", "displayName": "Discovery 
Endpoint Uri", "group": "common", "label": "", "required": false, "type": 
"string", "javaType": "java.lang.String", "deprecated": false, "secret": false, 
"configurationClass": 
"org.apache.camel.component.milo.client.MiloClientConfiguration", 
"configurationField": "configuration", "description": "An alternative discovery 
URI" },
     "method": { "kind": "parameter", "displayName": "Method", "group": 
"common", "label": "", "required": false, "type": "string", "javaType": 
"java.lang.String", "deprecated": false, "secret": false, "description": "The 
method definition (see Method ID)" },
     "node": { "kind": "parameter", "displayName": "Node", "group": "common", 
"label": "", "required": false, "type": "string", "javaType": 
"java.lang.String", "deprecated": false, "secret": false, "description": "The 
node definition (see Node ID)" },
-    "samplingInterval": { "kind": "parameter", "displayName": "Sampling 
Interval", "group": "common", "label": "", "required": false, "type": "number", 
"javaType": "java.lang.Double", "deprecated": false, "secret": false, 
"description": "The sampling interval in milliseconds" },
+    "samplingInterval": { "kind": "parameter", "displayName": "Sampling 
Interval", "group": "common", "label": "", "required": false, "type": "number", 
"javaType": "java.lang.Double", "deprecated": false, "secret": false, 
"defaultValue": "0.0", "description": "The sampling interval in milliseconds" },
     "bridgeErrorHandler": { "kind": "parameter", "displayName": "Bridge Error 
Handler", "group": "consumer", "label": "consumer", "required": false, "type": 
"boolean", "javaType": "boolean", "deprecated": false, "secret": false, 
"defaultValue": false, "description": "Allows for bridging the consumer to the 
Camel routing Error Handler, which mean any exceptions occurred while the 
consumer is trying to pickup incoming messages, or the likes, will now be 
processed as a message and handled b [...]
     "exceptionHandler": { "kind": "parameter", "displayName": "Exception 
Handler", "group": "consumer (advanced)", "label": "consumer,advanced", 
"required": false, "type": "object", "javaType": 
"org.apache.camel.spi.ExceptionHandler", "optionalPrefix": "consumer.", 
"deprecated": false, "secret": false, "description": "To let the consumer use a 
custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled 
then this option is not in use. By default the consumer will deal with [...]
     "exchangePattern": { "kind": "parameter", "displayName": "Exchange 
Pattern", "group": "consumer (advanced)", "label": "consumer,advanced", 
"required": false, "type": "object", "javaType": 
"org.apache.camel.ExchangePattern", "enum": [ "InOnly", "InOut", 
"InOptionalOut" ], "deprecated": false, "secret": false, "description": "Sets 
the exchange pattern when the consumer creates an exchange." },
@@ -71,6 +72,7 @@
     "maxResponseMessageSize": { "kind": "parameter", "displayName": "Max 
Response Message Size", "group": "client", "label": "client", "required": 
false, "type": "integer", "javaType": "java.lang.Long", "deprecated": false, 
"secret": false, "configurationClass": 
"org.apache.camel.component.milo.client.MiloClientConfiguration", 
"configurationField": "configuration", "description": "The maximum number of 
bytes a response message may have" },
     "overrideHost": { "kind": "parameter", "displayName": "Override Host", 
"group": "client", "label": "client", "required": false, "type": "boolean", 
"javaType": "boolean", "deprecated": false, "secret": false, "defaultValue": 
false, "configurationClass": 
"org.apache.camel.component.milo.client.MiloClientConfiguration", 
"configurationField": "configuration", "description": "Override the server 
reported endpoint host with the host from the endpoint URI." },
     "productUri": { "kind": "parameter", "displayName": "Product Uri", 
"group": "client", "label": "client", "required": false, "type": "string", 
"javaType": "java.lang.String", "deprecated": false, "secret": false, 
"defaultValue": "http:\/\/camel.apache.org\/EclipseMilo", "configurationClass": 
"org.apache.camel.component.milo.client.MiloClientConfiguration", 
"configurationField": "configuration", "description": "The product URI" },
+    "requestedPublishingInterval": { "kind": "parameter", "displayName": 
"Requested Publishing Interval", "group": "client", "label": "client", 
"required": false, "type": "number", "javaType": "java.lang.Double", 
"deprecated": false, "secret": false, "defaultValue": "1_000.0", 
"configurationClass": 
"org.apache.camel.component.milo.client.MiloClientConfiguration", 
"configurationField": "configuration", "description": "The requested publishing 
interval in milliseconds" },
     "requestTimeout": { "kind": "parameter", "displayName": "Request Timeout", 
"group": "client", "label": "client", "required": false, "type": "integer", 
"javaType": "java.lang.Long", "deprecated": false, "secret": false, 
"configurationClass": 
"org.apache.camel.component.milo.client.MiloClientConfiguration", 
"configurationField": "configuration", "description": "Request timeout in 
milliseconds" },
     "sessionName": { "kind": "parameter", "displayName": "Session Name", 
"group": "client", "label": "client", "required": false, "type": "string", 
"javaType": "java.lang.String", "deprecated": false, "secret": false, 
"configurationClass": 
"org.apache.camel.component.milo.client.MiloClientConfiguration", 
"configurationField": "configuration", "description": "Session name" },
     "sessionTimeout": { "kind": "parameter", "displayName": "Session Timeout", 
"group": "client", "label": "client", "required": false, "type": "integer", 
"javaType": "java.lang.Long", "deprecated": false, "secret": false, 
"configurationClass": 
"org.apache.camel.component.milo.client.MiloClientConfiguration", 
"configurationField": "configuration", "description": "Session timeout in 
milliseconds" }
diff --git a/components/camel-milo/src/main/docs/milo-client-component.adoc 
b/components/camel-milo/src/main/docs/milo-client-component.adoc
index c70e4c5..fc16e17 100644
--- a/components/camel-milo/src/main/docs/milo-client-component.adoc
+++ b/components/camel-milo/src/main/docs/milo-client-component.adoc
@@ -28,7 +28,7 @@ for this component:
 
 
 // component options: START
-The OPC UA Client component supports 23 options, which are listed below.
+The OPC UA Client component supports 24 options, which are listed below.
 
 
 
@@ -55,6 +55,7 @@ The OPC UA Client component supports 23 options, which are 
listed below.
 | *maxResponseMessageSize* (client) | The maximum number of bytes a response 
message may have |  | Long
 | *overrideHost* (client) | Override the server reported endpoint host with 
the host from the endpoint URI. | false | boolean
 | *productUri* (client) | The product URI | 
http://camel.apache.org/EclipseMilo | String
+| *requestedPublishingInterval* (client) | The requested publishing interval 
in milliseconds | 1_000.0 | Double
 | *requestTimeout* (client) | Request timeout in milliseconds |  | Long
 | *sessionName* (client) | Session name |  | String
 | *sessionTimeout* (client) | Session timeout in milliseconds |  | Long
@@ -120,7 +121,7 @@ with the following path and query parameters:
 |===
 
 
-=== Query Parameters (29 parameters):
+=== Query Parameters (30 parameters):
 
 
 [width="100%",cols="2,5,^1,2",options="header"]
@@ -132,7 +133,7 @@ with the following path and query parameters:
 | *discoveryEndpointUri* (common) | An alternative discovery URI |  | String
 | *method* (common) | The method definition (see Method ID) |  | String
 | *node* (common) | The node definition (see Node ID) |  | String
-| *samplingInterval* (common) | The sampling interval in milliseconds |  | 
Double
+| *samplingInterval* (common) | The sampling interval in milliseconds | 0.0 | 
Double
 | *bridgeErrorHandler* (consumer) | Allows for bridging the consumer to the 
Camel routing Error Handler, which mean any exceptions occurred while the 
consumer is trying to pickup incoming messages, or the likes, will now be 
processed as a message and handled by the routing Error Handler. By default the 
consumer will use the org.apache.camel.spi.ExceptionHandler to deal with 
exceptions, that will be logged at WARN or ERROR level and ignored. | false | 
boolean
 | *exceptionHandler* (consumer) | To let the consumer use a custom 
ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this 
option is not in use. By default the consumer will deal with exceptions, that 
will be logged at WARN or ERROR level and ignored. |  | ExceptionHandler
 | *exchangePattern* (consumer) | Sets the exchange pattern when the consumer 
creates an exchange. The value can be one of: InOnly, InOut, InOptionalOut |  | 
ExchangePattern
@@ -152,6 +153,7 @@ with the following path and query parameters:
 | *maxResponseMessageSize* (client) | The maximum number of bytes a response 
message may have |  | Long
 | *overrideHost* (client) | Override the server reported endpoint host with 
the host from the endpoint URI. | false | boolean
 | *productUri* (client) | The product URI | 
http://camel.apache.org/EclipseMilo | String
+| *requestedPublishingInterval* (client) | The requested publishing interval 
in milliseconds | 1_000.0 | Double
 | *requestTimeout* (client) | Request timeout in milliseconds |  | Long
 | *sessionName* (client) | Session name |  | String
 | *sessionTimeout* (client) | Session timeout in milliseconds |  | Long
diff --git 
a/components/camel-milo/src/main/java/org/apache/camel/component/milo/client/MiloClientConfiguration.java
 
b/components/camel-milo/src/main/java/org/apache/camel/component/milo/client/MiloClientConfiguration.java
index 687a88a..d116f16 100644
--- 
a/components/camel-milo/src/main/java/org/apache/camel/component/milo/client/MiloClientConfiguration.java
+++ 
b/components/camel-milo/src/main/java/org/apache/camel/component/milo/client/MiloClientConfiguration.java
@@ -44,6 +44,8 @@ public class MiloClientConfiguration implements Cloneable {
 
     private static final String DEFAULT_PRODUCT_URI = 
"http://camel.apache.org/EclipseMilo";;
 
+    private static final Double DEFAULT_REQUESTED_PUBLISHING_INTERVAL = 
1_000.0;
+
     @XmlTransient // to not be included in component docs
     private String endpointUri;
 
@@ -104,6 +106,9 @@ public class MiloClientConfiguration implements Cloneable {
     @UriParam(label = "client")
     private boolean overrideHost;
 
+    @UriParam(label = "client", defaultValue = "1_000.0")
+    private Double requestedPublishingInterval = 
DEFAULT_REQUESTED_PUBLISHING_INTERVAL;
+
     public MiloClientConfiguration() {
     }
 
@@ -127,6 +132,7 @@ public class MiloClientConfiguration implements Cloneable {
         this.keyPassword = other.keyPassword;
         this.allowedSecurityPolicies = allowedSecurityPolicies != null ? new 
HashSet<>(other.allowedSecurityPolicies) : null;
         this.overrideHost = other.overrideHost;
+        this.requestedPublishingInterval = other.requestedPublishingInterval;
     }
 
     /**
@@ -388,6 +394,17 @@ public class MiloClientConfiguration implements Cloneable {
         return overrideHost;
     }
 
+    /**
+     * The requested publishing interval in milliseconds
+     */
+    public void setRequestedPublishingInterval(Double 
requestedPublishingInterval) {
+        this.requestedPublishingInterval = requestedPublishingInterval;
+    }
+
+    public Double getRequestedPublishingInterval() {
+        return requestedPublishingInterval;
+    }
+
     @Override
     public MiloClientConfiguration clone() {
         return new MiloClientConfiguration(this);
diff --git 
a/components/camel-milo/src/main/java/org/apache/camel/component/milo/client/MiloClientEndpoint.java
 
b/components/camel-milo/src/main/java/org/apache/camel/component/milo/client/MiloClientEndpoint.java
index a48008e..40db1ed 100644
--- 
a/components/camel-milo/src/main/java/org/apache/camel/component/milo/client/MiloClientEndpoint.java
+++ 
b/components/camel-milo/src/main/java/org/apache/camel/component/milo/client/MiloClientEndpoint.java
@@ -57,8 +57,8 @@ public class MiloClientEndpoint extends DefaultEndpoint {
     /**
      * The sampling interval in milliseconds
      */
-    @UriParam
-    private Double samplingInterval;
+    @UriParam(defaultValue = "0.0")
+    private Double samplingInterval = 0.0;
 
     /**
      * The client configuration
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 786854f..cedadca 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
@@ -171,10 +171,6 @@ public class SubscriptionManager {
                 } else {
                     final ReadValueId itemId = new ReadValueId(node, 
AttributeId.Value.uid(), null, QualifiedName.NULL_VALUE);
                     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));
                 }
@@ -337,7 +333,6 @@ public class SubscriptionManager {
 
             });
         }
-
     }
 
     private final MiloClientConfiguration configuration;
@@ -478,7 +473,7 @@ public class SubscriptionManager {
         client.connect().get();
 
         try {
-            final UaSubscription manager = 
client.getSubscriptionManager().createSubscription(1_000.0).get();
+            final UaSubscription manager = 
client.getSubscriptionManager().createSubscription(this.configuration.getRequestedPublishingInterval()).get();
             client.getSubscriptionManager().addSubscriptionListener(new 
SubscriptionListenerImpl());
 
             return new Connected(client, manager);

Reply via email to