From 820765753c1636fb6fb0c5d559c7ae9d0642ac77 Mon Sep 17 00:00:00 2001
From: Amichai Rothman
Date: Sun, 28 Jun 2015 15:10:22 +0300
Subject: [PATCH] Clean up toString and other string-related code.
---
.../org/bitcoinj/core/AddressMessage.java | 8 +------
.../main/java/org/bitcoinj/core/Block.java | 24 +++++--------------
.../org/bitcoinj/core/GetBlocksMessage.java | 8 +------
.../org/bitcoinj/core/GetHeadersMessage.java | 8 +------
.../java/org/bitcoinj/core/InventoryItem.java | 2 +-
.../src/main/java/org/bitcoinj/core/Peer.java | 14 ++++-------
.../java/org/bitcoinj/core/RejectMessage.java | 8 ++-----
.../bitcoinj/core/StoredUndoableBlock.java | 2 +-
.../java/org/bitcoinj/core/Transaction.java | 17 ++++++-------
.../bitcoinj/core/TransactionConfidence.java | 7 +-----
.../org/bitcoinj/core/TransactionInput.java | 4 +---
.../bitcoinj/core/TransactionOutPoint.java | 3 +--
.../org/bitcoinj/core/TransactionOutput.java | 3 +--
.../src/main/java/org/bitcoinj/core/UTXO.java | 2 +-
.../main/java/org/bitcoinj/core/Utils.java | 14 +++++++++++
.../main/java/org/bitcoinj/core/Wallet.java | 4 +---
.../org/bitcoinj/crypto/DeterministicKey.java | 15 ++++--------
.../org/bitcoinj/crypto/EncryptedData.java | 3 ++-
.../org/bitcoinj/crypto/MnemonicCode.java | 3 +--
.../PaymentChannelCloseException.java | 2 +-
.../channels/StoredServerChannel.java | 2 +-
.../main/java/org/bitcoinj/script/Script.java | 9 ++-----
.../java/org/bitcoinj/script/ScriptChunk.java | 5 +---
.../store/MemoryFullPrunedBlockStore.java | 2 +-
.../java/org/bitcoinj/uri/BitcoinURI.java | 2 +-
.../java/org/bitcoinj/utils/BtcFormat.java | 7 +++---
.../wallet/DeterministicKeyChain.java | 3 +--
.../bitcoinj/wallet/DeterministicSeed.java | 10 ++++----
.../bitcoinj/crypto/KeyCrypterScryptTest.java | 6 ++---
.../org/bitcoinj/crypto/MnemonicCodeTest.java | 4 ++--
.../examples/BackupToMnemonicSeed.java | 4 ++--
.../WalletSettingsController.java | 4 ++--
32 files changed, 78 insertions(+), 131 deletions(-)
diff --git a/core/src/main/java/org/bitcoinj/core/AddressMessage.java b/core/src/main/java/org/bitcoinj/core/AddressMessage.java
index b9a22977..44ade701 100644
--- a/core/src/main/java/org/bitcoinj/core/AddressMessage.java
+++ b/core/src/main/java/org/bitcoinj/core/AddressMessage.java
@@ -142,13 +142,7 @@ public class AddressMessage extends Message {
@Override
public String toString() {
- StringBuilder builder = new StringBuilder();
- builder.append("addr: ");
- for (PeerAddress a : addresses) {
- builder.append(a.toString());
- builder.append(" ");
- }
- return builder.toString();
+ return "addr: " + Utils.join(addresses);
}
}
diff --git a/core/src/main/java/org/bitcoinj/core/Block.java b/core/src/main/java/org/bitcoinj/core/Block.java
index cb062a0e..a9df46a5 100644
--- a/core/src/main/java/org/bitcoinj/core/Block.java
+++ b/core/src/main/java/org/bitcoinj/core/Block.java
@@ -585,27 +585,15 @@ public class Block extends Message {
StringBuilder s = new StringBuilder("v");
s.append(version);
s.append(" block: \n");
- s.append(" previous block: ");
- s.append(getPrevBlockHash());
- s.append("\n");
- s.append(" merkle root: ");
- s.append(getMerkleRoot());
- s.append("\n");
- s.append(" time: [");
- s.append(time);
- s.append("] ");
- s.append(Utils.dateTimeFormat(time * 1000));
- s.append("\n");
- s.append(" difficulty target (nBits): ");
- s.append(difficultyTarget);
- s.append("\n");
- s.append(" nonce: ");
- s.append(nonce);
- s.append("\n");
+ s.append(" previous block: ").append(getPrevBlockHash()).append("\n");
+ s.append(" merkle root: ").append(getMerkleRoot()).append("\n");
+ s.append(" time: [").append(time).append("] ").append(Utils.dateTimeFormat(time * 1000)).append("\n");
+ s.append(" difficulty target (nBits): ").append(difficultyTarget).append("\n");
+ s.append(" nonce: ").append(nonce).append("\n");
if (transactions != null && transactions.size() > 0) {
s.append(" with ").append(transactions.size()).append(" transaction(s):\n");
for (Transaction tx : transactions) {
- s.append(tx.toString());
+ s.append(tx);
}
}
return s.toString();
diff --git a/core/src/main/java/org/bitcoinj/core/GetBlocksMessage.java b/core/src/main/java/org/bitcoinj/core/GetBlocksMessage.java
index fc444cd5..e3229b0d 100644
--- a/core/src/main/java/org/bitcoinj/core/GetBlocksMessage.java
+++ b/core/src/main/java/org/bitcoinj/core/GetBlocksMessage.java
@@ -76,13 +76,7 @@ public class GetBlocksMessage extends Message {
@Override
public String toString() {
- StringBuffer b = new StringBuffer();
- b.append("getblocks: ");
- for (Sha256Hash hash : locator) {
- b.append(hash.toString());
- b.append(" ");
- }
- return b.toString();
+ return "getblocks: " + Utils.join(locator);
}
@Override
diff --git a/core/src/main/java/org/bitcoinj/core/GetHeadersMessage.java b/core/src/main/java/org/bitcoinj/core/GetHeadersMessage.java
index 5f0d89f0..a93c7290 100644
--- a/core/src/main/java/org/bitcoinj/core/GetHeadersMessage.java
+++ b/core/src/main/java/org/bitcoinj/core/GetHeadersMessage.java
@@ -35,13 +35,7 @@ public class GetHeadersMessage extends GetBlocksMessage {
@Override
public String toString() {
- StringBuffer b = new StringBuffer();
- b.append("getheaders: ");
- for (Sha256Hash hash : locator) {
- b.append(hash.toString());
- b.append(" ");
- }
- return b.toString();
+ return "getheaders: " + Utils.join(locator);
}
/**
diff --git a/core/src/main/java/org/bitcoinj/core/InventoryItem.java b/core/src/main/java/org/bitcoinj/core/InventoryItem.java
index 1f27dc61..3adf536c 100644
--- a/core/src/main/java/org/bitcoinj/core/InventoryItem.java
+++ b/core/src/main/java/org/bitcoinj/core/InventoryItem.java
@@ -40,7 +40,7 @@ public class InventoryItem {
@Override
public String toString() {
- return type.toString() + ": " + hash;
+ return type + ": " + hash;
}
@Override
diff --git a/core/src/main/java/org/bitcoinj/core/Peer.java b/core/src/main/java/org/bitcoinj/core/Peer.java
index 1358262b..2369e995 100644
--- a/core/src/main/java/org/bitcoinj/core/Peer.java
+++ b/core/src/main/java/org/bitcoinj/core/Peer.java
@@ -273,12 +273,8 @@ public class Peer extends PeerSocketHandler {
@Override
public String toString() {
PeerAddress addr = getAddress();
- if (addr == null) {
- // User-provided NetworkConnection object.
- return "Peer()";
- } else {
- return addr.toString();
- }
+ // if null, it's a user-provided NetworkConnection object
+ return addr == null ? "Peer()" : addr.toString();
}
@Override
@@ -501,9 +497,9 @@ public class Peer extends PeerSocketHandler {
private void processAlert(AlertMessage m) {
try {
if (m.isSignatureValid()) {
- log.info("Received alert from peer {}: {}", toString(), m.getStatusBar());
+ log.info("Received alert from peer {}: {}", this, m.getStatusBar());
} else {
- log.warn("Received alert with invalid signature from peer {}: {}", toString(), m.getStatusBar());
+ log.warn("Received alert with invalid signature from peer {}: {}", this, m.getStatusBar());
}
} catch (Throwable t) {
// Signature checking can FAIL on Android platforms before Gingerbread apparently due to bugs in their
@@ -1306,7 +1302,7 @@ public class Peer extends PeerSocketHandler {
}
if (log.isDebugEnabled())
log.debug("{}: blockChainDownloadLocked({}) current head = {}",
- toString(), toHash.toString(), chainHead.getHeader().getHashAsString());
+ this, toHash, chainHead.getHeader().getHashAsString());
StoredBlock cursor = chainHead;
for (int i = 100; cursor != null && i > 0; i--) {
blockLocator.add(cursor.getHeader().getHash());
diff --git a/core/src/main/java/org/bitcoinj/core/RejectMessage.java b/core/src/main/java/org/bitcoinj/core/RejectMessage.java
index fd60e223..0d0edf2b 100644
--- a/core/src/main/java/org/bitcoinj/core/RejectMessage.java
+++ b/core/src/main/java/org/bitcoinj/core/RejectMessage.java
@@ -152,12 +152,8 @@ public class RejectMessage extends Message {
@Override
public String toString() {
Sha256Hash hash = getRejectedObjectHash();
- if (hash != null)
- return String.format("Reject: %s %s for reason '%s' (%d)", getRejectedMessage(), getRejectedObjectHash(),
- getReasonString(), getReasonCode().code);
- else
- return String.format("Reject: %s for reason '%s' (%d)", getRejectedMessage(),
- getReasonString(), getReasonCode().code);
+ return String.format("Reject: %s %s for reason '%s' (%d)", getRejectedMessage(),
+ hash != null ? hash : "", getReasonString(), getReasonCode().code);
}
@Override
diff --git a/core/src/main/java/org/bitcoinj/core/StoredUndoableBlock.java b/core/src/main/java/org/bitcoinj/core/StoredUndoableBlock.java
index 3a4b24f1..7670618a 100644
--- a/core/src/main/java/org/bitcoinj/core/StoredUndoableBlock.java
+++ b/core/src/main/java/org/bitcoinj/core/StoredUndoableBlock.java
@@ -86,6 +86,6 @@ public class StoredUndoableBlock implements Serializable {
@Override
public String toString() {
- return "Undoable Block " + blockHash.toString();
+ return "Undoable Block " + blockHash;
}
}
diff --git a/core/src/main/java/org/bitcoinj/core/Transaction.java b/core/src/main/java/org/bitcoinj/core/Transaction.java
index f9aaf694..6e5c7d17 100644
--- a/core/src/main/java/org/bitcoinj/core/Transaction.java
+++ b/core/src/main/java/org/bitcoinj/core/Transaction.java
@@ -47,7 +47,7 @@ import static com.google.common.base.Preconditions.checkState;
*
* All Bitcoin transactions are at risk of being reversed, though the risk is much less than with traditional payment
* systems. Transactions have confidence levels, which help you decide whether to trust a transaction or not.
- * Whether to trust a transaction is something that needs to be decided on a case by case basis - a rule that makes
+ * Whether to trust a transaction is something that needs to be decided on a case by case basis - a rule that makes
* sense for selling MP3s might not make sense for selling cars, or accepting payments from a family member. If you
* are building a wallet, how to present confidence to your users is something to consider carefully.
*/
@@ -74,7 +74,7 @@ public class Transaction extends ChildMessage implements Serializable {
final int height2 = tx2.getConfidence().getAppearedAtChainHeight();
final int heightComparison = -(Ints.compare(height1, height2));
//If height1==height2, compare by tx hash to make comparator consistent with equals
- return heightComparison != 0 ? heightComparison : tx1.getHash().compareTo(tx2.getHash());
+ return heightComparison != 0 ? heightComparison : tx1.getHash().compareTo(tx2.getHash());
}
};
private static final Logger log = LoggerFactory.getLogger(Transaction.class);
@@ -115,7 +115,7 @@ public class Transaction extends ChildMessage implements Serializable {
// This is an in memory helper only.
private transient Sha256Hash hash;
- // Data about how confirmed this tx is. Serialized, may be null.
+ // Data about how confirmed this tx is. Serialized, may be null.
@Nullable private TransactionConfidence confidence;
// Records a map of which blocks the transaction has appeared in (keys) to an index within that block (values).
@@ -199,8 +199,8 @@ public class Transaction extends ChildMessage implements Serializable {
* @param payload Bitcoin protocol formatted byte array containing message content.
* @param offset The location of the first payload byte within the array.
* @param parseLazy Whether to perform a full parse immediately or delay until a read is requested.
- * @param parseRetain Whether to retain the backing byte array for quick reserialization.
- * If true and the backing byte array is invalidated due to modification of a field then
+ * @param parseRetain Whether to retain the backing byte array for quick reserialization.
+ * If true and the backing byte array is invalidated due to modification of a field then
* the cached bytes may be repopulated and retained if the message is serialized again in the future.
* @param length The length of message if known. Usually this is provided when deserializing of the wire
* as the length will be provided as part of the header. If unknown then set to Message.UNKNOWN_LENGTH
@@ -318,7 +318,7 @@ public class Transaction extends ChildMessage implements Serializable {
* is the best chain. The best chain block is guaranteed to be called last. So this must be idempotent.
*
* Sets updatedAt to be the earliest valid block time where this tx was seen.
- *
+ *
* @param block The {@link StoredBlock} in which the transaction has appeared.
* @param bestChain whether to set the updatedAt timestamp from the block header (only if not already set)
* @param relativityOffset A number that disambiguates the order of transactions within a block.
@@ -398,7 +398,7 @@ public class Transaction extends ChildMessage implements Serializable {
/**
* The transaction fee is the difference of the value of all inputs and the value of all outputs. Currently, the fee
* can only be determined for transactions created by us.
- *
+ *
* @return fee, or null if it cannot be determined
*/
public Coin getFee() {
@@ -647,7 +647,8 @@ public class Transaction extends ChildMessage implements Serializable {
script = "???";
script2 = "???";
}
- s.append(" == COINBASE TXN (scriptSig " + script + ") (scriptPubKey " + script2 + ")\n");
+ s.append(" == COINBASE TXN (scriptSig ").append(script)
+ .append(") (scriptPubKey ").append(script2).append(")\n");
return s.toString();
}
for (TransactionInput in : inputs) {
diff --git a/core/src/main/java/org/bitcoinj/core/TransactionConfidence.java b/core/src/main/java/org/bitcoinj/core/TransactionConfidence.java
index 9df9ae15..d4717261 100644
--- a/core/src/main/java/org/bitcoinj/core/TransactionConfidence.java
+++ b/core/src/main/java/org/bitcoinj/core/TransactionConfidence.java
@@ -322,12 +322,7 @@ public class TransactionConfidence implements Serializable {
StringBuilder builder = new StringBuilder();
int peers = numBroadcastPeers();
if (peers > 0) {
- builder.append("Seen by ");
- builder.append(peers);
- if (peers > 1)
- builder.append(" peers. ");
- else
- builder.append(" peer. ");
+ builder.append("Seen by ").append(peers).append(peers > 1 ? " peers. " : " peer. ");
}
switch (getConfidenceType()) {
case UNKNOWN:
diff --git a/core/src/main/java/org/bitcoinj/core/TransactionInput.java b/core/src/main/java/org/bitcoinj/core/TransactionInput.java
index 71da6d62..a31697c0 100644
--- a/core/src/main/java/org/bitcoinj/core/TransactionInput.java
+++ b/core/src/main/java/org/bitcoinj/core/TransactionInput.java
@@ -279,10 +279,8 @@ public class TransactionInput extends ChildMessage implements Serializable {
*/
@Override
public String toString() {
- if (isCoinBase())
- return "TxIn: COINBASE";
try {
- return "TxIn for [" + outpoint + "]: " + getScriptSig();
+ return isCoinBase() ? "TxIn: COINBASE" : "TxIn for [" + outpoint + "]: " + getScriptSig();
} catch (ScriptException e) {
throw new RuntimeException(e);
}
diff --git a/core/src/main/java/org/bitcoinj/core/TransactionOutPoint.java b/core/src/main/java/org/bitcoinj/core/TransactionOutPoint.java
index 4b9c51b0..0f8df74f 100644
--- a/core/src/main/java/org/bitcoinj/core/TransactionOutPoint.java
+++ b/core/src/main/java/org/bitcoinj/core/TransactionOutPoint.java
@@ -193,10 +193,9 @@ public class TransactionOutPoint extends ChildMessage implements Serializable {
@Override
public String toString() {
- return hash.toString() + ":" + index;
+ return hash + ":" + index;
}
-
/**
* Returns the hash of the transaction this outpoint references/spends/is connected to.
*/
diff --git a/core/src/main/java/org/bitcoinj/core/TransactionOutput.java b/core/src/main/java/org/bitcoinj/core/TransactionOutput.java
index 876d5953..ced0a7d5 100644
--- a/core/src/main/java/org/bitcoinj/core/TransactionOutput.java
+++ b/core/src/main/java/org/bitcoinj/core/TransactionOutput.java
@@ -354,8 +354,7 @@ public class TransactionOutput extends ChildMessage implements Serializable {
buf.append(" to multisig");
else
buf.append(" (unknown type)");
- buf.append(" script:");
- buf.append(script);
+ buf.append(" script:").append(script);
return buf.toString();
} catch (ScriptException e) {
throw new RuntimeException(e);
diff --git a/core/src/main/java/org/bitcoinj/core/UTXO.java b/core/src/main/java/org/bitcoinj/core/UTXO.java
index bf7e07d6..837eb0ad 100644
--- a/core/src/main/java/org/bitcoinj/core/UTXO.java
+++ b/core/src/main/java/org/bitcoinj/core/UTXO.java
@@ -156,7 +156,7 @@ public class UTXO implements Serializable {
@Override
public String toString() {
- return String.format("Stored TxOut of %s (%s:%d)", value.toFriendlyString(), hash.toString(), index);
+ return String.format("Stored TxOut of %s (%s:%d)", value.toFriendlyString(), hash, index);
}
@Override
diff --git a/core/src/main/java/org/bitcoinj/core/Utils.java b/core/src/main/java/org/bitcoinj/core/Utils.java
index 967f3cb9..21832931 100644
--- a/core/src/main/java/org/bitcoinj/core/Utils.java
+++ b/core/src/main/java/org/bitcoinj/core/Utils.java
@@ -54,6 +54,8 @@ public class Utils {
public static final String BITCOIN_SIGNED_MESSAGE_HEADER = "Bitcoin Signed Message:\n";
public static final byte[] BITCOIN_SIGNED_MESSAGE_HEADER_BYTES = BITCOIN_SIGNED_MESSAGE_HEADER.getBytes(Charsets.UTF_8);
+ private static final Joiner SPACE_JOINER = Joiner.on(" ");
+
private static BlockingQueue mockSleepQueue;
/**
@@ -407,6 +409,18 @@ public class Utils {
return iso8601.format(dateTime);
}
+ /**
+ * Returns a string containing the string representation of the given items,
+ * delimited by a single space character.
+ *
+ * @param items the items to join
+ * @param the item type
+ * @return the joined space-delimited string
+ */
+ public static String join(Iterable items) {
+ return SPACE_JOINER.join(items);
+ }
+
public static byte[] copyOf(byte[] in, int length) {
byte[] out = new byte[length];
System.arraycopy(in, 0, out, 0, Math.min(length, in.length));
diff --git a/core/src/main/java/org/bitcoinj/core/Wallet.java b/core/src/main/java/org/bitcoinj/core/Wallet.java
index d0979d20..42ca7049 100644
--- a/core/src/main/java/org/bitcoinj/core/Wallet.java
+++ b/core/src/main/java/org/bitcoinj/core/Wallet.java
@@ -2768,9 +2768,7 @@ public class Wallet extends BaseTaggableObject implements Serializable, BlockCha
if (!watchedScripts.isEmpty()) {
builder.append("\nWatched scripts:\n");
for (Script script : watchedScripts) {
- builder.append(" ");
- builder.append(script.toString());
- builder.append("\n");
+ builder.append(" ").append(script).append("\n");
}
}
diff --git a/core/src/main/java/org/bitcoinj/crypto/DeterministicKey.java b/core/src/main/java/org/bitcoinj/crypto/DeterministicKey.java
index e5a8c85d..1b862e5d 100644
--- a/core/src/main/java/org/bitcoinj/crypto/DeterministicKey.java
+++ b/core/src/main/java/org/bitcoinj/crypto/DeterministicKey.java
@@ -617,18 +617,11 @@ public class DeterministicKey extends ECKey {
@Override
public void formatKeyWithAddress(boolean includePrivateKeys, StringBuilder builder, NetworkParameters params) {
final Address address = toAddress(params);
- builder.append(" addr:");
- builder.append(address.toString());
- builder.append(" hash160:");
- builder.append(Utils.HEX.encode(getPubKeyHash()));
- builder.append(" (");
- builder.append(getPathAsString());
- builder.append(")");
- builder.append("\n");
+ builder.append(" addr:").append(address);
+ builder.append(" hash160:").append(Utils.HEX.encode(getPubKeyHash()));
+ builder.append(" (").append(getPathAsString()).append(")\n");
if (includePrivateKeys) {
- builder.append(" ");
- builder.append(toStringWithPrivate(params));
- builder.append("\n");
+ builder.append(" ").append(toStringWithPrivate(params)).append("\n");
}
}
}
diff --git a/core/src/main/java/org/bitcoinj/crypto/EncryptedData.java b/core/src/main/java/org/bitcoinj/crypto/EncryptedData.java
index 040c9bbe..4b1524dc 100644
--- a/core/src/main/java/org/bitcoinj/crypto/EncryptedData.java
+++ b/core/src/main/java/org/bitcoinj/crypto/EncryptedData.java
@@ -51,6 +51,7 @@ public final class EncryptedData {
@Override
public String toString() {
- return "EncryptedData [initialisationVector=" + Arrays.toString(initialisationVector) + ", encryptedPrivateKey=" + Arrays.toString(encryptedBytes) + "]";
+ return "EncryptedData [initialisationVector=" + Arrays.toString(initialisationVector)
+ + ", encryptedPrivateKey=" + Arrays.toString(encryptedBytes) + "]";
}
}
diff --git a/core/src/main/java/org/bitcoinj/crypto/MnemonicCode.java b/core/src/main/java/org/bitcoinj/crypto/MnemonicCode.java
index db6fd058..54666041 100644
--- a/core/src/main/java/org/bitcoinj/crypto/MnemonicCode.java
+++ b/core/src/main/java/org/bitcoinj/crypto/MnemonicCode.java
@@ -19,7 +19,6 @@ package org.bitcoinj.crypto;
import org.bitcoinj.core.Sha256Hash;
import org.bitcoinj.core.Utils;
-import com.google.common.base.Joiner;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -126,7 +125,7 @@ public class MnemonicCode {
// used as a pseudo-random function. Desired length of the
// derived key is 512 bits (= 64 bytes).
//
- String pass = Joiner.on(' ').join(words);
+ String pass = Utils.join(words);
String salt = "mnemonic" + passphrase;
long start = System.currentTimeMillis();
diff --git a/core/src/main/java/org/bitcoinj/protocols/channels/PaymentChannelCloseException.java b/core/src/main/java/org/bitcoinj/protocols/channels/PaymentChannelCloseException.java
index f0d4fbee..0c6d6773 100644
--- a/core/src/main/java/org/bitcoinj/protocols/channels/PaymentChannelCloseException.java
+++ b/core/src/main/java/org/bitcoinj/protocols/channels/PaymentChannelCloseException.java
@@ -79,6 +79,6 @@ public class PaymentChannelCloseException extends Exception {
@Override
public String toString() {
- return "PaymentChannelCloseException for reason " + getCloseReason().toString();
+ return "PaymentChannelCloseException for reason " + getCloseReason();
}
}
diff --git a/core/src/main/java/org/bitcoinj/protocols/channels/StoredServerChannel.java b/core/src/main/java/org/bitcoinj/protocols/channels/StoredServerChannel.java
index 1de4bcfb..6f168b6f 100644
--- a/core/src/main/java/org/bitcoinj/protocols/channels/StoredServerChannel.java
+++ b/core/src/main/java/org/bitcoinj/protocols/channels/StoredServerChannel.java
@@ -110,7 +110,7 @@ public class StoredServerChannel {
" Client output: %s%n" +
" Refund unlock: %s (%d unix time)%n" +
" Contract: %s%n",
- connectedHandler != null ? "connected" : "disconnected", myKey, bestValueToMe.toString(),
+ connectedHandler != null ? "connected" : "disconnected", myKey, bestValueToMe,
clientOutput, new Date(refundTransactionUnlockTimeSecs * 1000), refundTransactionUnlockTimeSecs,
contract.toString().replaceAll(newline, newline + " "));
}
diff --git a/core/src/main/java/org/bitcoinj/script/Script.java b/core/src/main/java/org/bitcoinj/script/Script.java
index 6a8d6c87..1dd3b493 100644
--- a/core/src/main/java/org/bitcoinj/script/Script.java
+++ b/core/src/main/java/org/bitcoinj/script/Script.java
@@ -125,12 +125,7 @@ public class Script {
*/
@Override
public String toString() {
- StringBuilder buf = new StringBuilder();
- for (ScriptChunk chunk : chunks)
- buf.append(chunk).append(' ');
- if (buf.length() > 0)
- buf.setLength(buf.length() - 1);
- return buf.toString();
+ return Utils.join(chunks);
}
/** Returns the serialized program as a newly created byte array. */
@@ -297,7 +292,7 @@ public class Script {
// A large constant followed by an OP_CHECKSIG is the key.
return chunk0data;
} else {
- throw new ScriptException("Script did not match expected form: " + toString());
+ throw new ScriptException("Script did not match expected form: " + this);
}
}
diff --git a/core/src/main/java/org/bitcoinj/script/ScriptChunk.java b/core/src/main/java/org/bitcoinj/script/ScriptChunk.java
index 9500caec..ac4c9415 100644
--- a/core/src/main/java/org/bitcoinj/script/ScriptChunk.java
+++ b/core/src/main/java/org/bitcoinj/script/ScriptChunk.java
@@ -139,10 +139,7 @@ public class ScriptChunk {
buf.append(getOpCodeName(opcode));
} else if (data != null) {
// Data chunk
- buf.append(getPushDataName(opcode));
- buf.append("[");
- buf.append(Utils.HEX.encode(data));
- buf.append("]");
+ buf.append(getPushDataName(opcode)).append("[").append(Utils.HEX.encode(data)).append("]");
} else {
// Small num
buf.append(Script.decodeFromOpN(opcode));
diff --git a/core/src/main/java/org/bitcoinj/store/MemoryFullPrunedBlockStore.java b/core/src/main/java/org/bitcoinj/store/MemoryFullPrunedBlockStore.java
index a17231a4..ee6747da 100644
--- a/core/src/main/java/org/bitcoinj/store/MemoryFullPrunedBlockStore.java
+++ b/core/src/main/java/org/bitcoinj/store/MemoryFullPrunedBlockStore.java
@@ -68,7 +68,7 @@ class StoredTransactionOutPoint implements Serializable {
@Override
public String toString() {
- return "Stored transaction out point: " + hash.toString() + ":" + index;
+ return "Stored transaction out point: " + hash + ":" + index;
}
@Override
diff --git a/core/src/main/java/org/bitcoinj/uri/BitcoinURI.java b/core/src/main/java/org/bitcoinj/uri/BitcoinURI.java
index 77b882a4..548b7fb3 100644
--- a/core/src/main/java/org/bitcoinj/uri/BitcoinURI.java
+++ b/core/src/main/java/org/bitcoinj/uri/BitcoinURI.java
@@ -337,7 +337,7 @@ public class BitcoinURI {
} else {
builder.append(",");
}
- builder.append("'").append(entry.getKey()).append("'=").append("'").append(entry.getValue().toString()).append("'");
+ builder.append("'").append(entry.getKey()).append("'=").append("'").append(entry.getValue()).append("'");
}
builder.append("]");
return builder.toString();
diff --git a/core/src/main/java/org/bitcoinj/utils/BtcFormat.java b/core/src/main/java/org/bitcoinj/utils/BtcFormat.java
index 0539fd31..9b6b4c9e 100644
--- a/core/src/main/java/org/bitcoinj/utils/BtcFormat.java
+++ b/core/src/main/java/org/bitcoinj/utils/BtcFormat.java
@@ -1157,8 +1157,7 @@ public abstract class BtcFormat extends Format {
* @throws IllegalArgumentException if the number of fraction places is negative.
*/
public String format(Object qty, int minDecimals, int... fractionGroups) {
- return format(qty, new StringBuffer(), new FieldPosition(0), minDecimals, boxAsList(fractionGroups)).
- toString();
+ return format(qty, new StringBuffer(), new FieldPosition(0), minDecimals, boxAsList(fractionGroups)).toString();
}
/**
@@ -1542,9 +1541,9 @@ public abstract class BtcFormat extends Format {
* returned by this method is localized, any currency signs expressed are literally, and
* optional fractional decimal places are shown grouped in parentheses. */
public String pattern() { synchronized(numberFormat) {
- StringBuffer groups = new StringBuffer();
+ StringBuilder groups = new StringBuilder();
for (int group : decimalGroups) {
- groups.append("(" + Strings.repeat("#",group) + ")");
+ groups.append("(").append(Strings.repeat("#", group)).append(")");
}
DecimalFormatSymbols s = numberFormat.getDecimalFormatSymbols();
String digit = String.valueOf(s.getDigit());
diff --git a/core/src/main/java/org/bitcoinj/wallet/DeterministicKeyChain.java b/core/src/main/java/org/bitcoinj/wallet/DeterministicKeyChain.java
index 58ec4ffe..5301779d 100644
--- a/core/src/main/java/org/bitcoinj/wallet/DeterministicKeyChain.java
+++ b/core/src/main/java/org/bitcoinj/wallet/DeterministicKeyChain.java
@@ -25,7 +25,6 @@ import org.bitcoinj.script.Script;
import org.bitcoinj.store.UnreadableWalletException;
import org.bitcoinj.utils.Threading;
-import com.google.common.base.Joiner;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.Iterators;
import com.google.common.collect.PeekingIterator;
@@ -1333,7 +1332,7 @@ public class DeterministicKeyChain implements EncryptableKeyChain {
} else if (includePrivateKeys) {
final List words = seed.getMnemonicCode();
builder2.append(
- String.format("Seed as words: %s%nSeed as hex: %s%n", Joiner.on(' ').join(words),
+ String.format("Seed as words: %s%nSeed as hex: %s%n", Utils.join(words),
seed.toHexString())
);
}
diff --git a/core/src/main/java/org/bitcoinj/wallet/DeterministicSeed.java b/core/src/main/java/org/bitcoinj/wallet/DeterministicSeed.java
index c34bc3a9..530634d3 100644
--- a/core/src/main/java/org/bitcoinj/wallet/DeterministicSeed.java
+++ b/core/src/main/java/org/bitcoinj/wallet/DeterministicSeed.java
@@ -21,7 +21,6 @@ import org.bitcoinj.core.Utils;
import org.bitcoinj.crypto.*;
import org.bitcoinj.store.UnreadableWalletException;
import com.google.common.base.Charsets;
-import com.google.common.base.Joiner;
import com.google.common.base.Splitter;
import org.spongycastle.crypto.params.KeyParameter;
@@ -132,10 +131,9 @@ public class DeterministicSeed implements EncryptableItem {
@Override
public String toString() {
- if (isEncrypted())
- return "DeterministicSeed [encrypted]";
- else
- return "DeterministicSeed " + toHexString() + " " + Joiner.on(" ").join(mnemonicCode);
+ return isEncrypted()
+ ? "DeterministicSeed [encrypted]"
+ : "DeterministicSeed " + toHexString() + " " + Utils.join(mnemonicCode);
}
/** Returns the seed as hex or null if encrypted. */
@@ -185,7 +183,7 @@ public class DeterministicSeed implements EncryptableItem {
}
private byte[] getMnemonicAsBytes() {
- return Joiner.on(" ").join(mnemonicCode).getBytes(Charsets.UTF_8);
+ return Utils.join(mnemonicCode).getBytes(Charsets.UTF_8);
}
public DeterministicSeed decrypt(KeyCrypter crypter, String passphrase, KeyParameter aesKey) {
diff --git a/core/src/test/java/org/bitcoinj/crypto/KeyCrypterScryptTest.java b/core/src/test/java/org/bitcoinj/crypto/KeyCrypterScryptTest.java
index 6a71b959..7d7126fd 100644
--- a/core/src/test/java/org/bitcoinj/crypto/KeyCrypterScryptTest.java
+++ b/core/src/test/java/org/bitcoinj/crypto/KeyCrypterScryptTest.java
@@ -104,12 +104,12 @@ public class KeyCrypterScryptTest {
KeyCrypterScrypt keyCrypter = new KeyCrypterScrypt(scryptParameters);
// create a longer encryption string
- StringBuilder stringBuffer = new StringBuilder();
+ StringBuilder builder = new StringBuilder();
for (int i = 0; i < 100; i++) {
- stringBuffer.append(i).append(" ").append("The quick brown fox");
+ builder.append(i).append(" The quick brown fox");
}
- EncryptedData data = keyCrypter.encrypt(stringBuffer.toString().getBytes(), keyCrypter.deriveKey(PASSWORD2));
+ EncryptedData data = keyCrypter.encrypt(builder.toString().getBytes(), keyCrypter.deriveKey(PASSWORD2));
assertNotNull(data);
try {
diff --git a/core/src/test/java/org/bitcoinj/crypto/MnemonicCodeTest.java b/core/src/test/java/org/bitcoinj/crypto/MnemonicCodeTest.java
index 4bb56896..81bf40fa 100644
--- a/core/src/test/java/org/bitcoinj/crypto/MnemonicCodeTest.java
+++ b/core/src/test/java/org/bitcoinj/crypto/MnemonicCodeTest.java
@@ -17,7 +17,7 @@
package org.bitcoinj.crypto;
-import com.google.common.base.Joiner;
+import org.bitcoinj.core.Utils;
import com.google.common.collect.Lists;
import org.junit.Before;
import org.junit.Test;
@@ -171,7 +171,7 @@ public class MnemonicCodeTest {
byte[] entropy = mc.toEntropy(split(vecCode));
assertEquals(vecData, HEX.encode(entropy));
- assertEquals(vecCode, Joiner.on(' ').join(code));
+ assertEquals(vecCode, Utils.join(code));
assertEquals(vecSeed, HEX.encode(seed));
}
}
diff --git a/examples/src/main/java/org/bitcoinj/examples/BackupToMnemonicSeed.java b/examples/src/main/java/org/bitcoinj/examples/BackupToMnemonicSeed.java
index 27b0ee8c..2729116b 100644
--- a/examples/src/main/java/org/bitcoinj/examples/BackupToMnemonicSeed.java
+++ b/examples/src/main/java/org/bitcoinj/examples/BackupToMnemonicSeed.java
@@ -1,10 +1,10 @@
package org.bitcoinj.examples;
import org.bitcoinj.core.NetworkParameters;
+import org.bitcoinj.core.Utils;
import org.bitcoinj.core.Wallet;
import org.bitcoinj.params.TestNet3Params;
import org.bitcoinj.wallet.DeterministicSeed;
-import com.google.common.base.Joiner;
/**
* The following example shows you how to create a deterministic seed from a hierarchical deterministic wallet represented as a mnemonic code.
@@ -25,6 +25,6 @@ public class BackupToMnemonicSeed {
System.out.println("seed: " + seed.toString());
System.out.println("creation time: " + seed.getCreationTimeSeconds());
- System.out.println("mnemonicCode: " + Joiner.on(" ").join(seed.getMnemonicCode()));
+ System.out.println("mnemonicCode: " + Utils.join(seed.getMnemonicCode()));
}
}
diff --git a/wallettemplate/src/main/java/wallettemplate/WalletSettingsController.java b/wallettemplate/src/main/java/wallettemplate/WalletSettingsController.java
index 3fe66472..c0cab4bd 100644
--- a/wallettemplate/src/main/java/wallettemplate/WalletSettingsController.java
+++ b/wallettemplate/src/main/java/wallettemplate/WalletSettingsController.java
@@ -1,8 +1,8 @@
package wallettemplate;
+import org.bitcoinj.core.Utils;
import org.bitcoinj.crypto.MnemonicCode;
import org.bitcoinj.wallet.DeterministicSeed;
-import com.google.common.base.Joiner;
import com.google.common.base.Splitter;
import com.google.common.util.concurrent.Service;
import javafx.application.Platform;
@@ -68,7 +68,7 @@ public class WalletSettingsController {
// Set the mnemonic seed words.
final List mnemonicCode = seed.getMnemonicCode();
checkNotNull(mnemonicCode); // Already checked for encryption.
- String origWords = Joiner.on(" ").join(mnemonicCode);
+ String origWords = Utils.join(mnemonicCode);
wordsArea.setText(origWords);
// Validate words as they are being typed.