diff --git a/commercial-paper/organization/digibank/application-java/.classpath b/commercial-paper/organization/digibank/application-java/.classpath deleted file mode 100644 index 149cb3c9..00000000 --- a/commercial-paper/organization/digibank/application-java/.classpath +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - - - - - - - - - - - - - - diff --git a/commercial-paper/organization/digibank/application-java/dependency-reduced-pom.xml b/commercial-paper/organization/digibank/application-java/dependency-reduced-pom.xml deleted file mode 100644 index 7ff0d0cc..00000000 --- a/commercial-paper/organization/digibank/application-java/dependency-reduced-pom.xml +++ /dev/null @@ -1,61 +0,0 @@ - - - 4.0.0 - commercial-paper - commercial-paper - 0.0.1-SNAPSHOT - - src - - - maven-compiler-plugin - 3.8.0 - - 1.8 - 1.8 - - - - maven-shade-plugin - 3.2.0 - - - package - - shade - - - - - - - *:* - - META-INF/*.SF - META-INF/*.DSA - META-INF/*.RSA - - - - - - - - - - hyperledger - Hyperledger Artifactory - https://hyperledger.jfrog.io/hyperledger/fabric-maven - - - jitpack.io - https://jitpack.io - - - - 1.4.2 - UTF-8 - 1.8 - UTF-8 - - diff --git a/commercial-paper/organization/digibank/application-java/pom.xml b/commercial-paper/organization/digibank/application-java/pom.xml index dbdffae1..9b683391 100644 --- a/commercial-paper/organization/digibank/application-java/pom.xml +++ b/commercial-paper/organization/digibank/application-java/pom.xml @@ -1,99 +1,96 @@ - 4.0.0 - commercial-paper - commercial-paper - 0.0.1-SNAPSHOT + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + 4.0.0 + commercial-paper + commercial-paper + 0.0.1-SNAPSHOT - + - - 1.8 - UTF-8 - UTF-8 + + 1.8 + UTF-8 + UTF-8 - - [2.0,3.0) + + [2.0,3.0) + + 2.0.0 - + - - src - - - maven-compiler-plugin - 3.8.0 - - 1.8 - 1.8 - - + + src + + + maven-compiler-plugin + 3.8.0 + + 1.8 + 1.8 + + - - org.apache.maven.plugins - maven-shade-plugin - 3.2.0 - - - - package - - shade - - - - - - - *:* - + + org.apache.maven.plugins + maven-shade-plugin + 3.2.0 + + + + package + + shade + + + + + false + + + *:* + META-INF/*.SF META-INF/*.DSA META-INF/*.RSA - - - - - + + + + + - - + + - - - hyperledger - Hyperledger Nexus - https://hyperledger.jfrog.io/hyperledger/fabric-maven - + + + jitpack.io + https://jitpack.io + + - - jitpack.io - https://jitpack.io - - + + + org.hyperledger.fabric + fabric-gateway-java + ${fabric-gateway-java.version} + - - - org.hyperledger.fabric-gateway-java - fabric-gateway-java - 2.0.0-SNAPSHOT - + + + org.hyperledger.fabric-chaincode-java + fabric-chaincode-shim + ${fabric-chaincode-java.version} + compile + - - - org.hyperledger.fabric-chaincode-java - fabric-chaincode-shim - ${fabric-chaincode-java.version} - compile - + + + org.json + json + 20180813 + - - - org.json - json - 20180813 - - - + diff --git a/commercial-paper/organization/digibank/application-java/src/org/digibank/AddToWallet.java b/commercial-paper/organization/digibank/application-java/src/org/digibank/AddToWallet.java index 01ace5aa..6a3fa121 100644 --- a/commercial-paper/organization/digibank/application-java/src/org/digibank/AddToWallet.java +++ b/commercial-paper/organization/digibank/application-java/src/org/digibank/AddToWallet.java @@ -5,40 +5,64 @@ SPDX-License-Identifier: Apache-2.0 package org.digibank; import java.io.IOException; +import java.io.Reader; +import java.nio.charset.StandardCharsets; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; - -import org.hyperledger.fabric.gateway.GatewayException; +import java.security.InvalidKeyException; +import java.security.PrivateKey; +import java.security.cert.CertificateException; +import java.security.cert.X509Certificate; +import org.hyperledger.fabric.gateway.Identities; +import org.hyperledger.fabric.gateway.Identity; import org.hyperledger.fabric.gateway.Wallet; -import org.hyperledger.fabric.gateway.Wallet.Identity; +import org.hyperledger.fabric.gateway.Wallets; public class AddToWallet { - public static void main(String[] args) { - try { - // A wallet stores a collection of identities - Path walletPath = Paths.get("..", "identity", "user", "balaji", "wallet"); - Wallet wallet = Wallet.createFileSystemWallet(walletPath); + private static X509Certificate readX509Certificate(final Path certificatePath) throws IOException, CertificateException { + try (Reader certificateReader = Files.newBufferedReader(certificatePath, StandardCharsets.UTF_8)) { + return Identities.readX509Certificate(certificateReader); + } + } - // Location of credentials to be stored in the wallet - Path credentialPath = Paths.get("..", "..", "..", "..","basic-network", "crypto-config", - "peerOrganizations", "org1.example.com", "users", "Admin@org1.example.com", "msp"); - Path certificatePem = credentialPath.resolve(Paths.get("signcerts", - "Admin@org1.example.com-cert.pem")); - Path privateKey = credentialPath.resolve(Paths.get("keystore", - "cd96d5260ad4757551ed4a5a991e62130f8008a0bf996e4e4b84cd097a747fec_sk")); + private static PrivateKey getPrivateKey(final Path privateKeyPath) throws IOException, InvalidKeyException { + try (Reader privateKeyReader = Files.newBufferedReader(privateKeyPath, StandardCharsets.UTF_8)) { + return Identities.readPrivateKey(privateKeyReader); + } + } - // Load credentials into wallet - String identityLabel = "Admin@org1.example.com"; - Identity identity = Identity.createIdentity("Org1MSP", Files.newBufferedReader(certificatePem), Files.newBufferedReader(privateKey)); + public static void main(String[] args) { + try { + // A wallet stores a collection of identities + Path walletPath = Paths.get(".", "wallet"); + Wallet wallet = Wallets.newFileSystemWallet(walletPath); - wallet.put(identityLabel, identity); + Path credentialPath = Paths.get("..", "..", "..",".." ,"test-network", "organizations", + "peerOrganizations", "org1.example.com", "users", "User1@org1.example.com", "msp"); + System.out.println("credentialPath: " + credentialPath.toString()); + Path certificatePath = credentialPath.resolve(Paths.get("signcerts", + "User1@org1.example.com-cert.pem")); + System.out.println("certificatePem: " + certificatePath.toString()); + Path privateKeyPath = credentialPath.resolve(Paths.get("keystore", + "priv_sk")); - } catch (IOException e) { - System.err.println("Error adding to wallet"); - e.printStackTrace(); - } - } + X509Certificate certificate = readX509Certificate(certificatePath); + PrivateKey privateKey = getPrivateKey(privateKeyPath); + + Identity identity = Identities.newX509Identity("Org1MSP", certificate, privateKey); + + + String identityLabel = "User1@org1.example.com"; + wallet.put(identityLabel, identity); + + System.out.println("Write wallet info into " + walletPath.toString() + " successfully."); + + } catch (IOException | CertificateException | InvalidKeyException e) { + System.err.println("Error adding to wallet"); + e.printStackTrace(); + } + } } diff --git a/commercial-paper/organization/digibank/application-java/src/org/digibank/Buy.java b/commercial-paper/organization/digibank/application-java/src/org/digibank/Buy.java index 9e3710ed..5e09bbd1 100644 --- a/commercial-paper/organization/digibank/application-java/src/org/digibank/Buy.java +++ b/commercial-paper/organization/digibank/application-java/src/org/digibank/Buy.java @@ -15,12 +15,13 @@ import org.hyperledger.fabric.gateway.Gateway; import org.hyperledger.fabric.gateway.GatewayException; import org.hyperledger.fabric.gateway.Network; import org.hyperledger.fabric.gateway.Wallet; +import org.hyperledger.fabric.gateway.Wallets; import org.papernet.CommercialPaper; public class Buy { private static final String ENVKEY="CONTRACT_NAME"; - + public static void main(String[] args) { Gateway.Builder builder = Gateway.createBuilder(); @@ -33,28 +34,29 @@ public class Buy { try { // A wallet stores a collection of identities - Path walletPath = Paths.get("..", "identity", "user", "balaji", "wallet"); - Wallet wallet = Wallet.createFileSystemWallet(walletPath); + Path walletPath = Paths.get(".", "wallet"); + Wallet wallet = Wallets.newFileSystemWallet(walletPath); + System.out.println("Read wallet info from: " + walletPath); - String userName = "Admin@org1.example.com"; + String userName = "User1@org1.example.com"; - Path connectionProfile = Paths.get("..", "gateway", "networkConnection.yaml"); + Path connectionProfile = Paths.get("..", "gateway", "connection-org1.yaml"); - // Set connection options on the gateway builder + // Set connection options on the gateway builder builder.identity(wallet, userName).networkConfig(connectionProfile).discovery(false); - // Connect to gateway using application specified parameters + // Connect to gateway using application specified parameters try(Gateway gateway = builder.connect()) { // Access PaperNet network - System.out.println("Use network channel: mychannel."); - Network network = gateway.getNetwork("mychannel"); + System.out.println("Use network channel: mychannel."); + Network network = gateway.getNetwork("mychannel"); - // Get addressability to commercial paper contract - System.out.println("Use org.papernet.commercialpaper smart contract."); - Contract contract = network.getContract(contractName, "org.papernet.commercialpaper"); + // Get addressability to commercial paper contract + System.out.println("Use org.papernet.commercialpaper smart contract."); + Contract contract = network.getContract(contractName, "org.papernet.commercialpaper"); - // Buy commercial paper + // Buy commercial paper System.out.println("Submit commercial paper buy transaction."); byte[] response = contract.submitTransaction("buy", "MagnetoCorp", "00001", "MagnetoCorp", "DigiBank", "4900000", "2020-05-31"); diff --git a/commercial-paper/organization/digibank/application-java/src/org/digibank/Redeem.java b/commercial-paper/organization/digibank/application-java/src/org/digibank/Redeem.java index b60b04c5..62eb9d9e 100644 --- a/commercial-paper/organization/digibank/application-java/src/org/digibank/Redeem.java +++ b/commercial-paper/organization/digibank/application-java/src/org/digibank/Redeem.java @@ -15,15 +15,16 @@ import org.hyperledger.fabric.gateway.Gateway; import org.hyperledger.fabric.gateway.GatewayException; import org.hyperledger.fabric.gateway.Network; import org.hyperledger.fabric.gateway.Wallet; +import org.hyperledger.fabric.gateway.Wallets; import org.papernet.CommercialPaper; public class Redeem { private static final String ENVKEY="CONTRACT_NAME"; - + public static void main(String[] args) { Gateway.Builder builder = Gateway.createBuilder(); - + String contractName="papercontract"; // get the name of the contract, in case it is overridden Map envvar = System.getenv(); @@ -33,28 +34,28 @@ public class Redeem { try { // A wallet stores a collection of identities - Path walletPath = Paths.get("..", "identity", "user", "balaji", "wallet"); - Wallet wallet = Wallet.createFileSystemWallet(walletPath); + Path walletPath = Paths.get(".", "wallet"); + Wallet wallet = Wallets.newFileSystemWallet(walletPath); - String userName = "Admin@org1.example.com"; + String userName = "User1@org1.example.com"; - Path connectionProfile = Paths.get("..", "gateway", "networkConnection.yaml"); + Path connectionProfile = Paths.get("..", "gateway", "connection-org1.yaml"); - // Set connection options on the gateway builder + // Set connection options on the gateway builder builder.identity(wallet, userName).networkConfig(connectionProfile).discovery(false); - // Connect to gateway using application specified parameters + // Connect to gateway using application specified parameters try(Gateway gateway = builder.connect()) { // Access PaperNet network - System.out.println("Use network channel: mychannel."); - Network network = gateway.getNetwork("mychannel"); + System.out.println("Use network channel: mychannel."); + Network network = gateway.getNetwork("mychannel"); - // Get addressability to commercial paper contract - System.out.println("Use org.papernet.commercialpaper smart contract."); - Contract contract = network.getContract("papercontract", "org.papernet.commercialpaper"); + // Get addressability to commercial paper contract + System.out.println("Use org.papernet.commercialpaper smart contract."); + Contract contract = network.getContract("papercontract", "org.papernet.commercialpaper"); - // Redeem commercial paper + // Redeem commercial paper System.out.println("Submit commercial paper redeem transaction."); byte[] response = contract.submitTransaction("redeem", "MagnetoCorp", "00001", "DigiBank", "2020-11-30"); diff --git a/commercial-paper/organization/magnetocorp/application-java/.classpath b/commercial-paper/organization/magnetocorp/application-java/.classpath deleted file mode 100644 index 149cb3c9..00000000 --- a/commercial-paper/organization/magnetocorp/application-java/.classpath +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - - - - - - - - - - - - - - diff --git a/commercial-paper/organization/magnetocorp/application-java/dependency-reduced-pom.xml b/commercial-paper/organization/magnetocorp/application-java/dependency-reduced-pom.xml deleted file mode 100644 index 7ff0d0cc..00000000 --- a/commercial-paper/organization/magnetocorp/application-java/dependency-reduced-pom.xml +++ /dev/null @@ -1,61 +0,0 @@ - - - 4.0.0 - commercial-paper - commercial-paper - 0.0.1-SNAPSHOT - - src - - - maven-compiler-plugin - 3.8.0 - - 1.8 - 1.8 - - - - maven-shade-plugin - 3.2.0 - - - package - - shade - - - - - - - *:* - - META-INF/*.SF - META-INF/*.DSA - META-INF/*.RSA - - - - - - - - - - hyperledger - Hyperledger Artifactory - https://hyperledger.jfrog.io/hyperledger/fabric-maven - - - jitpack.io - https://jitpack.io - - - - 1.4.2 - UTF-8 - 1.8 - UTF-8 - - diff --git a/commercial-paper/organization/magnetocorp/application-java/pom.xml b/commercial-paper/organization/magnetocorp/application-java/pom.xml index 194967c6..9b683391 100644 --- a/commercial-paper/organization/magnetocorp/application-java/pom.xml +++ b/commercial-paper/organization/magnetocorp/application-java/pom.xml @@ -1,99 +1,96 @@ - 4.0.0 - commercial-paper - commercial-paper - 0.0.1-SNAPSHOT + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + 4.0.0 + commercial-paper + commercial-paper + 0.0.1-SNAPSHOT - + - - 1.8 - UTF-8 - UTF-8 + + 1.8 + UTF-8 + UTF-8 - - [2.0,3.0) + + [2.0,3.0) + + 2.0.0 - + - - src - - - maven-compiler-plugin - 3.8.0 - - 1.8 - 1.8 - - + + src + + + maven-compiler-plugin + 3.8.0 + + 1.8 + 1.8 + + - - org.apache.maven.plugins - maven-shade-plugin - 3.2.0 - - - - package - - shade - - - - - - - *:* - + + org.apache.maven.plugins + maven-shade-plugin + 3.2.0 + + + + package + + shade + + + + + false + + + *:* + META-INF/*.SF META-INF/*.DSA META-INF/*.RSA - - - - - + + + + + - - + + - - - hyperledger - Hyperledger Artifactory - https://hyperledger.jfrog.io/hyperledger/fabric-maven - + + + jitpack.io + https://jitpack.io + + - - jitpack.io - https://jitpack.io - - + + + org.hyperledger.fabric + fabric-gateway-java + ${fabric-gateway-java.version} + - - - org.hyperledger - fabric-gateway-java - 1.4.0-SNAPSHOT - + + + org.hyperledger.fabric-chaincode-java + fabric-chaincode-shim + ${fabric-chaincode-java.version} + compile + - - - org.hyperledger.fabric-chaincode-java - fabric-chaincode-shim - ${fabric-chaincode-java.version} - compile - + + + org.json + json + 20180813 + - - - org.json - json - 20180813 - - - + diff --git a/commercial-paper/organization/magnetocorp/application-java/src/org/magnetocorp/AddToWallet.java b/commercial-paper/organization/magnetocorp/application-java/src/org/magnetocorp/AddToWallet.java index 4470021e..36d0c1f4 100644 --- a/commercial-paper/organization/magnetocorp/application-java/src/org/magnetocorp/AddToWallet.java +++ b/commercial-paper/organization/magnetocorp/application-java/src/org/magnetocorp/AddToWallet.java @@ -5,40 +5,64 @@ SPDX-License-Identifier: Apache-2.0 package org.magnetocorp; import java.io.IOException; +import java.io.Reader; +import java.nio.charset.StandardCharsets; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; - -import org.hyperledger.fabric.gateway.GatewayException; +import java.security.InvalidKeyException; +import java.security.PrivateKey; +import java.security.cert.CertificateException; +import java.security.cert.X509Certificate; +import org.hyperledger.fabric.gateway.Identities; import org.hyperledger.fabric.gateway.Wallet; -import org.hyperledger.fabric.gateway.Wallet.Identity; +import org.hyperledger.fabric.gateway.Wallets; +import org.hyperledger.fabric.gateway.Identity; public class AddToWallet { - public static void main(String[] args) { - try { - // A wallet stores a collection of identities - Path walletPath = Paths.get("..", "identity", "user", "isabella", "wallet"); - Wallet wallet = Wallet.createFileSystemWallet(walletPath); + private static X509Certificate readX509Certificate(final Path certificatePath) throws IOException, CertificateException { + try (Reader certificateReader = Files.newBufferedReader(certificatePath, StandardCharsets.UTF_8)) { + return Identities.readX509Certificate(certificateReader); + } + } - // Location of credentials to be stored in the wallet - Path credentialPath = Paths.get("..", "..",".." ,".." ,"basic-network", "crypto-config", - "peerOrganizations", "org1.example.com", "users", "User1@org1.example.com", "msp"); - Path certificatePem = credentialPath.resolve(Paths.get("signcerts", - "User1@org1.example.com-cert.pem")); - Path privateKey = credentialPath.resolve(Paths.get("keystore", - "c75bd6911aca808941c3557ee7c97e90f3952e379497dc55eb903f31b50abc83_sk")); + private static PrivateKey getPrivateKey(final Path privateKeyPath) throws IOException, InvalidKeyException { + try (Reader privateKeyReader = Files.newBufferedReader(privateKeyPath, StandardCharsets.UTF_8)) { + return Identities.readPrivateKey(privateKeyReader); + } + } - // Load credentials into wallet - String identityLabel = "User1@org1.example.com"; - Identity identity = Identity.createIdentity("Org1MSP", Files.newBufferedReader(certificatePem), Files.newBufferedReader(privateKey)); + public static void main(String[] args) { + try { + // A wallet stores a collection of identities + Path walletPath = Paths.get(".", "wallet"); + Wallet wallet = Wallets.newFileSystemWallet(walletPath); - wallet.put(identityLabel, identity); + Path credentialPath = Paths.get("..", "..", "..",".." ,"test-network", "organizations", + "peerOrganizations", "org2.example.com", "users", "User1@org2.example.com", "msp"); + System.out.println("credentialPath: " + credentialPath.toString()); + Path certificatePath = credentialPath.resolve(Paths.get("signcerts", + "User1@org2.example.com-cert.pem")); + System.out.println("certificatePem: " + certificatePath.toString()); + Path privateKeyPath = credentialPath.resolve(Paths.get("keystore", + "priv_sk")); - } catch (IOException e) { - System.err.println("Error adding to wallet"); - e.printStackTrace(); - } - } + X509Certificate certificate = readX509Certificate(certificatePath); + PrivateKey privateKey = getPrivateKey(privateKeyPath); -} + Identity identity = Identities.newX509Identity("Org2MSP", certificate, privateKey); + + + String identityLabel = "User1@org2.example.com"; + wallet.put(identityLabel, identity); + + System.out.println("Write wallet info into " + walletPath.toString() + " successfully."); + + } catch (IOException | CertificateException | InvalidKeyException e) { + System.err.println("Error adding to wallet"); + e.printStackTrace(); + } + } + +} \ No newline at end of file diff --git a/commercial-paper/organization/magnetocorp/application-java/src/org/magnetocorp/Issue.java b/commercial-paper/organization/magnetocorp/application-java/src/org/magnetocorp/Issue.java index 352d65d9..cdc268ed 100644 --- a/commercial-paper/organization/magnetocorp/application-java/src/org/magnetocorp/Issue.java +++ b/commercial-paper/organization/magnetocorp/application-java/src/org/magnetocorp/Issue.java @@ -15,59 +15,61 @@ import org.hyperledger.fabric.gateway.Gateway; import org.hyperledger.fabric.gateway.GatewayException; import org.hyperledger.fabric.gateway.Network; import org.hyperledger.fabric.gateway.Wallet; +import org.hyperledger.fabric.gateway.Wallets; import org.papernet.CommercialPaper; public class Issue { - private static final String ENVKEY="CONTRACT_NAME"; + private static final String ENVKEY="CONTRACT_NAME"; - public static void main(String[] args) { + public static void main(String[] args) { - String contractName="papercontract"; - // get the name of the contract, in case it is overridden - Map envvar = System.getenv(); - if (envvar.containsKey(ENVKEY)){ - contractName=envvar.get(ENVKEY); - } + String contractName="papercontract"; + // get the name of the contract, in case it is overridden + Map envvar = System.getenv(); + if (envvar.containsKey(ENVKEY)){ + contractName=envvar.get(ENVKEY); + } - Gateway.Builder builder = Gateway.createBuilder(); + Gateway.Builder builder = Gateway.createBuilder(); - try { - // A wallet stores a collection of identities - Path walletPath = Paths.get("..", "identity", "user", "isabella", "wallet"); - Wallet wallet = Wallet.createFileSystemWallet(walletPath); + try { + // A wallet stores a collection of identities + Path walletPath = Paths.get(".", "wallet"); + Wallet wallet = Wallets.newFileSystemWallet(walletPath); + System.out.println("Read wallet info from: " + walletPath.toString()); - String userName = "User1@org1.example.com"; + String userName = "User1@org2.example.com"; - Path connectionProfile = Paths.get("..", "gateway", "networkConnection.yaml"); + Path connectionProfile = Paths.get("..", "gateway", "connection-org2.yaml"); - // Set connection options on the gateway builder - builder.identity(wallet, userName).networkConfig(connectionProfile).discovery(false); + // Set connection options on the gateway builder + builder.identity(wallet, userName).networkConfig(connectionProfile).discovery(false); - // Connect to gateway using application specified parameters - try(Gateway gateway = builder.connect()) { + // Connect to gateway using application specified parameters + try(Gateway gateway = builder.connect()) { - // Access PaperNet network - System.out.println("Use network channel: mychannel."); - Network network = gateway.getNetwork("mychannel"); + // Access PaperNet network + System.out.println("Use network channel: mychannel."); + Network network = gateway.getNetwork("mychannel"); - // Get addressability to commercial paper contract - System.out.println("Use org.papernet.commercialpaper smart contract."); - Contract contract = network.getContract(contractName, "org.papernet.commercialpaper"); + // Get addressability to commercial paper contract + System.out.println("Use org.papernet.commercialpaper smart contract."); + Contract contract = network.getContract(contractName, "org.papernet.commercialpaper"); - // Issue commercial paper - System.out.println("Submit commercial paper issue transaction."); - byte[] response = contract.submitTransaction("issue", "MagnetoCorp", "00001", "2020-05-31", "2020-11-30", "5000000"); + // Issue commercial paper + System.out.println("Submit commercial paper issue transaction."); + byte[] response = contract.submitTransaction("issue", "MagnetoCorp", "00001", "2020-05-31", "2020-11-30", "5000000"); - // Process response - System.out.println("Process issue transaction response."); - CommercialPaper paper = CommercialPaper.deserialize(response); - System.out.println(paper); - } - } catch (GatewayException | IOException | TimeoutException | InterruptedException e) { - e.printStackTrace(); - System.exit(-1); - } - } + // Process response + System.out.println("Process issue transaction response."); + CommercialPaper paper = CommercialPaper.deserialize(response); + System.out.println(paper); + } + } catch (GatewayException | IOException | TimeoutException | InterruptedException e) { + e.printStackTrace(); + System.exit(-1); + } + } -} +} \ No newline at end of file