JsonRpc2_0Neow3j implements Neow3j { @Override public void shutdown() { scheduledExecutorService.shutdown(); try { neow3jService.close(); } catch (IOException e) { throw new RuntimeException("Failed to close neow3j service", e); } } JsonRpc2_0Neow3j(Neow3jService neow3jService);  JsonRpc2_0Neow3j(
            Neow3jService neow3jService, long pollingInterval,
            ScheduledExecutorService scheduledExecutorService); @Override Request<?, NeoBlockHash> getBestBlockHash(); @Override Request<?, NeoBlockHash> getBlockHash(BlockParameterIndex blockIndex); @Override Request<?, NeoGetBlock> getBlock(String address, boolean returnFullTransactionObjects); @Override Request<?, NeoGetRawBlock> getRawBlock(String address); @Override Request<?, NeoGetBlock> getBlock(BlockParameterIndex blockIndex,
            boolean returnFullTransactionObjects); @Override Request<?, NeoGetRawBlock> getRawBlock(BlockParameterIndex blockIndex); @Override Request<?, NeoBlockCount> getBlockCount(); @Override Request<?, NeoGetBlock> getBlockHeader(String hash); @Override Request<?, NeoGetBlock> getBlockHeader(BlockParameterIndex blockIndex); @Override Request<?, NeoGetRawBlock> getRawBlockHeader(String hash); @Override Request<?, NeoGetRawBlock> getRawBlockHeader(BlockParameterIndex blockIndex); @Override Request<?, NeoGetContractState> getContractState(String scriptHash); @Override Request<?, NeoGetMemPool> getMemPool(); @Override Request<?, NeoGetRawMemPool> getRawMemPool(); @Override Request<?, NeoGetTransaction> getTransaction(String txId); @Override Request<?, NeoGetRawTransaction> getRawTransaction(String txId); @Override Request<?, NeoGetStorage> getStorage(String contractAddress, HexParameter keyToLookUp); @Override Request<?, NeoGetStorage> getStorage(String contractAddress,
            String keyToLookUpAsHexString); @Override Request<?, NeoGetTransactionHeight> getTransactionHeight(String txId); @Override Request<?, NeoGetValidators> getValidators(); @Override Request<?, NeoConnectionCount> getConnectionCount(); @Override Request<?, NeoGetPeers> getPeers(); @Override Request<?, NeoGetVersion> getVersion(); @Override Request<?, NeoSendRawTransaction> sendRawTransaction(String rawTransactionHex); @Override Request<?, NeoSubmitBlock> submitBlock(String serializedBlockAsHex); @Override Request<?, NeoInvokeFunction> invokeFunction(String contractScriptHash,
            String functionName, Signer... witnesses); @Override Request<?, NeoInvokeFunction> invokeFunction(String contractScriptHash,
            String functionName, List<ContractParameter> contractParams, Signer... witnesses); @Override Request<?, NeoInvokeScript> invokeScript(String script, Signer... signers); @Override Request<?, NeoGetUnclaimedGas> getUnclaimedGas(String address); @Override Request<?, NeoListPlugins> listPlugins(); @Override Request<?, NeoValidateAddress> validateAddress(String address); @Override Request<?, NeoCloseWallet> closeWallet(); @Override Request<?, NeoDumpPrivKey> dumpPrivKey(String address); @Override Request<?, NeoGetWalletBalance> getWalletBalance(String assetId); @Override Request<?, NeoGetNewAddress> getNewAddress(); @Override Request<?, NeoGetWalletUnclaimedGas> getWalletUnclaimedGas(); @Override Request<?, NeoImportPrivKey> importPrivKey(String privateKeyInWIF); @Override Request<?, NeoListAddress> listAddress(); @Override Request<?, NeoOpenWallet> openWallet(String walletPath, String password); @Override Request<?, NeoSendFrom> sendFrom(String fromAddress, String assetId,
            String toAddress, String value); @Override Request<?, NeoSendFrom> sendFrom(String fromAddress, TransactionSendAsset txSendAsset); @Override Request<?, NeoSendMany> sendMany(List<TransactionSendAsset> txSendAsset); @Override Request<?, NeoSendMany> sendMany(String fromAddress,
            List<TransactionSendAsset> txSendAsset); @Override Request<?, NeoSendToAddress> sendToAddress(String assetId, String toAddress,
            String value); @Override Request<?, NeoSendToAddress> sendToAddress(TransactionSendAsset txSendAsset); @Override Request<?, NeoGetApplicationLog> getApplicationLog(String txId); @Override Request<?, NeoGetNep5Balances> getNep5Balances(String address); @Override Request<?, NeoGetNep5Transfers> getNep5Transfers(String address); @Override Request<?, NeoGetNep5Transfers> getNep5Transfers(String address, Date until); @Override Request<?, NeoGetNep5Transfers> getNep5Transfers(String address, Date from, Date to); @Override Observable<NeoGetBlock> blockObservable(boolean fullTransactionObjects); @Override Observable<NeoGetBlock> replayBlocksObservable(
            BlockParameter startBlock, BlockParameter endBlock,
            boolean fullTransactionObjects); @Override Observable<NeoGetBlock> replayBlocksObservable(
            BlockParameter startBlock, BlockParameter endBlock,
            boolean fullTransactionObjects, boolean ascending); @Override Observable<NeoGetBlock> catchUpToLatestBlockObservable(
            BlockParameter startBlock, boolean fullTransactionObjects,
            Observable<NeoGetBlock> onCompleteObservable); @Override Observable<NeoGetBlock> catchUpToLatestBlockObservable(
            BlockParameter startBlock, boolean fullTransactionObjects); @Override Observable<NeoGetBlock> catchUpToLatestAndSubscribeToNewBlocksObservable(
            BlockParameter startBlock, boolean fullTransactionObjects); @Override void shutdown(); static final int DEFAULT_BLOCK_TIME; }
@Test public void testStopExecutorOnShutdown() throws Exception { neow3j.shutdown(); verify(scheduledExecutorService).shutdown(); verify(service).close(); }
@Test(expected = RuntimeException.class) public void testThrowsRuntimeExceptionIfFailedToCloseService() throws Exception { doThrow(new IOException("Failed to close")) .when(service).close(); neow3j.shutdown(); }