Skip to content

Commit 5db73f2

Browse files
committed
BitcoinURI: migrate to static from native constructors
1 parent 429dfed commit 5db73f2

File tree

4 files changed

+52
-48
lines changed

4 files changed

+52
-48
lines changed

core/src/main/java/org/bitcoinj/uri/BitcoinURI.java

+15-11
Original file line numberDiff line numberDiff line change
@@ -106,9 +106,20 @@ public class BitcoinURI {
106106
* @param uri The raw URI data to be parsed (see class comments for accepted formats)
107107
* @throws BitcoinURIParseException if the URI is not syntactically or semantically valid.
108108
*/
109-
public BitcoinURI(String uri) throws BitcoinURIParseException {
109+
public static BitcoinURI of(String uri) throws BitcoinURIParseException {
110110
// TODO: Discover (via Service Loader mechanism) the correct Network from the URI string
111-
this(uri, BitcoinNetwork.MAINNET);
111+
return new BitcoinURI(uri, BitcoinNetwork.MAINNET);
112+
}
113+
114+
/**
115+
* Constructs a new object by trying to parse the input as a valid Bitcoin URI.
116+
*
117+
* @param uri The raw URI data to be parsed (see class comments for accepted formats)
118+
* @param network The network the URI is from
119+
* @throws BitcoinURIParseException If the input fails Bitcoin URI syntax and semantic checks.
120+
*/
121+
public static BitcoinURI of(String uri, @Nonnull Network network) throws BitcoinURIParseException {
122+
return new BitcoinURI(uri, network);
112123
}
113124

114125
/**
@@ -119,21 +130,14 @@ public BitcoinURI(String uri) throws BitcoinURIParseException {
119130
* @param input The raw URI data to be parsed (see class comments for accepted formats)
120131
*
121132
* @throws BitcoinURIParseException If the input fails Bitcoin URI syntax and semantic checks.
122-
* @deprecated Use {@link BitcoinURI#BitcoinURI(String, Network)} or {@link BitcoinURI#BitcoinURI(String)}
133+
* @deprecated Use {@link BitcoinURI#of(String, Network)} or {@link BitcoinURI#of(String)}
123134
*/
124135
@Deprecated
125136
public BitcoinURI(@Nullable NetworkParameters params, String input) throws BitcoinURIParseException {
126137
this(input, params != null ? params.network() : BitcoinNetwork.MAINNET);
127138
}
128139

129-
/**
130-
* Constructs a new object by trying to parse the input as a valid Bitcoin URI.
131-
*
132-
* @param input The raw URI data to be parsed (see class comments for accepted formats)
133-
* @param network The network the URI is from
134-
* @throws BitcoinURIParseException If the input fails Bitcoin URI syntax and semantic checks.
135-
*/
136-
public BitcoinURI(String input, @Nonnull Network network) throws BitcoinURIParseException {
140+
private BitcoinURI(String input, @Nonnull Network network) throws BitcoinURIParseException {
137141
Objects.requireNonNull(network);
138142
Objects.requireNonNull(input);
139143

core/src/test/java/org/bitcoinj/uri/BitcoinURITest.java

+35-35
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,7 @@ public void testConvertToBitcoinURI_segwit() {
105105

106106
@Test
107107
public void testGood_legacy() throws BitcoinURIParseException {
108-
testObject = new BitcoinURI(BITCOIN_SCHEME + ":" + MAINNET_GOOD_ADDRESS, MAINNET);
108+
testObject = BitcoinURI.of(BITCOIN_SCHEME + ":" + MAINNET_GOOD_ADDRESS, MAINNET);
109109
assertEquals(MAINNET_GOOD_ADDRESS, testObject.getAddress().toString());
110110
assertNull("Unexpected amount", testObject.getAmount());
111111
assertNull("Unexpected label", testObject.getLabel());
@@ -114,7 +114,7 @@ public void testGood_legacy() throws BitcoinURIParseException {
114114

115115
@Test
116116
public void testGood_uppercaseScheme() throws BitcoinURIParseException {
117-
testObject = new BitcoinURI(BITCOIN_SCHEME.toUpperCase(Locale.US) + ":" + MAINNET_GOOD_ADDRESS, MAINNET);
117+
testObject = BitcoinURI.of(BITCOIN_SCHEME.toUpperCase(Locale.US) + ":" + MAINNET_GOOD_ADDRESS, MAINNET);
118118
assertEquals(MAINNET_GOOD_ADDRESS, testObject.getAddress().toString());
119119
assertNull("Unexpected amount", testObject.getAmount());
120120
assertNull("Unexpected label", testObject.getLabel());
@@ -123,7 +123,7 @@ public void testGood_uppercaseScheme() throws BitcoinURIParseException {
123123

124124
@Test
125125
public void testGood_segwit() throws BitcoinURIParseException {
126-
testObject = new BitcoinURI(BITCOIN_SCHEME + ":" + MAINNET_GOOD_SEGWIT_ADDRESS, MAINNET);
126+
testObject = BitcoinURI.of(BITCOIN_SCHEME + ":" + MAINNET_GOOD_SEGWIT_ADDRESS, MAINNET);
127127
assertEquals(MAINNET_GOOD_SEGWIT_ADDRESS, testObject.getAddress().toString());
128128
assertNull("Unexpected amount", testObject.getAmount());
129129
assertNull("Unexpected label", testObject.getLabel());
@@ -135,7 +135,7 @@ public void testGood_segwit() throws BitcoinURIParseException {
135135
@Test
136136
public void testBad_Scheme() {
137137
try {
138-
testObject = new BitcoinURI("blimpcoin:" + MAINNET_GOOD_ADDRESS, MAINNET);
138+
testObject = BitcoinURI.of("blimpcoin:" + MAINNET_GOOD_ADDRESS, MAINNET);
139139
fail("Expecting BitcoinURIParseException");
140140
} catch (BitcoinURIParseException e) {
141141
}
@@ -148,22 +148,22 @@ public void testBad_Scheme() {
148148
public void testBad_BadSyntax() {
149149
// Various illegal characters
150150
try {
151-
testObject = new BitcoinURI(BITCOIN_SCHEME + "|" + MAINNET_GOOD_ADDRESS, MAINNET);
151+
testObject = BitcoinURI.of(BITCOIN_SCHEME + "|" + MAINNET_GOOD_ADDRESS, MAINNET);
152152
fail("Expecting BitcoinURIParseException");
153153
} catch (BitcoinURIParseException e) {
154154
assertTrue(e.getMessage().contains("Bad URI syntax"));
155155
}
156156

157157
try {
158-
testObject = new BitcoinURI(BITCOIN_SCHEME + ":" + MAINNET_GOOD_ADDRESS + "\\", MAINNET);
158+
testObject = BitcoinURI.of(BITCOIN_SCHEME + ":" + MAINNET_GOOD_ADDRESS + "\\", MAINNET);
159159
fail("Expecting BitcoinURIParseException");
160160
} catch (BitcoinURIParseException e) {
161161
assertTrue(e.getMessage().contains("Bad URI syntax"));
162162
}
163163

164164
// Separator without field
165165
try {
166-
testObject = new BitcoinURI(BITCOIN_SCHEME + ":", MAINNET);
166+
testObject = BitcoinURI.of(BITCOIN_SCHEME + ":", MAINNET);
167167
fail("Expecting BitcoinURIParseException");
168168
} catch (BitcoinURIParseException e) {
169169
assertTrue(e.getMessage().contains("Bad URI syntax"));
@@ -176,7 +176,7 @@ public void testBad_BadSyntax() {
176176
@Test
177177
public void testBad_Address() {
178178
try {
179-
testObject = new BitcoinURI(BITCOIN_SCHEME, MAINNET);
179+
testObject = BitcoinURI.of(BITCOIN_SCHEME, MAINNET);
180180
fail("Expecting BitcoinURIParseException");
181181
} catch (BitcoinURIParseException e) {
182182
}
@@ -188,7 +188,7 @@ public void testBad_Address() {
188188
@Test
189189
public void testBad_IncorrectAddressType() {
190190
try {
191-
testObject = new BitcoinURI(BITCOIN_SCHEME + ":" + MAINNET_GOOD_ADDRESS, TESTNET);
191+
testObject = BitcoinURI.of(BITCOIN_SCHEME + ":" + MAINNET_GOOD_ADDRESS, TESTNET);
192192
fail("Expecting BitcoinURIParseException");
193193
} catch (BitcoinURIParseException e) {
194194
assertTrue(e.getMessage().contains("Bad address"));
@@ -204,22 +204,22 @@ public void testBad_IncorrectAddressType() {
204204
@Test
205205
public void testGood_Amount() throws BitcoinURIParseException {
206206
// Test the decimal parsing
207-
testObject = new BitcoinURI(BITCOIN_SCHEME + ":" + MAINNET_GOOD_ADDRESS
207+
testObject = BitcoinURI.of(BITCOIN_SCHEME + ":" + MAINNET_GOOD_ADDRESS
208208
+ "?amount=6543210.12345678", MAINNET);
209209
assertEquals("654321012345678", testObject.getAmount().toString());
210210

211211
// Test the decimal parsing
212-
testObject = new BitcoinURI(BITCOIN_SCHEME + ":" + MAINNET_GOOD_ADDRESS
212+
testObject = BitcoinURI.of(BITCOIN_SCHEME + ":" + MAINNET_GOOD_ADDRESS
213213
+ "?amount=.12345678", MAINNET);
214214
assertEquals("12345678", testObject.getAmount().toString());
215215

216216
// Test the integer parsing
217-
testObject = new BitcoinURI(BITCOIN_SCHEME + ":" + MAINNET_GOOD_ADDRESS
217+
testObject = BitcoinURI.of(BITCOIN_SCHEME + ":" + MAINNET_GOOD_ADDRESS
218218
+ "?amount=6543210", MAINNET);
219219
assertEquals("654321000000000", testObject.getAmount().toString());
220220

221221
// the maximum amount
222-
testObject = new BitcoinURI(BITCOIN_SCHEME + ":" + MAINNET_GOOD_ADDRESS
222+
testObject = BitcoinURI.of(BITCOIN_SCHEME + ":" + MAINNET_GOOD_ADDRESS
223223
+ "?amount=" + new BigDecimal(Long.MAX_VALUE).movePointLeft(8), MAINNET);
224224
assertEquals(Long.MAX_VALUE, testObject.getAmount().longValue());
225225
}
@@ -232,7 +232,7 @@ public void testGood_Amount() throws BitcoinURIParseException {
232232
*/
233233
@Test
234234
public void testGood_Label() throws BitcoinURIParseException {
235-
testObject = new BitcoinURI(BITCOIN_SCHEME + ":" + MAINNET_GOOD_ADDRESS
235+
testObject = BitcoinURI.of(BITCOIN_SCHEME + ":" + MAINNET_GOOD_ADDRESS
236236
+ "?label=Hello%20World", MAINNET);
237237
assertEquals("Hello World", testObject.getLabel());
238238
}
@@ -247,7 +247,7 @@ public void testGood_Label() throws BitcoinURIParseException {
247247
public void testGood_LabelWithAmpersandAndPlus() throws BitcoinURIParseException {
248248
String testString = "Hello Earth & Mars + Venus";
249249
String encodedLabel = BitcoinURI.encodeURLString(testString);
250-
testObject = new BitcoinURI(BITCOIN_SCHEME + ":" + MAINNET_GOOD_ADDRESS + "?label="
250+
testObject = BitcoinURI.of(BITCOIN_SCHEME + ":" + MAINNET_GOOD_ADDRESS + "?label="
251251
+ encodedLabel, MAINNET);
252252
assertEquals(testString, testObject.getLabel());
253253
}
@@ -263,7 +263,7 @@ public void testGood_LabelWithRussian() throws BitcoinURIParseException {
263263
// Moscow in Russian in Cyrillic
264264
String moscowString = "\u041c\u043e\u0441\u043a\u0432\u0430";
265265
String encodedLabel = BitcoinURI.encodeURLString(moscowString);
266-
testObject = new BitcoinURI(BITCOIN_SCHEME + ":" + MAINNET_GOOD_ADDRESS + "?label="
266+
testObject = BitcoinURI.of(BITCOIN_SCHEME + ":" + MAINNET_GOOD_ADDRESS + "?label="
267267
+ encodedLabel, MAINNET);
268268
assertEquals(moscowString, testObject.getLabel());
269269
}
@@ -276,7 +276,7 @@ public void testGood_LabelWithRussian() throws BitcoinURIParseException {
276276
*/
277277
@Test
278278
public void testGood_Message() throws BitcoinURIParseException {
279-
testObject = new BitcoinURI(BITCOIN_SCHEME + ":" + MAINNET_GOOD_ADDRESS
279+
testObject = BitcoinURI.of(BITCOIN_SCHEME + ":" + MAINNET_GOOD_ADDRESS
280280
+ "?message=Hello%20World", MAINNET);
281281
assertEquals("Hello World", testObject.getMessage());
282282
}
@@ -289,7 +289,7 @@ public void testGood_Message() throws BitcoinURIParseException {
289289
*/
290290
@Test
291291
public void testGood_Combinations() throws BitcoinURIParseException {
292-
testObject = new BitcoinURI(BITCOIN_SCHEME + ":" + MAINNET_GOOD_ADDRESS
292+
testObject = BitcoinURI.of(BITCOIN_SCHEME + ":" + MAINNET_GOOD_ADDRESS
293293
+ "?amount=6543210&label=Hello%20World&message=Be%20well", MAINNET);
294294
assertEquals(
295295
"BitcoinURI['amount'='654321000000000','label'='Hello World','message'='Be well','address'='1KzTSfqjF2iKCduwz59nv2uqh1W2JsTxZH']",
@@ -303,7 +303,7 @@ public void testGood_Combinations() throws BitcoinURIParseException {
303303
public void testBad_Amount() {
304304
// Missing
305305
try {
306-
testObject = new BitcoinURI(BITCOIN_SCHEME + ":" + MAINNET_GOOD_ADDRESS
306+
testObject = BitcoinURI.of(BITCOIN_SCHEME + ":" + MAINNET_GOOD_ADDRESS
307307
+ "?amount=", MAINNET);
308308
fail("Expecting BitcoinURIParseException");
309309
} catch (BitcoinURIParseException e) {
@@ -312,7 +312,7 @@ public void testBad_Amount() {
312312

313313
// Non-decimal (BIP 21)
314314
try {
315-
testObject = new BitcoinURI(BITCOIN_SCHEME + ":" + MAINNET_GOOD_ADDRESS
315+
testObject = BitcoinURI.of(BITCOIN_SCHEME + ":" + MAINNET_GOOD_ADDRESS
316316
+ "?amount=12X4", MAINNET);
317317
fail("Expecting BitcoinURIParseException");
318318
} catch (BitcoinURIParseException e) {
@@ -322,13 +322,13 @@ public void testBad_Amount() {
322322

323323
@Test
324324
public void testEmpty_Label() throws BitcoinURIParseException {
325-
assertNull(new BitcoinURI(BITCOIN_SCHEME + ":" + MAINNET_GOOD_ADDRESS
325+
assertNull(BitcoinURI.of(BITCOIN_SCHEME + ":" + MAINNET_GOOD_ADDRESS
326326
+ "?label=", MAINNET).getLabel());
327327
}
328328

329329
@Test
330330
public void testEmpty_Message() throws BitcoinURIParseException {
331-
assertNull(new BitcoinURI(BITCOIN_SCHEME + ":" + MAINNET_GOOD_ADDRESS
331+
assertNull(BitcoinURI.of(BITCOIN_SCHEME + ":" + MAINNET_GOOD_ADDRESS
332332
+ "?message=", MAINNET).getMessage());
333333
}
334334

@@ -338,7 +338,7 @@ public void testEmpty_Message() throws BitcoinURIParseException {
338338
@Test
339339
public void testBad_Duplicated() {
340340
try {
341-
testObject = new BitcoinURI(BITCOIN_SCHEME + ":" + MAINNET_GOOD_ADDRESS
341+
testObject = BitcoinURI.of(BITCOIN_SCHEME + ":" + MAINNET_GOOD_ADDRESS
342342
+ "?address=aardvark", MAINNET);
343343
fail("Expecting BitcoinURIParseException");
344344
} catch (BitcoinURIParseException e) {
@@ -348,7 +348,7 @@ public void testBad_Duplicated() {
348348

349349
@Test
350350
public void testGood_ManyEquals() throws BitcoinURIParseException {
351-
assertEquals("aardvark=zebra", new BitcoinURI(BITCOIN_SCHEME + ":"
351+
assertEquals("aardvark=zebra", BitcoinURI.of(BITCOIN_SCHEME + ":"
352352
+ MAINNET_GOOD_ADDRESS + "?label=aardvark=zebra", MAINNET).getLabel());
353353
}
354354

@@ -361,15 +361,15 @@ public void testGood_ManyEquals() throws BitcoinURIParseException {
361361
@Test
362362
public void testUnknown() throws BitcoinURIParseException {
363363
// Unknown not required field
364-
testObject = new BitcoinURI(BITCOIN_SCHEME + ":" + MAINNET_GOOD_ADDRESS
364+
testObject = BitcoinURI.of(BITCOIN_SCHEME + ":" + MAINNET_GOOD_ADDRESS
365365
+ "?aardvark=true", MAINNET);
366366
assertEquals("BitcoinURI['aardvark'='true','address'='1KzTSfqjF2iKCduwz59nv2uqh1W2JsTxZH']", testObject.toString());
367367

368368
assertEquals("true", testObject.getParameterByName("aardvark"));
369369

370370
// Unknown not required field (isolated)
371371
try {
372-
testObject = new BitcoinURI(BITCOIN_SCHEME + ":" + MAINNET_GOOD_ADDRESS
372+
testObject = BitcoinURI.of(BITCOIN_SCHEME + ":" + MAINNET_GOOD_ADDRESS
373373
+ "?aardvark", MAINNET);
374374
fail("Expecting BitcoinURIParseException");
375375
} catch (BitcoinURIParseException e) {
@@ -378,7 +378,7 @@ public void testUnknown() throws BitcoinURIParseException {
378378

379379
// Unknown and required field
380380
try {
381-
testObject = new BitcoinURI(BITCOIN_SCHEME + ":" + MAINNET_GOOD_ADDRESS
381+
testObject = BitcoinURI.of(BITCOIN_SCHEME + ":" + MAINNET_GOOD_ADDRESS
382382
+ "?req-aardvark=true", MAINNET);
383383
fail("Expecting BitcoinURIParseException");
384384
} catch (BitcoinURIParseException e) {
@@ -390,34 +390,34 @@ public void testUnknown() throws BitcoinURIParseException {
390390
public void brokenURIs() throws BitcoinURIParseException {
391391
// Check we can parse the incorrectly formatted URIs produced by blockchain.info and its iPhone app.
392392
String str = "bitcoin://1KzTSfqjF2iKCduwz59nv2uqh1W2JsTxZH?amount=0.01000000";
393-
BitcoinURI uri = new BitcoinURI(str);
393+
BitcoinURI uri = BitcoinURI.of(str);
394394
assertEquals("1KzTSfqjF2iKCduwz59nv2uqh1W2JsTxZH", uri.getAddress().toString());
395395
assertEquals(CENT, uri.getAmount());
396396
}
397397

398398
@Test(expected = BitcoinURIParseException.class)
399399
public void testBad_AmountTooPrecise() throws BitcoinURIParseException {
400-
new BitcoinURI(BITCOIN_SCHEME + ":" + MAINNET_GOOD_ADDRESS
400+
BitcoinURI.of(BITCOIN_SCHEME + ":" + MAINNET_GOOD_ADDRESS
401401
+ "?amount=0.123456789", MAINNET);
402402
}
403403

404404
@Test(expected = BitcoinURIParseException.class)
405405
public void testBad_NegativeAmount() throws BitcoinURIParseException {
406-
new BitcoinURI(BITCOIN_SCHEME + ":" + MAINNET_GOOD_ADDRESS
406+
BitcoinURI.of(BITCOIN_SCHEME + ":" + MAINNET_GOOD_ADDRESS
407407
+ "?amount=-1", MAINNET);
408408
}
409409

410410
@Test(expected = BitcoinURIParseException.class)
411411
public void testBad_TooLargeAmount() throws BitcoinURIParseException {
412412
BigDecimal tooLargeByOne = new BigDecimal(Long.MAX_VALUE).add(BigDecimal.ONE);
413-
new BitcoinURI(BITCOIN_SCHEME + ":" + MAINNET_GOOD_ADDRESS
413+
BitcoinURI.of(BITCOIN_SCHEME + ":" + MAINNET_GOOD_ADDRESS
414414
+ "?amount=" + tooLargeByOne.movePointLeft(8), MAINNET);
415415
}
416416

417417
@Test
418418
public void testPaymentProtocolReq() throws Exception {
419419
// Non-backwards compatible form ...
420-
BitcoinURI uri = new BitcoinURI("bitcoin:?r=https%3A%2F%2Fbitcoincore.org%2F%7Egavin%2Ff.php%3Fh%3Db0f02e7cea67f168e25ec9b9f9d584f9", TESTNET);
420+
BitcoinURI uri = BitcoinURI.of("bitcoin:?r=https%3A%2F%2Fbitcoincore.org%2F%7Egavin%2Ff.php%3Fh%3Db0f02e7cea67f168e25ec9b9f9d584f9", TESTNET);
421421
assertEquals("https://bitcoincore.org/~gavin/f.php?h=b0f02e7cea67f168e25ec9b9f9d584f9", uri.getPaymentRequestUrl());
422422
assertEquals(Collections.singletonList("https://bitcoincore.org/~gavin/f.php?h=b0f02e7cea67f168e25ec9b9f9d584f9"),
423423
uri.getPaymentRequestUrls());
@@ -426,22 +426,22 @@ public void testPaymentProtocolReq() throws Exception {
426426

427427
@Test
428428
public void testMultiplePaymentProtocolReq() throws Exception {
429-
BitcoinURI uri = new BitcoinURI("bitcoin:?r=https%3A%2F%2Fbitcoincore.org%2F%7Egavin&r1=bt:112233445566", MAINNET);
429+
BitcoinURI uri = BitcoinURI.of("bitcoin:?r=https%3A%2F%2Fbitcoincore.org%2F%7Egavin&r1=bt:112233445566", MAINNET);
430430
assertEquals(Arrays.asList("bt:112233445566", "https://bitcoincore.org/~gavin"), uri.getPaymentRequestUrls());
431431
assertEquals("https://bitcoincore.org/~gavin", uri.getPaymentRequestUrl());
432432
}
433433

434434
@Test
435435
public void testNoPaymentProtocolReq() throws Exception {
436-
BitcoinURI uri = new BitcoinURI("bitcoin:" + MAINNET_GOOD_ADDRESS, MAINNET);
436+
BitcoinURI uri = BitcoinURI.of("bitcoin:" + MAINNET_GOOD_ADDRESS, MAINNET);
437437
assertNull(uri.getPaymentRequestUrl());
438438
assertEquals(Collections.emptyList(), uri.getPaymentRequestUrls());
439439
assertNotNull(uri.getAddress());
440440
}
441441

442442
@Test
443443
public void testUnescapedPaymentProtocolReq() throws Exception {
444-
BitcoinURI uri = new BitcoinURI("bitcoin:?r=https://merchant.com/pay.php?h%3D2a8628fc2fbe", TESTNET);
444+
BitcoinURI uri = BitcoinURI.of("bitcoin:?r=https://merchant.com/pay.php?h%3D2a8628fc2fbe", TESTNET);
445445
assertEquals("https://merchant.com/pay.php?h=2a8628fc2fbe", uri.getPaymentRequestUrl());
446446
assertEquals(Collections.singletonList("https://merchant.com/pay.php?h=2a8628fc2fbe"), uri.getPaymentRequestUrls());
447447
assertNull(uri.getAddress());

tools/src/main/java/org/bitcoinj/tools/PaymentProtocolTool.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ private static void dump(String arg) {
6060
} else if ("http".equals(uri.getScheme())) {
6161
session = PaymentSession.createFromUrl(arg).get();
6262
} else if ("bitcoin".equals(uri.getScheme())) {
63-
BitcoinURI bcuri = new BitcoinURI(arg);
63+
BitcoinURI bcuri = BitcoinURI.of(arg);
6464
final String paymentRequestUrl = bcuri.getPaymentRequestUrl();
6565
if (paymentRequestUrl == null) {
6666
System.err.println("No r= param in bitcoin URI");

wallettool/src/main/java/org/bitcoinj/wallettool/WalletTool.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -796,7 +796,7 @@ private void sendPaymentRequest(String location, boolean verifyPki) {
796796
if (location.startsWith("http")) {
797797
future = PaymentSession.createFromUrl(location, verifyPki);
798798
} else {
799-
BitcoinURI paymentRequestURI = new BitcoinURI(location);
799+
BitcoinURI paymentRequestURI = BitcoinURI.of(location);
800800
future = PaymentSession.createFromBitcoinUri(paymentRequestURI, verifyPki);
801801
}
802802
PaymentSession session = future.get();

0 commit comments

Comments
 (0)