2017-07-04 3 views
0

Ich habe diesen Fall-Klasse, die eine abstrakte Klasse erstreckt:Wie kann ich Felder aus einer Oberklasse in die generierte Swagger-Spezifikation aufnehmen (mit Scalatra + Swagger)?

@ApiModel(description = "A price for an offer.") 
case class OfferPrice(
         override val amount: Double, 
         override val taxAmount: Double, 
         override val taxRate: Option[Double] 
        ) extends Price(amount, taxAmount, taxRate) 

abstract class Price(
         @([email protected])(description = "The amount.") val amount: Double, 
         @([email protected])(description = "The tax amount.") val taxAmount: Double, 
         @([email protected])(description = "The tax rate.") val taxRate: Option[Double] 
        ) 

Spannende Sachen, nicht wahr? Mein Problem ist, dass die Definition in der generierten swagger.json Datei wie folgt aussieht:

"OfferPrice": { 
    "properties": { 

    } 
} 

Es ist nicht einschließlich der Felder von der abstrakten Klasse. Wie kann ich diese Felder auch einbeziehen?

Antwort

1

Es würde nicht funktionieren, weil Felder und Anmerkungen, die in der Superklasse deklariert sind, durch Felder versteckt sind, die in der Unterklasse überschrieben werden.

Ich denke, die korrekte Definition des Modells ist:

@ApiModel(description = "A price for an offer.") 
case class OfferPrice(
    @ApiModelProperty(description = "The amount.") amount: Double, 
    @ApiModelProperty(description = "The tax amount.") taxAmount: Double, 
    @ApiModelProperty(description = "The tax rate.") taxRate: Option[Double] 
) extends Price(amount, taxAmount, taxRate) 

abstract class Price(
    amount: Double, 
    taxAmount: Double, 
    taxRate: Option[Double] 
) 

aber die Beschreibung von Modell und Eigenschaften in Scalatra der Swagger 2.0-Unterstützung derzeit nicht gemacht werden. Es wird in der zukünftigen Version unterstützt werden. Siehe: https://github.com/scalatra/scalatra/issues/684

+0

Vielen Dank für die Hilfe auf Gitter! Könnten Sie Ihren Beitrag hier bearbeiten, um die Lösung zu integrieren? Dann werde ich die Antwort annehmen :) – L42

+1

Sicher! Ich habe aktualisiert. –

Verwandte Themen