Skip to content

Commit

Permalink
fix: Added back a LegacyPlcValueHandler and made the OPC-UA Driver us…
Browse files Browse the repository at this point in the history
…e it in order to fix the UPC-UA tests.
  • Loading branch information
chrisdutz committed Sep 29, 2024
1 parent fad287d commit 097c9f8
Show file tree
Hide file tree
Showing 3 changed files with 293 additions and 22 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,8 @@
import org.apache.plc4x.java.spi.connection.GeneratedDriverBase;
import org.apache.plc4x.java.spi.connection.ProtocolStackConfigurer;
import org.apache.plc4x.java.spi.connection.SingleProtocolStackConfigurer;
import org.apache.plc4x.java.spi.values.LegacyPlcValueHandler;
import org.apache.plc4x.java.spi.values.PlcValueHandler;

import java.util.Collections;
import java.util.List;
Expand Down Expand Up @@ -62,6 +64,11 @@ protected List<String> getSupportedTransportCodes() {
return Collections.singletonList("tcp");
}

@Override
protected PlcValueHandler getValueHandler() {
return new LegacyPlcValueHandler();
}

@Override
protected boolean canRead() {
return true;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@
import org.apache.plc4x.java.spi.model.DefaultPlcSubscriptionTag;
import org.apache.plc4x.java.spi.transaction.RequestTransactionManager;
import org.apache.plc4x.java.spi.transaction.RequestTransactionManager.RequestTransaction;
import org.apache.plc4x.java.spi.values.DefaultPlcValueHandler;
import org.apache.plc4x.java.spi.values.LegacyPlcValueHandler;
import org.apache.plc4x.java.spi.values.PlcList;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
Expand Down Expand Up @@ -279,60 +279,60 @@ public Map<String, PlcResponseItem<PlcValue>> readResponse(LinkedHashSet<String>
for (int i = 0; i < length; i++) {
tmpValue[i] = array[i] != 0;
}
value = DefaultPlcValueHandler.of(tag, tmpValue);
value = LegacyPlcValueHandler.of(tmpValue);
} else if (variant instanceof VariantSByte) {
byte[] array = ((VariantSByte) variant).getValue();
value = DefaultPlcValueHandler.of(tag, array);
value = LegacyPlcValueHandler.of(tag, array);
} else if (variant instanceof VariantByte) {
List<Short> array = ((VariantByte) variant).getValue();
Short[] tmpValue = array.toArray(new Short[0]);
value = DefaultPlcValueHandler.of(tag, tmpValue);
value = LegacyPlcValueHandler.of(tmpValue);
} else if (variant instanceof VariantInt16) {
List<Short> array = ((VariantInt16) variant).getValue();
Short[] tmpValue = array.toArray(new Short[0]);
value = DefaultPlcValueHandler.of(tag, tmpValue);
value = LegacyPlcValueHandler.of(tmpValue);
} else if (variant instanceof VariantUInt16) {
List<Integer> array = ((VariantUInt16) variant).getValue();
Integer[] tmpValue = array.toArray(new Integer[0]);
value = DefaultPlcValueHandler.of(tag, tmpValue);
value = LegacyPlcValueHandler.of(tmpValue);
} else if (variant instanceof VariantInt32) {
List<Integer> array = ((VariantInt32) variant).getValue();
Integer[] tmpValue = array.toArray(new Integer[0]);
value = DefaultPlcValueHandler.of(tag, tmpValue);
value = LegacyPlcValueHandler.of(tmpValue);
} else if (variant instanceof VariantUInt32) {
List<Long> array = ((VariantUInt32) variant).getValue();
Long[] tmpValue = array.toArray(new Long[0]);
value = DefaultPlcValueHandler.of(tag, tmpValue);
value = LegacyPlcValueHandler.of(tmpValue);
} else if (variant instanceof VariantInt64) {
List<Long> array = ((VariantInt64) variant).getValue();
Long[] tmpValue = array.toArray(new Long[0]);
value = DefaultPlcValueHandler.of(tag, tmpValue);
value = LegacyPlcValueHandler.of(tmpValue);
} else if (variant instanceof VariantUInt64) {
value = DefaultPlcValueHandler.of(tag, ((VariantUInt64) variant).getValue());
value = LegacyPlcValueHandler.of(((VariantUInt64) variant).getValue());
} else if (variant instanceof VariantFloat) {
List<Float> array = ((VariantFloat) variant).getValue();
Float[] tmpValue = array.toArray(new Float[0]);
value = DefaultPlcValueHandler.of(tag, tmpValue);
value = LegacyPlcValueHandler.of(tmpValue);
} else if (variant instanceof VariantDouble) {
List<Double> array = ((VariantDouble) variant).getValue();
Double[] tmpValue = array.toArray(new Double[0]);
value = DefaultPlcValueHandler.of(tag, tmpValue);
value = LegacyPlcValueHandler.of(tmpValue);
} else if (variant instanceof VariantString) {
int length = ((VariantString) variant).getValue().size();
List<PascalString> stringArray = ((VariantString) variant).getValue();
String[] tmpValue = new String[length];
for (int i = 0; i < length; i++) {
tmpValue[i] = stringArray.get(i).getStringValue();
}
value = DefaultPlcValueHandler.of(tag, tmpValue);
value = LegacyPlcValueHandler.of(tmpValue);
} else if (variant instanceof VariantDateTime) {
List<Long> array = ((VariantDateTime) variant).getValue();
int length = array.size();
LocalDateTime[] tmpValue = new LocalDateTime[length];
for (int i = 0; i < length; i++) {
tmpValue[i] = LocalDateTime.ofInstant(Instant.ofEpochMilli(getDateTime(array.get(i))), ZoneOffset.UTC);
}
value = DefaultPlcValueHandler.of(tag, tmpValue);
value = LegacyPlcValueHandler.of(tmpValue);
} else if (variant instanceof VariantGuid) {
List<GuidValue> array = ((VariantGuid) variant).getValue();
int length = array.size();
Expand All @@ -351,15 +351,15 @@ public Map<String, PlcResponseItem<PlcValue>> readResponse(LinkedHashSet<String>
}
tmpValue[i] = Long.toHexString(array.get(i).getData1()) + "-" + Integer.toHexString(array.get(i).getData2()) + "-" + Integer.toHexString(array.get(i).getData3()) + "-" + Integer.toHexString(data4) + "-" + Long.toHexString(data5);
}
value = DefaultPlcValueHandler.of(tag, tmpValue);
value = LegacyPlcValueHandler.of(tmpValue);
} else if (variant instanceof VariantXmlElement) {
int length = ((VariantXmlElement) variant).getValue().size();
List<PascalString> strings = ((VariantXmlElement) variant).getValue();
String[] tmpValue = new String[length];
for (int i = 0; i < length; i++) {
tmpValue[i] = strings.get(i).getStringValue();
}
value = DefaultPlcValueHandler.of(tag, tmpValue);
value = LegacyPlcValueHandler.of(tmpValue);
} else if (variant instanceof VariantLocalizedText) {
int length = ((VariantLocalizedText) variant).getValue().size();
List<LocalizedText> strings = ((VariantLocalizedText) variant).getValue();
Expand All @@ -369,39 +369,39 @@ public Map<String, PlcResponseItem<PlcValue>> readResponse(LinkedHashSet<String>
tmpValue[i] += strings.get(i).getLocaleSpecified() ? strings.get(i).getLocale().getStringValue() + "|" : "";
tmpValue[i] += strings.get(i).getTextSpecified() ? strings.get(i).getText().getStringValue() : "";
}
value = DefaultPlcValueHandler.of(tag, tmpValue);
value = LegacyPlcValueHandler.of(tmpValue);
} else if (variant instanceof VariantQualifiedName) {
int length = ((VariantQualifiedName) variant).getValue().size();
List<QualifiedName> strings = ((VariantQualifiedName) variant).getValue();
String[] tmpValue = new String[length];
for (int i = 0; i < length; i++) {
tmpValue[i] = "ns=" + strings.get(i).getNamespaceIndex() + ";s=" + strings.get(i).getName().getStringValue();
}
value = DefaultPlcValueHandler.of(tag, tmpValue);
value = LegacyPlcValueHandler.of(tmpValue);
} else if (variant instanceof VariantExtensionObject) {
int length = ((VariantExtensionObject) variant).getValue().size();
List<ExtensionObject> strings = ((VariantExtensionObject) variant).getValue();
String[] tmpValue = new String[length];
for (int i = 0; i < length; i++) {
tmpValue[i] = strings.get(i).toString();
}
value = DefaultPlcValueHandler.of(tag, tmpValue);
value = LegacyPlcValueHandler.of(tmpValue);
} else if (variant instanceof VariantNodeId) {
int length = ((VariantNodeId) variant).getValue().size();
List<NodeId> strings = ((VariantNodeId) variant).getValue();
String[] tmpValue = new String[length];
for (int i = 0; i < length; i++) {
tmpValue[i] = strings.get(i).toString();
}
value = DefaultPlcValueHandler.of(tag, tmpValue);
value = LegacyPlcValueHandler.of(tmpValue);
} else if (variant instanceof VariantStatusCode) {
int length = ((VariantStatusCode) variant).getValue().size();
List<StatusCode> strings = ((VariantStatusCode) variant).getValue();
String[] tmpValue = new String[length];
for (int i = 0; i < length; i++) {
tmpValue[i] = strings.get(i).toString();
}
value = DefaultPlcValueHandler.of(tag, tmpValue);
value = LegacyPlcValueHandler.of(tmpValue);
} else if (variant instanceof VariantByteString) {
PlcList plcList = new PlcList();
List<ByteStringArray> array = ((VariantByteString) variant).getValue();
Expand All @@ -411,7 +411,7 @@ public Map<String, PlcResponseItem<PlcValue>> readResponse(LinkedHashSet<String>
for (int i = 0; i < length; i++) {
tmpValue[i] = byteStringArray.getValue().get(i);
}
plcList.add(DefaultPlcValueHandler.of(tag, tmpValue));
plcList.add(LegacyPlcValueHandler.of(tmpValue));
}
value = plcList;
} else {
Expand Down
Loading

0 comments on commit 097c9f8

Please sign in to comment.