microsoftgraph / microsoftgraph/msgraph-sdk-java
Proguard rules needed for PageIterator
Nessuno ha ancora preso questa issue.
- Lingua principale
- Java
- Stelle
- 444
- Fork
- 154
- Merge medio
- 18h 28m
- PR unite (30g)
- 4
Descrizione
Describe the bug
On Android with a minified build, an exception occurs with PageIterator over DriveItems. The PageIterator class calls getDeclaredMethod("getValue") on the response class. The response getValue method appears to be removed by the minified build.
Exception:
java.lang.IllegalAccessException: NO_COLLECTION_PROPERTY_ERROR
at com.microsoft.graph.core.tasks.PageIterator.extractEntityListFromParsable(PageIterator.java:300)
at com.microsoft.graph.core.tasks.PageIterator$Builder.build(PageIterator.java:203)
at com.microsoft.graph.core.tasks.PageIterator$Builder.build(PageIterator.java:210)
Expected behavior
Proguard rules provided by the library would include the needed classes/methods for PageIterator to work.
How to reproduce
Code:
var resp =
client.drives().byDriveId(driveId).items().byDriveItemId("root").children().get();
var pageIter =
new PageIterator.Builder<DriveItem, DriveItemCollectionResponse>()
.client(client)
.collectionPage(resp)
.collectionPageFactory(DriveItemCollectionResponse::createFromDiscriminatorValue)
.processPageItemCallback(item -> {
// use DriveItem item...
return true;
})
.build();
pageIter.iterate();
SDK Version
6.24.0
Latest version known to work for scenario above?
No response
Known Workarounds
Add Proguard rule: -keep class com.microsoft.graph.models.DriveItemCollectionResponse { *; }
Debug output
No response
Configuration
No response
Other information
No response
Guida per i contributori
Apri la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Direzione di ricerca
Inizia da com.microsoft.graph.core.tasks.PageIterator, in particolare da extractEntityListFromParsable in PageIterator.java:300, e ispeziona la configurazione Android ProGuard della libreria. Riproduci l'esempio minificato di DriveItem PageIterator, quindi verifica che una regola inclusa nel pacchetto preservi il metodo di risposta e che l'iterazione minificata abbia esito positivo.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Valutazione
- Stack tecnologico
- android, java
- Ambito
- build-system, mobile
- Tipo di issue
- Bug
- Difficoltà
- 2/5
- Tempo stimato
- 1-3 ore
- Stato di attività
- Ferma
- Chiarezza
- Specificata chiaramente
- Idoneità per principianti
- 52/100