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);