The following property types are supported without any additional efforts:
-
String
, primitive types or their object wrappers (boolean
,Boolean
,int
,Integer
, etc.) -
enum
. The property value is stored in a file or in the database as the value name of the enumeration. -
Persistent entity classes. When accessing a property of the entity type, the instance defined by the property value is loaded from the database.
To support arbitrary types use TypeStringify
and TypeFactory
classes to convert the value to/from a string and specify these classes for property with @Stringify
and @Factory
annotations.
Let us consider this process using UUID
type as example.
-
Create class
com.haulmont.cuba.core.config.type.UuidTypeFactory
inherited fromcom.haulmont.cuba.core.config.type.TypeFactory
and implement the following method in it:public Object build(String string) { if (string == null) { return null; } return UUID.fromString(string); }
-
There is no need to create
TypeStringify
astoString()
method is sufficient in this case. -
Annotate the property in the configuration interface:
@Factory(factory = UuidTypeFactory.class) UUID getUuidProp(); void setUuidProp(UUID value);
The platform provides TypeFactory
implementations for the following types:
-
UUID
–UuidTypeFactory
, as described above. -
java.util.Date
–DateFactory
. Date value must be specified inyyyy-MM-dd HH:mm:ss.SSS
format, for example:cuba.test.dateProp = 2013-12-12 00:00:00.000
-
List<Integer>
(integer numbers list) –IntegerListTypeFactory
. The property value must be specified in the form of numbers list, separated by spaces, for example:cuba.test.integerListProp = 1 2 3
-
List<String>
(list of strings) –StringListTypeFactory
. The property value must be specified as a list of strings separated by "|" sign, for example:cuba.test.stringListProp = aaa|bbb|ccc