Azure / Azure/azure-libraries-for-java

Listing app service certificates fails

Ouverte
#670 2 commentaires 0 réactions 0 personnes assignées Voir sur GitHub
App Services customer-reported Mgmt needs-more-info
Langage dominant
Java
Étoiles
97
Forks
102
Métriques de merge des PR
Aucune PR mergée en 30 j

Description

I have the following code that tries to list existing app service certificates (3rd party) via the REST API:

`Optional existingAppCert = azure.appServices().certificates().list().stream().filter(c -> c.thumbprint().equalsIgnoreCase(MY_THUMBPRINT)).findFirst();`

This code errors out because the REST API as documented here https://docs.microsoft.com/en-us/rest/api/appservice/certificates/list returns a plain list of certificates, while the list() call is expecting a PagedList<>.

As is, this API is not usable for me via the Java SDK :(

The exception is as follows:

> Caused by: com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot deserialize instance of `com.microsoft.azure.management.appservice.implementation.PageImpl` out of START_ARRAY token
at [Source: (String)"[]"; line: 1, column: 1]
at com.fasterxml.jackson.databind.exc.MismatchedInputException.from(MismatchedInputException.java:63)
at com.fasterxml.jackson.databind.DeserializationContext.reportInputMismatch(DeserializationContext.java:1342)
at com.fasterxml.jackson.databind.DeserializationContext.handleUnexpectedToken(DeserializationContext.java:1138)
at com.fasterxml.jackson.databind.DeserializationContext.handleUnexpectedToken(DeserializationContext.java:1092)
at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.deserializeFromArray(BeanDeserializerBase.java:1454)
at com.fasterxml.jackson.databind.deser.BeanDeserializer._deserializeOther(BeanDeserializer.java:185)
at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:161)
at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:4001)
at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:3030)
at com.microsoft.rest.serializer.JacksonAdapter.deserialize(JacksonAdapter.java:131)
at com.microsoft.rest.ServiceResponseBuilder.buildBody(ServiceResponseBuilder.java:216)
at com.microsoft.rest.ServiceResponseBuilder.build(ServiceResponseBuilder.java:110)
at com.microsoft.azure.AzureResponseBuilder.build(AzureResponseBuilder.java:56)
at com.microsoft.azure.management.appservice.implementation.CertificatesInner.listDelegate(CertificatesInner.java:213)
at com.microsoft.azure.management.appservice.implementation.CertificatesInner.access$000(CertificatesInner.java:48)
at com.microsoft.azure.management.appservice.implementation.CertificatesInner$5.call(CertificatesInner.java:200)
at com.microsoft.azure.management.appservice.implementation.CertificatesInner$5.call(CertificatesInner.java:196)
at rx.internal.operators.OnSubscribeMap$MapSubscriber.onNext(OnSubscribeMap.java:69)
at retrofit2.adapter.rxjava.CallArbiter.deliverResponse(CallArbiter.java:120)
at retrofit2.adapter.rxjava.CallArbiter.emitResponse(CallArbiter.java:102)
at retrofit2.adapter.rxjava.CallExecuteOnSubscribe.call(CallExecuteOnSubscribe.java:46)
at retrofit2.adapter.rxjava.CallExecuteOnSubscribe.call(CallExecuteOnSubscribe.java:24)
at rx.Observable.unsafeSubscribe(Observable.java:10327)
at rx.internal.operators.OnSubscribeMap.call(OnSubscribeMap.java:48)
at rx.internal.operators.OnSubscribeMap.call(OnSubscribeMap.java:33)
at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:48)
at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:30)
at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:48)
at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:30)
at rx.Observable.subscribe(Observable.java:10423)
at rx.Observable.subscribe(Observable.java:10390)
at rx.observables.BlockingObservable.blockForSingle(BlockingObservable.java:443)
... 7 more

Guide de contribution

Ouvrir le guide de contribution

Piste de recherche

Commencez par CertificatesInner.java, en particulier listDelegate, et comparez son type de réponse attendu avec la réponse de la REST API documentée dans l’issue. Reproduisez l’échec avec une liste de certificats vide et vérifiez que la liste des certificats peut désérialiser le tableau simple et prendre en charge le filtrage par thumbprint.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Évaluation

Stack technique
azure, java
Domaine
api
Type d'issue
Bug
Difficulté
3/5
Temps estimé
1-2 jours
Activité
À l'abandon
Clarté
Plutôt claire
Accessibilité débutants
35/100

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.