From d2837e8ea9d03941fa728ff4d38487197cf8eeae Mon Sep 17 00:00:00 2001 From: Mike Hearn Date: Wed, 23 Apr 2014 16:48:57 +0200 Subject: [PATCH] Wallet: allow customization of the wallet type that is deserialized. Makes subclassing Wallet more useful. --- .../store/WalletProtobufSerializer.java | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/core/src/main/java/com/google/bitcoin/store/WalletProtobufSerializer.java b/core/src/main/java/com/google/bitcoin/store/WalletProtobufSerializer.java index 434bd260..975c951e 100644 --- a/core/src/main/java/com/google/bitcoin/store/WalletProtobufSerializer.java +++ b/core/src/main/java/com/google/bitcoin/store/WalletProtobufSerializer.java @@ -74,8 +74,24 @@ public class WalletProtobufSerializer { private boolean requireMandatoryExtensions = true; + public interface WalletFactory { + Wallet create(NetworkParameters params, KeyChainGroup keyChainGroup); + } + + private final WalletFactory factory; + public WalletProtobufSerializer() { + this(new WalletFactory() { + @Override + public Wallet create(NetworkParameters params, KeyChainGroup keyChainGroup) { + return new Wallet(params, keyChainGroup); + } + }); + } + + public WalletProtobufSerializer(WalletFactory factory) { txMap = new HashMap(); + this.factory = factory; } /** @@ -374,7 +390,7 @@ public class WalletProtobufSerializer { } else { chain = KeyChainGroup.fromProtobufUnencrypted(walletProto.getKeyList()); } - Wallet wallet = new Wallet(params, chain); + Wallet wallet = factory.create(params, chain); List