FGJ-84 Update Fabcar Java app to 2.1.1 (#167)

This updates the fabcar java application to work with the fabric
gateway java version 2.1.1.
It also changes pom.xml to produce a jar file that is self contained
for ease of use.

Signed-off-by: Arnaud J Le Hors <lehors@us.ibm.com>
This commit is contained in:
Arnaud J Le Hors 2020-05-20 10:03:10 +02:00 committed by GitHub
parent a9968ea811
commit 23df2d620a
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 58 additions and 27 deletions

View file

@ -4,7 +4,7 @@
<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>
<version>2.0.0-SNAPSHOT</version> <version>2.1.1</version>
<build> <build>
<plugins> <plugins>
<plugin> <plugin>
@ -15,6 +15,35 @@
<target>1.8</target> <target>1.8</target>
</configuration> </configuration>
</plugin> </plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>3.2.0</version>
<executions>
<!-- Attach the shade goal into the package phase -->
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
</execution>
</executions>
<configuration>
<createDependencyReducedPom>false</createDependencyReducedPom>
<filters>
<filter>
<artifact>*:*</artifact>
<excludes>
<exclude>META-INF/*.SF</exclude>
<exclude>META-INF/*.DSA</exclude>
<exclude>META-INF/*.RSA</exclude>
</excludes>
</filter>
</filters>
</configuration>
</plugin>
</plugins> </plugins>
</build> </build>
<repositories> <repositories>
@ -28,7 +57,7 @@
<dependency> <dependency>
<groupId>org.hyperledger.fabric</groupId> <groupId>org.hyperledger.fabric</groupId>
<artifactId>fabric-gateway-java</artifactId> <artifactId>fabric-gateway-java</artifactId>
<version>1.4.3</version> <version>2.1.1</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>org.junit.platform</groupId> <groupId>org.junit.platform</groupId>

View file

@ -11,6 +11,7 @@ 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.Wallets;
public class ClientApp { public class ClientApp {
@ -21,7 +22,7 @@ public class ClientApp {
public static void main(String[] args) throws Exception { public static void main(String[] args) throws Exception {
// Load a 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 = Wallets.newFileSystemWallet(walletPath);
// load a CCP // load a CCP
Path networkConfigPath = Paths.get("..", "..", "test-network", "organizations", "peerOrganizations", "org1.example.com", "connection-org1.yaml"); Path networkConfigPath = Paths.get("..", "..", "test-network", "organizations", "peerOrganizations", "org1.example.com", "connection-org1.yaml");

View file

@ -8,7 +8,9 @@ import java.nio.file.Paths;
import java.util.Properties; import java.util.Properties;
import org.hyperledger.fabric.gateway.Wallet; import org.hyperledger.fabric.gateway.Wallet;
import org.hyperledger.fabric.gateway.Wallet.Identity; import org.hyperledger.fabric.gateway.Wallets;
import org.hyperledger.fabric.gateway.Identities;
import org.hyperledger.fabric.gateway.Identity;
import org.hyperledger.fabric.sdk.Enrollment; import org.hyperledger.fabric.sdk.Enrollment;
import org.hyperledger.fabric.sdk.security.CryptoSuite; import org.hyperledger.fabric.sdk.security.CryptoSuite;
import org.hyperledger.fabric.sdk.security.CryptoSuiteFactory; import org.hyperledger.fabric.sdk.security.CryptoSuiteFactory;
@ -33,22 +35,21 @@ public class EnrollAdmin {
caClient.setCryptoSuite(cryptoSuite); caClient.setCryptoSuite(cryptoSuite);
// Create a wallet for managing identities // Create a wallet for managing identities
Wallet wallet = Wallet.createFileSystemWallet(Paths.get("wallet")); Wallet wallet = Wallets.newFileSystemWallet(Paths.get("wallet"));
// Check to see if we've already enrolled the admin user. // Check to see if we've already enrolled the admin user.
boolean adminExists = wallet.exists("admin"); if (wallet.get("admin") != null) {
if (adminExists) { System.out.println("An identity for the admin user \"admin\" already exists in the wallet");
System.out.println("An identity for the admin user \"admin\" already exists in the wallet"); return;
return; }
}
// Enroll the admin user, and import the new identity into the wallet. // Enroll the admin user, and import the new identity into the wallet.
final EnrollmentRequest enrollmentRequestTLS = new EnrollmentRequest(); final EnrollmentRequest enrollmentRequestTLS = new EnrollmentRequest();
enrollmentRequestTLS.addHost("localhost"); enrollmentRequestTLS.addHost("localhost");
enrollmentRequestTLS.setProfile("tls"); enrollmentRequestTLS.setProfile("tls");
Enrollment enrollment = caClient.enroll("admin", "adminpw", enrollmentRequestTLS); Enrollment enrollment = caClient.enroll("admin", "adminpw", enrollmentRequestTLS);
Identity user = Identity.createIdentity("Org1MSP", enrollment.getCert(), enrollment.getKey()); Identity user = Identities.newX509Identity("Org1MSP", enrollment);
wallet.put("admin", user); wallet.put("admin", user);
System.out.println("Successfully enrolled user \"admin\" and imported it into the wallet"); System.out.println("Successfully enrolled user \"admin\" and imported it into the wallet");
} }
} }

View file

@ -10,7 +10,10 @@ import java.util.Properties;
import java.util.Set; import java.util.Set;
import org.hyperledger.fabric.gateway.Wallet; import org.hyperledger.fabric.gateway.Wallet;
import org.hyperledger.fabric.gateway.Wallet.Identity; import org.hyperledger.fabric.gateway.Wallets;
import org.hyperledger.fabric.gateway.Identities;
import org.hyperledger.fabric.gateway.Identity;
import org.hyperledger.fabric.gateway.X509Identity;
import org.hyperledger.fabric.sdk.Enrollment; import org.hyperledger.fabric.sdk.Enrollment;
import org.hyperledger.fabric.sdk.User; import org.hyperledger.fabric.sdk.User;
import org.hyperledger.fabric.sdk.security.CryptoSuite; import org.hyperledger.fabric.sdk.security.CryptoSuite;
@ -36,22 +39,19 @@ public class RegisterUser {
caClient.setCryptoSuite(cryptoSuite); caClient.setCryptoSuite(cryptoSuite);
// Create a wallet for managing identities // Create a wallet for managing identities
Wallet wallet = Wallet.createFileSystemWallet(Paths.get("wallet")); Wallet wallet = Wallets.newFileSystemWallet(Paths.get("wallet"));
// Check to see if we've already enrolled the user. // Check to see if we've already enrolled the user.
boolean userExists = wallet.exists("appUser"); if (wallet.get("appUser") != null) {
if (userExists) {
System.out.println("An identity for the user \"appUser\" already exists in the wallet"); System.out.println("An identity for the user \"appUser\" already exists in the wallet");
return; return;
} }
userExists = wallet.exists("admin"); X509Identity adminIdentity = (X509Identity)wallet.get("admin");
if (!userExists) { if (adminIdentity == null) {
System.out.println("\"admin\" needs to be enrolled and added to the wallet first"); System.out.println("\"admin\" needs to be enrolled and added to the wallet first");
return; return;
} }
Identity adminIdentity = wallet.get("admin");
User admin = new User() { User admin = new User() {
@Override @Override
@ -85,7 +85,7 @@ public class RegisterUser {
@Override @Override
public String getCert() { public String getCert() {
return adminIdentity.getCertificate(); return Identities.toPemString(adminIdentity.getCertificate());
} }
}; };
} }
@ -103,7 +103,7 @@ public class RegisterUser {
registrationRequest.setEnrollmentID("appUser"); registrationRequest.setEnrollmentID("appUser");
String enrollmentSecret = caClient.register(registrationRequest, admin); String enrollmentSecret = caClient.register(registrationRequest, admin);
Enrollment enrollment = caClient.enroll("appUser", enrollmentSecret); Enrollment enrollment = caClient.enroll("appUser", enrollmentSecret);
Identity user = Identity.createIdentity("Org1MSP", enrollment.getCert(), enrollment.getKey()); Identity user = Identities.newX509Identity("Org1MSP", adminIdentity.getCertificate(), adminIdentity.getPrivateKey());
wallet.put("appUser", user); wallet.put("appUser", user);
System.out.println("Successfully enrolled user \"appUser\" and imported it into the wallet"); System.out.println("Successfully enrolled user \"appUser\" and imported it into the wallet");
} }