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