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 2022/03/31 14:48:00 UTC

[plc4x] 07/10: fix(plc4j/spi): Made it simpler to detect configuration problems

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

cdutz pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/plc4x.git

commit 551868fab9dbe6577414e2a21c74019ae88868cf
Author: cdutz <ch...@c-ware.de>
AuthorDate: Thu Mar 31 16:46:03 2022 +0200

    fix(plc4j/spi): Made it simpler to detect configuration problems
---
 .../plc4x/java/spi/configuration/ConfigurationFactory.java  | 13 +++++++++++--
 .../plc4x/java/spi/connection/NettyChannelFactory.java      |  6 +++---
 2 files changed, 14 insertions(+), 5 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 4bd2456..728f0f9 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
@@ -21,8 +21,11 @@ package org.apache.plc4x.java.spi.configuration;
 import org.apache.commons.lang3.ClassUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.commons.lang3.reflect.FieldUtils;
+import org.apache.plc4x.java.api.exceptions.PlcRuntimeException;
 import org.apache.plc4x.java.spi.configuration.annotations.*;
 import org.apache.plc4x.java.spi.configuration.annotations.defaults.*;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 import java.io.UnsupportedEncodingException;
 import java.lang.reflect.Field;
@@ -30,7 +33,6 @@ import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.ParameterizedType;
 import java.lang.reflect.Type;
 import java.net.URLDecoder;
-import java.nio.charset.StandardCharsets;
 import java.util.*;
 import java.util.function.Function;
 import java.util.stream.Collectors;
@@ -47,6 +49,8 @@ import static java.util.stream.Collectors.toList;
  */
 public class ConfigurationFactory {
 
+    private static final Logger LOGGER = LoggerFactory.getLogger(ConfigurationFactory.class);
+
     // TODO Respect Path Params
     public <T extends Configuration> T createConfiguration(Class<T> pClazz, String configurationString) {
         // Get a map of all configuration parameter fields.
@@ -130,7 +134,12 @@ public class ConfigurationFactory {
                 if (configType instanceof Class) {
                     Class<?> configClass = (Class<?>) configType;
                     if (configClass.isAssignableFrom(configuration.getClass())) {
-                        ((HasConfiguration) obj).setConfiguration(configuration);
+                        try {
+                            ((HasConfiguration) obj).setConfiguration(configuration);
+                        } catch(Throwable t) {
+                            LOGGER.error("Error setting the configuration", t);
+                            throw new PlcRuntimeException("Error setting the configuration", t);
+                        }
                     }
                 }
             }
diff --git a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/connection/NettyChannelFactory.java b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/connection/NettyChannelFactory.java
index caedca7..cd41459 100644
--- a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/connection/NettyChannelFactory.java
+++ b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/connection/NettyChannelFactory.java
@@ -118,7 +118,7 @@ public abstract class NettyChannelFactory implements ChannelFactory {
 
             final Channel channel = f.channel();
 
-            // Add to Event Loop Group
+            // Add to event-loop group
             if (workerGroup != null) {
                 eventLoops.put(channel, workerGroup);
             }
@@ -137,8 +137,8 @@ public abstract class NettyChannelFactory implements ChannelFactory {
         } catch (InterruptedException e) {
             Thread.currentThread().interrupt();
             throw new PlcConnectionException("Error creating channel.", e);
-        } catch (Exception e) {
-            throw new PlcConnectionException("Error creating channel.", e);
+        } catch (Throwable t) {
+            throw new PlcConnectionException("Error creating channel.", t);
         }
     }