You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The field on the returned (ByteBuddy proxy) instance would be of type List<PlcUINT>. The problem is that if we then want to use list elements as Integer, this causes a ClassCastException.
The expected behavior IMO would be that the list is of type List<Integer> similar as it works for single values, e.g, @PlcTag("input-register:1:UINT") => int.
Note:
When trying to use an array, e.g., int[] instead, the field can not be assigned at all, as the call returns a list.
Version
v0.12.0
Programming Languages
plc4j
plc4go
plc4c
plc4net
Protocols
AB-Ethernet
ADS /AMS
BACnet/IP
CANopen
DeltaV
DF1
EtherNet/IP
Firmata
KNXnet/IP
Modbus
OPC-UA
S7
The text was updated successfully, but these errors were encountered:
As off right now, these fields are se using the fallback behavior of PlcEntityInterceptor::getTyped:
ObjectresponseObject = response.getObject(sourceFieldName);
if (clazz.isAssignableFrom(responseObject.getClass())) {
returnresponseObject;
}
The preferrable option would be to call the respective PlcReadResponse::getAll... instead of PlcReadResponse::getObject if the field type is a collection (or array). For this, the generic type might need to be determined though. While for arrays, this can be done using Class::getComponentType, for collections TypeToken might be the way to go. Additionally, if specific collection types should be supported, further processing might be required as PlcReadResponse::getAll... returns a generic Collection.
What happened?
When trying to query multiple values as a collection using a single tag, as follows, the (inner) datatypes returned do not match the field.
The field on the returned (ByteBuddy proxy) instance would be of type
List<PlcUINT>
. The problem is that if we then want to use list elements asInteger
, this causes aClassCastException
.The expected behavior IMO would be that the list is of type
List<Integer>
similar as it works for single values, e.g,@PlcTag("input-register:1:UINT")
=>int
.Note:
When trying to use an array, e.g.,
int[]
instead, the field can not be assigned at all, as the call returns a list.Version
v0.12.0
Programming Languages
Protocols
The text was updated successfully, but these errors were encountered: