相关疑难解决方法(0)

Olingo - 为OData服务的客户端库创建强类型POJO

我正在使用Apache Olingo作为Java SDK的OData客户端,我将为RESTful OData API提供.在SDK中,我希望能够使用强类型类来表示OData实体.我很难轻松实现这一点,因此我觉得我在这里错过了一个不同的策略.

Olingo的方式似乎是获取一个ODataClient对象,该对象为用户提供了许多与API交互的有用方法.该ODataClient用一堆工厂方法来构建我的要求.例如,这是我用来Customers从Northwind示例OData服务获取的代码.client是必要ODataClient类的一个实例.

String serviceRoot = "http://services.odata.org/V4/Northwind/Northwind.svc";
URI customersUri = client.newURIBuilder(serviceRoot)
        .appendEntitySetSegment("Customers").build();
ODataRetrieveResponse<ODataEntitySetIterator<ODataEntitySet, ODataEntity>> response =
        client.getRetrieveRequestFactory().getEntitySetIteratorRequest(customersUri).execute();

if (response.getStatusCode() >= 400) {
    log("Error");
    return;
}

ODataEntitySetIterator<ODataEntitySet, ODataEntity> iterator = response.getBody();

while (iterator.hasNext()) {
    ODataEntity customer = iterator.next();
    log(customer.getId().toString());
}
Run Code Online (Sandbox Code Playgroud)

我想从迭代器(即Customer customer = iterator.next())中得到一个强类型实体.但是,我不确定如何实际做到这一点.

如果我创建一个Customer扩展ODataEntity并尝试执行转换的类,Customer customer = (Customer) iterator.next()那么我得到一个,ClassCastException因为迭代器中的ODataEntity对象只是对象而Customer对子类一无所知.

我的下一个想法是引入泛型,但这样做需要对Olingo库进行大量修改,这让我觉得有更好的方法来做到这一点.

我正在使用Apache Olingo 4的开发版本,因为OData服务必须使用OData 4. …

java odata olingo

9
推荐指数
1
解决办法
3966
查看次数

标签 统计

java ×1

odata ×1

olingo ×1