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.