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 2018/08/23 09:29:32 UTC

[incubator-plc4x] 15/15: - Renamed PlcInvalidAddress to PlcInvalidAddressException - Refactored the code for parsing addresses in the EtherNet/IP driver

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

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

commit 23f05c86741ac0895cd31b02bc801efbc9bce172
Author: Christofer Dutz <ch...@c-ware.de>
AuthorDate: Thu Aug 23 11:28:18 2018 +0200

    - Renamed PlcInvalidAddress to PlcInvalidAddressException
    - Refactored the code for parsing addresses in the EtherNet/IP driver
---
 .../plc4x/java/api/connection/PlcConnection.java   |  6 ++---
 ...ddress.java => PlcInvalidAddressException.java} | 26 ++++++----------------
 .../connection/BaseEtherNetIpPlcConnection.java    |  7 +++---
 .../java/ethernetip/model/EtherNetIpAddress.java   | 20 ++++++++++-------
 .../plc4x/java/s7/connection/S7PlcConnection.java  |  6 ++---
 5 files changed, 29 insertions(+), 36 deletions(-)

diff --git a/plc4j/api/src/main/java/org/apache/plc4x/java/api/connection/PlcConnection.java b/plc4j/api/src/main/java/org/apache/plc4x/java/api/connection/PlcConnection.java
index 29d9438..a3f5561 100644
--- a/plc4j/api/src/main/java/org/apache/plc4x/java/api/connection/PlcConnection.java
+++ b/plc4j/api/src/main/java/org/apache/plc4x/java/api/connection/PlcConnection.java
@@ -19,7 +19,7 @@ under the License.
 package org.apache.plc4x.java.api.connection;
 
 import org.apache.plc4x.java.api.exceptions.PlcConnectionException;
-import org.apache.plc4x.java.api.exceptions.PlcInvalidAddress;
+import org.apache.plc4x.java.api.exceptions.PlcInvalidAddressException;
 import org.apache.plc4x.java.api.model.Address;
 
 import java.util.Optional;
@@ -60,9 +60,9 @@ public interface PlcConnection extends AutoCloseable {
      *
      * @param addressString String representation of an address for the current type of PLC/protocol.
      * @return Address object identifying an address for the current type of PLC/protocol.
-     * @throws PlcInvalidAddress an exception if there was a problem parsing the address string.
+     * @throws PlcInvalidAddressException an exception if there was a problem parsing the address string.
      */
-    Address parseAddress(String addressString) throws PlcInvalidAddress;
+    Address parseAddress(String addressString) throws PlcInvalidAddressException;
 
     Optional<PlcLister> getLister();
 
diff --git a/plc4j/api/src/main/java/org/apache/plc4x/java/api/exceptions/PlcInvalidAddress.java b/plc4j/api/src/main/java/org/apache/plc4x/java/api/exceptions/PlcInvalidAddressException.java
similarity index 62%
rename from plc4j/api/src/main/java/org/apache/plc4x/java/api/exceptions/PlcInvalidAddress.java
rename to plc4j/api/src/main/java/org/apache/plc4x/java/api/exceptions/PlcInvalidAddressException.java
index 660f701..cdb6dee 100644
--- a/plc4j/api/src/main/java/org/apache/plc4x/java/api/exceptions/PlcInvalidAddress.java
+++ b/plc4j/api/src/main/java/org/apache/plc4x/java/api/exceptions/PlcInvalidAddressException.java
@@ -23,31 +23,19 @@ import java.util.regex.Pattern;
 /**
  * Indicates an invalid Address.
  */
-public class PlcInvalidAddress extends PlcException {
+public class PlcInvalidAddressException extends PlcException {
     private static final long serialVersionUID = 1L;
 
-    public PlcInvalidAddress(String addressToBeParsed, Pattern pattern) {
-        super(addressToBeParsed + " doesn't match " + pattern);
-    }
-
-    public PlcInvalidAddress(String addressToBeParsed, Pattern pattern, String readablePattern) {
-        super(addressToBeParsed + " doesn't match " + readablePattern + '(' + pattern + ')');
-    }
-
-    public PlcInvalidAddress(String message) {
-        super(message);
-    }
-
-    public PlcInvalidAddress(String message, Throwable cause) {
-        super(message, cause);
+    public PlcInvalidAddressException(String addressToBeParsed) {
+        super(addressToBeParsed + " invalid");
     }
 
-    public PlcInvalidAddress(Throwable cause) {
-        super(cause);
+    public PlcInvalidAddressException(String addressToBeParsed, Pattern pattern) {
+        super(addressToBeParsed + " doesn't match " + pattern);
     }
 
-    public PlcInvalidAddress(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) {
-        super(message, cause, enableSuppression, writableStackTrace);
+    public PlcInvalidAddressException(String addressToBeParsed, Pattern pattern, String readablePattern) {
+        super(addressToBeParsed + " doesn't match " + readablePattern + '(' + pattern + ')');
     }
 
 }
diff --git a/plc4j/protocols/ethernetip/src/main/java/org/apache/plc4x/java/ethernetip/connection/BaseEtherNetIpPlcConnection.java b/plc4j/protocols/ethernetip/src/main/java/org/apache/plc4x/java/ethernetip/connection/BaseEtherNetIpPlcConnection.java
index bc8deb6..ac76c2b 100644
--- a/plc4j/protocols/ethernetip/src/main/java/org/apache/plc4x/java/ethernetip/connection/BaseEtherNetIpPlcConnection.java
+++ b/plc4j/protocols/ethernetip/src/main/java/org/apache/plc4x/java/ethernetip/connection/BaseEtherNetIpPlcConnection.java
@@ -21,6 +21,7 @@ package org.apache.plc4x.java.ethernetip.connection;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.plc4x.java.api.connection.PlcReader;
 import org.apache.plc4x.java.api.connection.PlcWriter;
+import org.apache.plc4x.java.api.exceptions.PlcInvalidAddressException;
 import org.apache.plc4x.java.api.messages.*;
 import org.apache.plc4x.java.api.model.Address;
 import org.apache.plc4x.java.base.connection.AbstractPlcConnection;
@@ -57,11 +58,11 @@ public abstract class BaseEtherNetIpPlcConnection extends AbstractPlcConnection
     }
 
     @Override
-    public Address parseAddress(String addressString) {
-        if(EtherNetIpAddress.ADDRESS_PATTERN.matcher(addressString).matches()) {
+    public Address parseAddress(String addressString) throws PlcInvalidAddressException {
+        if(EtherNetIpAddress.matches(addressString)) {
             return EtherNetIpAddress.of(addressString);
         }
-        return null;
+        throw new PlcInvalidAddressException(addressString);
     }
 
     @Override
diff --git a/plc4j/protocols/ethernetip/src/main/java/org/apache/plc4x/java/ethernetip/model/EtherNetIpAddress.java b/plc4j/protocols/ethernetip/src/main/java/org/apache/plc4x/java/ethernetip/model/EtherNetIpAddress.java
index 56e818c..fbcdcdc 100644
--- a/plc4j/protocols/ethernetip/src/main/java/org/apache/plc4x/java/ethernetip/model/EtherNetIpAddress.java
+++ b/plc4j/protocols/ethernetip/src/main/java/org/apache/plc4x/java/ethernetip/model/EtherNetIpAddress.java
@@ -18,7 +18,7 @@ under the License.
 */
 package org.apache.plc4x.java.ethernetip.model;
 
-import org.apache.plc4x.java.api.exceptions.PlcRuntimeException;
+import org.apache.plc4x.java.api.exceptions.PlcInvalidAddressException;
 import org.apache.plc4x.java.api.model.Address;
 
 import java.util.Objects;
@@ -29,16 +29,14 @@ public class EtherNetIpAddress implements Address {
 
     public static final Pattern ADDRESS_PATTERN = Pattern.compile("^#(?<class>.*?)#(?<instance>\\d{1,4})(?:#(?<attribute>\\d))?");
 
-    private final int objectNumber;
-    private final int instanceNumber;
-    private final int attributeNumber;
-
-    private int connectionId;
+    public static boolean matches(String addressString) {
+        return ADDRESS_PATTERN.matcher(addressString).matches();
+    }
 
-    public static EtherNetIpAddress of(String addressString) {
+    public static EtherNetIpAddress of(String addressString) throws PlcInvalidAddressException {
         Matcher matcher = ADDRESS_PATTERN.matcher(addressString);
         if (!matcher.matches()) {
-            throw new PlcRuntimeException(addressString + " doesn't match " + ADDRESS_PATTERN);
+            throw new PlcInvalidAddressException(addressString, ADDRESS_PATTERN);
         }
         int classNumber = Integer.parseInt(matcher.group("class"));
         int instanceNumber = Integer.parseInt(matcher.group("instance"));
@@ -47,6 +45,12 @@ public class EtherNetIpAddress implements Address {
         return new EtherNetIpAddress(classNumber, instanceNumber, attributeNumber);
     }
 
+    private final int objectNumber;
+    private final int instanceNumber;
+    private final int attributeNumber;
+
+    private int connectionId;
+
     public EtherNetIpAddress(int objectNumber, int instanceNumber, int attributeNumber) {
         this.objectNumber = objectNumber;
         this.instanceNumber = instanceNumber;
diff --git a/plc4j/protocols/s7/src/main/java/org/apache/plc4x/java/s7/connection/S7PlcConnection.java b/plc4j/protocols/s7/src/main/java/org/apache/plc4x/java/s7/connection/S7PlcConnection.java
index febc365..1f27917 100644
--- a/plc4j/protocols/s7/src/main/java/org/apache/plc4x/java/s7/connection/S7PlcConnection.java
+++ b/plc4j/protocols/s7/src/main/java/org/apache/plc4x/java/s7/connection/S7PlcConnection.java
@@ -25,7 +25,7 @@ import org.apache.commons.lang3.StringUtils;
 import org.apache.plc4x.java.api.connection.PlcReader;
 import org.apache.plc4x.java.api.connection.PlcWriter;
 import org.apache.plc4x.java.api.exceptions.PlcConnectionException;
-import org.apache.plc4x.java.api.exceptions.PlcInvalidAddress;
+import org.apache.plc4x.java.api.exceptions.PlcInvalidAddressException;
 import org.apache.plc4x.java.api.messages.PlcReadRequest;
 import org.apache.plc4x.java.api.messages.PlcReadResponse;
 import org.apache.plc4x.java.api.messages.PlcWriteRequest;
@@ -249,7 +249,7 @@ public class S7PlcConnection extends AbstractPlcConnection implements PlcReader,
 
 
     @Override
-    public Address parseAddress(String addressString) throws PlcInvalidAddress {
+    public Address parseAddress(String addressString) throws PlcInvalidAddressException {
         Matcher datablockAddressMatcher = S7_DATABLOCK_ADDRESS_PATTERN.matcher(addressString);
         if (datablockAddressMatcher.matches()) {
             int datablockNumber = Integer.parseInt(datablockAddressMatcher.group("blockNumber"));
@@ -258,7 +258,7 @@ public class S7PlcConnection extends AbstractPlcConnection implements PlcReader,
         }
         Matcher addressMatcher = S7_ADDRESS_PATTERN.matcher(addressString);
         if (!addressMatcher.matches()) {
-            throw new PlcInvalidAddress(addressString, S7_ADDRESS_PATTERN, "{area}/{offset}[/{bit-offset}]");
+            throw new PlcInvalidAddressException(addressString, S7_ADDRESS_PATTERN, "{area}/{offset}[/{bit-offset}]");
         }
         MemoryArea memoryArea = MemoryArea.valueOf(addressMatcher.group("memoryArea"));
         int byteOffset = Integer.parseInt(addressMatcher.group("byteOffset"));