use of com.hederahashgraph.api.proto.java.FileID in project hedera-mirror-node by hashgraph.
the class EntityRecordItemListenerFileTest method fileCreatePersistSystemNegative.
@Test
void fileCreatePersistSystemNegative() {
entityProperties.getPersist().setFiles(false);
Transaction transaction = fileCreateTransaction();
TransactionBody transactionBody = getTransactionBody(transaction);
FileID fileID = FileID.newBuilder().setShardNum(0).setRealmNum(0).setFileNum(2000).build();
TransactionRecord record = transactionRecord(transactionBody, fileID);
parseRecordItemAndCommit(new RecordItem(transaction, record));
assertAll(() -> assertRowCountOnSuccessNoData(fileID), () -> assertTransactionAndRecord(transactionBody, record), () -> assertFileEntity(transactionBody.getFileCreate(), record.getConsensusTimestamp()));
}
use of com.hederahashgraph.api.proto.java.FileID in project hedera-mirror-node by hashgraph.
the class PubSubRecordItemListener method onItem.
@Override
public void onItem(RecordItem recordItem) throws ImporterException {
TransactionBody body = recordItem.getTransactionBody();
TransactionRecord txRecord = recordItem.getRecord();
TransactionType transactionType = TransactionType.of(recordItem.getTransactionType());
TransactionHandler transactionHandler = transactionHandlerFactory.get(transactionType);
log.trace("Storing transaction body: {}", () -> Utility.printProtoMessage(body));
long consensusTimestamp = DomainUtils.timeStampInNanos(txRecord.getConsensusTimestamp());
EntityId entityId;
try {
entityId = transactionHandler.getEntity(recordItem);
} catch (InvalidEntityException e) {
// transaction can have invalid topic/contract/file id
log.warn("Invalid entity encountered for consensusTimestamp {} : {}", consensusTimestamp, e.getMessage());
entityId = null;
}
PubSubMessage pubSubMessage = buildPubSubMessage(consensusTimestamp, entityId, recordItem);
try {
sendPubSubMessage(pubSubMessage);
} catch (Exception e) {
// greater than that of last correctly sent txn.
throw new ParserException("Error sending transaction to pubsub", e);
}
log.debug("Published transaction : {}", consensusTimestamp);
if (addressBookService.isAddressBook(entityId)) {
FileID fileID = null;
byte[] fileBytes = null;
if (body.hasFileAppend()) {
fileID = body.getFileAppend().getFileID();
fileBytes = body.getFileAppend().getContents().toByteArray();
} else if (body.hasFileCreate()) {
fileID = txRecord.getReceipt().getFileID();
fileBytes = body.getFileCreate().getContents().toByteArray();
} else if (body.hasFileUpdate()) {
fileID = body.getFileUpdate().getFileID();
fileBytes = body.getFileUpdate().getContents().toByteArray();
}
FileData fileData = new FileData(consensusTimestamp, fileBytes, EntityId.of(fileID), recordItem.getTransactionType());
fileDataRepository.save(fileData);
addressBookService.update(fileData);
}
}
use of com.hederahashgraph.api.proto.java.FileID in project hedera-mirror-node by hashgraph.
the class NetworkControllerTest method missingFileId.
@Test
void missingFileId() {
AddressBookQuery query = AddressBookQuery.newBuilder().build();
reactiveService.getNodes(Mono.just(query)).as(StepVerifier::create).expectErrorSatisfies(t -> assertException(t, Status.Code.INVALID_ARGUMENT, "fileId: must not be null")).verify(Duration.ofSeconds(1L));
}
use of com.hederahashgraph.api.proto.java.FileID in project hedera-services by hashgraph.
the class FileSysUndelTransitionLogicTest method givenTxnCtxSysUndeleting.
private void givenTxnCtxSysUndeleting(TargetType type, OldExpiryType expiryType) {
SystemUndeleteTransactionBody.Builder op = SystemUndeleteTransactionBody.newBuilder();
FileID id = null;
switch(type) {
case VALID:
op.setFileID(undeleted);
id = undeleted;
break;
case MISSING:
op.setFileID(missing);
id = missing;
break;
case DELETED:
op.setFileID(deleted);
id = deleted;
break;
}
EntityId entity = EntityId.fromGrpcFileId(id);
switch(expiryType) {
case NONE:
given(oldExpiries.containsKey(entity)).willReturn(false);
given(oldExpiries.get(entity)).willReturn(null);
break;
case FUTURE:
given(oldExpiries.containsKey(entity)).willReturn(true);
given(oldExpiries.get(entity)).willReturn(oldFutureExpiry);
break;
case PAST:
given(oldExpiries.containsKey(entity)).willReturn(true);
given(oldExpiries.get(entity)).willReturn(oldPastExpiry);
break;
}
txnId = TransactionID.newBuilder().setTransactionValidStart(MiscUtils.asTimestamp(Instant.ofEpochSecond(Instant.now().getEpochSecond()))).build();
fileSysUndelTxn = TransactionBody.newBuilder().setTransactionID(txnId).setTransactionValidDuration(Duration.newBuilder().setSeconds(180)).setSystemUndelete(op).build();
given(accessor.getTxn()).willReturn(fileSysUndelTxn);
given(txnCtx.accessor()).willReturn(accessor);
given(txnCtx.consensusTime()).willReturn(Instant.ofEpochSecond(now));
}
use of com.hederahashgraph.api.proto.java.FileID in project hedera-services by hashgraph.
the class HapiContractCreate method opBodyDef.
@Override
protected Consumer<TransactionBody.Builder> opBodyDef(HapiApiSpec spec) throws Throwable {
if (!omitAdminKey && !useDeprecatedAdminKey) {
generateAdminKey(spec);
}
if (bytecodeFileFn.isPresent()) {
bytecodeFile = Optional.of(bytecodeFileFn.get().get());
}
if (!bytecodeFile.isPresent()) {
setBytecodeToDefaultContract(spec);
}
Optional<byte[]> params;
if (explicitHexedParams.isPresent()) {
params = explicitHexedParams.map(Supplier::get).map(CommonUtils::unhex);
} else {
params = abi.isPresent() ? Optional.of(CallTransaction.Function.fromJsonInterface(abi.get()).encodeArguments(args.get())) : Optional.empty();
}
FileID bytecodeFileId = TxnUtils.asFileId(bytecodeFile.get(), spec);
ContractCreateTransactionBody opBody = spec.txns().<ContractCreateTransactionBody, ContractCreateTransactionBody.Builder>body(ContractCreateTransactionBody.class, b -> {
if (useDeprecatedAdminKey) {
b.setAdminKey(DEPRECATED_CID_ADMIN_KEY);
} else if (!omitAdminKey) {
b.setAdminKey(adminKey);
}
b.setFileID(bytecodeFileId);
autoRenewPeriodSecs.ifPresent(p -> b.setAutoRenewPeriod(Duration.newBuilder().setSeconds(p).build()));
balance.ifPresent(b::setInitialBalance);
memo.ifPresent(b::setMemo);
gas.ifPresent(b::setGas);
proxy.ifPresent(p -> b.setProxyAccountID(asId(p, spec)));
params.ifPresent(bytes -> b.setConstructorParameters(ByteString.copyFrom(bytes)));
});
return b -> b.setContractCreateInstance(opBody);
}
Aggregations