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