Для краткого ответа, org.broadleafcommerce.openadmin.server.dao.provider.metadata.BasicFieldMetadataProvider#addMetadata
- это место, где обрабатываются эти аннотации.
На более широком уровне контроллеры в openadmin будут использовать AdminEntityService для получения ClassMetaData (все данные о том, как класс должен будет отображаться для администратора). Аннотация @AdminPresentation
является одним из источников этих данных. Метод AdminEntityServiceImpl#getClassMetadata
является основным шлюзом для получения ClassMetaData.
#getClassMetadata
вызывает #inspect
и в конечном итоге достигает PersistenceManager#inspect
. Этот метод использует DynamicEntityDao, чтобы в конечном итоге добраться до Metadata#getFieldMetadataForTargetClass
. Этот метод получает каждое поле класса с помощью отражения, а затем каждое из этих полей обрабатывается с помощью доступных FieldMetadataProviders. FieldMetadataProviders превращают java.lang.reflect.Field
в org.broadleafcommerce.openadmin.dto.FieldMetadata
.
Любой предоставленный FieldMetadataProvider может предоставлять метаданные поля. Эти метаданные используются в FormBuilderService для создания страницы администратора.
Ссылки на классы:
AdminEntityService - org.broadleafcommerce.openadmin.server.service.AdminEntityServiceImpl
PersistenceManager - org.broadleafcommerce.openadmin.server.service.persistence.PersistenceManagerImpl#inspect
DynamicEntityDao - org.broadleafcommerce.openadmin.server.dao.DynamicEntityDaoImpl#getPropertiesForEntityClass
Метаданные - org.broadleafcommerce.openadmin.server.dao.Metadata#getFieldMetadataForTargetClass
FieldMetadataProvider - org.broadleafcommerce.openadmin.server.dao.provider.metadata.FieldMetadataProvider
, org.broadleafcommerce.openadmin.server.dao.DynamicEntityDaoImpl#fieldMetadataProviders
FormBuilderService - org.broadleafcommerce.openadmin.web.service.FormBuilderServiceImpl