Fields missing even with @Property. Unclear documentation?
Mantenedores costumam responder em até 1 dia
Ninguém assumiu esta issue ainda.
Avaliação
- Dificuldade
- 2/5
- Tempo estimado
- 1-3 horas
- Facilidade para iniciantes
- 45/100
- Tipo de issue
- Documentação
- Clareza
- Razoavelmente clara
- Status de atividade
- Estagnada
- Stack de tecnologia
- java
- Domínio
- documentation
Direção de pesquisa
Comece lendo a documentação da anotação @Property juntamente com DataTypeDefinitionImpl e JSONTransactionSerializer, que o relatório identifica como os caminhos relevantes. Esclareça que um campo anotado precisa de um getter para aparecer no JSON retornado e atualize a documentação da anotação para que o comportamento esperado de serialização do exemplo Sale seja inequívoco.
Escrita pelo modelo de indexação a partir do texto da issue.
Descrição
Steps to reproduce
I'm looking at version 2.3 but I think the behavior holds for the lastest version.
The following code is based on https://github.com/hyperledger/fabric-samples/tree/main/asset-transfer-basic/chaincode-java.
@DataType
public class Sale {
@Property
private String guid = "1";
public Object getPK() {
return guid;
}
}
@Contract
public final class AssetTransfer implements ContractInterface {
@Transaction(intent = Transaction.TYPE.EVALUATE)
public Sale getSale(final Context ctx) {
return new Sale();
}
}
Run the code on the test-network.
What I expect
When I call
peer chaincode query -C mychannel -n basic -c '{"Args":["getSale"]}'
I expect to see a non-empty output. The output might be {guid:"1"} or {PK:"1"}, I don't know.
Since I already used @Property to annotate a field, I do not expect to see an empty json, i.e., {}.
What actually happened
$ peer chaincode query -C mychannel -n basic -c '{"Args":["getSale"]}'
{}
Discussion
I looked into fabric-chaincode-java. The constructor of DataTypeDefinitionImpl puts "guid" to this.properties. Then we execute JSONTransactionSerializer.toBuffer(). We will run final JSONObject obj = new JSONObject(new JSONObject(value), propNames); where propNames is ["guid"]. JSONObject outputs nothing in this situation.
It looks like to me that in order for field X to show up in the returned JSON, we have to 1. add @Property to field X; 2. make sure field X has a getter named getX.
To prove if I change to
@DataType
public class Sale {
@Property
private String guid = "1";
public Object getGuid() {
return guid;
}
}
I get
$ peer chaincode query -C mychannel -n basic -c '{"Args":["getSale"]}'
{"guid":"1"}
Suggestion
I feel this issue could be a documentation oversight as @Property didn't mention getters. If maintainers like, I can add something like
/**
* Field and parameter level annotation defining a property of the class.
*
* When this annotation applied to a field, make sure the field has a
* getter.
...
- Linguagem predominante
- Java
- Estrelas
- 322
- Forks
- 210
- Merge médio
- 22h 13min
- PRs com merge (30d)
- 17
Preparar o ambiente
- Sem Dockerfile nem arquivo Docker Compose
- Sem modelo de pull request
- Ler o 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.
Mais de hyperledger/fabric-chaincode-java
-
enhancement
Dificuldade 4/5 3-5 dias Facilidade para iniciantes 48/100
hyperledger/fabric-chaincode-java#628 ·
Mantenedores costumam responder em até 1 dia
-
Optimize ClassGraph ScanningAbertaenhancement
Dificuldade 5/5 Mais de uma semana Facilidade para iniciantes 35/100
hyperledger/fabric-chaincode-java#627 ·
Mantenedores costumam responder em até 1 dia
-
DataType nested classAbertabug
Dificuldade 3/5 1-2 dias Facilidade para iniciantes 75/100
hyperledger/fabric-chaincode-java#626 ·
Mantenedores costumam responder em até 1 dia
-
bug
Dificuldade 3/5 1-2 dias Facilidade para iniciantes 68/100
hyperledger/fabric-chaincode-java#625 ·
Mantenedores costumam responder em até 1 dia
-
Read/write batchingTalvez livre de novo @jadebluestar assumiu há 122 dias e não há nenhum pull request aberto. Abertaenhancement help wanted
Dificuldade 4/5 3-5 dias Facilidade para iniciantes 45/100
hyperledger/fabric-chaincode-java#378 · 4 comentários ·
Mantenedores costumam responder em até 1 dia
Todas as issues de hyperledger/fabric-chaincode-java
Issues semelhantes
-
[BUG] jackson3 JacksonJsonpMapper(ObjectMapper) fails to deserialize `_source` with "Trailing token" errorTalvez já em andamento @junyeokk assumiu hoje. Abertabug untriaged
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 82/100
opensearch-project/opensearch-java#2236 ·
Mantenedores costumam responder em até 1 dia
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 67/100
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 62/100
open-learning-exchange/myplanet#18392 ·
Mantenedores costumam responder em até 2 dias
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 76/100
linagora/twake-calendar-side-service#1218 · 1 comentário ·
Mantenedores costumam responder em até 1 dia
-
[Bug] [Go] Ack returns nil when the server answers with a non-OK statusTalvez já em andamento @leizhiyuan assumiu hoje. Aberta
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 84/100
apache/rocketmq-clients#1465 ·
Mantenedores costumam responder em até 2 dias