Ich verwende Apache Olingo als OData-Client für ein Java-SDK, die ich für eine RESTful OData API bereitstellen werde. Im SDK möchte ich stark typisierte Klassen haben können, um die OData-Entitäten darzustellen. Ich habe Probleme damit, dies einfach umzusetzen und fühle mich, als würde ich hier eine andere Strategie verpassen.Olingo - Erstellen stark typisierte POJOs für Client-Bibliothek von OData-Service
Der Olingo Weg scheint zu sein, ein ODataClient
Objekt, das dem Benutzer mit einer Reihe von nützlichen Methoden für die Interaktion mit der API bietet. Die ODataClient
verwendet eine Reihe von Factory-Methoden, um meine Anfrage zu erstellen. Zum Beispiel ist dies der Code, den ich verwendet habe, um die Customers
aus dem Northwind-Beispiel OData-Dienst zu erhalten. client
ist eine Instanz der notwendigen ODataClient
Klasse.
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());
}
Ich möchte mit einer stark typisierten Entität aus der Iterator am Ende (das heißt Customer customer = iterator.next()
). Ich bin mir jedoch nicht sicher, wie ich das tatsächlich machen soll.
Wenn ich eine Customer
Klasse erstellen, die ODataEntity
und versuchen, sich ein gegossenes auszuführen wie Customer customer = (Customer) iterator.next()
dann ich eine ClassCastException
erhalten, da die Objekte in der Iterator sind nur ODataEntity
Objekte und wissen nichts über die Customer
Unterklasse.
Mein nächster Gedanke war, Generika einzuführen, aber dies erfordert eine Menge Änderungen an der Olingo-Bibliothek, die mich glauben machen lassen, dass es einen besseren Weg gibt, dies zu tun.
ich die Entwickler-Version von Apache Olingo 4 seit der OData-Dienst bin mit OData 4.
Was ich vermisst verwenden müssen?
Das Plugin funktioniert nicht mit den Service-Metadaten I zu verwenden versucht ist, - hat es mit komplexen .Net Service-Metadaten getestet? –
Ich habe eine JIRA erstellt, um diese @ https://issues.apache.org/jira/browse/OLINGO-885 –
Entschuldigung zu adressieren, aber ich finde keine Dokumente an diesem überall, also ... wissen Sie, ob dieser pojo Generator funktioniert auch für odata v2 Metadaten? – Dominik