You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@plc4x.apache.org by ld...@apache.org on 2021/07/02 12:10:24 UTC
[plc4x] 01/01: PLC4X-304 Improve status code mappings for OPC UA.
This is an automated email from the ASF dual-hosted git repository.
ldywicki pushed a commit to branch issue/PLC4X-304
in repository https://gitbox.apache.org/repos/asf/plc4x.git
commit 26befd0c80215e176f7ad6b9576b16b55cb57f89
Author: Ćukasz Dywicki <lu...@code-house.org>
AuthorDate: Fri Jul 2 14:09:28 2021 +0200
PLC4X-304 Improve status code mappings for OPC UA.
---
.../plc4x/java/opcua/connection/OpcuaTcpPlcConnection.java | 14 +++++++++++---
1 file changed, 11 insertions(+), 3 deletions(-)
diff --git a/plc4j/drivers/opcua/src/main/java/org/apache/plc4x/java/opcua/connection/OpcuaTcpPlcConnection.java b/plc4j/drivers/opcua/src/main/java/org/apache/plc4x/java/opcua/connection/OpcuaTcpPlcConnection.java
index 458d5f1..f3c4732 100644
--- a/plc4j/drivers/opcua/src/main/java/org/apache/plc4x/java/opcua/connection/OpcuaTcpPlcConnection.java
+++ b/plc4j/drivers/opcua/src/main/java/org/apache/plc4x/java/opcua/connection/OpcuaTcpPlcConnection.java
@@ -513,12 +513,11 @@ public class OpcuaTcpPlcConnection extends BaseOpcuaPlcConnection {
for (int counter = 0; counter < readValueIds.size(); counter++) {
PlcResponseCode resultCode = PlcResponseCode.OK;
PlcValue stringItem = null;
- if (readValues == null || readValues.size() <= counter ||
- !readValues.get(counter).getStatusCode().equals(StatusCode.GOOD)) {
+ if (readValues == null || readValues.size() <= counter || readValues.get(counter) == null) {
resultCode = PlcResponseCode.NOT_FOUND;
} else {
+ resultCode = mapStatusCode(readValues.get(counter).getStatusCode());
stringItem = encodePlcValue(readValues.get(counter));
-
}
ResponseItem<PlcValue> newPair = new ResponseItem<>(resultCode, stringItem);
fields.put((String) readRequest.getFieldNames().toArray()[counter], newPair);
@@ -531,6 +530,15 @@ public class OpcuaTcpPlcConnection extends BaseOpcuaPlcConnection {
return future;
}
+ private PlcResponseCode mapStatusCode(StatusCode statusCode) {
+ if (statusCode == null || statusCode.getValue() == StatusCodes.Bad_BoundNotFound || statusCode.getValue() == StatusCodes.Bad_NotFound) {
+ return PlcResponseCode.NOT_FOUND;
+ }
+ if (statusCode.isSecurityError()) {
+ return PlcResponseCode.ACCESS_DENIED;
+ }
+ return statusCode.isUncertain() ? PlcResponseCode.NOT_FOUND : PlcResponseCode.REMOTE_ERROR;
+ }
@Override
public CompletableFuture<PlcWriteResponse> write(PlcWriteRequest writeRequest) {