Azure / Azure/azure-libraries-for-java

Appservice response for the `availableStacks` API does not match the swagger model

Offen
#683 0 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen
App Services Service Attention
Vorherrschende Sprache
Java
Sterne
97
Forks
102
PR-Merge-Kennzahlen
Keine gemergten PRs in 30 T.

Beschreibung

The [swagger spec](https://github.com/Azure/azure-rest-api-specs/blob/master/specification/web/resource-manager/Microsoft.Web/stable/2018-02-01/Provider.json#L146) for the `get` operation for [`availableStacks`](https://github.com/Azure/azure-rest-api-specs/blob/master/specification/web/resource-manager/Microsoft.Web/stable/2018-02-01/Provider.json#L19) API does not match the data on the wire.

Here is what I see returned by the service :
```
[main] INFO com.microsoft.azure.management.appservice.Providers getAvailableStacks - --> GET https://management.azure.com/providers/Microsoft.Web/availableStacks?osTypeSelected=Windows&api-version=2018-02-01

[main] INFO com.microsoft.azure.management.appservice.Providers getAvailableStacks - 1650-byte body:
{
"value": [{
"id": null,
"name": "aspnet",
"type": "Microsoft.Web/availableStacks?osTypeSelected=Windows",
"properties": {
"name": "aspnet",
"display": "Net Framework Version",
"dependency": null,
"majorVersions": [{
"displayVersion": "v4.7",
"runtimeVersion": "v4.0",
"isDefault": true,
"minorVersions": [],
"applicationInsights": false
}, {
"displayVersion": "v3.5",
"runtimeVersion": "v2.0",
"isDefault": false,
"minorVersions": [],
"applicationInsights": false
}],
"frameworks": []
}
},

...
],
"nextLink": null,
"id": null
}
```

The swagger declaration is causing the classes in the java SDK to be created like [this](https://github.com/Azure/azure-libraries-for-java/blob/master/azure-mgmt-appservice/src/main/java/com/microsoft/azure/management/appservice/implementation/ApplicationStackInner.java) :
```java
public class ApplicationStackInner {

/**
* Application stack name.
*/
@JsonProperty(value = "name")
private String name;

/**
* Application stack display name.
*/
@JsonProperty(value = "display")
private String display;

/**
* Application stack dependency.
*/
@JsonProperty(value = "dependency")
private String dependency;

/**
* List of major versions available.
*/
@JsonProperty(value = "majorVersions")
private List majorVersions;
….
```

Which breaks when we try tp parse the data that is returned by the server.

In order to correctly get the data out, I have to now [edit the autogenerated class](https://github.com/Azure/azure-libraries-for-java/pull/680/files#diff-c2b9d9bfd15c0ba1fae0d3425d63cefbR20) to add the `properties` sub class...

The service needs to change the on the swagger modelling.

### Suggested Fix
Change the swagger model.

Good examples of what needs to be done, model like the following
* [`AzureStoragePropertyDictionaryResource`](https://github.com/Azure/azure-rest-api-specs/blob/master/specification/web/resource-manager/Microsoft.Web/stable/2018-02-01/WebApps.json#L18058)
* A little more relevant example id [`BackupItems`](https://github.com/Azure/azure-rest-api-specs/blob/master/specification/web/resource-manager/Microsoft.Web/stable/2018-02-01/WebApps.json#L18105) and [`BackupItemCollection`](https://github.com/Azure/azure-rest-api-specs/blob/master/specification/web/resource-manager/Microsoft.Web/stable/2018-02-01/WebApps.json#L18218)

Beitragsleitfaden

Beitragsleitfaden öffnen

Rechercherichtung

Start with the availableStacks GET definition in Provider.json and compare its schema with the response payload shown in the issue and the AzureStoragePropertyDictionaryResource, BackupItems, and BackupItemCollection examples. Check the generated ApplicationStackInner.java model and the referenced parsing change; done means the swagger model generates a Java class that correctly deserializes the returned properties structure.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
azure, java
Bereich
api
Issue-Typ
Bug
Schwierigkeit
4/5
Geschätzter Aufwand
3-5 Tage
Aktivitätsstatus
Veraltet
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
35/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.