celix icon indicating copy to clipboard operation
celix copied to clipboard

Type aware properties improvements

Open pnoltes opened this issue 2 years ago • 2 comments

Intro

Improve celix properties so that properties can be stored and loaded to/from file with type information and encode (serialize) to/from netstring with type information.

Store / Load

Ensure that properties stored using celix_properties_store contain type information if the entry is not a string (i.e. long, double, boolean or version) and that properties loaded using celix_properties_load, celix_properties_loadWithStream or celix_properties_loadFromString used the optional type information to load a type aware properties set.

Properties netstring encoding

Add some util functions that can encode/decode a celix properties set to/from a netstring sequence.

The properties can be a netstring sequence where the content is:

  • a number of properties entries in the netstring sequence, where every entry has 3 netstring entries
  • a string key
  • a dfi descriptor type (t (string), J (long), D (double) or Z (boolean) lcelix_version_t; (celix version))
  • a string representation of the value

Array support

Currently properties do not support a array of typed entries. Support for typed arrays for the following types (string, long, double, bool and celix_version_t) would be nice to have.

pnoltes avatar Oct 24 '23 10:10 pnoltes

It will be nice to have array support. If we went one step further to support embedding properties, celix properties will become json.

PengZheng avatar Oct 24 '23 11:10 PengZheng

In PR #727, element types for the array list were introduced.

To ensure the introduction of array list element types is backwards compatible, a potential element type value of CELIX_ARRAY_LIST_ELEMENT_TYPE_UNDEFINED was added. The support for the CELIX_ARRAY_LIST_ELEMENT_TYPE_UNDEFINED element type is intended to be temporary. This addition allows for a separate PR that focuses solely on refactoring Celix array list usage.

  • [ ] Create a pull request to remove the CELIX_ARRAY_LIST_ELEMENT_TYPE_UNDEFINED array list element type and the celix_arrayList_create function. Additionally, refactor all instances where the undefined array list usage occurs.

pnoltes avatar Feb 25 '24 13:02 pnoltes