You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@plc4x.apache.org by cd...@apache.org on 2020/01/12 19:53:21 UTC

[plc4x] branch next-gen-core-2 updated: - Make the KNXnet/IP driver actually work ...

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

cdutz pushed a commit to branch next-gen-core-2
in repository https://gitbox.apache.org/repos/asf/plc4x.git


The following commit(s) were added to refs/heads/next-gen-core-2 by this push:
     new 4f78772  - Make the KNXnet/IP driver actually work ...
4f78772 is described below

commit 4f78772b3249adbc86e65e0ccaacc59f4bc24426
Author: Christofer Dutz <ch...@c-ware.de>
AuthorDate: Sun Jan 12 20:52:59 2020 +0100

    - Make the KNXnet/IP driver actually work ...
---
 .../java/spi/configuration/ConfigurationFactory.java |  6 +++++-
 .../plc4x/java/transport/udp/UdpChannelFactory.java  |  7 +++++++
 .../configuration/KnxNetIpConfiguration.java         | 20 +++++++++++++++++++-
 .../src/test/resources/logback.xml                   |  2 +-
 4 files changed, 32 insertions(+), 3 deletions(-)

diff --git a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/configuration/ConfigurationFactory.java b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/configuration/ConfigurationFactory.java
index 7d41f7e..fe272e9 100644
--- a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/configuration/ConfigurationFactory.java
+++ b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/configuration/ConfigurationFactory.java
@@ -29,9 +29,11 @@ import org.apache.plc4x.java.spi.configuration.annotations.defaults.DoubleDefaul
 import org.apache.plc4x.java.spi.configuration.annotations.defaults.IntDefaultValue;
 import org.apache.plc4x.java.spi.configuration.annotations.defaults.StringDefaultValue;
 
+import java.io.UnsupportedEncodingException;
 import java.lang.reflect.Field;
 import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.ParameterizedType;
+import java.net.URLDecoder;
 import java.util.*;
 import java.util.function.Function;
 import java.util.stream.Collectors;
@@ -89,9 +91,11 @@ public class ConfigurationFactory {
                 if (paramStringValues.containsKey(configName)) {
                     String stringValue = paramStringValues.get(configName).get(0);
                     try {
+                        // As the arguments might be URL encoded, be sure it's decoded.
+                        stringValue = URLDecoder.decode(stringValue, "utf-8");
                         BeanUtils.setProperty(instance, field.getName(), toFieldValue(field, stringValue));
                         missingFieldNames.remove(configName);
-                    } catch (InvocationTargetException e) {
+                    } catch (InvocationTargetException | UnsupportedEncodingException e) {
                         throw new IllegalArgumentException("Error setting property of bean: " + field.getName(), e);
                     }
                 } else {
diff --git a/plc4j/transports/udp/src/main/java/org/apache/plc4x/java/transport/udp/UdpChannelFactory.java b/plc4j/transports/udp/src/main/java/org/apache/plc4x/java/transport/udp/UdpChannelFactory.java
index 24a953f..a546e49 100644
--- a/plc4j/transports/udp/src/main/java/org/apache/plc4x/java/transport/udp/UdpChannelFactory.java
+++ b/plc4j/transports/udp/src/main/java/org/apache/plc4x/java/transport/udp/UdpChannelFactory.java
@@ -20,9 +20,11 @@ package org.apache.plc4x.java.transport.udp;
 
 import io.netty.bootstrap.Bootstrap;
 import io.netty.channel.Channel;
+import io.netty.channel.ChannelPipeline;
 import io.netty.channel.socket.nio.NioDatagramChannel;
 import org.apache.plc4x.java.spi.configuration.HasConfiguration;
 import org.apache.plc4x.java.spi.connection.NettyChannelFactory;
+import org.apache.plc4x.java.transport.udp.protocol.DatagramUnpackingHandler;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -55,4 +57,9 @@ public class UdpChannelFactory extends NettyChannelFactory implements HasConfigu
         }
     }
 
+    @Override
+    public void initializePipeline(ChannelPipeline pipeline) {
+        pipeline.addLast(new DatagramUnpackingHandler());
+    }
+
 }
diff --git a/sandbox/test-java-knxnetip-driver/src/main/java/org/apache/plc4x/java/knxnetip/configuration/KnxNetIpConfiguration.java b/sandbox/test-java-knxnetip-driver/src/main/java/org/apache/plc4x/java/knxnetip/configuration/KnxNetIpConfiguration.java
index d1276ce..b16b95b 100644
--- a/sandbox/test-java-knxnetip-driver/src/main/java/org/apache/plc4x/java/knxnetip/configuration/KnxNetIpConfiguration.java
+++ b/sandbox/test-java-knxnetip-driver/src/main/java/org/apache/plc4x/java/knxnetip/configuration/KnxNetIpConfiguration.java
@@ -21,6 +21,7 @@ package org.apache.plc4x.java.knxnetip.configuration;
 import org.apache.plc4x.java.knxnetip.KnxNetIpDriver;
 import org.apache.plc4x.java.spi.configuration.Configuration;
 import org.apache.plc4x.java.spi.configuration.annotations.ConfigurationParameter;
+import org.apache.plc4x.java.spi.configuration.annotations.defaults.IntDefaultValue;
 import org.apache.plc4x.java.transport.udp.UdpTransportConfiguration;
 
 public class KnxNetIpConfiguration implements Configuration, UdpTransportConfiguration {
@@ -28,9 +29,26 @@ public class KnxNetIpConfiguration implements Configuration, UdpTransportConfigu
     @ConfigurationParameter("knxproj-file-path")
     public String knxprojFilePath;
 
-    @ConfigurationParameter
+    @ConfigurationParameter("group-address-type")
+    @IntDefaultValue(3)
     public int groupAddressType = 3;
 
+    public String getKnxprojFilePath() {
+        return knxprojFilePath;
+    }
+
+    public void setKnxprojFilePath(String knxprojFilePath) {
+        this.knxprojFilePath = knxprojFilePath;
+    }
+
+    public int getGroupAddressType() {
+        return groupAddressType;
+    }
+
+    public void setGroupAddressType(int groupAddressType) {
+        this.groupAddressType = groupAddressType;
+    }
+
     @Override
     public int getDefaultPort() {
         return KnxNetIpDriver.KNXNET_IP_PORT;
diff --git a/sandbox/test-java-knxnetip-driver/src/test/resources/logback.xml b/sandbox/test-java-knxnetip-driver/src/test/resources/logback.xml
index a8ddebb..27d40c0 100644
--- a/sandbox/test-java-knxnetip-driver/src/test/resources/logback.xml
+++ b/sandbox/test-java-knxnetip-driver/src/test/resources/logback.xml
@@ -29,7 +29,7 @@
     </encoder>
   </appender>
 
-  <root level="trace">
+  <root level="info">
     <appender-ref ref="STDOUT" />
   </root>