microsoftgraph / microsoftgraph/msgraph-sdk-java
Proguard rules needed for PageIterator
Ninguém assumiu esta issue ainda.
- Linguagem predominante
- Java
- Estrelas
- 444
- Forks
- 154
- Merge médio
- 18h 28min
- PRs com merge (30d)
- 4
Descrição
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
Guia de contribuição
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Direção de pesquisa
Comece em com.microsoft.graph.core.tasks.PageIterator, especialmente em extractEntityListFromParsable em PageIterator.java:300, e inspecione a configuração do Android ProGuard da biblioteca. Reproduza o exemplo minificado de DriveItem PageIterator e, em seguida, verifique se uma regra incluída no pacote preserva o método de resposta e se a iteração minificada é executada com sucesso.
Escrita pelo modelo de indexação a partir do texto da issue.
Avaliação
- Stack de tecnologia
- android, java
- Domínio
- build-system, mobile
- Tipo de issue
- Bug
- Dificuldade
- 2/5
- Tempo estimado
- 1-3 horas
- Status de atividade
- Estagnada
- Clareza
- Claramente especificada
- Facilidade para iniciantes
- 52/100