This is an automated email from the ASF dual-hosted git repository.
davsclaus pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel.git
The following commit(s) were added to refs/heads/main by this push:
new f6cbda10eaa CAMEL-18325: camel-hyperledger-aries - Add support for
/credentials e… (#8078)
f6cbda10eaa is described below
commit f6cbda10eaa191a4660e9df57c3f5140ad078599
Author: Thomas Diesler <[email protected]>
AuthorDate: Sat Jul 30 07:48:18 2022 +0200
CAMEL-18325: camel-hyperledger-aries - Add support for /credentials e…
(#8078)
* CAMEL-18325: camel-hyperledger-aries - Add support for /credentials
endpoint
* Fix checkstyle for camel-aws-cloudtrail
---
.../aws/cloudtrail/CloudtrailConsumer.java | 14 +++--
.../aries/V1CredentialExchangeConverterLoader.java | 60 +++++++++++++++++++++
.../services/org/apache/camel/TypeConverterLoader | 1 +
.../camel/component/aries/hyperledger-aries.json | 2 +-
.../component/aries/HyperledgerAriesComponent.java | 62 +++++++++++++++-------
.../aries/HyperledgerAriesConfiguration.java | 2 +-
.../component/aries/HyperledgerAriesEndpoint.java | 8 +--
.../component/aries/HyperledgerAriesProducer.java | 16 +++++-
.../aries/handler/AbstractServiceHandler.java | 4 +-
.../aries/handler/ConnectionsServiceHandler.java | 43 +++++++++++----
.../CredentialDefinitionsServiceHandler.java | 2 +
...Handler.java => CredentialsServiceHandler.java} | 16 +++---
...r.java => IssueCredentialV1ServiceHandler.java} | 19 +++++--
.../aries/handler/MultitenancyServiceHandler.java | 3 +-
.../aries/handler/PresentProofServiceHandler.java | 6 +++
.../aries/handler/RevocationServiceHandler.java | 3 ++
.../aries/handler/SchemasServiceHandler.java | 2 +
.../aries/handler/WalletServiceHandler.java | 2 +
.../aries/V1CredentialExchangeConverter.java | 54 +++++++++++++++++++
19 files changed, 267 insertions(+), 52 deletions(-)
diff --git
a/components/camel-aws/camel-aws-cloudtrail/src/main/java/org/apache/camel/component/aws/cloudtrail/CloudtrailConsumer.java
b/components/camel-aws/camel-aws-cloudtrail/src/main/java/org/apache/camel/component/aws/cloudtrail/CloudtrailConsumer.java
index e8b1fe39d5f..282d382922f 100644
---
a/components/camel-aws/camel-aws-cloudtrail/src/main/java/org/apache/camel/component/aws/cloudtrail/CloudtrailConsumer.java
+++
b/components/camel-aws/camel-aws-cloudtrail/src/main/java/org/apache/camel/component/aws/cloudtrail/CloudtrailConsumer.java
@@ -18,7 +18,10 @@ package org.apache.camel.component.aws.cloudtrail;
import java.nio.charset.StandardCharsets;
import java.time.Instant;
-import java.util.*;
+import java.util.ArrayDeque;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Queue;
import org.apache.camel.AsyncCallback;
import org.apache.camel.Exchange;
@@ -29,12 +32,17 @@ import org.apache.camel.util.ObjectHelper;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import software.amazon.awssdk.services.cloudtrail.CloudTrailClient;
-import software.amazon.awssdk.services.cloudtrail.model.*;
+import software.amazon.awssdk.services.cloudtrail.model.Event;
+import software.amazon.awssdk.services.cloudtrail.model.LookupAttribute;
+import software.amazon.awssdk.services.cloudtrail.model.LookupAttributeKey;
+import software.amazon.awssdk.services.cloudtrail.model.LookupEventsRequest;
+import software.amazon.awssdk.services.cloudtrail.model.LookupEventsResponse;
public class CloudtrailConsumer extends ScheduledBatchPollingConsumer {
private static final Logger LOG =
LoggerFactory.getLogger(CloudtrailConsumer.class);
- private static Instant lastTime = null;
+
+ private static Instant lastTime;
public CloudtrailConsumer(CloudtrailEndpoint endpoint, Processor
processor) {
super(endpoint, processor);
diff --git
a/components/camel-hyperledger-aries/src/generated/java/org/apache/camel/converter/aries/V1CredentialExchangeConverterLoader.java
b/components/camel-hyperledger-aries/src/generated/java/org/apache/camel/converter/aries/V1CredentialExchangeConverterLoader.java
new file mode 100644
index 00000000000..152787a01c6
--- /dev/null
+++
b/components/camel-hyperledger-aries/src/generated/java/org/apache/camel/converter/aries/V1CredentialExchangeConverterLoader.java
@@ -0,0 +1,60 @@
+/* Generated by camel build tools - do NOT edit this file! */
+package org.apache.camel.converter.aries;
+
+import org.apache.camel.CamelContext;
+import org.apache.camel.CamelContextAware;
+import org.apache.camel.DeferredContextBinding;
+import org.apache.camel.Exchange;
+import org.apache.camel.TypeConversionException;
+import org.apache.camel.TypeConverterLoaderException;
+import org.apache.camel.spi.TypeConverterLoader;
+import org.apache.camel.spi.TypeConverterRegistry;
+import org.apache.camel.support.SimpleTypeConverter;
+import org.apache.camel.support.TypeConverterSupport;
+import org.apache.camel.util.DoubleMap;
+
+/**
+ * Generated by camel build tools - do NOT edit this file!
+ */
+@SuppressWarnings("unchecked")
+@DeferredContextBinding
+public final class V1CredentialExchangeConverterLoader implements
TypeConverterLoader, CamelContextAware {
+
+ private CamelContext camelContext;
+
+ public V1CredentialExchangeConverterLoader() {
+ }
+
+ @Override
+ public void setCamelContext(CamelContext camelContext) {
+ this.camelContext = camelContext;
+ }
+
+ @Override
+ public CamelContext getCamelContext() {
+ return camelContext;
+ }
+
+ @Override
+ public void load(TypeConverterRegistry registry) throws
TypeConverterLoaderException {
+ registerConverters(registry);
+ }
+
+ private void registerConverters(TypeConverterRegistry registry) {
+ addTypeConverter(registry, com.google.gson.JsonObject.class,
org.hyperledger.aries.api.issue_credential_v1.V1CredentialExchange.class, false,
+ (type, exchange, value) ->
org.apache.camel.converter.aries.V1CredentialExchangeConverter.toJsonObject((org.hyperledger.aries.api.issue_credential_v1.V1CredentialExchange)
value));
+ addTypeConverter(registry, java.util.Map.class,
org.hyperledger.aries.api.issue_credential_v1.V1CredentialExchange.class, false,
+ (type, exchange, value) ->
org.apache.camel.converter.aries.V1CredentialExchangeConverter.toMap((org.hyperledger.aries.api.issue_credential_v1.V1CredentialExchange)
value));
+ addTypeConverter(registry,
org.hyperledger.aries.api.issue_credential_v1.V1CredentialExchange.class,
com.google.gson.JsonObject.class, false,
+ (type, exchange, value) ->
org.apache.camel.converter.aries.V1CredentialExchangeConverter.toAries((com.google.gson.JsonObject)
value));
+ addTypeConverter(registry,
org.hyperledger.aries.api.issue_credential_v1.V1CredentialExchange.class,
java.lang.String.class, false,
+ (type, exchange, value) ->
org.apache.camel.converter.aries.V1CredentialExchangeConverter.toAries((java.lang.String)
value));
+ addTypeConverter(registry,
org.hyperledger.aries.api.issue_credential_v1.V1CredentialExchange.class,
java.util.Map.class, false,
+ (type, exchange, value) ->
org.apache.camel.converter.aries.V1CredentialExchangeConverter.toAries((java.util.Map)
value));
+ }
+
+ private static void addTypeConverter(TypeConverterRegistry registry,
Class<?> toType, Class<?> fromType, boolean allowNull,
SimpleTypeConverter.ConversionMethod method) {
+ registry.addTypeConverter(toType, fromType, new
SimpleTypeConverter(allowNull, method));
+ }
+
+}
diff --git
a/components/camel-hyperledger-aries/src/generated/resources/META-INF/services/org/apache/camel/TypeConverterLoader
b/components/camel-hyperledger-aries/src/generated/resources/META-INF/services/org/apache/camel/TypeConverterLoader
index ca2f6674b61..bfbe4d1afcb 100644
---
a/components/camel-hyperledger-aries/src/generated/resources/META-INF/services/org/apache/camel/TypeConverterLoader
+++
b/components/camel-hyperledger-aries/src/generated/resources/META-INF/services/org/apache/camel/TypeConverterLoader
@@ -13,6 +13,7 @@
org.apache.camel.converter.aries.RevRegCreateRequestConverterLoader
org.apache.camel.converter.aries.RevokeRequestConverterLoader
org.apache.camel.converter.aries.SchemaSendRequestConverterLoader
org.apache.camel.converter.aries.SchemasCreatedFilterConverterLoader
+org.apache.camel.converter.aries.V1CredentialExchangeConverterLoader
org.apache.camel.converter.aries.V1CredentialFreeOfferRequestConverterLoader
org.apache.camel.converter.aries.V1CredentialIssueRequestConverterLoader
org.apache.camel.converter.aries.V1CredentialStoreRequestConverterLoader
diff --git
a/components/camel-hyperledger-aries/src/generated/resources/org/apache/camel/component/aries/hyperledger-aries.json
b/components/camel-hyperledger-aries/src/generated/resources/org/apache/camel/component/aries/hyperledger-aries.json
index d530f00cc8f..d90a09c2e18 100644
---
a/components/camel-hyperledger-aries/src/generated/resources/org/apache/camel/component/aries/hyperledger-aries.json
+++
b/components/camel-hyperledger-aries/src/generated/resources/org/apache/camel/component/aries/hyperledger-aries.json
@@ -31,7 +31,7 @@
"autoSchema": { "kind": "parameter", "displayName": "Auto Schema",
"group": "producer", "label": "", "required": false, "type": "boolean",
"javaType": "boolean", "deprecated": false, "deprecationNote": "", "autowired":
false, "secret": false, "defaultValue": false, "configurationClass":
"org.apache.camel.component.aries.HyperledgerAriesConfiguration",
"configurationField": "configuration", "description": "Allow on-demand schema
creation" },
"schemaName": { "kind": "parameter", "displayName": "Schema Name",
"group": "producer", "label": "", "required": false, "type": "string",
"javaType": "java.lang.String", "deprecated": false, "deprecationNote": "",
"autowired": false, "secret": false, "configurationClass":
"org.apache.camel.component.aries.HyperledgerAriesConfiguration",
"configurationField": "configuration", "description": "A schema name" },
"schemaVersion": { "kind": "parameter", "displayName": "Schema Version",
"group": "producer", "label": "", "required": false, "type": "string",
"javaType": "java.lang.String", "deprecated": false, "deprecationNote": "",
"autowired": false, "secret": false, "configurationClass":
"org.apache.camel.component.aries.HyperledgerAriesConfiguration",
"configurationField": "configuration", "description": "A schema version" },
- "service": { "kind": "parameter", "displayName": "Service", "group":
"producer", "label": "", "required": false, "type": "string", "javaType":
"java.lang.String", "deprecated": false, "deprecationNote": "", "autowired":
false, "secret": false, "configurationClass":
"org.apache.camel.component.aries.HyperledgerAriesConfiguration",
"configurationField": "configuration", "description": "An ACA-Py API path" },
+ "service": { "kind": "parameter", "displayName": "Service", "group":
"producer", "label": "", "required": false, "type": "string", "javaType":
"java.lang.String", "deprecated": false, "deprecationNote": "", "autowired":
false, "secret": false, "configurationClass":
"org.apache.camel.component.aries.HyperledgerAriesConfiguration",
"configurationField": "configuration", "description": "An API path (e.g.
\/issue-credential\/records)" },
"lazyStartProducer": { "kind": "parameter", "displayName": "Lazy Start
Producer", "group": "producer (advanced)", "label": "producer,advanced",
"required": false, "type": "boolean", "javaType": "boolean", "deprecated":
false, "autowired": false, "secret": false, "defaultValue": false,
"description": "Whether the producer should be started lazy (on the first
message). By starting lazy you can use this to allow CamelContext and routes to
startup in situations where a producer may other [...]
}
}
diff --git
a/components/camel-hyperledger-aries/src/main/java/org/apache/camel/component/aries/HyperledgerAriesComponent.java
b/components/camel-hyperledger-aries/src/main/java/org/apache/camel/component/aries/HyperledgerAriesComponent.java
index 969a463d3eb..a50d1b73b6d 100644
---
a/components/camel-hyperledger-aries/src/main/java/org/apache/camel/component/aries/HyperledgerAriesComponent.java
+++
b/components/camel-hyperledger-aries/src/main/java/org/apache/camel/component/aries/HyperledgerAriesComponent.java
@@ -24,6 +24,7 @@ import io.nessus.aries.AgentConfiguration;
import io.nessus.aries.AriesClientFactory;
import io.nessus.aries.util.AssertArg;
import io.nessus.aries.util.AssertState;
+import io.nessus.aries.wallet.DefaultEventHandler;
import io.nessus.aries.wallet.NessusWallet;
import io.nessus.aries.wallet.WalletRegistry;
import org.apache.camel.Endpoint;
@@ -33,16 +34,24 @@ import org.apache.camel.support.DefaultComponent;
import org.hyperledger.aries.AriesClient;
import org.hyperledger.aries.AriesWebSocketClient;
import org.hyperledger.aries.api.multitenancy.WalletRecord;
+import org.hyperledger.aries.api.multitenancy.WalletRecord.WalletSettings;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
@Component("hyperledger-aries")
public class HyperledgerAriesComponent extends DefaultComponent {
+ private static final Logger LOG =
LoggerFactory.getLogger(HyperledgerAriesComponent.class);
+
private final WalletRegistry walletRegistry = new WalletRegistry();
private AgentConfiguration agentConfig;
@Metadata(description = "Remove wallets from the Agent on shutdown")
private boolean removeWalletsOnShutdown;
+ private AriesClient adminClient;
+ private AriesWebSocketClient adminWebSocketClient;
+
@Override
protected Endpoint createEndpoint(String uri, String remaining,
Map<String, Object> parameters) throws Exception {
HyperledgerAriesConfiguration configuration = new
HyperledgerAriesConfiguration();
@@ -64,6 +73,9 @@ public class HyperledgerAriesComponent extends
DefaultComponent {
@Override
protected void doShutdown() throws Exception {
+ if (adminWebSocketClient != null) {
+ adminWebSocketClient.close();
+ }
if (removeWalletsOnShutdown) {
for (NessusWallet wallet : walletRegistry.getWallets()) {
wallet.closeAndRemove();
@@ -95,33 +107,42 @@ public class HyperledgerAriesComponent extends
DefaultComponent {
}
public NessusWallet getWallet(String walletName) {
- return walletRegistry.getWalletByName(walletName);
- }
-
- public NessusWallet getWallet(String walletName, long timeout) {
- timeout = System.currentTimeMillis() + timeout;
- NessusWallet walletRecord = walletRegistry.getWalletByName(walletName);
- while (walletRecord == null && System.currentTimeMillis() < timeout) {
- NessusWallet.sleepWell(200);
- walletRecord = walletRegistry.getWalletByName(walletName);
- }
- return walletRecord;
+ NessusWallet wallet = walletRegistry.getWalletByName(walletName);
+ return wallet;
}
public NessusWallet assertWallet(String walletName) {
- NessusWallet wallet = walletRegistry.getWalletByName(walletName);
+ NessusWallet wallet = getWallet(walletName);
AssertState.notNull(wallet, "Cannot obtain wallet for: " + walletName);
return wallet;
}
- public AriesWebSocketClient getWebSocketClient(String walletName) {
- NessusWallet wallet = assertWallet(walletName);
- return wallet.getWebSocketClient();
+ public AriesClient adminClient() {
+ if (adminClient == null) {
+ AgentConfiguration agentConfig = getAgentConfiguration();
+ adminClient = AriesClientFactory.adminClient(agentConfig);
+ }
+ return adminClient;
}
- public AriesClient createAdminClient() {
- AgentConfiguration agentConfig = getAgentConfiguration();
- return AriesClientFactory.adminClient(agentConfig);
+ public AriesWebSocketClient adminWebSocketClient() {
+ if (adminWebSocketClient == null) {
+ WalletSettings settings = new WalletSettings();
+ settings.setWalletName("admin");
+ WalletRecord adminRecord = NessusWallet.builder()
+ .walletId("00000000")
+ .settings(settings)
+ .build();
+ NessusWallet adminWallet = NessusWallet.build(adminRecord);
+ String webSocketUrl = agentConfig.getWebSocketUrl();
+ LOG.info("WebSocket connecting to {} ...", webSocketUrl);
+ adminWebSocketClient = AriesWebSocketClient.builder()
+ .url(webSocketUrl)
+ .handler(new DefaultEventHandler(adminWallet,
walletRegistry))
+ .apiKey(agentConfig.getApiKey())
+ .build();
+ }
+ return adminWebSocketClient;
}
public AriesClient createClient(WalletRecord walletRecord) throws
IOException {
@@ -129,4 +150,9 @@ public class HyperledgerAriesComponent extends
DefaultComponent {
AgentConfiguration agentConfig = getAgentConfiguration();
return AriesClientFactory.createClient(walletRecord, agentConfig);
}
+
+ public AriesWebSocketClient getWebSocketClient(String walletName) {
+ NessusWallet wallet = assertWallet(walletName);
+ return wallet.getWebSocketClient();
+ }
}
diff --git
a/components/camel-hyperledger-aries/src/main/java/org/apache/camel/component/aries/HyperledgerAriesConfiguration.java
b/components/camel-hyperledger-aries/src/main/java/org/apache/camel/component/aries/HyperledgerAriesConfiguration.java
index c0e3d76466f..f8bd3b23a4c 100644
---
a/components/camel-hyperledger-aries/src/main/java/org/apache/camel/component/aries/HyperledgerAriesConfiguration.java
+++
b/components/camel-hyperledger-aries/src/main/java/org/apache/camel/component/aries/HyperledgerAriesConfiguration.java
@@ -27,7 +27,7 @@ public class HyperledgerAriesConfiguration {
@UriPath(description = "The wallet to connect to")
@Metadata(required = true)
private String walletName;
- @UriParam(description = "An ACA-Py API path")
+ @UriParam(description = "An API path (e.g. /issue-credential/records)")
@Metadata(required = false)
private String service;
@UriParam(description = "A schema name")
diff --git
a/components/camel-hyperledger-aries/src/main/java/org/apache/camel/component/aries/HyperledgerAriesEndpoint.java
b/components/camel-hyperledger-aries/src/main/java/org/apache/camel/component/aries/HyperledgerAriesEndpoint.java
index 9a6bed4f237..ca70a69303c 100644
---
a/components/camel-hyperledger-aries/src/main/java/org/apache/camel/component/aries/HyperledgerAriesEndpoint.java
+++
b/components/camel-hyperledger-aries/src/main/java/org/apache/camel/component/aries/HyperledgerAriesEndpoint.java
@@ -69,12 +69,12 @@ public class HyperledgerAriesEndpoint extends
DefaultEndpoint {
}
public AriesClient createClient() throws IOException {
+ NessusWallet wallet = getWallet();
String walletName = getWalletName();
- NessusWallet walletRecord = getComponent().getWallet(walletName);
- if ("admin".equals(walletName) && walletRecord == null) {
- return getComponent().createAdminClient();
+ if (wallet == null && "admin".equals(walletName)) {
+ return getComponent().adminClient();
} else {
- return getComponent().createClient(walletRecord);
+ return getComponent().createClient(wallet);
}
}
}
diff --git
a/components/camel-hyperledger-aries/src/main/java/org/apache/camel/component/aries/HyperledgerAriesProducer.java
b/components/camel-hyperledger-aries/src/main/java/org/apache/camel/component/aries/HyperledgerAriesProducer.java
index f816ebdb514..fde9b513ef5 100644
---
a/components/camel-hyperledger-aries/src/main/java/org/apache/camel/component/aries/HyperledgerAriesProducer.java
+++
b/components/camel-hyperledger-aries/src/main/java/org/apache/camel/component/aries/HyperledgerAriesProducer.java
@@ -21,7 +21,8 @@ import org.apache.camel.Exchange;
import org.apache.camel.component.aries.handler.AbstractServiceHandler;
import org.apache.camel.component.aries.handler.ConnectionsServiceHandler;
import
org.apache.camel.component.aries.handler.CredentialDefinitionsServiceHandler;
-import org.apache.camel.component.aries.handler.IssueCredentialServiceHandler;
+import org.apache.camel.component.aries.handler.CredentialsServiceHandler;
+import
org.apache.camel.component.aries.handler.IssueCredentialV1ServiceHandler;
import org.apache.camel.component.aries.handler.MultitenancyServiceHandler;
import org.apache.camel.component.aries.handler.PresentProofServiceHandler;
import org.apache.camel.component.aries.handler.RevocationServiceHandler;
@@ -50,20 +51,31 @@ public class HyperledgerAriesProducer extends
DefaultProducer {
String service = getService(exchange);
if (service.startsWith("/connections")) {
serviceHandler = new ConnectionsServiceHandler(getEndpoint());
+
} else if (service.startsWith("/credential-definitions")) {
serviceHandler = new
CredentialDefinitionsServiceHandler(getEndpoint());
+
+ } else if (service.startsWith("/credentials")) {
+ serviceHandler = new CredentialsServiceHandler(getEndpoint());
+
} else if (service.startsWith("/issue-credential")) {
- serviceHandler = new IssueCredentialServiceHandler(getEndpoint());
+ serviceHandler = new
IssueCredentialV1ServiceHandler(getEndpoint());
+
} else if (service.startsWith("/multitenancy")) {
serviceHandler = new MultitenancyServiceHandler(getEndpoint());
+
} else if (service.startsWith("/present-proof")) {
serviceHandler = new PresentProofServiceHandler(getEndpoint());
+
} else if (service.startsWith("/revocation")) {
serviceHandler = new RevocationServiceHandler(getEndpoint());
+
} else if (service.startsWith("/schemas")) {
serviceHandler = new SchemasServiceHandler(getEndpoint());
+
} else if (service.startsWith("/wallet")) {
serviceHandler = new WalletServiceHandler(getEndpoint());
+
} else {
throw new UnsupportedServiceException(service);
}
diff --git
a/components/camel-hyperledger-aries/src/main/java/org/apache/camel/component/aries/handler/AbstractServiceHandler.java
b/components/camel-hyperledger-aries/src/main/java/org/apache/camel/component/aries/handler/AbstractServiceHandler.java
index 58c231c2a88..8e16888a3b6 100644
---
a/components/camel-hyperledger-aries/src/main/java/org/apache/camel/component/aries/handler/AbstractServiceHandler.java
+++
b/components/camel-hyperledger-aries/src/main/java/org/apache/camel/component/aries/handler/AbstractServiceHandler.java
@@ -112,8 +112,8 @@ public abstract class AbstractServiceHandler implements
ServiceHandler {
return endpoint.getComponent();
}
- public AriesClient baseClient() {
- return getComponent().createAdminClient();
+ public AriesClient adminClient() {
+ return getComponent().adminClient();
}
public AriesClient createClient() throws IOException {
diff --git
a/components/camel-hyperledger-aries/src/main/java/org/apache/camel/component/aries/handler/ConnectionsServiceHandler.java
b/components/camel-hyperledger-aries/src/main/java/org/apache/camel/component/aries/handler/ConnectionsServiceHandler.java
index 9a440d2db2e..418c3e9b854 100644
---
a/components/camel-hyperledger-aries/src/main/java/org/apache/camel/component/aries/handler/ConnectionsServiceHandler.java
+++
b/components/camel-hyperledger-aries/src/main/java/org/apache/camel/component/aries/handler/ConnectionsServiceHandler.java
@@ -16,16 +16,22 @@
*/
package org.apache.camel.component.aries.handler;
+import java.util.List;
+
+import io.nessus.aries.util.AssertState;
import org.apache.camel.Exchange;
import org.apache.camel.component.aries.HyperledgerAriesEndpoint;
import org.apache.camel.component.aries.UnsupportedServiceException;
import org.hyperledger.acy_py.generated.model.ConnectionInvitation;
import org.hyperledger.aries.api.connection.ConnectionAcceptInvitationFilter;
+import org.hyperledger.aries.api.connection.ConnectionFilter;
import org.hyperledger.aries.api.connection.ConnectionReceiveInvitationFilter;
import org.hyperledger.aries.api.connection.ConnectionRecord;
import org.hyperledger.aries.api.connection.CreateInvitationRequest;
import org.hyperledger.aries.api.connection.CreateInvitationResponse;
import org.hyperledger.aries.api.connection.ReceiveInvitationRequest;
+import org.hyperledger.aries.api.trustping.PingRequest;
+import org.hyperledger.aries.api.trustping.PingResponse;
public class ConnectionsServiceHandler extends AbstractServiceHandler {
@@ -36,7 +42,12 @@ public class ConnectionsServiceHandler extends
AbstractServiceHandler {
@Override
public void process(Exchange exchange, String service) throws Exception {
- if (service.equals("/connections/create-invitation")) {
+ if (service.equals("/connections")) {
+ ConnectionFilter filter = maybeHeader(exchange,
ConnectionFilter.class);
+ List<ConnectionRecord> resObj =
createClient().connections(filter).get();
+ exchange.getIn().setBody(resObj);
+
+ } else if (service.equals("/connections/create-invitation")) {
CreateInvitationRequest reqObj = maybeBody(exchange,
CreateInvitationRequest.class);
if (reqObj == null) {
reqObj = CreateInvitationRequest.builder().build();
@@ -57,16 +68,28 @@ public class ConnectionsServiceHandler extends
AbstractServiceHandler {
ConnectionRecord resObj =
createClient().connectionsReceiveInvitation(reqObj, filter).get();
exchange.getIn().setBody(resObj);
- } else if (service.equals("/connections/accept-invitation")) {
- String connectionId = assertBody(exchange, String.class);
- ConnectionAcceptInvitationFilter acceptFilter =
maybeHeader(exchange, ConnectionAcceptInvitationFilter.class);
- ConnectionRecord resObj =
createClient().connectionsAcceptInvitation(connectionId, acceptFilter).get();
- exchange.getIn().setBody(resObj);
+ } else if (service.startsWith("/connections/")) {
- } else if (service.equals("/connections/get-single")) {
- String connectionId = assertBody(exchange, String.class);
- ConnectionRecord resObj =
createClient().connectionsGetById(connectionId).get();
- exchange.getIn().setBody(resObj);
+ String connectionId = getServicePathToken(service, 1);
+ AssertState.notNull(connectionId, "Null connectionId");
+
+ if (service.endsWith("/accept-invitation")) {
+ ConnectionAcceptInvitationFilter acceptFilter =
maybeHeader(exchange, ConnectionAcceptInvitationFilter.class);
+ ConnectionRecord resObj =
createClient().connectionsAcceptInvitation(connectionId, acceptFilter).get();
+ exchange.getIn().setBody(resObj);
+
+ } else if (service.endsWith("/send-ping")) {
+ PingRequest pingRequest = assertBody(exchange,
PingRequest.class);
+ PingResponse resObj =
createClient().connectionsSendPing(connectionId, pingRequest).get();
+ exchange.getIn().setBody(resObj);
+
+ } else if (service.endsWith(connectionId)) {
+ ConnectionRecord resObj =
createClient().connectionsGetById(connectionId).orElse(null);
+ exchange.getIn().setBody(resObj);
+
+ } else {
+ throw new UnsupportedServiceException(service);
+ }
} else {
throw new UnsupportedServiceException(service);
diff --git
a/components/camel-hyperledger-aries/src/main/java/org/apache/camel/component/aries/handler/CredentialDefinitionsServiceHandler.java
b/components/camel-hyperledger-aries/src/main/java/org/apache/camel/component/aries/handler/CredentialDefinitionsServiceHandler.java
index c148a9c28b2..0aeee9d7ab4 100644
---
a/components/camel-hyperledger-aries/src/main/java/org/apache/camel/component/aries/handler/CredentialDefinitionsServiceHandler.java
+++
b/components/camel-hyperledger-aries/src/main/java/org/apache/camel/component/aries/handler/CredentialDefinitionsServiceHandler.java
@@ -45,6 +45,7 @@ public class CredentialDefinitionsServiceHandler extends
AbstractServiceHandler
@SuppressWarnings("unchecked")
@Override
public void process(Exchange exchange, String service) throws Exception {
+
if (service.equals("/credential-definitions/created")) {
CredentialDefinitionFilter filter = maybeBody(exchange,
CredentialDefinitionFilter.class);
if (filter == null) {
@@ -63,6 +64,7 @@ public class CredentialDefinitionsServiceHandler extends
AbstractServiceHandler
}
CredentialDefinitionsCreated resObj =
createClient().credentialDefinitionsCreated(filter).get();
exchange.getIn().setBody(resObj);
+
} else if (service.equals("/credential-definitions")) {
CredentialDefinitionRequest credDefReq = maybeBody(exchange,
CredentialDefinitionRequest.class);
if (credDefReq == null) {
diff --git
a/components/camel-hyperledger-aries/src/main/java/org/apache/camel/component/aries/handler/WalletServiceHandler.java
b/components/camel-hyperledger-aries/src/main/java/org/apache/camel/component/aries/handler/CredentialsServiceHandler.java
similarity index 75%
copy from
components/camel-hyperledger-aries/src/main/java/org/apache/camel/component/aries/handler/WalletServiceHandler.java
copy to
components/camel-hyperledger-aries/src/main/java/org/apache/camel/component/aries/handler/CredentialsServiceHandler.java
index c6198cecbab..cf33f1a8afa 100644
---
a/components/camel-hyperledger-aries/src/main/java/org/apache/camel/component/aries/handler/WalletServiceHandler.java
+++
b/components/camel-hyperledger-aries/src/main/java/org/apache/camel/component/aries/handler/CredentialsServiceHandler.java
@@ -16,22 +16,26 @@
*/
package org.apache.camel.component.aries.handler;
+import java.util.List;
+
import org.apache.camel.Exchange;
import org.apache.camel.component.aries.HyperledgerAriesEndpoint;
import org.apache.camel.component.aries.UnsupportedServiceException;
-import org.hyperledger.acy_py.generated.model.DID;
+import org.hyperledger.aries.api.credentials.Credential;
-public class WalletServiceHandler extends AbstractServiceHandler {
+public class CredentialsServiceHandler extends AbstractServiceHandler {
- public WalletServiceHandler(HyperledgerAriesEndpoint endpoint) {
+ public CredentialsServiceHandler(HyperledgerAriesEndpoint endpoint) {
super(endpoint);
}
@Override
public void process(Exchange exchange, String service) throws Exception {
- if (service.equals("/wallet/did/public")) {
- DID resObj = createClient().walletDidPublic().orElse(null);
- exchange.getIn().setBody(resObj);
+
+ if (service.equals("/credentials")) {
+ List<Credential> credentials = adminClient().credentials().get();
+ exchange.getIn().setBody(credentials);
+
} else {
throw new UnsupportedServiceException(service);
}
diff --git
a/components/camel-hyperledger-aries/src/main/java/org/apache/camel/component/aries/handler/IssueCredentialServiceHandler.java
b/components/camel-hyperledger-aries/src/main/java/org/apache/camel/component/aries/handler/IssueCredentialV1ServiceHandler.java
similarity index 90%
rename from
components/camel-hyperledger-aries/src/main/java/org/apache/camel/component/aries/handler/IssueCredentialServiceHandler.java
rename to
components/camel-hyperledger-aries/src/main/java/org/apache/camel/component/aries/handler/IssueCredentialV1ServiceHandler.java
index 6d8e99b837c..56cbbfac88e 100644
---
a/components/camel-hyperledger-aries/src/main/java/org/apache/camel/component/aries/handler/IssueCredentialServiceHandler.java
+++
b/components/camel-hyperledger-aries/src/main/java/org/apache/camel/component/aries/handler/IssueCredentialV1ServiceHandler.java
@@ -18,6 +18,7 @@ package org.apache.camel.component.aries.handler;
import java.util.List;
+import io.nessus.aries.util.AssertState;
import org.apache.camel.Exchange;
import org.apache.camel.component.aries.HyperledgerAriesEndpoint;
import org.apache.camel.component.aries.UnsupportedServiceException;
@@ -28,39 +29,49 @@ import
org.hyperledger.aries.api.issue_credential_v1.V1CredentialIssueRequest;
import org.hyperledger.aries.api.issue_credential_v1.V1CredentialOfferRequest;
import org.hyperledger.aries.api.issue_credential_v1.V1CredentialStoreRequest;
-public class IssueCredentialServiceHandler extends AbstractServiceHandler {
+public class IssueCredentialV1ServiceHandler extends AbstractServiceHandler {
- public IssueCredentialServiceHandler(HyperledgerAriesEndpoint endpoint) {
+ public IssueCredentialV1ServiceHandler(HyperledgerAriesEndpoint endpoint) {
super(endpoint);
}
@Override
public void process(Exchange exchange, String service) throws Exception {
+
if (service.equals("/issue-credential/create-offer")) {
V1CredentialFreeOfferRequest reqObj = assertBody(exchange,
V1CredentialFreeOfferRequest.class);
V1CredentialExchange resObj =
createClient().issueCredentialCreateOffer(reqObj).get();
exchange.getIn().setBody(resObj);
+
} else if (service.equals("/issue-credential/send-offer")) {
V1CredentialOfferRequest reqObj = assertBody(exchange,
V1CredentialOfferRequest.class);
V1CredentialExchange resObj =
createClient().issueCredentialSendOffer(reqObj).get();
exchange.getIn().setBody(resObj);
+
} else if (service.equals("/issue-credential/records")) {
IssueCredentialRecordsFilter reqObj = assertBody(exchange,
IssueCredentialRecordsFilter.class);
List<V1CredentialExchange> resObj =
createClient().issueCredentialRecords(reqObj).get();
exchange.getIn().setBody(resObj);
- } else if (service.startsWith("/issue-credential/records")) {
+
+ } else if (service.startsWith("/issue-credential/records/")) {
+
String credentialExchangeId = getServicePathToken(service, 2);
+ AssertState.notNull(credentialExchangeId, "Null
credentialExchangeId");
+
if (service.endsWith("/send-request")) {
V1CredentialExchange resObj =
createClient().issueCredentialRecordsSendRequest(credentialExchangeId).get();
exchange.getIn().setBody(resObj);
+
} else if (service.endsWith("/issue")) {
- V1CredentialIssueRequest reqObj = maybeBody(exchange,
V1CredentialIssueRequest.class);
+ V1CredentialIssueRequest reqObj = maybeHeader(exchange,
V1CredentialIssueRequest.class);
V1CredentialExchange resObj =
createClient().issueCredentialRecordsIssue(credentialExchangeId, reqObj).get();
exchange.getIn().setBody(resObj);
+
} else if (service.endsWith("/store")) {
V1CredentialStoreRequest reqObj = maybeBody(exchange,
V1CredentialStoreRequest.class);
V1CredentialExchange resObj =
createClient().issueCredentialRecordsStore(credentialExchangeId, reqObj).get();
exchange.getIn().setBody(resObj);
+
} else {
throw new UnsupportedServiceException(service);
}
diff --git
a/components/camel-hyperledger-aries/src/main/java/org/apache/camel/component/aries/handler/MultitenancyServiceHandler.java
b/components/camel-hyperledger-aries/src/main/java/org/apache/camel/component/aries/handler/MultitenancyServiceHandler.java
index d555760cdec..a2406b6dc21 100644
---
a/components/camel-hyperledger-aries/src/main/java/org/apache/camel/component/aries/handler/MultitenancyServiceHandler.java
+++
b/components/camel-hyperledger-aries/src/main/java/org/apache/camel/component/aries/handler/MultitenancyServiceHandler.java
@@ -45,6 +45,7 @@ public class MultitenancyServiceHandler extends
AbstractServiceHandler {
@Override
public void process(Exchange exchange, String service) throws Exception {
+
if (service.equals("/multitenancy/wallet")) {
CreateWalletRequest walletRequest = assertBody(exchange,
CreateWalletRequest.class);
String walletName = walletRequest.getWalletName();
@@ -54,7 +55,7 @@ public class MultitenancyServiceHandler extends
AbstractServiceHandler {
String trusteeName = maybeHeader(exchange,
HEADER_MULTITENANCY_TRUSTEE_WALLET, String.class);
WalletRegistry walletRegistry = getComponent().getWalletRegistry();
- WalletRecord walletResponse =
baseClient().multitenancyWalletCreate(walletRequest).get();
+ WalletRecord walletResponse =
adminClient().multitenancyWalletCreate(walletRequest).get();
NessusWallet walletRecord =
NessusWallet.build(walletResponse).withWalletRegistry(walletRegistry);
getComponent().addWallet(walletRecord);
diff --git
a/components/camel-hyperledger-aries/src/main/java/org/apache/camel/component/aries/handler/PresentProofServiceHandler.java
b/components/camel-hyperledger-aries/src/main/java/org/apache/camel/component/aries/handler/PresentProofServiceHandler.java
index c5d14333653..1a4a3115f16 100644
---
a/components/camel-hyperledger-aries/src/main/java/org/apache/camel/component/aries/handler/PresentProofServiceHandler.java
+++
b/components/camel-hyperledger-aries/src/main/java/org/apache/camel/component/aries/handler/PresentProofServiceHandler.java
@@ -35,26 +35,32 @@ public class PresentProofServiceHandler extends
AbstractServiceHandler {
@Override
public void process(Exchange exchange, String service) throws Exception {
+
if (service.equals("/present-proof/send-request")) {
PresentProofRequest reqObj = assertBody(exchange,
PresentProofRequest.class);
PresentationExchangeRecord resObj =
createClient().presentProofSendRequest(reqObj).get();
exchange.getIn().setBody(resObj);
+
} else if (service.startsWith("/present-proof/records/")) {
+
String presentationExchangeId = getServicePathToken(service, 2);
if (service.endsWith("/credentials")) {
PresentationRequestCredentialsFilter reqObj =
assertBody(exchange, PresentationRequestCredentialsFilter.class);
List<PresentationRequestCredentials> resObj
=
createClient().presentProofRecordsCredentials(presentationExchangeId,
reqObj).get();
exchange.getIn().setBody(resObj);
+
} else if (service.endsWith("/send-presentation")) {
PresentationRequest reqObj = assertBody(exchange,
PresentationRequest.class);
PresentationExchangeRecord resObj
=
createClient().presentProofRecordsSendPresentation(presentationExchangeId,
reqObj).get();
exchange.getIn().setBody(resObj);
+
} else if (service.endsWith("/verify-presentation")) {
PresentationExchangeRecord resObj
=
createClient().presentProofRecordsVerifyPresentation(presentationExchangeId).get();
exchange.getIn().setBody(resObj);
+
} else {
throw new UnsupportedServiceException(service);
}
diff --git
a/components/camel-hyperledger-aries/src/main/java/org/apache/camel/component/aries/handler/RevocationServiceHandler.java
b/components/camel-hyperledger-aries/src/main/java/org/apache/camel/component/aries/handler/RevocationServiceHandler.java
index c08ad1989af..c0261e6ce03 100644
---
a/components/camel-hyperledger-aries/src/main/java/org/apache/camel/component/aries/handler/RevocationServiceHandler.java
+++
b/components/camel-hyperledger-aries/src/main/java/org/apache/camel/component/aries/handler/RevocationServiceHandler.java
@@ -32,14 +32,17 @@ public class RevocationServiceHandler extends
AbstractServiceHandler {
@Override
public void process(Exchange exchange, String service) throws Exception {
+
if (service.equals("/revocation/create-registry")) {
RevRegCreateRequest reqObj = assertBody(exchange,
RevRegCreateRequest.class);
IssuerRevRegRecord resObj =
createClient().revocationCreateRegistry(reqObj).get();
exchange.getIn().setBody(resObj);
+
} else if (service.equals("/revocation/revoke")) {
RevokeRequest reqObj = assertBody(exchange, RevokeRequest.class);
RevocationModuleResponse resObj =
createClient().revocationRevoke(reqObj).get();
exchange.getIn().setBody(resObj);
+
} else {
throw new UnsupportedServiceException(service);
}
diff --git
a/components/camel-hyperledger-aries/src/main/java/org/apache/camel/component/aries/handler/SchemasServiceHandler.java
b/components/camel-hyperledger-aries/src/main/java/org/apache/camel/component/aries/handler/SchemasServiceHandler.java
index 06998a5c9cb..fed91cce710 100644
---
a/components/camel-hyperledger-aries/src/main/java/org/apache/camel/component/aries/handler/SchemasServiceHandler.java
+++
b/components/camel-hyperledger-aries/src/main/java/org/apache/camel/component/aries/handler/SchemasServiceHandler.java
@@ -30,6 +30,7 @@ public class SchemasServiceHandler extends
AbstractServiceHandler {
@Override
public void process(Exchange exchange, String service) throws Exception {
+
if (service.equals("/schemas")) {
SchemaSendRequest schemaReq = assertBody(exchange,
SchemaSendRequest.class);
if (schemaReq.getSchemaName() == null) {
@@ -40,6 +41,7 @@ public class SchemasServiceHandler extends
AbstractServiceHandler {
}
SchemaSendResponse resObj =
createClient().schemas(schemaReq).get();
exchange.getIn().setBody(resObj);
+
} else {
throw new UnsupportedServiceException(service);
}
diff --git
a/components/camel-hyperledger-aries/src/main/java/org/apache/camel/component/aries/handler/WalletServiceHandler.java
b/components/camel-hyperledger-aries/src/main/java/org/apache/camel/component/aries/handler/WalletServiceHandler.java
index c6198cecbab..79f6c5d1937 100644
---
a/components/camel-hyperledger-aries/src/main/java/org/apache/camel/component/aries/handler/WalletServiceHandler.java
+++
b/components/camel-hyperledger-aries/src/main/java/org/apache/camel/component/aries/handler/WalletServiceHandler.java
@@ -29,9 +29,11 @@ public class WalletServiceHandler extends
AbstractServiceHandler {
@Override
public void process(Exchange exchange, String service) throws Exception {
+
if (service.equals("/wallet/did/public")) {
DID resObj = createClient().walletDidPublic().orElse(null);
exchange.getIn().setBody(resObj);
+
} else {
throw new UnsupportedServiceException(service);
}
diff --git
a/components/camel-hyperledger-aries/src/main/java/org/apache/camel/converter/aries/V1CredentialExchangeConverter.java
b/components/camel-hyperledger-aries/src/main/java/org/apache/camel/converter/aries/V1CredentialExchangeConverter.java
new file mode 100644
index 00000000000..adc94256227
--- /dev/null
+++
b/components/camel-hyperledger-aries/src/main/java/org/apache/camel/converter/aries/V1CredentialExchangeConverter.java
@@ -0,0 +1,54 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.converter.aries;
+
+import java.util.Map;
+
+import com.google.gson.JsonObject;
+import org.apache.camel.Converter;
+import org.hyperledger.aries.api.issue_credential_v1.V1CredentialExchange;
+
+@Converter(generateLoader = true)
+public final class V1CredentialExchangeConverter extends
AbstractAriesConverter {
+
+ @Converter
+ public static V1CredentialExchange toAries(JsonObject jsonObj) {
+ return toAries(jsonObj, V1CredentialExchange.class);
+ }
+
+ @Converter
+ public static V1CredentialExchange toAries(String json) {
+ return toAries(json, V1CredentialExchange.class);
+ }
+
+ @Converter
+ public static V1CredentialExchange toAries(Map<String, Object> map) {
+ return toAries(map, V1CredentialExchange.class);
+ }
+
+ @Converter
+ public static JsonObject toJsonObject(V1CredentialExchange item) {
+ return (JsonObject) GSON.toJsonTree(item, V1CredentialExchange.class);
+ }
+
+ @Converter
+ @SuppressWarnings("unchecked")
+ public static Map<String, Object> toMap(V1CredentialExchange item) {
+ JsonObject json = toJsonObject(item);
+ return GSON.fromJson(json, Map.class);
+ }
+}