A.5. metadata.xml

Файлы данного типа используются для регистрации кастомных типов данных и неперсистентных сущностей, и для задания мета-аннотаций.

Схема XML доступна по адресу http://schemas.haulmont.com/cuba/6.6/metadata.xsd.

Расположение файла metadata.xml задается в свойстве приложения cuba.metadataConfig.

Рассмотрим структуру файла.

metadata - корневой элемент.

Элементы metadata:

  • datatypes - опциональный описатель кастомных типов данных.

    Элементы datatypes:

    • datatype - описатель типа данных. Должен иметь атрибут class, задающий класс реализации. Другие атрибуты опциональны и зависят от реализации. См. Пример специализированного Datatype.

  • metadata-model - описатель метамодели проекта.

    Атрибуты metadata-model:

    • root-package - корневой пакет проекта.

      Элементы metadata-model:

    • class - класс неперсистентной сущности.

  • annotations - корень элементов присвоения мета-аннотаций сущностей.

    Элемент annotations содержит список элементов entity, которые определяют сущности, для которых задаются мета-аннотации. Каждый элемент entity должен содержать атрибут class, который задает класс сущности, и список элементов annotation.

    Элемент annotation определяет мета-аннотацию. Он имеет атрибут name, соответствующий имени мета-аннотации. Мэп атрибутов мета-аннотации задается списком вложенных элементов attribute.

Пример:

<metadata xmlns="http://schemas.haulmont.com/cuba/metadata.xsd">

    <metadata-model root-package="com.sample.sales">
        <class>com.sample.sales.entity.SomeNonPersistentEntity</class>
        <class>com.sample.sales.entity.OtherNonPersistentEntity</class>
    </metadata-model>

    <annotations>
        <entity class="com.haulmont.cuba.security.entity.User">
            <annotation name="com.haulmont.cuba.core.entity.annotation.TrackEditScreenHistory">
                <attribute name="value" value="true" datatype="boolean"/>
            </annotation>

            <annotation name="com.haulmont.cuba.core.entity.annotation.EnableRestore">
                <attribute name="value" value="true" datatype="boolean"/>
            </annotation>
        </entity>

        <entity class="com.haulmont.cuba.core.entity.Category">
            <annotation name="com.haulmont.cuba.core.entity.annotation.SystemLevel">
                <attribute name="value" value="false" datatype="boolean"/>
            </annotation>
        </entity>
    </annotations>

</metadata>