consultingwerk / proparse

Proparse, forked from http://www.oehive.org/proparse/
Other
18 stars 9 forks source link

Add support for OpenEdge 11.7 SERIALIZABLE options on class members #6

Closed mikefechner closed 7 years ago

mikefechner commented 7 years ago

Class-based object improvements

OpenEdge Release 11.7 supports the following class-based object improvements:

For example, instead of loading all built-in classes at startup, they are loaded on demand, as each class needs to be accessed.

• Object serialization improvements — A new NON-SERIALIZABLE optionisnow availableinclass member definitions for properties, ProDataSets, temp-tables, and variables, which suppresses serialization of these members for classes that are otherwise marked as SERIALIZABLE. Also, in addition to its existing availability as an option and attribute setting for defining ProDataSets and temp-tables as class data members, SERIALIZE-NAME is now available as an option for specifying an alternate name for serializing a defined class property or a variable defined as a class data member that is not also marked as NON-SERIALIZABLE.

Sample code:

ROUTINE-LEVEL ON ERROR UNDO, THROW.

USING Progress.Lang.*.

CLASS Test.TestSerializableOptions SERIALIZABLE:

    DEFINE PRIVATE SERIALIZABLE TEMP-TABLE ttTest NO-UNDO FIELD c AS CHARACTER .

    DEFINE PRIVATE NON-SERIALIZABLE TEMP-TABLE ttTest2 NO-UNDO FIELD c AS CHARACTER .

    /**
     * Purpose:
     * Notes:
     *
     * @return CHARACTER
     */
    DEFINE PUBLIC NON-SERIALIZABLE PROPERTY TestProperty AS CHARACTER NO-UNDO
    PUBLIC GET.
    PUBLIC SET.

    DEFINE PUBLIC SERIALIZABLE PROPERTY TestProperty2 AS CHARACTER NO-UNDO SERIALIZE-NAME "FuckTheChicken"
    PUBLIC GET.
    PUBLIC SET.

    DEFINE PRIVATE SERIALIZABLE PROPERTY TestProperty3 AS CHARACTER NO-UNDO SERIALIZE-NAME "FuckTheChicken"
    GET.
    SET.

END CLASS.
akera-io commented 7 years ago

SERIALIZABLE/NON-SERIALIZABLE and SERIALIZE-NAME options are now available for properties/variables/temp-tables/datasets. Syntax validation is left to the compiler though.