Skip to content

Commit

Permalink
add getProxyAccount and getAutoRenewAccount to TransactionHandler
Browse files Browse the repository at this point in the history
Signed-off-by: Apekshit Sharma <[email protected]>
  • Loading branch information
apeksharma committed Jun 9, 2020
1 parent ccfd243 commit 9a5ed4c
Show file tree
Hide file tree
Showing 26 changed files with 95 additions and 102 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -32,8 +32,6 @@
import com.hederahashgraph.api.proto.java.TransactionBody;
import com.hederahashgraph.api.proto.java.TransactionRecord;
import com.hederahashgraph.api.proto.java.TransferList;
import java.util.ArrayList;
import java.util.List;
import java.util.function.Predicate;
import javax.inject.Named;
import lombok.extern.log4j.Log4j2;
Expand Down Expand Up @@ -97,7 +95,7 @@ public void onItem(RecordItem recordItem) throws ImporterException {
TransactionHandler transactionHandler = transactionHandlerFactory.create(body);

long consensusNs = Utility.timeStampInNanos(txRecord.getConsensusTimestamp());
EntityId entityId = transactionHandler.getEntityId(recordItem);
EntityId entityId = transactionHandler.getEntity(recordItem);
TransactionTypeEnum transactionTypeEnum = TransactionTypeEnum.of(recordItem.getTransactionType());
log.debug("Processing {} transaction {} for entity {}", transactionTypeEnum, consensusNs, entityId);

Expand Down Expand Up @@ -346,10 +344,18 @@ private void updateEntity(
// TODO: remove lookup and batch this update with rest of the db operations. Options: upsert.
Entities entity = entityRepository.findById(entityId.getId())
.orElseGet(entityId::toEntity);
List<EntityId> linkedEntityIds = new ArrayList<>();
transactionHandler.updateEntity(entity, recordItem, linkedEntityIds);
for (var id : linkedEntityIds) {
entityListener.onEntityId(id);
transactionHandler.updateEntity(entity, recordItem);
EntityId autoRenewAccount = transactionHandler.getAutoRenewAccount(recordItem);
if (autoRenewAccount != null) {
entityListener.onEntityId(autoRenewAccount);
entity.setAutoRenewAccount(autoRenewAccount);
}
// Stream contains transactions with proxyAccountID explicitly set to '0.0.0'. However it's not a valid entity,
// so no need to persist it to repo.
EntityId proxyAccount = transactionHandler.getProxyAccount(recordItem);
if (proxyAccount != null) {
entityListener.onEntityId(proxyAccount);
entity.setProxyAccount(proxyAccount);
}
entityRepository.save(entity);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ public void onItem(RecordItem recordItem) throws ImporterException {
TransactionHandler transactionHandler = transactionHandlerFactory.create(body);
log.trace("Storing transaction body: {}", () -> Utility.printProtoMessage(body));
long consensusTimestamp = Utility.timeStampInNanos(txRecord.getConsensusTimestamp());
EntityId entity = transactionHandler.getEntityId(recordItem);
EntityId entity = transactionHandler.getEntity(recordItem);
PubSubMessage pubSubMessage = buildPubSubMessage(consensusTimestamp, entity, recordItem);
try {
sendPubSubMessage(pubSubMessage);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,6 @@
* ‍
*/

import java.util.List;
import javax.inject.Named;
import lombok.AllArgsConstructor;

Expand All @@ -33,24 +32,23 @@
public class ConsensusCreateTopicTransactionHandler implements TransactionHandler {

@Override
public EntityId getEntityId(RecordItem recordItem) {
public EntityId getEntity(RecordItem recordItem) {
return EntityId.of(recordItem.getRecord().getReceipt().getTopicID());
}

@Override
public EntityId getAutoRenewAccount(RecordItem recordItem) {
return EntityId.of(recordItem.getTransactionBody().getConsensusCreateTopic().getAutoRenewAccount());
}

@Override
public boolean updatesEntity() {
return true;
}

@Override
public void updateEntity(Entities entity, RecordItem recordItem, List<EntityId> linkedEntityIds) {
public void updateEntity(Entities entity, RecordItem recordItem) {
var createTopic = recordItem.getTransactionBody().getConsensusCreateTopic();
// Looks up (in the big cache) or creates new id.
EntityId autoRenewAccount = EntityId.of(createTopic.getAutoRenewAccount());
if (autoRenewAccount != null) {
linkedEntityIds.add(autoRenewAccount);
entity.setAutoRenewAccount(autoRenewAccount);
}
if (createTopic.hasAutoRenewPeriod()) {
entity.setAutoRenewPeriod(createTopic.getAutoRenewPeriod().getSeconds());
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,6 @@
* ‍
*/

import java.util.List;
import javax.inject.Named;
import lombok.AllArgsConstructor;

Expand All @@ -33,7 +32,7 @@
public class ConsensusDeleteTopicTransactionHandler implements TransactionHandler {

@Override
public EntityId getEntityId(RecordItem recordItem) {
public EntityId getEntity(RecordItem recordItem) {
return EntityId.of(recordItem.getTransactionBody().getConsensusDeleteTopic().getTopicID());
}

Expand All @@ -43,7 +42,7 @@ public boolean updatesEntity() {
}

@Override
public void updateEntity(Entities entity, RecordItem recordItem, List<EntityId> linkedEntityIds) {
public void updateEntity(Entities entity, RecordItem recordItem) {
entity.setDeleted(true);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@
public class ConsensusSubmitMessageTransactionHandler implements TransactionHandler {

@Override
public EntityId getEntityId(RecordItem recordItem) {
public EntityId getEntity(RecordItem recordItem) {
return EntityId.of(recordItem.getTransactionBody().getConsensusSubmitMessage().getTopicID());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,6 @@
*/

import com.hederahashgraph.api.proto.java.Timestamp;
import java.util.List;
import javax.inject.Named;
import lombok.AllArgsConstructor;

Expand All @@ -35,28 +34,27 @@
public class ConsensusUpdateTopicTransactionHandler implements TransactionHandler {

@Override
public EntityId getEntityId(RecordItem recordItem) {
public EntityId getEntity(RecordItem recordItem) {
return EntityId.of(recordItem.getTransactionBody().getConsensusUpdateTopic().getTopicID());
}

@Override
public EntityId getAutoRenewAccount(RecordItem recordItem) {
return EntityId.of(recordItem.getTransactionBody().getConsensusUpdateTopic().getAutoRenewAccount());
}

@Override
public boolean updatesEntity() {
return true;
}

@Override
public void updateEntity(Entities entity, RecordItem recordItem, List<EntityId> linkedEntityIds) {
public void updateEntity(Entities entity, RecordItem recordItem) {
var updateTopic = recordItem.getTransactionBody().getConsensusUpdateTopic();
if (updateTopic.hasExpirationTime()) {
Timestamp expirationTime = updateTopic.getExpirationTime();
entity.setExpiryTimeNs(Utility.timestampInNanosMax(expirationTime));
}
// Looks up (in the big cache) or creates new id.
EntityId autoRenewAccount = EntityId.of(updateTopic.getAutoRenewAccount());
if (autoRenewAccount != null) {
linkedEntityIds.add(autoRenewAccount);
entity.setAutoRenewAccount(autoRenewAccount);
}
if (updateTopic.hasAutoRenewPeriod()) {
entity.setAutoRenewPeriod(updateTopic.getAutoRenewPeriod().getSeconds());
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@
public class ContractCallTransactionHandler implements TransactionHandler {

@Override
public EntityId getEntityId(RecordItem recordItem) {
public EntityId getEntity(RecordItem recordItem) {
return EntityId.of(recordItem.getTransactionBody().getContractCall().getContractID());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,6 @@
*/

import com.hederahashgraph.api.proto.java.ContractCreateTransactionBody;
import java.util.List;
import javax.inject.Named;
import lombok.AllArgsConstructor;

Expand All @@ -35,7 +34,7 @@
public class ContractCreateTransactionHandler implements TransactionHandler {

@Override
public EntityId getEntityId(RecordItem recordItem) {
public EntityId getEntity(RecordItem recordItem) {
return EntityId.of(recordItem.getRecord().getReceipt().getContractID());
}

Expand All @@ -44,13 +43,18 @@ public boolean updatesEntity() {
return true;
}

@Override
public EntityId getProxyAccount(RecordItem recordItem) {
return EntityId.of(recordItem.getTransactionBody().getContractCreateInstance().getProxyAccountID());
}

@Override
public void updateTransaction(Transaction transaction, RecordItem recordItem) {
transaction.setInitialBalance(recordItem.getTransactionBody().getContractCreateInstance().getInitialBalance());
}

@Override
public void updateEntity(Entities entity, RecordItem recordItem, List<EntityId> linkedEntityIds) {
public void updateEntity(Entities entity, RecordItem recordItem) {
ContractCreateTransactionBody txMessage = recordItem.getTransactionBody().getContractCreateInstance();
if (txMessage.hasAutoRenewPeriod()) {
entity.setAutoRenewPeriod(txMessage.getAutoRenewPeriod().getSeconds());
Expand All @@ -62,12 +66,5 @@ public void updateEntity(Entities entity, RecordItem recordItem, List<EntityId>
if (txMessage.hasAdminKey()) {
entity.setKey(txMessage.getAdminKey().toByteArray());
}
// Stream contains transactions with proxyAccountID explicitly set to '0.0.0'. However it's not a valid entity,
// so no need to persist it to repo.
EntityId proxyAccount = EntityId.of(txMessage.getProxyAccountID());
if (proxyAccount != null) {
linkedEntityIds.add(proxyAccount);
entity.setProxyAccount(proxyAccount);
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,6 @@
* ‍
*/

import java.util.List;
import javax.inject.Named;
import lombok.AllArgsConstructor;

Expand All @@ -33,7 +32,7 @@
public class ContractDeleteTransactionHandler implements TransactionHandler {

@Override
public EntityId getEntityId(RecordItem recordItem) {
public EntityId getEntity(RecordItem recordItem) {
return EntityId.of(recordItem.getTransactionBody().getContractDeleteInstance().getContractID());
}

Expand All @@ -43,7 +42,7 @@ public boolean updatesEntity() {
}

@Override
public void updateEntity(Entities entity, RecordItem recordItem, List<EntityId> linkedEntityIds) {
public void updateEntity(Entities entity, RecordItem recordItem) {
entity.setDeleted(true);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,6 @@
*/

import com.hederahashgraph.api.proto.java.ContractUpdateTransactionBody;
import java.util.List;
import javax.inject.Named;
import lombok.AllArgsConstructor;

Expand All @@ -35,17 +34,22 @@
public class ContractUpdateTransactionHandler implements TransactionHandler {

@Override
public EntityId getEntityId(RecordItem recordItem) {
public EntityId getEntity(RecordItem recordItem) {
return EntityId.of(recordItem.getTransactionBody().getContractUpdateInstance().getContractID());
}

@Override
public EntityId getProxyAccount(RecordItem recordItem) {
return EntityId.of(recordItem.getTransactionBody().getContractUpdateInstance().getProxyAccountID());
}

@Override
public boolean updatesEntity() {
return true;
}

@Override
public void updateEntity(Entities entity, RecordItem recordItem, List<EntityId> linkedEntityIds) {
public void updateEntity(Entities entity, RecordItem recordItem) {
ContractUpdateTransactionBody txMessage = recordItem.getTransactionBody().getContractUpdateInstance();
if (txMessage.hasExpirationTime()) {
entity.setExpiryTimeNs(Utility.timestampInNanosMax(txMessage.getExpirationTime()));
Expand All @@ -60,10 +64,5 @@ public void updateEntity(Entities entity, RecordItem recordItem, List<EntityId>
if (txMessage.getMemo() != null && txMessage.getMemo().length() > 0) {
entity.setMemo(txMessage.getMemo());
}
EntityId proxyAccount = EntityId.of(txMessage.getProxyAccountID());
if (proxyAccount != null) {
linkedEntityIds.add(proxyAccount);
entity.setProxyAccount(proxyAccount);
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@
public class CryptoAddLiveHashTransactionHandler implements TransactionHandler {

@Override
public EntityId getEntityId(RecordItem recordItem) {
public EntityId getEntity(RecordItem recordItem) {
return EntityId.of(recordItem.getTransactionBody().getCryptoAddLiveHash().getLiveHash().getAccountId());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,6 @@
*/

import com.hederahashgraph.api.proto.java.CryptoCreateTransactionBody;
import java.util.List;
import javax.inject.Named;
import lombok.AllArgsConstructor;

Expand All @@ -35,10 +34,15 @@
public class CryptoCreateTransactionHandler implements TransactionHandler {

@Override
public EntityId getEntityId(RecordItem recordItem) {
public EntityId getEntity(RecordItem recordItem) {
return EntityId.of(recordItem.getRecord().getReceipt().getAccountID());
}

@Override
public EntityId getProxyAccount(RecordItem recordItem) {
return EntityId.of(recordItem.getTransactionBody().getCryptoCreateAccount().getProxyAccountID());
}

@Override
public boolean updatesEntity() {
return true;
Expand All @@ -50,18 +54,13 @@ public void updateTransaction(Transaction transaction, RecordItem recordItem) {
}

@Override
public void updateEntity(Entities entity, RecordItem recordItem, List<EntityId> linkedEntityIds) {
public void updateEntity(Entities entity, RecordItem recordItem) {
CryptoCreateTransactionBody txMessage = recordItem.getTransactionBody().getCryptoCreateAccount();
if (txMessage.hasAutoRenewPeriod()) {
entity.setAutoRenewPeriod(txMessage.getAutoRenewPeriod().getSeconds());
}
if (txMessage.hasKey()) {
entity.setKey(txMessage.getKey().toByteArray());
}
EntityId proxyAccount = EntityId.of(txMessage.getProxyAccountID());
if (proxyAccount != null) {
linkedEntityIds.add(proxyAccount);
entity.setProxyAccount(proxyAccount);
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@
public class CryptoDeleteLiveHashTransactionHandler implements TransactionHandler {

@Override
public EntityId getEntityId(RecordItem recordItem) {
public EntityId getEntity(RecordItem recordItem) {
return EntityId.of(recordItem.getTransactionBody().getCryptoDeleteLiveHash().getAccountOfLiveHash());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,6 @@
* ‍
*/

import java.util.List;
import javax.inject.Named;
import lombok.AllArgsConstructor;

Expand All @@ -33,7 +32,7 @@
public class CryptoDeleteTransactionHandler implements TransactionHandler {

@Override
public EntityId getEntityId(RecordItem recordItem) {
public EntityId getEntity(RecordItem recordItem) {
return EntityId.of(recordItem.getTransactionBody().getCryptoDelete().getDeleteAccountID());
}

Expand All @@ -43,7 +42,7 @@ public boolean updatesEntity() {
}

@Override
public void updateEntity(Entities entity, RecordItem recordItem, List<EntityId> linkedEntityIds) {
public void updateEntity(Entities entity, RecordItem recordItem) {
entity.setDeleted(true);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@
public class CryptoTransferTransactionHandler implements TransactionHandler {

@Override
public EntityId getEntityId(RecordItem recordItem) {
public EntityId getEntity(RecordItem recordItem) {
return null;
}
}
Loading

0 comments on commit 9a5ed4c

Please sign in to comment.