You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@plc4x.apache.org by "Alessandro Rossignoli (Jira)" <ji...@apache.org> on 2020/05/27 23:59:00 UTC

[jira] [Comment Edited] (PLC4X-113) Implement support for complex field types in the PLC4X API

    [ https://issues.apache.org/jira/browse/PLC4X-113?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17118171#comment-17118171 ] 

Alessandro Rossignoli edited comment on PLC4X-113 at 5/27/20, 11:58 PM:
------------------------------------------------------------------------

Sorry for my silly question: you mentioned that  "lists (arrays) as first class "ciitzens" ", but how is it possible to read arrays with OPC UA? I couldn't find any docs.

I would also like to contribute on this, given enough time to get into the project, as right now I am just a user of the library.


was (Author: itaross):
Sorry for my silly question: you mentioned that  "lists (arrays) as first class "ciitzens" ", but how is it possible to read arrays with OPC UA? I could find any docs.

I would also like to contribute on this, given enough time to get into the project, as right now I am just a user of the library.

> Implement support for complex field types in the PLC4X API
> ----------------------------------------------------------
>
>                 Key: PLC4X-113
>                 URL: https://issues.apache.org/jira/browse/PLC4X-113
>             Project: Apache PLC4X
>          Issue Type: New Feature
>          Components: API
>            Reporter: Julian Feinauer
>            Priority: Critical
>
> *This is a (possibly) incompatible change.*
> Currently we have support for primitives as well as lists (arrays) as first class "ciitzens" of the PLC4X model.
> Especially, when thinking about OPC UA, but also other protocols like ADS (and even S7) support complex objects in their programming model.
> Thus, it is necessary to refactor / extend the API to support these complex objects.
> I guess we need at least
> * primitives
> * lists
> * maps (should be equal to "structs")
> Basically, this should be roughly equivalent to what one can represent with JSON.
> Thus, the API could be structured i two ways.. first, we could use an internal Node Tree to represent the objects, but we could also provide to use someone elses NodeTree or structure to represent the Objects.
> For example Jackson.. this would even allow us to directly map these objects to POJOs via Jackson.
> As example for such a model, one can look at that of Apache Calcite: https://github.com/apache/calcite/blob/3fa29455664bec0056c436491b369e0cd72242ea/core/src/main/java/org/apache/calcite/rel/type/RelDataType.java
> They have an interface with methods
> {code:java}
> public interface DataType
> {
>     // Checker
>     boolean isMap();
>     boolean isList();
>     boolean isPrimitive();
>     // Getter for complex types
>     DataType get(String key);
>     DataType get(Long i);
>     
>     // Primitive getters
>     long getLong();
>     String getString();
>     //...
> }
> {code}



--
This message was sent by Atlassian Jira
(v8.3.4#803005)