You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@plc4x.apache.org by er...@apache.org on 2020/04/02 07:05:12 UTC
[plc4x] 02/02: Driver and Camel parameter can now be used together
in same URI
This is an automated email from the ASF dual-hosted git repository.
erobinet pushed a commit to branch camel
in repository https://gitbox.apache.org/repos/asf/plc4x.git
commit e365650da790ea917c562783a39f481a34e67c55
Author: Etienne Robinet <et...@gmail.com>
AuthorDate: Thu Apr 2 09:04:45 2020 +0200
Driver and Camel parameter can now be used together in same URI
---
.../java/org/apache/plc4x/camel/Plc4XComponent.java | 18 ++++++++++++++++++
.../java/org/apache/plc4x/camel/Plc4XConsumer.java | 4 ++--
.../java/org/apache/plc4x/camel/Plc4XEndpoint.java | 20 +++++++++++++-------
.../org/apache/plc4x/camel/Plc4XPollingConsumer.java | 4 ++--
4 files changed, 35 insertions(+), 11 deletions(-)
diff --git a/plc4j/integrations/apache-camel/src/main/java/org/apache/plc4x/camel/Plc4XComponent.java b/plc4j/integrations/apache-camel/src/main/java/org/apache/plc4x/camel/Plc4XComponent.java
index 020168d..bb47b41 100644
--- a/plc4j/integrations/apache-camel/src/main/java/org/apache/plc4x/camel/Plc4XComponent.java
+++ b/plc4j/integrations/apache-camel/src/main/java/org/apache/plc4x/camel/Plc4XComponent.java
@@ -19,7 +19,9 @@ under the License.
package org.apache.plc4x.camel;
import org.apache.camel.Endpoint;
+import org.apache.camel.ResolveEndpointFailedException;
import org.apache.camel.support.DefaultComponent;
+import org.apache.camel.util.PropertiesHelper;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -40,4 +42,20 @@ public class Plc4XComponent extends DefaultComponent {
Plc4XEndpoint plc4XEndpoint = (Plc4XEndpoint) endpoint;
plc4XEndpoint.setDriver(remaining.split(":")[0]);
}
+
+ @Override
+ protected void validateParameters(String uri, Map<String, Object> parameters, String optionPrefix) {
+ if (parameters == null || parameters.isEmpty()) {
+ return;
+ }
+ Map<String, Object> param = parameters;
+ if (optionPrefix != null) {
+ param = PropertiesHelper.extractProperties(parameters, optionPrefix);
+ }
+
+ if (param.size() > 0) {
+ return;
+ }
+ }
+
}
\ No newline at end of file
diff --git a/plc4j/integrations/apache-camel/src/main/java/org/apache/plc4x/camel/Plc4XConsumer.java b/plc4j/integrations/apache-camel/src/main/java/org/apache/plc4x/camel/Plc4XConsumer.java
index 5ae1b2c..7a7200b 100644
--- a/plc4j/integrations/apache-camel/src/main/java/org/apache/plc4x/camel/Plc4XConsumer.java
+++ b/plc4j/integrations/apache-camel/src/main/java/org/apache/plc4x/camel/Plc4XConsumer.java
@@ -41,7 +41,7 @@ public class Plc4XConsumer extends ServiceSupport implements Consumer {
private ExceptionHandler exceptionHandler;
private PlcConnection plcConnection;
private List<TagData> tags;
- private Class<?> dataType;
+ private Map parameters;
private PlcSubscriptionResponse subscriptionResponse;
private ScheduledExecutorService executorService = Executors.newSingleThreadScheduledExecutor();
@@ -49,7 +49,7 @@ public class Plc4XConsumer extends ServiceSupport implements Consumer {
public Plc4XConsumer(Plc4XEndpoint endpoint, Processor processor) throws PlcException {
this.endpoint = endpoint;
- this.dataType = endpoint.getDataType();
+ this.parameters = endpoint.getParameters();
this.processor = AsyncProcessorConverterHelper.convert(processor);
this.exceptionHandler = new LoggingExceptionHandler(endpoint.getCamelContext(), getClass());
this.plcConnection = endpoint.getConnection();
diff --git a/plc4j/integrations/apache-camel/src/main/java/org/apache/plc4x/camel/Plc4XEndpoint.java b/plc4j/integrations/apache-camel/src/main/java/org/apache/plc4x/camel/Plc4XEndpoint.java
index 27dc8a0..f91e204 100644
--- a/plc4j/integrations/apache-camel/src/main/java/org/apache/plc4x/camel/Plc4XEndpoint.java
+++ b/plc4j/integrations/apache-camel/src/main/java/org/apache/plc4x/camel/Plc4XEndpoint.java
@@ -57,7 +57,7 @@ public class Plc4XEndpoint extends DefaultEndpoint {
@UriParam
@Metadata(required = false)
@SuppressWarnings("unused")
- private Class dataType ;
+ private Map parameters ;
private final PlcDriverManager plcDriverManager;
private PlcConnection connection;
@@ -67,11 +67,13 @@ public class Plc4XEndpoint extends DefaultEndpoint {
super(endpointUri, component);
plcDriverManager= new PlcDriverManager();
uri = endpointUri;
+
//Here I established the connection in the endpoint, as it is created once during the context
// to avoid disconnecting and reconnecting for every request
try {
String plc4xURI = uri.replaceFirst("plc4x:/?/?", "");
connection = plcDriverManager.getConnection(plc4xURI);
+
} catch (PlcConnectionException e) {
e.printStackTrace();
}
@@ -81,6 +83,10 @@ public class Plc4XEndpoint extends DefaultEndpoint {
return connection;
}
+ @Override
+ public void setProperties(Object bean, Map<String, Object> parameters) {
+
+ }
@Override
public Producer createProducer() throws Exception {
@@ -149,12 +155,12 @@ public class Plc4XEndpoint extends DefaultEndpoint {
this.tags = tags;
}
- public Class getDataType() {
- return dataType;
+ public Map getParameters() {
+ return parameters;
}
- public void setDataType(Class dataType) {
- this.dataType = dataType;
+ public void setParameters(Map parameters) {
+ this.parameters = parameters;
}
@Override
@@ -171,13 +177,13 @@ public class Plc4XEndpoint extends DefaultEndpoint {
Plc4XEndpoint that = (Plc4XEndpoint) o;
return Objects.equals(getDriver(), that.getDriver()) &&
Objects.equals(getTags(), that.getTags()) &&
- Objects.equals(getDataType(), that.getDataType()) &&
+ Objects.equals(getParameters(), that.getParameters()) &&
Objects.equals(getPlcDriverManager(), that.getPlcDriverManager());
}
@Override
public int hashCode() {
- return Objects.hash(super.hashCode(), getDriver(), getTags(), getDataType(), getPlcDriverManager());
+ return Objects.hash(super.hashCode(), getDriver(), getTags(), getParameters(), getPlcDriverManager());
}
@Override
diff --git a/plc4j/integrations/apache-camel/src/main/java/org/apache/plc4x/camel/Plc4XPollingConsumer.java b/plc4j/integrations/apache-camel/src/main/java/org/apache/plc4x/camel/Plc4XPollingConsumer.java
index 719cc11..8b20abc 100644
--- a/plc4j/integrations/apache-camel/src/main/java/org/apache/plc4x/camel/Plc4XPollingConsumer.java
+++ b/plc4j/integrations/apache-camel/src/main/java/org/apache/plc4x/camel/Plc4XPollingConsumer.java
@@ -45,13 +45,13 @@ public class Plc4XPollingConsumer extends ServiceSupport implements PollingConsu
private ExceptionHandler exceptionHandler;
private PlcConnection plcConnection;
private PlcReadRequest.Builder requestBuilder;
- private Class dataType;
+ private Map parameters;
//private int request =0;
public Plc4XPollingConsumer(Plc4XEndpoint endpoint) throws PlcException {
this.endpoint = endpoint;
- this.dataType = endpoint.getDataType();
+ this.parameters = endpoint.getParameters();
this.exceptionHandler = new LoggingExceptionHandler(endpoint.getCamelContext(), getClass());
String plc4xURI = endpoint.getEndpointUri().replaceFirst("plc4x:/?/?", "");
this.plcConnection = endpoint.getConnection();