mirror of
https://github.com/hyperledger/fabric-samples.git
synced 2026-06-22 17:45:10 +00:00
Merge "FGJ-4 split java fabcar into separate classes" into release-1.4
This commit is contained in:
commit
9a8acd5752
6 changed files with 232 additions and 192 deletions
|
|
@ -1,4 +1,6 @@
|
||||||
<project xmlns="http://maven.apache.org/POM/4.0.0" 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">
|
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
||||||
|
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">
|
||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
<groupId>fabcar-java</groupId>
|
<groupId>fabcar-java</groupId>
|
||||||
<artifactId>fabcar-java</artifactId>
|
<artifactId>fabcar-java</artifactId>
|
||||||
|
|
|
||||||
|
|
@ -2,30 +2,18 @@ package org.example;
|
||||||
|
|
||||||
import java.nio.file.Path;
|
import java.nio.file.Path;
|
||||||
import java.nio.file.Paths;
|
import java.nio.file.Paths;
|
||||||
import java.security.PrivateKey;
|
|
||||||
import java.util.Properties;
|
|
||||||
import java.util.Set;
|
|
||||||
|
|
||||||
import org.hyperledger.fabric.gateway.Contract;
|
import org.hyperledger.fabric.gateway.Contract;
|
||||||
import org.hyperledger.fabric.gateway.Gateway;
|
import org.hyperledger.fabric.gateway.Gateway;
|
||||||
import org.hyperledger.fabric.gateway.Network;
|
import org.hyperledger.fabric.gateway.Network;
|
||||||
import org.hyperledger.fabric.gateway.Wallet;
|
import org.hyperledger.fabric.gateway.Wallet;
|
||||||
import org.hyperledger.fabric.gateway.Wallet.Identity;
|
|
||||||
import org.hyperledger.fabric.sdk.Enrollment;
|
|
||||||
import org.hyperledger.fabric.sdk.User;
|
|
||||||
import org.hyperledger.fabric.sdk.security.CryptoSuite;
|
|
||||||
import org.hyperledger.fabric.sdk.security.CryptoSuiteFactory;
|
|
||||||
import org.hyperledger.fabric_ca.sdk.EnrollmentRequest;
|
|
||||||
import org.hyperledger.fabric_ca.sdk.HFCAClient;
|
|
||||||
import org.hyperledger.fabric_ca.sdk.RegistrationRequest;
|
|
||||||
|
|
||||||
public class ClientApp {
|
public class ClientApp {
|
||||||
|
|
||||||
public static void main(String[] args) throws Exception {
|
public static void main(String[] args) throws Exception {
|
||||||
// Create a new file system based wallet for managing identities.
|
// Load a file system based wallet for managing identities.
|
||||||
Path walletPath = Paths.get("wallet");
|
Path walletPath = Paths.get("wallet");
|
||||||
Wallet wallet = Wallet.createFileSystemWallet(walletPath);
|
Wallet wallet = Wallet.createFileSystemWallet(walletPath);
|
||||||
loadWallet(wallet);
|
|
||||||
|
|
||||||
// load a CCP
|
// load a CCP
|
||||||
Path networkConfigPath = Paths.get("..", "..", "first-network", "connection-org1.yaml");
|
Path networkConfigPath = Paths.get("..", "..", "first-network", "connection-org1.yaml");
|
||||||
|
|
@ -54,108 +42,7 @@ public class ClientApp {
|
||||||
|
|
||||||
result = contract.evaluateTransaction("queryCar", "CAR10");
|
result = contract.evaluateTransaction("queryCar", "CAR10");
|
||||||
System.out.println(new String(result));
|
System.out.println(new String(result));
|
||||||
|
|
||||||
} catch (Exception ex) {
|
|
||||||
ex.printStackTrace();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
private static void loadWallet(Wallet wallet) throws Exception {
|
|
||||||
// Create a CA client for interacting with the CA.
|
|
||||||
Properties props = new Properties();
|
|
||||||
props.put("pemFile", "../../first-network/crypto-config/peerOrganizations/org1.example.com/ca/ca.org1.example.com-cert.pem");
|
|
||||||
props.put("allowAllHostNames", "true");
|
|
||||||
HFCAClient caClient = HFCAClient.createNewInstance("https://localhost:7054", props);
|
|
||||||
CryptoSuite cryptoSuite = CryptoSuiteFactory.getDefault().getCryptoSuite();
|
|
||||||
caClient.setCryptoSuite(cryptoSuite);
|
|
||||||
|
|
||||||
enrollAdmin(wallet, caClient);
|
|
||||||
registerUser(wallet, caClient);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
private static void enrollAdmin(Wallet wallet, HFCAClient caClient) throws Exception {
|
|
||||||
// Check to see if we've already enrolled the admin user.
|
|
||||||
boolean adminExists = wallet.exists("admin");
|
|
||||||
if (adminExists) {
|
|
||||||
System.out.println("An identity for the admin user \"admin\" already exists in the wallet");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Enroll the admin user, and import the new identity into the wallet.
|
|
||||||
final EnrollmentRequest enrollmentRequestTLS = new EnrollmentRequest();
|
|
||||||
enrollmentRequestTLS.addHost("localhost");
|
|
||||||
enrollmentRequestTLS.setProfile("tls");
|
|
||||||
Enrollment enrollment = caClient.enroll("admin", "adminpw", enrollmentRequestTLS);
|
|
||||||
Identity user = Identity.createIdentity("Org1MSP", enrollment.getCert(), enrollment.getKey());
|
|
||||||
wallet.put("admin", user);
|
|
||||||
}
|
|
||||||
|
|
||||||
private static void registerUser(Wallet wallet, HFCAClient caClient) throws Exception {
|
|
||||||
// Check to see if we've already enrolled the user.
|
|
||||||
boolean userExists = wallet.exists("user1");
|
|
||||||
if (userExists) {
|
|
||||||
System.out.println("An identity for the user \"user1\" already exists in the wallet");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
Identity adminIdentity = wallet.get("admin");
|
|
||||||
User admin = new User() {
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getName() {
|
|
||||||
return "admin";
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Set<String> getRoles() {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getAccount() {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getAffiliation() {
|
|
||||||
return "org1.department1";
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Enrollment getEnrollment() {
|
|
||||||
return new Enrollment() {
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public PrivateKey getKey() {
|
|
||||||
return adminIdentity.getPrivateKey();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getCert() {
|
|
||||||
return adminIdentity.getCertificate();
|
|
||||||
}
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getMspId() {
|
|
||||||
return "Org1MSP";
|
|
||||||
}
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
// Register the user, enroll the user, and import the new identity into the wallet.
|
|
||||||
RegistrationRequest registrationRequest = new RegistrationRequest("user1");
|
|
||||||
registrationRequest.setAffiliation("org1.department1");
|
|
||||||
registrationRequest.setEnrollmentID("user1");
|
|
||||||
String enrollmentSecret = caClient.register(registrationRequest, admin);
|
|
||||||
Enrollment enrollment = caClient.enroll("user1", enrollmentSecret);
|
|
||||||
Identity user = Identity.createIdentity("Org1MSP", enrollment.getCert(), enrollment.getKey());
|
|
||||||
wallet.put("user1", user);
|
|
||||||
System.out.println("Successfully enrolled user \"user1\" and imported it into the wallet");
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
46
fabcar/java/src/main/java/org/example/EnrollAdmin.java
Normal file
46
fabcar/java/src/main/java/org/example/EnrollAdmin.java
Normal file
|
|
@ -0,0 +1,46 @@
|
||||||
|
package org.example;
|
||||||
|
|
||||||
|
import java.nio.file.Paths;
|
||||||
|
import java.util.Properties;
|
||||||
|
|
||||||
|
import org.hyperledger.fabric.gateway.Wallet;
|
||||||
|
import org.hyperledger.fabric.gateway.Wallet.Identity;
|
||||||
|
import org.hyperledger.fabric.sdk.Enrollment;
|
||||||
|
import org.hyperledger.fabric.sdk.security.CryptoSuite;
|
||||||
|
import org.hyperledger.fabric.sdk.security.CryptoSuiteFactory;
|
||||||
|
import org.hyperledger.fabric_ca.sdk.EnrollmentRequest;
|
||||||
|
import org.hyperledger.fabric_ca.sdk.HFCAClient;
|
||||||
|
|
||||||
|
public class EnrollAdmin {
|
||||||
|
|
||||||
|
public static void main(String[] args) throws Exception {
|
||||||
|
|
||||||
|
// Create a CA client for interacting with the CA.
|
||||||
|
Properties props = new Properties();
|
||||||
|
props.put("pemFile",
|
||||||
|
"../../first-network/crypto-config/peerOrganizations/org1.example.com/ca/ca.org1.example.com-cert.pem");
|
||||||
|
props.put("allowAllHostNames", "true");
|
||||||
|
HFCAClient caClient = HFCAClient.createNewInstance("https://localhost:7054", props);
|
||||||
|
CryptoSuite cryptoSuite = CryptoSuiteFactory.getDefault().getCryptoSuite();
|
||||||
|
caClient.setCryptoSuite(cryptoSuite);
|
||||||
|
|
||||||
|
// Create a wallet for managing identities
|
||||||
|
Wallet wallet = Wallet.createFileSystemWallet(Paths.get("wallet"));
|
||||||
|
|
||||||
|
// Check to see if we've already enrolled the admin user.
|
||||||
|
boolean adminExists = wallet.exists("admin");
|
||||||
|
if (adminExists) {
|
||||||
|
System.out.println("An identity for the admin user \"admin\" already exists in the wallet");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Enroll the admin user, and import the new identity into the wallet.
|
||||||
|
final EnrollmentRequest enrollmentRequestTLS = new EnrollmentRequest();
|
||||||
|
enrollmentRequestTLS.addHost("localhost");
|
||||||
|
enrollmentRequestTLS.setProfile("tls");
|
||||||
|
Enrollment enrollment = caClient.enroll("admin", "adminpw", enrollmentRequestTLS);
|
||||||
|
Identity user = Identity.createIdentity("Org1MSP", enrollment.getCert(), enrollment.getKey());
|
||||||
|
wallet.put("admin", user);
|
||||||
|
System.out.println("Successfully enrolled user \"admin\" and imported it into the wallet");
|
||||||
|
}
|
||||||
|
}
|
||||||
103
fabcar/java/src/main/java/org/example/RegisterUser.java
Normal file
103
fabcar/java/src/main/java/org/example/RegisterUser.java
Normal file
|
|
@ -0,0 +1,103 @@
|
||||||
|
package org.example;
|
||||||
|
|
||||||
|
import java.nio.file.Paths;
|
||||||
|
import java.security.PrivateKey;
|
||||||
|
import java.util.Properties;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
|
import org.hyperledger.fabric.gateway.Wallet;
|
||||||
|
import org.hyperledger.fabric.gateway.Wallet.Identity;
|
||||||
|
import org.hyperledger.fabric.sdk.Enrollment;
|
||||||
|
import org.hyperledger.fabric.sdk.User;
|
||||||
|
import org.hyperledger.fabric.sdk.security.CryptoSuite;
|
||||||
|
import org.hyperledger.fabric.sdk.security.CryptoSuiteFactory;
|
||||||
|
import org.hyperledger.fabric_ca.sdk.HFCAClient;
|
||||||
|
import org.hyperledger.fabric_ca.sdk.RegistrationRequest;
|
||||||
|
|
||||||
|
public class RegisterUser {
|
||||||
|
|
||||||
|
public static void main(String[] args) throws Exception {
|
||||||
|
|
||||||
|
// Create a CA client for interacting with the CA.
|
||||||
|
Properties props = new Properties();
|
||||||
|
props.put("pemFile",
|
||||||
|
"../../first-network/crypto-config/peerOrganizations/org1.example.com/ca/ca.org1.example.com-cert.pem");
|
||||||
|
props.put("allowAllHostNames", "true");
|
||||||
|
HFCAClient caClient = HFCAClient.createNewInstance("https://localhost:7054", props);
|
||||||
|
CryptoSuite cryptoSuite = CryptoSuiteFactory.getDefault().getCryptoSuite();
|
||||||
|
caClient.setCryptoSuite(cryptoSuite);
|
||||||
|
|
||||||
|
// Create a wallet for managing identities
|
||||||
|
Wallet wallet = Wallet.createFileSystemWallet(Paths.get("wallet"));
|
||||||
|
|
||||||
|
// Check to see if we've already enrolled the user.
|
||||||
|
boolean userExists = wallet.exists("user1");
|
||||||
|
if (userExists) {
|
||||||
|
System.out.println("An identity for the user \"user1\" already exists in the wallet");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
userExists = wallet.exists("admin");
|
||||||
|
if (!userExists) {
|
||||||
|
System.out.println("\"admin\" needs to be enrolled and added to the wallet first");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
Identity adminIdentity = wallet.get("admin");
|
||||||
|
User admin = new User() {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getName() {
|
||||||
|
return "admin";
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Set<String> getRoles() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getAccount() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getAffiliation() {
|
||||||
|
return "org1.department1";
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Enrollment getEnrollment() {
|
||||||
|
return new Enrollment() {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public PrivateKey getKey() {
|
||||||
|
return adminIdentity.getPrivateKey();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getCert() {
|
||||||
|
return adminIdentity.getCertificate();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getMspId() {
|
||||||
|
return "Org1MSP";
|
||||||
|
}
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
// Register the user, enroll the user, and import the new identity into the wallet.
|
||||||
|
RegistrationRequest registrationRequest = new RegistrationRequest("user1");
|
||||||
|
registrationRequest.setAffiliation("org1.department1");
|
||||||
|
registrationRequest.setEnrollmentID("user1");
|
||||||
|
String enrollmentSecret = caClient.register(registrationRequest, admin);
|
||||||
|
Enrollment enrollment = caClient.enroll("user1", enrollmentSecret);
|
||||||
|
Identity user = Identity.createIdentity("Org1MSP", enrollment.getCert(), enrollment.getKey());
|
||||||
|
wallet.put("user1", user);
|
||||||
|
System.out.println("Successfully enrolled user \"user1\" and imported it into the wallet");
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -6,6 +6,8 @@ public class ClientTest {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testFabCar() throws Exception {
|
public void testFabCar() throws Exception {
|
||||||
|
EnrollAdmin.main(null);
|
||||||
|
RegisterUser.main(null);
|
||||||
ClientApp.main(null);
|
ClientApp.main(null);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -213,7 +213,7 @@ Java:
|
||||||
Then, install dependencies and run the test using:
|
Then, install dependencies and run the test using:
|
||||||
mvn test
|
mvn test
|
||||||
|
|
||||||
The test will invoke the sample client app which perform the following:
|
The test will invoke the sample client app which perform the following:
|
||||||
- Enroll admin and user1 and import them into the wallet (if they don't already exist there)
|
- Enroll admin and user1 and import them into the wallet (if they don't already exist there)
|
||||||
- Submit a transaction to create a new car
|
- Submit a transaction to create a new car
|
||||||
- Evaluate a transaction (query) to return details of this car
|
- Evaluate a transaction (query) to return details of this car
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue