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!");
- }
}
}