Ich habe einige REST-Dienste (konsumieren und Erstellen von Anwendung/JSON) und ich @TypeHint
verwenden, um Dokumentation zu generieren.TypeHint für Sammlung in Enunciate
Jetzt habe ich so etwas wie dieses:
import javax.ws.rs.core.Response;
...
@Path("/path")
public class MyClass {
@GET
@TypeHint(MyResponse.class)
public Response getIt() {
MyResponse resp = ... ;
return MyBuilder.build(resp);
}
}
aber MyResponse
ist ein Wrapper über List<MyType>
.
Meine build
Methode von MyResponse
sieht wie folgt aus:
public static Response build(Serializable payload) {
return Response.ok(msr).header(...).build();
}
ich direkt List<MyType>
statt MyResponse
verwenden möchten. Welches ist der beste Weg, TypeHint
im folgenden Code zu verwenden?
@GET
@TypeHint(/* TODO */)
public Response getIt() {
List<MyType> myList = ... ;
return MyBuilder.build(myList);
}
ich zu den folgenden Optionen dachte:
@TypeHint(List.class)
@TypeHint(MyType.class)
@TypeHint(List<MyType>.class)
-> leider ist dies nicht wegen der Löschung Java-Typ arbeiten.
Frage:
Gibt es eine gültige Alternative für Nummer 3?
Auch wenn der Typ ist eine List
, Anzahl nicht sinnvoll ist, weil meine eigene Art mit @XmlRootElement
kommentiert werden muss und dass List
ist unveränderlich (es von JDK ist).
Es gibt ein Abhilfe für Nummer , aber es ist nicht ganz perfekt:
- Nrn. 2 (nur in der generierten HTML-Dokumentation ein verfügbares Beispiel zu haben - eine Beschreibung für ein Element, das ist in dieser Liste enthalten ist)
angeben, dass es sich um ein
List
in Javadoc (ZB ist: nach dem@return
Wort) (betont werden kann fett, Farben, kursiv, etc. über HTML-Tags)Z. B .:
/** * ... * @return <strong><font color="blue">List<MyType></font></strong> */
Details:
- enunciate.version = 1,30.1
- Java 7
1) Ich stimme Ihren ersten Sätzen zu. 2) Ja, mein Builder gibt eine 'Response' zurück 3) Ich habe nie versucht, diesen 'Response'-Typ für' TypeHint' zu verwenden, da dieser perfekt funktioniert (je nachdem, was ich erreichen wollte), als ich den Typ verwendet habe wurde in diese Antwort "eingewickelt". 4) Ich verwende diese "Liste" nicht als Parameter für meine Funktion. Es wird in das zurückgegebene Ergebnis eingeschlossen. Ich muss einige Versuche nach Ihren Vorschlägen haben, bevor ich sagen kann, ob Ihre Antwort nützlich ist oder nicht. –
Es hat nicht funktioniert. Der Wert für 'element' wird als' (benutzerdefiniert) 'anstelle eines Hyperlinks zu einem JSON-Beispiel angezeigt.Also, es ist nicht besser als meine in der Frage beschriebene Problemumgehung. –
Ich habe die Antwort auf Ihre Änderungen aktualisiert. –