Skip to content

Commit 1b9e3c5

Browse files
committed
Implemented MirrorNodeClient.queryTransaction
1 parent de02ad9 commit 1b9e3c5

File tree

7 files changed

+90
-44
lines changed

7 files changed

+90
-44
lines changed

hiero-enterprise-base/src/main/java/com/openelements/hiero/base/data/TransactionInfo.java

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,6 @@ public TransactionInfo(@NonNull String transactionId){
5252
);
5353
Objects.requireNonNull(transactionId, "transactionId must not be null");
5454

55-
5655
}
5756

5857
public TransactionInfo (Byte bytes,
@@ -96,8 +95,6 @@ public TransactionInfo (Byte bytes,
9695
this.transfers= transfers;
9796
this.validDurationSeconds= validDurationSeconds;
9897
this.validStartTimestamp= validStartTimestamp;
99-
100-
10198
}
10299
}
103100

hiero-enterprise-base/src/main/java/com/openelements/hiero/base/implementation/TransactionRepositoryImpl.java

Lines changed: 47 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,16 @@
22

33
import com.hedera.hashgraph.sdk.AccountId;
44
import com.openelements.hiero.base.HieroException;
5+
import com.openelements.hiero.base.data.*;
56
import com.openelements.hiero.base.mirrornode.TransactionRepository;
67
import com.openelements.hiero.base.mirrornode.MirrorNodeClient;
7-
import com.openelements.hiero.base.data.Page;
8-
import com.openelements.hiero.base.data.TransactionInfo;
8+
9+
import java.util.ArrayList;
10+
import java.util.List;
911
import java.util.Objects;
1012
import java.util.Optional;
1113
import org.jspecify.annotations.NonNull;
14+
import org.jspecify.annotations.Nullable;
1215

1316

1417
public class TransactionRepositoryImpl implements TransactionRepository {
@@ -29,6 +32,47 @@ public Page<TransactionInfo> findByAccount(@NonNull final AccountId accountId) t
2932
@Override
3033
public Optional<TransactionInfo> findById(@NonNull final String transactionId) throws HieroException {
3134
Objects.requireNonNull(transactionId, "transactionId must not be null");
32-
return this.mirrorNodeClient.queryTransaction(transactionId);
35+
36+
37+
@Nullable Byte bytes = 0;
38+
long chargedTxFee = 0;
39+
String consensusTimeStamp = "";
40+
String entityId = "";
41+
String maxFee = "";
42+
String memoBase64 = "";
43+
String name = "";
44+
List<NftTransfers> nftTransfers = List.of();
45+
String node = "";
46+
int nonce = 0;
47+
@Nullable String parentConsensusTimestamp = "";
48+
String result = "";
49+
boolean scheduled =false;
50+
List<StakingRewardTransfers> stakingRewardTransfers = List.of();
51+
List<TokenTransfers> tokenTransfers = List.of();
52+
String transactionHash = "";
53+
List<Transfers> transfers = List.of();
54+
String validDurationSeconds = "";
55+
String validStartTimestamp = "";
56+
57+
return this.mirrorNodeClient.queryTransaction( bytes,
58+
chargedTxFee,
59+
consensusTimeStamp,
60+
entityId,
61+
maxFee,
62+
memoBase64,
63+
name,
64+
nftTransfers,
65+
node,
66+
nonce,
67+
parentConsensusTimestamp,
68+
result,
69+
scheduled,
70+
stakingRewardTransfers,
71+
tokenTransfers,
72+
transactionHash,
73+
transactionId,
74+
transfers,
75+
validDurationSeconds,
76+
validStartTimestamp);
3377
}
3478
}

hiero-enterprise-base/src/main/java/com/openelements/hiero/base/mirrornode/MirrorNodeClient.java

Lines changed: 28 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -3,22 +3,13 @@
33
import com.hedera.hashgraph.sdk.AccountId;
44
import com.hedera.hashgraph.sdk.TokenId;
55
import com.openelements.hiero.base.HieroException;
6-
import com.openelements.hiero.base.data.AccountInfo;
7-
import com.openelements.hiero.base.data.Balance;
8-
import com.openelements.hiero.base.data.ExchangeRates;
9-
import com.openelements.hiero.base.data.NetworkFee;
10-
import com.openelements.hiero.base.data.NetworkStake;
11-
import com.openelements.hiero.base.data.NetworkSupplies;
12-
import com.openelements.hiero.base.data.Nft;
13-
import com.openelements.hiero.base.data.NftMetadata;
14-
import com.openelements.hiero.base.data.Page;
15-
import com.openelements.hiero.base.data.Token;
16-
import com.openelements.hiero.base.data.TokenInfo;
17-
import com.openelements.hiero.base.data.TransactionInfo;
6+
import com.openelements.hiero.base.data.*;
7+
188
import java.util.List;
199
import java.util.Objects;
2010
import java.util.Optional;
2111
import org.jspecify.annotations.NonNull;
12+
import org.jspecify.annotations.Nullable;
2213

2314
/**
2415
* A client for querying the Hiero Mirror Node REST API.
@@ -136,7 +127,7 @@ default Optional<Nft> queryNftsByTokenIdAndSerial(@NonNull String tokenId, long
136127
*/
137128
@NonNull
138129
default Optional<Nft> queryNftsByAccountAndTokenIdAndSerial(@NonNull AccountId accountId, @NonNull TokenId tokenId,
139-
long serialNumber) throws HieroException {
130+
long serialNumber) throws HieroException {
140131
Objects.requireNonNull(accountId, "newAccountId must not be null");
141132
return queryNftsByTokenIdAndSerial(tokenId, serialNumber)
142133
.filter(nft -> Objects.equals(nft.owner(), accountId));
@@ -153,7 +144,7 @@ default Optional<Nft> queryNftsByAccountAndTokenIdAndSerial(@NonNull AccountId a
153144
*/
154145
@NonNull
155146
default Optional<Nft> queryNftsByAccountAndTokenIdAndSerial(@NonNull String accountId, @NonNull String tokenId,
156-
long serialNumber) throws HieroException {
147+
long serialNumber) throws HieroException {
157148
Objects.requireNonNull(accountId, "accountId must not be null");
158149
Objects.requireNonNull(tokenId, "tokenId must not be null");
159150
return queryNftsByAccountAndTokenIdAndSerial(AccountId.fromString(accountId), TokenId.fromString(tokenId),
@@ -179,7 +170,28 @@ default Optional<Nft> queryNftsByAccountAndTokenIdAndSerial(@NonNull String acco
179170
* @throws HieroException if an error occurs
180171
*/
181172
@NonNull
182-
Optional<TransactionInfo> queryTransaction(@NonNull String transactionId) throws HieroException;
173+
Optional<TransactionInfo> queryTransaction(@Nullable Byte bytes,
174+
long chargedTxFee,
175+
String consensusTimeStamp,
176+
String entityId,
177+
String maxFee,
178+
String memoBase64,
179+
String name,
180+
List<NftTransfers> nftTransfers,
181+
String node,
182+
int nonce,
183+
@Nullable String parentConsensusTimestamp,
184+
String result,
185+
boolean scheduled,
186+
List<StakingRewardTransfers> stakingRewardTransfers,
187+
List<TokenTransfers> tokenTransfers,
188+
String transactionHash,
189+
@NonNull String transactionId,
190+
List<Transfers> transfers,
191+
String validDurationSeconds,
192+
String validStartTimestamp) throws HieroException;
193+
194+
Optional<TransactionInfo> queryTransaction(String transactionId) throws HieroException;
183195

184196
/**
185197
* Queries the account information for a specific account ID.
@@ -345,4 +357,4 @@ default Page<Balance> queryTokenBalancesForAccount(@NonNull String tokenId, @Non
345357

346358
@NonNull
347359
Page<NftMetadata> findAllNftTypes();
348-
}
360+
}

hiero-enterprise-microprofile/src/main/java/com/openelements/hiero/microprofile/implementation/MirrorNodeClientImpl.java

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,7 @@
33
import com.hedera.hashgraph.sdk.AccountId;
44
import com.hedera.hashgraph.sdk.TokenId;
55
import com.openelements.hiero.base.HieroException;
6-
import com.openelements.hiero.base.data.Nft;
7-
import com.openelements.hiero.base.data.NftMetadata;
8-
import com.openelements.hiero.base.data.Page;
9-
import com.openelements.hiero.base.data.TransactionInfo;
10-
import com.openelements.hiero.base.data.Token;
11-
import com.openelements.hiero.base.data.Balance;
6+
import com.openelements.hiero.base.data.*;
127
import com.openelements.hiero.base.implementation.AbstractMirrorNodeClient;
138
import com.openelements.hiero.base.implementation.MirrorNodeJsonConverter;
149
import com.openelements.hiero.base.implementation.MirrorNodeRestClient;
@@ -18,6 +13,7 @@
1813
import java.util.Optional;
1914
import java.util.function.Function;
2015
import org.jspecify.annotations.NonNull;
16+
import org.jspecify.annotations.Nullable;
2117

2218
public class MirrorNodeClientImpl extends AbstractMirrorNodeClient<JsonObject> {
2319

@@ -64,8 +60,8 @@ public MirrorNodeClientImpl(MirrorNodeRestClientImpl restClient,
6460
}
6561

6662
@Override
67-
public @NonNull Optional<TransactionInfo> queryTransaction(@NonNull String transactionId) throws HieroException {
68-
throw new RuntimeException("Not implemented");
63+
public @NonNull Optional<TransactionInfo> queryTransaction(@Nullable Byte bytes, long chargedTxFee, String consensusTimeStamp, String entityId, String maxFee, String memoBase64, String name, List<NftTransfers> nftTransfers, String node, int nonce, @Nullable String parentConsensusTimestamp, String result, boolean scheduled, List<StakingRewardTransfers> stakingRewardTransfers, List<TokenTransfers> tokenTransfers, String transactionHash, @NonNull String transactionId, List<Transfers> transfers, String validDurationSeconds, String validStartTimestamp) throws HieroException {
64+
return Optional.empty();
6965
}
7066

7167
@Override

hiero-enterprise-microprofile/src/main/java/com/openelements/hiero/microprofile/implementation/MirrorNodeJsonConverterImpl.java

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -150,9 +150,6 @@ public class MirrorNodeJsonConverterImpl implements MirrorNodeJsonConverter<Json
150150

151151
final JsonArray transactionsNode = jsonObject.getJsonArray("transactions");
152152

153-
154-
155-
156153
return jsonArrayToStream(transactionsNode)
157154
.map(n -> {
158155
try {

hiero-enterprise-spring/src/main/java/com/openelements/hiero/spring/implementation/MirrorNodeClientImpl.java

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,7 @@
55
import com.hedera.hashgraph.sdk.AccountId;
66
import com.hedera.hashgraph.sdk.TokenId;
77
import com.openelements.hiero.base.HieroException;
8-
import com.openelements.hiero.base.data.Nft;
9-
import com.openelements.hiero.base.data.NftMetadata;
10-
import com.openelements.hiero.base.data.Page;
11-
import com.openelements.hiero.base.data.TransactionInfo;
12-
import com.openelements.hiero.base.data.Balance;
13-
import com.openelements.hiero.base.data.Token;
8+
import com.openelements.hiero.base.data.*;
149
import com.openelements.hiero.base.implementation.AbstractMirrorNodeClient;
1510
import com.openelements.hiero.base.implementation.MirrorNodeJsonConverter;
1611
import com.openelements.hiero.base.implementation.MirrorNodeRestClient;
@@ -19,6 +14,7 @@
1914
import java.util.Optional;
2015
import java.util.function.Function;
2116
import org.jspecify.annotations.NonNull;
17+
import org.jspecify.annotations.Nullable;
2218
import org.springframework.web.client.RestClient;
2319

2420
public class MirrorNodeClientImpl extends AbstractMirrorNodeClient<JsonNode> {
@@ -88,15 +84,21 @@ public Page<TransactionInfo> queryTransactionsByAccount(@NonNull final AccountId
8884
}
8985

9086
@Override
91-
public Optional<TransactionInfo> queryTransaction(@NonNull final String transactionId) throws HieroException {
87+
public @NonNull Optional<TransactionInfo> queryTransaction(@Nullable Byte bytes, long chargedTxFee, String consensusTimeStamp, String entityId, String maxFee, String memoBase64, String name, List<NftTransfers> nftTransfers, String node, int nonce, @Nullable String parentConsensusTimestamp, String result, boolean scheduled, List<StakingRewardTransfers> stakingRewardTransfers, List<TokenTransfers> tokenTransfers, String transactionHash, @NonNull String transactionId, List<Transfers> transfers, String validDurationSeconds, String validStartTimestamp) throws HieroException {
88+
9289
final JsonNode jsonNode = mirrorNodeRestClient.queryTransaction(transactionId);
93-
//TODO: I assume there is a better check
94-
if (jsonNode == null || !jsonNode.fieldNames().hasNext()) {
90+
if (jsonNode == null || jsonNode.isEmpty()) {
9591
return Optional.empty();
9692
}
9793
return Optional.of(new TransactionInfo(transactionId));
9894
}
9995

96+
@Override
97+
public Optional<TransactionInfo> queryTransaction(String transactionId) throws HieroException {
98+
return Optional.empty();
99+
}
100+
101+
100102
@Override
101103
public Page<Token> queryTokensForAccount(@NonNull AccountId accountId) throws HieroException {
102104
Objects.requireNonNull(accountId, "accountId must not be null");

hiero-enterprise-spring/src/main/java/com/openelements/hiero/spring/implementation/MirrorNodeJsonConverterImpl.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -176,8 +176,6 @@ public List<NetworkFee> toNetworkFees(final JsonNode node) {
176176
.map(n -> {
177177
try {
178178

179-
180-
181179
// Converting NftTransfers Object.
182180
JsonNode nftTransfersNode= transactionsNode.get("nft_transfers");
183181
List<NftTransfers> nftTransfers= new ArrayList<>();

0 commit comments

Comments
 (0)