public Optional<String> getTokenByIndex(final String platform, final String platformId, final long index) { final Function function = new Function("getTokenByIndex", Arrays.asList( new Bytes32(Arrays.copyOfRange(platform.getBytes(), 0, 32)), new Utf8String(platformId), new Uint(BigInteger.valueOf(index))), singletonList(new TypeReference<Address>() { })); try { return Optional.of(prettify(executeCallSingleValueReturn(function, String.class))); } catch (final Exception ex) { return empty(); } }
private boolean hasFailed(PendingFund fund) { return azraelClient.getTransactionStatus(prettify(fund.getTransactionHash())).equals(TransactionStatus.FAILED); } }
@Transactional @Override public void approve(Long requestClaimId) { RequestClaim requestClaim = requestClaimRepository.findOne(requestClaimId).orElseThrow(() -> new RuntimeException("Request claim not found")); Request request = requestRepository.findOne(requestClaim.getRequestId()).orElseThrow(ResourceNotFoundException::new); ClaimSignature sig = azraelClient.getSignature(createSignClaimCommand(requestClaim, request)); try { final ClaimTransaction claimTransaction = azraelClient.submitClaim(sig); request.setStatus(RequestStatus.CLAIM_APPROVED); requestClaim.setStatus(ClaimRequestStatus.APPROVED); requestClaim.setTransactionHash(prettify(claimTransaction.getTransactionHash())); requestClaim.setTransactionSubmitTime(LocalDateTime.now()); requestRepository.save(request); requestClaimRepository.save(requestClaim); } catch (final Exception ex) { throw new IllegalArgumentException("Unable to submit claim transaction: " + ex.getMessage()); } }
@Test public void shouldntRemoveWhenThrownExceptionFromAzrael() { final PendingFund pendingFund = PendingFundMother.aPendingFund(); when(pendingFundService.findAll()) .thenReturn(of(pendingFund)); when(azraelClient.getTransactionStatus(prettify(pendingFund.getTransactionHash()))).thenThrow(new IllegalArgumentException("problemos")); pendingFundCleaner.cleanupPendingFunds(); verify(pendingFundService, times(0)).removePendingFund(any(PendingFund.class)); } }
@Test public void shouldRemoveFailedPendingFunds() { final PendingFund pendingFund = PendingFundMother.aPendingFund(); when(pendingFundService.findAll()) .thenReturn(of(pendingFund)); when(azraelClient.getTransactionStatus(prettify(pendingFund.getTransactionHash()))).thenReturn(TransactionStatus.FAILED); pendingFundCleaner.cleanupPendingFunds(); verify(pendingFundService).removePendingFund(pendingFund); }
@Test public void shouldRemoveAgedPendingFunds() { final PendingFund pendingFund = PendingFundMother.aPendingFund(); when(pendingFundService.findAll()) .thenReturn(of(pendingFund)); when(azraelClient.getTransactionStatus(prettify(pendingFund.getTransactionHash()))).thenReturn(TransactionStatus.SUCCEEDED); ReflectionUtils.set(pendingFund, "creationDate", LocalDateTime.now().minusDays(2)); pendingFundCleaner.cleanupPendingFunds(); verify(pendingFundService).removePendingFund(pendingFund); }