【问题标题】:Using annotations with Apache Olingo for OData v4在 Apache Olingo for OData v4 中使用注释
【发布时间】:2016-11-14 00:56:29
【问题描述】:

我看到有文档描述了使用 Olingo for Odata v2 使用注释: https://olingo.apache.org/doc/odata2/tutorials/AnnotationProcessorExtension.html

因此,例如,我不想手动创建详细说明所有 EDM 元数据的提供程序,而是想向我的模型添加注释并使用通用 EDM 提供程序来生成所有元数据。对于数据提供者也是如此。它想要这样的东西:

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

Olingo Odata4 有类似的功能吗?我找不到任何示例,搜索也没有看到其源代码中定义的注释。我记得这种方法适用于其他框架,.Nets Web 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
)

【问题讨论】:

    标签: olingo java-annotations


    【解决方案1】:

    目前没有关于此主题的文档。我建议您查看在他们的集成测试中使用的 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 元素中。

    【讨论】:

    • 我有机会看到您提到的上述代码,但我对 Olingo 不够熟悉,无法充分理解它在做什么,以便提出我自己的示例。我假设我需要创建自己的自定义 EDM 提供程序,类似于 EdmTechProvider,因为它只是为测试而创建的。对于我期望开箱即用的东西,这似乎有点工作,但也许我错过了什么?
    • 对不起,我似乎误解了你的问题。我以为您在谈论 OData 注释,它是元数据 XML 中的元素。当前没有 Java Annotation 机制可导致 OData V4 的 OData 服务正常工作。
    • 是注解的语义,例如Core.Permissions 只读模式,强制执行?从我的测试来看,它们似乎不是。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-06-22
    • 2016-07-05
    • 2020-08-12
    • 2013-11-25
    • 2014-12-10
    • 2016-01-19
    • 1970-01-01
    相关资源
    最近更新 更多