2016-05-31 4 views
1

Unter dem petstore Beispiel

ich in dem/pet zu dereferenzieren den $ Ref versuchen -> put Operation, die zur Zeit ist: Schema $ ref: # Definitionen/Tier

Ich versuche, dies zu lösen, aber nicht diesen Text aus der JSON-Datei abrufen. Das habe ich:

BodyParameter bp = (BodyParameter) param; System.out.println (((RefModell) bp.getSchema()). Get $ ref());

dachte ich, das mir den obigen Text heraus geben würde, die ich später mit einer Definition der Karte Karte könnte und es lösen, aber bekam die folgende Fehlermeldung:

Exception in thread „main“ java.lang.ClassCastException: io. swagger.models.ModelImpl kann nicht in io.swagger.models.RefModel umgewandelt werden

Würde jemand eine Möglichkeit kennen, diese Zeichenfolge aus einem body-Parameter zu extrahieren, und im Allgemeinen, da das Schema ein Type Model zurückgibt? Ich finde keine richtige Dokumentationsquelle für den Swagger-Parser, sondern probiere so durch den Quellcode selbst.

Antwort

4

Sie folgende tun würde:

Model model = bp.getSchema(); 
if(model instanceof RefModel) { 
    RefModel ref = (RefModel) model; 
    String simpleRef = ref.getSimpleRef(); 
    Model concreteModel = swagger.getDefinitions().get(simpleRef); 
} 

Sie sollten bestätigen, dass concreteModel ein ModelImpl ist aber im petstore Fall wird es sein.

+0

Ich musste 'RefProperty' aus irgendeinem Grund verwenden, aber sobald ich das herausgefunden hatte, war das sehr hilfreich! –