2016-07-11 2 views
0

Я вижу, есть документация, описывающая с помощью аннотаций с Olingo для OData v2: https://olingo.apache.org/doc/odata2/tutorials/AnnotationProcessorExtension.htmlИспользование аннотаций с Apache Olingo для OData v4

Так, например, вместо того, чтобы вручную создать провайдера, который детализирует все метаданные EDM, я Я хотел бы добавить аннотации к моей модели и иметь общий EDM-провайдер для генерации всех метаданных. И аналогично для поставщика данных. Он хотел бы что-то вроде этого:

@EdmEntityType 
@EdmEntitySet 
public class Car { 
    @EdmKey 
    @EdmProperty 
    private String id; 
    @EdmProperty 
    private String model; 
    @EdmNavigationProperty 
    private Manufacturer manufacturer; 
} 

Есть ли аналогичная функциональность для Olingo Odata4? Я не мог найти никаких примеров, и поиск не видел аннотаций, определенных в их исходном коде. Как я помню, этот подход работает с другими фреймворками. API веб-приложений, SDL Odata, Olingo Odata2 и т. Д.

Обновление: В итоге я использовал SDL Odata, который также поддерживает Odata v4 и имеет обозначения. Для примера смотрите здесь: https://github.com/sdl/odata-example

Вот что модель выглядит в Scala:

@EdmEntity(namespace = "SDL.OData.Example", key = Array("id"), containerName = "SDLExample") 
@EdmEntitySet 
case class Person (
    @(EdmProperty @field)(name="id",  nullable = false) var personId: String, 
    @(EdmProperty @field)(name="firstName",nullable = false) var firstName: String, 
    @(EdmProperty @field)(name="lastName", nullable = false) var lastName: String, 
    @(EdmProperty @field)(name="age",  nullable = false) var age: Int 
) 

ответ

2

Там в настоящее время нет документации по данной теме. Я бы предложил вам посмотреть модуль Olingo TechSvc, который используется в их интеграционных тестах. Там вы можете увидеть, как аннотации установлены для EntitySet: https://github.com/apache/olingo-odata4/blob/2e24ffd1d3c343fdec45f8dbf0398783a0a86f3f/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/provider/ContainerProvider.java#L179

В основном вы используете классы, которые вы можете найти в пакете org.apache.olingo.commons.api.edm.annotation и добавляете к ним экземпляры этих кладов Элементы CsdlProvider, которые вы хотите аннотировать.

+0

У меня был шанс посмотреть на вышеупомянутый код, который вы упомянули, но я недостаточно хорошо знаком с Olingo, чтобы понять, что он делает, чтобы придумать мой собственный пример. Я предполагаю, что мне нужно создать собственный собственный EDM-провайдер, похожий на EdmTechProvider, поскольку он был создан для тестирования. Кажется, что немного работы для чего-то, что я ожидал, чтобы работать из коробки, но, возможно, я чего-то не хватает? – Mike

+0

Извините, кажется, я не понял ваш вопрос. Я думал, вы говорите об аннотациях OData, которые являются элементами XML-метаданных. В настоящее время нет механизма Java Annotation, который приводит к работе службы OData для OData V4. – chrisam

+0

Являются ли семантика аннотаций, например. '' Core.Permissions'' режим только для чтения, принудительно? Из моих тестов это выглядит так, как будто это не так. –

Смежные вопросы