plc4x-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Julian Feinauer (JIRA)" <j...@apache.org>
Subject [jira] [Created] (PLC4X-113) Implement support for complex field types in the PLC4X API
Date Thu, 18 Apr 2019 07:27:00 GMT
Julian Feinauer created PLC4X-113:
-------------------------------------

             Summary: 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


*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
(v7.6.3#76005)

Mime
View raw message