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/08 10:37:14 UTC

[plc4x] 02/02: OSGi -S7 and EIP Driver now correctly registered as services -Downgrade to Camel 2.24.2 to pass Bean(List) to Endpoint

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

erobinet pushed a commit to branch feature/osgi
in repository https://gitbox.apache.org/repos/asf/plc4x.git

commit c4ef7b61a493c82f7222466943bf517d94c54cdf
Author: Etienne Robinet <et...@gmail.com>
AuthorDate: Wed Apr 8 12:24:51 2020 +0200

    OSGi
    -S7 and EIP Driver now correctly registered as services
    -Downgrade to Camel 2.24.2 to pass Bean(List<TagData>) to Endpoint
---
 plc4j/drivers/eip/pom.xml                          | 16 ++++++----
 .../apache/plc4x/java/eip/readwrite/EIPDriver.java |  3 --
 .../eip/readwrite/protocol/EipProtocolLogic.java   |  8 ++---
 plc4j/integrations/apache-camel/pom.xml            | 35 ++++------------------
 .../org/apache/plc4x/camel/Plc4XComponent.java     | 28 +++++++++--------
 .../java/org/apache/plc4x/camel/Plc4XConsumer.java |  9 ++----
 .../java/org/apache/plc4x/camel/Plc4XEndpoint.java | 33 ++++----------------
 .../apache/plc4x/camel/Plc4XPollingConsumer.java   |  8 +----
 .../java/org/apache/plc4x/camel/Plc4XProducer.java |  2 +-
 .../java/org/apache/plc4x/camel/ManualTest.java    |  9 ------
 10 files changed, 44 insertions(+), 107 deletions(-)

diff --git a/plc4j/drivers/eip/pom.xml b/plc4j/drivers/eip/pom.xml
index 9f321ca..cb18d40 100644
--- a/plc4j/drivers/eip/pom.xml
+++ b/plc4j/drivers/eip/pom.xml
@@ -60,6 +60,17 @@
           </usedDependencies>
         </configuration>
       </plugin>
+      <plugin>
+        <groupId>org.apache.felix</groupId>
+        <artifactId>maven-bundle-plugin</artifactId>
+        <extensions>true</extensions>
+        <configuration>
+          <instructions>
+            <Bundle-SymbolicName>${project.groupId}.${project.artifactId}</Bundle-SymbolicName>
+            <Export-Service>org.apache.plc4x.java.api.PlcDriver,org.apache.plc4x.java.eip.readwrite.EIPDriver</Export-Service>
+          </instructions>
+        </configuration>
+      </plugin>
     </plugins>
   </build>
 
@@ -110,11 +121,6 @@
       <groupId>com.fasterxml.jackson.core</groupId>
       <artifactId>jackson-annotations</artifactId>
     </dependency>
-    <dependency>
-      <groupId>org.osgi</groupId>
-      <artifactId>osgi.cmpn</artifactId>
-      <version>6.0.0</version>
-    </dependency>
       <dependency>
           <groupId>org.apache.plc4x</groupId>
           <artifactId>plc4j-utils-test-utils</artifactId>
diff --git a/plc4j/drivers/eip/src/main/java/org/apache/plc4x/java/eip/readwrite/EIPDriver.java b/plc4j/drivers/eip/src/main/java/org/apache/plc4x/java/eip/readwrite/EIPDriver.java
index e3433b2..a58aba0 100644
--- a/plc4j/drivers/eip/src/main/java/org/apache/plc4x/java/eip/readwrite/EIPDriver.java
+++ b/plc4j/drivers/eip/src/main/java/org/apache/plc4x/java/eip/readwrite/EIPDriver.java
@@ -19,7 +19,6 @@
 package org.apache.plc4x.java.eip.readwrite;
 
 import io.netty.buffer.ByteBuf;
-import org.apache.plc4x.java.api.PlcDriver;
 import org.apache.plc4x.java.eip.readwrite.configuration.EIPConfiguration;
 import org.apache.plc4x.java.eip.readwrite.field.EipFieldHandler;
 import org.apache.plc4x.java.eip.readwrite.io.EipPacketIO;
@@ -29,12 +28,10 @@ import org.apache.plc4x.java.spi.connection.GeneratedDriverBase;
 import org.apache.plc4x.java.spi.connection.PlcFieldHandler;
 import org.apache.plc4x.java.spi.connection.ProtocolStackConfigurer;
 import org.apache.plc4x.java.spi.connection.SingleProtocolStackConfigurer;
-import org.osgi.service.component.annotations.Component;
 
 import java.util.function.Consumer;
 import java.util.function.ToIntFunction;
 
-@Component(service = PlcDriver.class, immediate = true)
 public class EIPDriver extends GeneratedDriverBase<EipPacket> {
     public static final int PORT = 44818;
     @Override
diff --git a/plc4j/drivers/eip/src/main/java/org/apache/plc4x/java/eip/readwrite/protocol/EipProtocolLogic.java b/plc4j/drivers/eip/src/main/java/org/apache/plc4x/java/eip/readwrite/protocol/EipProtocolLogic.java
index b97dcf8..c6a3bc4 100644
--- a/plc4j/drivers/eip/src/main/java/org/apache/plc4x/java/eip/readwrite/protocol/EipProtocolLogic.java
+++ b/plc4j/drivers/eip/src/main/java/org/apache/plc4x/java/eip/readwrite/protocol/EipProtocolLogic.java
@@ -74,7 +74,7 @@ public class EipProtocolLogic extends Plc4xProtocolBase<EipPacket> implements Ha
 
     @Override
     public void onConnect(ConversationContext<EipPacket> context) {
-        logger.info("Sending RegisterSession EIP Package");
+        logger.debug("Sending RegisterSession EIP Package");
         EipConnectionRequest connectionRequest =
             new EipConnectionRequest(0L, 0L, emptySenderContext, 0L);
         context.sendRequest(connectionRequest)
@@ -84,7 +84,7 @@ public class EipProtocolLogic extends Plc4xProtocolBase<EipPacket> implements Ha
                 if (p.getStatus() == 0L) {
                     sessionHandle = p.getSessionHandle();
                     senderContext = p.getSenderContext();
-                    logger.trace("Got assigned with Session {}", sessionHandle);
+                    logger.debug("Got assigned with Session {}", sessionHandle);
                     // Send an event that connection setup is complete.
                     context.fireConnected();
                 } else {
@@ -545,8 +545,8 @@ public class EipProtocolLogic extends Plc4xProtocolBase<EipPacket> implements Ha
 
     @Override
     public void close(ConversationContext<EipPacket> context) {
-        logger.info("Sending UnregisterSession EIP Pakcet");
+        logger.debug("Sending UnregisterSession EIP Pakcet");
         context.sendRequest(new EipDisconnectRequest(sessionHandle, 0L, emptySenderContext, 0L)); //Unregister gets no response
-        logger.trace("Unregistred Session {}", sessionHandle);
+        logger.debug("Unregistred Session {}", sessionHandle);
     }
 }
diff --git a/plc4j/integrations/apache-camel/pom.xml b/plc4j/integrations/apache-camel/pom.xml
index aa60f71..6b76502 100644
--- a/plc4j/integrations/apache-camel/pom.xml
+++ b/plc4j/integrations/apache-camel/pom.xml
@@ -33,7 +33,7 @@
   <description>Integration module for integrating PLC4X into Apache Camel.</description>
 
   <properties>
-    <camel.version>3.1.0</camel.version>
+    <camel.version>2.24.2</camel.version>
   </properties>
 
   <dependencies>
@@ -45,31 +45,12 @@
 
     <dependency>
       <groupId>org.apache.camel</groupId>
-      <artifactId>camel-api</artifactId>
-      <version>${camel.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.camel</groupId>
-      <artifactId>camel-core-engine</artifactId>
-      <version>${camel.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.camel</groupId>
-      <artifactId>camel-mock</artifactId>
-      <version>${camel.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.camel</groupId>
-      <artifactId>camel-support</artifactId>
-      <version>${camel.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.camel</groupId>
-      <artifactId>camel-util</artifactId>
+      <artifactId>camel-core</artifactId>
       <version>${camel.version}</version>
     </dependency>
 
 
+
     <!-- Support camel documentation-->
     <!-- TODO: Do we need this? -->
     <!--dependency>
@@ -98,16 +79,10 @@
       <groupId>org.apache.camel</groupId>
       <artifactId>camel-test-junit5</artifactId>
       <!-- TODO: version temporary defined due to PLC4X-22-->
-      <version>${camel.version}</version>
-      <scope>test</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.camel</groupId>
-      <artifactId>camel-main</artifactId>
-      <!-- TODO: version temporary defined due to PLC4X-22-->
-      <version>${camel.version}</version>
+      <version>3.1.0</version>
       <scope>test</scope>
     </dependency>
+
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4j-spi</artifactId>
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 bb47b41..42d0860 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
@@ -20,8 +20,8 @@ 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.apache.camel.impl.DefaultComponent;
+import org.apache.camel.util.IntrospectionSupport;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -33,7 +33,10 @@ public class Plc4XComponent extends DefaultComponent {
     @Override
     protected Endpoint createEndpoint(String uri, String remaining, Map<String, Object> parameters) throws Exception {
         Endpoint endpoint = new Plc4XEndpoint(uri, this);
-        setProperties(endpoint, parameters);
+        for(String entry : parameters.keySet()){
+            LOGGER.info("Parameter {} with type {}",entry,parameters.get(entry).getClass());
+        }
+        setProperties(endpoint,parameters);
         return endpoint;
     }
 
@@ -45,16 +48,15 @@ public class Plc4XComponent extends DefaultComponent {
 
     @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;
+        if (parameters != null && !parameters.isEmpty()) {
+            Map<String, Object> param = parameters;
+            if (optionPrefix != null) {
+                param = IntrospectionSupport.extractProperties(parameters, optionPrefix);
+            }
+
+            if (param.size() > 0) {
+                LOGGER.info("{} parameters will be passed to the PLC Driver",param);
+            }
         }
     }
 
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 7a7200b..7c3234e 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
@@ -20,9 +20,9 @@ package org.apache.plc4x.camel;
 
 import org.apache.camel.*;
 import org.apache.camel.spi.ExceptionHandler;
-import org.apache.camel.support.AsyncProcessorConverterHelper;
 import org.apache.camel.support.LoggingExceptionHandler;
-import org.apache.camel.support.service.ServiceSupport;
+import org.apache.camel.support.ServiceSupport;
+import org.apache.camel.util.AsyncProcessorConverterHelper;
 import org.apache.plc4x.java.api.PlcConnection;
 import org.apache.plc4x.java.api.exceptions.PlcException;
 import org.apache.plc4x.java.api.messages.PlcReadRequest;
@@ -49,7 +49,6 @@ public class Plc4XConsumer extends ServiceSupport implements Consumer {
 
     public Plc4XConsumer(Plc4XEndpoint endpoint, Processor processor) throws PlcException {
         this.endpoint = endpoint;
-        this.parameters = endpoint.getParameters();
         this.processor = AsyncProcessorConverterHelper.convert(processor);
         this.exceptionHandler = new LoggingExceptionHandler(endpoint.getCamelContext(), getClass());
         this.plcConnection = endpoint.getConnection();
@@ -131,8 +130,4 @@ public class Plc4XConsumer extends ServiceSupport implements Consumer {
         return collection;
     }
 
-    @Override
-    public Processor getProcessor() {
-        return this.processor;
-    }
 }
\ No newline at end of file
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 f91e204..8749437 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
@@ -19,14 +19,15 @@ under the License.
 package org.apache.plc4x.camel;
 
 import org.apache.camel.*;
+import org.apache.camel.impl.DefaultEndpoint;
 import org.apache.camel.spi.Metadata;
 import org.apache.camel.spi.UriEndpoint;
 import org.apache.camel.spi.UriParam;
 import org.apache.camel.spi.UriPath;
-import org.apache.camel.support.DefaultEndpoint;
 import org.apache.plc4x.java.PlcDriverManager;
 import org.apache.plc4x.java.api.PlcConnection;
 import org.apache.plc4x.java.api.exceptions.PlcConnectionException;
+import org.slf4j.LoggerFactory;
 
 import java.util.List;
 import java.util.Map;
@@ -35,29 +36,13 @@ import java.util.Objects;
 @UriEndpoint(scheme = "plc4x", title = "PLC4X", syntax = "plc4x:driver", label = "plc4x")
 public class Plc4XEndpoint extends DefaultEndpoint {
 
-    /**
-     * The name of the PLC4X driver
-     */
-    @UriPath(label = "common")
-    @Metadata(required = true)
+    @UriPath @Metadata(required = "true")
     @SuppressWarnings("unused")
     private String driver;
 
-    /**
-     * The address for the PLC4X driver
-     */
     @UriParam
-    @Metadata(required = false)
-    @SuppressWarnings("unused")
     private List<TagData> tags;
 
-    /**
-     * TODO: document me
-     */
-    @UriParam
-    @Metadata(required = false)
-    @SuppressWarnings("unused")
-    private Map parameters ;
 
     private final PlcDriverManager plcDriverManager;
     private  PlcConnection connection;
@@ -72,6 +57,7 @@ public class Plc4XEndpoint extends DefaultEndpoint {
         // to avoid disconnecting and reconnecting for every request
         try {
             String plc4xURI = uri.replaceFirst("plc4x:/?/?", "");
+            LoggerFactory.getLogger(Plc4XEndpoint.class).info("Connection URI {} from {}",plc4xURI, uri);
             connection = plcDriverManager.getConnection(plc4xURI);
 
         } catch (PlcConnectionException e) {
@@ -155,14 +141,6 @@ public class Plc4XEndpoint extends DefaultEndpoint {
         this.tags = tags;
     }
 
-    public Map getParameters() {
-        return parameters;
-    }
-
-    public void setParameters(Map parameters) {
-        this.parameters = parameters;
-    }
-
     @Override
     public boolean equals(Object o) {
         if (this == o) {
@@ -177,13 +155,12 @@ public class Plc4XEndpoint extends DefaultEndpoint {
         Plc4XEndpoint that = (Plc4XEndpoint) o;
         return Objects.equals(getDriver(), that.getDriver()) &&
             Objects.equals(getTags(), that.getTags()) &&
-            Objects.equals(getParameters(), that.getParameters()) &&
             Objects.equals(getPlcDriverManager(), that.getPlcDriverManager());
     }
 
     @Override
     public int hashCode() {
-        return Objects.hash(super.hashCode(), getDriver(), getTags(), getParameters(), getPlcDriverManager());
+        return Objects.hash(super.hashCode(), getDriver(), getTags(),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 8b20abc..04c373d 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
@@ -24,7 +24,7 @@ import org.apache.camel.PollingConsumer;
 import org.apache.camel.Processor;
 import org.apache.camel.spi.ExceptionHandler;
 import org.apache.camel.support.LoggingExceptionHandler;
-import org.apache.camel.support.service.ServiceSupport;
+import org.apache.camel.support.ServiceSupport;
 import org.apache.plc4x.java.api.PlcConnection;
 import org.apache.plc4x.java.api.exceptions.PlcException;
 import org.apache.plc4x.java.api.messages.PlcReadRequest;
@@ -47,11 +47,9 @@ public class Plc4XPollingConsumer extends ServiceSupport implements PollingConsu
     private PlcReadRequest.Builder requestBuilder;
     private Map parameters;
 
-    //private int request =0;
 
     public Plc4XPollingConsumer(Plc4XEndpoint endpoint) throws PlcException {
         this.endpoint = endpoint;
-        this.parameters = endpoint.getParameters();
         this.exceptionHandler = new LoggingExceptionHandler(endpoint.getCamelContext(), getClass());
         String plc4xURI = endpoint.getEndpointUri().replaceFirst("plc4x:/?/?", "");
         this.plcConnection = endpoint.getConnection();
@@ -168,8 +166,4 @@ public class Plc4XPollingConsumer extends ServiceSupport implements PollingConsu
         return collection;
     }
 
-    @Override
-    public Processor getProcessor() {
-        return null;
-    }
 }
diff --git a/plc4j/integrations/apache-camel/src/main/java/org/apache/plc4x/camel/Plc4XProducer.java b/plc4j/integrations/apache-camel/src/main/java/org/apache/plc4x/camel/Plc4XProducer.java
index 2dd64ba..3d957b0 100644
--- a/plc4j/integrations/apache-camel/src/main/java/org/apache/plc4x/camel/Plc4XProducer.java
+++ b/plc4j/integrations/apache-camel/src/main/java/org/apache/plc4x/camel/Plc4XProducer.java
@@ -21,7 +21,7 @@ package org.apache.plc4x.camel;
 import org.apache.camel.AsyncCallback;
 import org.apache.camel.Exchange;
 import org.apache.camel.Message;
-import org.apache.camel.support.DefaultAsyncProducer;
+import org.apache.camel.impl.DefaultAsyncProducer;
 import org.apache.plc4x.java.api.PlcConnection;
 import org.apache.plc4x.java.api.exceptions.PlcException;
 import org.apache.plc4x.java.api.exceptions.PlcInvalidFieldException;
diff --git a/plc4j/integrations/apache-camel/src/test/java/org/apache/plc4x/camel/ManualTest.java b/plc4j/integrations/apache-camel/src/test/java/org/apache/plc4x/camel/ManualTest.java
index bde19e6..9b5e2ad 100644
--- a/plc4j/integrations/apache-camel/src/test/java/org/apache/plc4x/camel/ManualTest.java
+++ b/plc4j/integrations/apache-camel/src/test/java/org/apache/plc4x/camel/ManualTest.java
@@ -19,7 +19,6 @@
 package org.apache.plc4x.camel;
 
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.main.BaseMainSupport;
 import org.apache.camel.main.Main;
 import org.apache.camel.main.MainListenerSupport;
 
@@ -68,15 +67,7 @@ public class ManualTest {
 
     public static class Events extends MainListenerSupport {
 
-        @Override
-        public void afterStart(BaseMainSupport main) {
-            System.out.println("MainExample with Camel is now started!");
-        }
 
-        @Override
-        public void beforeStop(BaseMainSupport main) {
-            System.out.println("MainExample with Camel is now being stopped!");
-        }
 
     }
 }