Skip to content

Commit 34db086

Browse files
authored
Merge pull request #102 from cryptape/refactor-json
refactor: update rpc response json parse method
2 parents 95233e4 + d3deb08 commit 34db086

File tree

11 files changed

+42
-457
lines changed

11 files changed

+42
-457
lines changed

CHANGELOG.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,12 @@
11
All notable changes to this project will be documented in this file.
22

3+
# [v0.22.1](https://github.com/cryptape/cita-sdk-java/compare/v0.22...v0.22.1) (2019-03-29)
4+
5+
### Feature
6+
7+
* update RPC request cases
8+
* fix block response parse bug
9+
310
# [v0.22](https://github.com/cryptape/cita-sdk-java/compare/v0.21...v0.22) (2019-03-28)
411

512
### BREAKING CHANGES

README.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -27,12 +27,12 @@ maven
2727
<dependency>
2828
<groupId>com.cryptape.cita</groupId>
2929
<artifactId>core</artifactId>
30-
<version>0.21</version>
30+
<version>0.22.1</version>
3131
</dependency>
3232
```
3333
Gradle
3434
```
35-
compile 'com.cryptape.cita:core:0.21'
35+
compile 'com.cryptape.cita:core:0.22.1'
3636
```
3737

3838
Install manually
@@ -161,12 +161,12 @@ Gradle 4.3
161161
<dependency>
162162
<groupId>com.cryptape.cita</groupId>
163163
<artifactId>core</artifactId>
164-
<version>0.21</version>
164+
<version>0.22.1</version>
165165
</dependency>
166166
```
167167
Gradle
168168
```
169-
compile 'com.cryptape.cita:core:0.21'
169+
compile 'com.cryptape.cita:core:0.22.1'
170170
```
171171

172172
手动安装

build.gradle

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ allprojects {
4646
targetCompatibility = 1.8
4747

4848
group 'com.cryptape.cita'
49-
version '0.22'
49+
version '0.22.1'
5050

5151
apply plugin: 'java'
5252
apply plugin: 'jacoco'
@@ -142,7 +142,7 @@ configure(subprojects.findAll {it.name != 'integration-tests'}) {
142142
publications {
143143
mavenJava(MavenPublication) {
144144
groupId 'com.cryptape.cita'
145-
version '0.22'
145+
version '0.22.1'
146146
from components.java
147147

148148
artifact sourcesJar {

core/src/main/java/com/cryptape/cita/protocol/core/Request.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,6 @@ public class Request<S, T extends Response> {
1919

2020
private CITAjService CITAjService;
2121

22-
// Unfortunately require an instance of the type too, see
23-
// http://stackoverflow.com/a/3437930/3211687
2422
private Class<T> responseType;
2523

2624
public Request() {

core/src/main/java/com/cryptape/cita/protocol/core/methods/response/AppBlock.java

Lines changed: 0 additions & 108 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,13 @@
11
package com.cryptape.cita.protocol.core.methods.response;
22

3-
import java.io.IOException;
43
import java.math.BigInteger;
5-
import java.util.ArrayList;
6-
import java.util.Iterator;
74
import java.util.List;
85

9-
import com.fasterxml.jackson.core.JsonParser;
10-
import com.fasterxml.jackson.core.JsonToken;
11-
import com.fasterxml.jackson.databind.DeserializationContext;
12-
import com.fasterxml.jackson.databind.JsonDeserializer;
13-
import com.fasterxml.jackson.databind.JsonNode;
14-
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
15-
166
import com.cryptape.cita.protocol.core.Response;
177
import com.cryptape.cita.utils.Numeric;
188

19-
209
public class AppBlock extends Response<AppBlock.Block> {
2110

22-
@Override
23-
@JsonDeserialize(using = AppBlock.ResponseDeserialiser.class)
2411
public void setResult(Block result) {
2512
super.setResult(result);
2613
}
@@ -550,99 +537,4 @@ public Transaction get() {
550537
}
551538
}
552539

553-
public static class ResponseDeserialiser extends JsonDeserializer<Block> {
554-
//block meta
555-
String blockVersion;
556-
String blockHash;
557-
558-
//block header
559-
Long timeStamp;
560-
String prevHash;
561-
String number;
562-
String stateRoot;
563-
String transactionsRoot;
564-
String receiptsRoot;
565-
String quotaUsed;
566-
567-
//proof tendermint
568-
String proposer;
569-
String proposal;
570-
String height;
571-
String round;
572-
573-
@Override
574-
public Block deserialize(
575-
JsonParser jsonParser,
576-
DeserializationContext deserializationContext) throws IOException {
577-
if (jsonParser.getCurrentToken() != JsonToken.VALUE_NULL) {
578-
JsonNode node = jsonParser.getCodec().readTree(jsonParser);
579-
//block meta
580-
blockVersion = node.get("version").asText();
581-
blockHash = node.get("hash").asText();
582-
583-
//block header
584-
JsonNode headerNode = node.get("header");
585-
timeStamp = headerNode.get("timestamp").asLong();
586-
prevHash = headerNode.get("prevHash").asText();
587-
number = headerNode.get("number").asText();
588-
stateRoot = headerNode.get("stateRoot").asText();
589-
transactionsRoot = headerNode.get("transactionsRoot").asText();
590-
receiptsRoot = headerNode.get("receiptsRoot").asText();
591-
592-
//pre 0.20 gasUsed. 0.20 quotaUsed
593-
if (headerNode.get("gasUsed") != null) {
594-
quotaUsed = headerNode.get("gasUsed").asText();
595-
} else {
596-
quotaUsed = headerNode.get("quotaUsed").asText();
597-
}
598-
599-
proposer = headerNode.get("proposer").asText();
600-
601-
//proof tendermint
602-
JsonNode proofNode = node.get("header").get("proof").get("Bft");
603-
proposal = proofNode.get("proposal").asText();
604-
height = proofNode.get("height").asText();
605-
round = proofNode.get("round").asText();
606-
607-
//proof tendermint commits
608-
List<TendermintCommit> tendermintCommits = new ArrayList<>();
609-
JsonNode commitsNode = node.get("header")
610-
.get("proof").get("Bft").get("commits");
611-
Iterator<String> commitsAddress = commitsNode.fieldNames();
612-
while (commitsAddress.hasNext()) {
613-
String commitAddress = commitsAddress.next();
614-
String commit = commitsNode.get(commitAddress).asText();
615-
tendermintCommits.add(new TendermintCommit(commitAddress, commit));
616-
}
617-
618-
//body transactions
619-
List<TransactionObject> transactionObjs = new ArrayList<TransactionObject>();
620-
JsonNode transactionNode = node.get("body").get("transactions");
621-
Iterator<JsonNode> txNodes = transactionNode.elements();
622-
while (txNodes.hasNext()) {
623-
JsonNode txNode = txNodes.next();
624-
TransactionObject txToAdd = new TransactionObject();
625-
if (txNode.get("hash") == null && txNode.get("content") == null) {
626-
txToAdd.setHash(txNode.asText());
627-
} else {
628-
txToAdd.setHash(txNode.get("hash").asText());
629-
txToAdd.setContent(txNode.get("content").asText());
630-
}
631-
transactionObjs.add(txToAdd);
632-
}
633-
634-
Tendermint tendermint = new Tendermint(
635-
proposal, height, round,
636-
tendermintCommits.toArray(
637-
new TendermintCommit[tendermintCommits.size()]));
638-
639-
Header header = new Header(timeStamp, prevHash, number, stateRoot,
640-
transactionsRoot, receiptsRoot, quotaUsed, new Proof(tendermint), proposer);
641-
Body body = new Body(transactionObjs);
642-
return new Block(blockVersion, blockHash, header, body);
643-
} else {
644-
return null; // null is wrapped by Optional in above getter
645-
}
646-
}
647-
}
648540
}

core/src/main/java/com/cryptape/cita/protocol/core/methods/response/AppGetTransactionCount.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
import com.cryptape.cita.utils.Numeric;
77

88
/**
9-
* eth_getTransactionCount.
9+
* app_getTransactionCount.
1010
*/
1111
public class AppGetTransactionCount extends Response<String> {
1212
public boolean isEmpty() {
Lines changed: 1 addition & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,37 +1,14 @@
11
package com.cryptape.cita.protocol.core.methods.response;
22

3-
import java.io.IOException;
4-
5-
import com.cryptape.cita.protocol.ObjectMapperFactory;
63
import com.cryptape.cita.protocol.core.Response;
7-
import com.fasterxml.jackson.core.JsonParser;
8-
import com.fasterxml.jackson.core.JsonToken;
9-
import com.fasterxml.jackson.databind.DeserializationContext;
10-
import com.fasterxml.jackson.databind.JsonDeserializer;
11-
import com.fasterxml.jackson.databind.ObjectReader;
124

135
/**
14-
* eth_getTransactionReceipt.
6+
* app_getTransactionReceipt.
157
*/
168
public class AppGetTransactionReceipt extends Response<TransactionReceipt> {
179

1810
public TransactionReceipt getTransactionReceipt() {
1911
return getResult();
2012
}
2113

22-
public static class ResponseDeserialiser extends JsonDeserializer<TransactionReceipt> {
23-
24-
private ObjectReader objectReader = ObjectMapperFactory.getObjectReader();
25-
26-
@Override
27-
public TransactionReceipt deserialize(
28-
JsonParser jsonParser,
29-
DeserializationContext deserializationContext) throws IOException {
30-
if (jsonParser.getCurrentToken() != JsonToken.VALUE_NULL) {
31-
return objectReader.readValue(jsonParser, TransactionReceipt.class);
32-
} else {
33-
return null; // null is wrapped by Optional in above getter
34-
}
35-
}
36-
}
3714
}

core/src/main/java/com/cryptape/cita/protocol/core/methods/response/AppLog.java

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -15,18 +15,6 @@
1515
import com.cryptape.cita.protocol.ObjectMapperFactory;
1616
import com.cryptape.cita.protocol.core.Response;
1717

18-
/**
19-
* Log object returned by:
20-
* <ul>
21-
* <li>getFilterChanges</li>
22-
* <li>getFilterLogs</li>
23-
* <li>getLogs</li>
24-
* </ul>
25-
*
26-
* <p>See
27-
* <a href="https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_getfilterchanges">docs</a>
28-
* for further details.</p>
29-
*/
3018
public class AppLog extends Response<List<AppLog.LogResult>> {
3119

3220
@Override
Lines changed: 0 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -1,49 +1,11 @@
11
package com.cryptape.cita.protocol.core.methods.response;
22

3-
import java.io.IOException;
4-
5-
import com.fasterxml.jackson.core.JsonParser;
6-
import com.fasterxml.jackson.core.JsonToken;
7-
import com.fasterxml.jackson.databind.DeserializationContext;
8-
import com.fasterxml.jackson.databind.JsonDeserializer;
9-
import com.fasterxml.jackson.databind.ObjectReader;
10-
11-
import com.cryptape.cita.protocol.ObjectMapperFactory;
123
import com.cryptape.cita.protocol.core.Response;
134

14-
/**
15-
* Transaction object returned by:
16-
* <ul>
17-
* <li>eth_getTransactionByHash</li>
18-
* <li>eth_getTransactionByBlockHashAndIndex</li>
19-
* <li>eth_getTransactionByBlockNumberAndIndex</li>
20-
* </ul>
21-
*
22-
* <p>This differs slightly from the request {@link AppSendTransaction} Transaction object.</p>
23-
*
24-
* <p>See
25-
* <a href="https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_gettransactionbyhash">docs</a>
26-
* for further details.</p>
27-
*/
285
public class AppTransaction extends Response<Transaction> {
296

307
public Transaction getTransaction() {
318
return getResult();
329
}
3310

34-
public static class ResponseDeserialiser extends JsonDeserializer<Transaction> {
35-
36-
private ObjectReader objectReader = ObjectMapperFactory.getObjectReader();
37-
38-
@Override
39-
public Transaction deserialize(
40-
JsonParser jsonParser,
41-
DeserializationContext deserializationContext) throws IOException {
42-
if (jsonParser.getCurrentToken() != JsonToken.VALUE_NULL) {
43-
return objectReader.readValue(jsonParser, Transaction.class);
44-
} else {
45-
return null; // null is wrapped by Optional in above getter
46-
}
47-
}
48-
}
4911
}

0 commit comments

Comments
 (0)