Fügen Sie mögliche Werte von @PathParam zu WADL hinzu

8

Wir verwenden Jersey für die REST-konforme API-Implementierung und nutzen dabei die coole Funktion der automatischen WADL-Generierung.

Genau wie ein Beispiel haben wir Methode

%Vor%

Dies erzeugt das folgende Fragment in WADL:

%Vor%

Das Attribut kann name , type , size sein und wir wollen den Wert nicht nur zur Laufzeit validieren, sondern auch in generierten wadl anzeigen. Nach Dieses Dokument sollte durch die Erzeugung mehrerer Tags <option> in <param> unterstützt werden, dh ich erwarte etwas wie das Folgende:

%Vor%

Mein Problem ist, es mit Jersey zu ermöglichen. Wenn das relevante Dokument nicht gefunden wurde und angenommen wird, dass, wenn ich den Parametertyp von String auf enum ändere, diese Funktion automatisch funktioniert, habe ich die Methodensignatur folgendermaßen geändert:

%Vor%

wo

%Vor%

aber Jersey erzeugt immer noch <param> tag ohne Optionen und der Typ des Parameters ist immer xs:string .

Ich habe versucht, es im Code von Jersey zu finden und fand die Klasse com.sun.research.ws.wadl.Option mit relevanten JAXB-Anmerkungen, also scheint es relevant zu sein, aber ich weiß nicht, wie ich es zum Laufen bringen soll. Ich schätze das Problem ist in WadlGeneratorConfig .

Hier ist ein relevanter Teil der Jersey Definition in unserem web.xml

%Vor%

wobei OurWADLGenerator code ist:

%Vor%

Was fehlt mir hier? Danke im Voraus.

    
AlexR 21.02.2013, 17:11
quelle

2 Antworten

2

Nach ein paar Nachforschungen habe ich keinen Code in Jersey gefunden, wo die Optionsliste eingetragen ist. (wahrscheinlich etwas, das noch nicht unterstützt wird )

Sie können also Ihren eigenen WadlGenerator implementieren und die Generatorkette einfügen.

Hier ist ein Beispiel OptionsWadlGenerator , das die Elemente <option> für den Parameter Enum

hinzufügt %Vor%

Und natürlich, um es in Ihre Kette einzufügen, machen Sie so etwas:

%Vor%     
ben75 02.03.2013, 16:14
quelle
3

Eine schnelle Suche nach den Verwendungen von com.sun.research.ws.wadl.Param.getOption() (siehe Ergebnisse hier ) zeigt, dass es nie aus der Bibliothek aufgerufen wird. Ich denke, es ist nur da, weil diese Klassen von xjc aus dem wadl.xsd erzeugt werden. Es scheint jedoch, dass Jersey diese Information in Wadl-Dateien im Grunde ignoriert und es auch nicht interessiert, sie in Wadl-Dateien zu integrieren, die es generiert.

Vor ein paar Jahren haben wir unseren eigenen Code geschrieben, um wadl zu generieren, weil die verfügbaren Werkzeuge so schlecht waren. Das mag sich seither geändert haben, aber das obige Problem zeigt, dass die richtige Unterstützung für Wadl immer noch nicht ganz da ist. : (

    
zagyi 21.02.2013 17:49
quelle

Tags und Links