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 d7fe34c5b55 [Hyperledger-Aries] Add support for service=didexchange (#8859) d7fe34c5b55 is described below commit d7fe34c5b556b312057c38470bb9df93f39df101 Author: Thomas Diesler <tdies...@redhat.com> AuthorDate: Fri Dec 9 12:52:40 2022 +0100 [Hyperledger-Aries] Add support for service=didexchange (#8859) * [Hyperledger-Aries] Add support for out-of-band/receive-invitation https://github.com/hyperledger/aries-agent-test-harness/issues/607 * [Hyperledger-Aries] host.docker.internal does not resolve on linux * CAMEL-18803: [Hyperledger-Aries] Add support for service=didexchange --- .../camel-hyperledger-aries/docker-compose.yml | 47 ++++++++----- .../ReceiveInvitationFilterConverterLoader.java | 56 +++++++++++++++ .../services/org/apache/camel/TypeConverterLoader | 1 + .../component/aries/HyperledgerAriesComponent.java | 40 ++++++++++- .../component/aries/HyperledgerAriesProducer.java | 8 +++ .../aries/handler/AbstractServiceHandler.java | 5 ++ .../aries/handler/DidExchangeServiceHandler.java | 79 ++++++++++++++++++++++ .../aries/handler/OutOfBandServiceHandler.java | 62 +++++++++++++++++ .../aries/ReceiveInvitationFilterConverter.java | 42 ++++++++++++ .../component/aries/PresentationExchangeTest.java | 3 +- 10 files changed, 322 insertions(+), 21 deletions(-) diff --git a/components/camel-hyperledger-aries/docker-compose.yml b/components/camel-hyperledger-aries/docker-compose.yml index 7e530fdda64..6508be4df3f 100644 --- a/components/camel-hyperledger-aries/docker-compose.yml +++ b/components/camel-hyperledger-aries/docker-compose.yml @@ -19,7 +19,6 @@ version: '3' networks: von-network: - tails-server: services: @@ -27,7 +26,7 @@ services: # Webserver # webserver: - image: nessusio/von-network:${VON_NETWORK_VERSION:-latest} + image: nessusio/von-network:${VON_NETWORK_VERSION:-1.7.2} container_name: indy-webserver command: bash -c 'sleep 10 && ./scripts/start_webserver.sh' environment: @@ -47,6 +46,8 @@ services: - WEB_ANALYTICS_SCRIPT=${WEB_ANALYTICS_SCRIPT} - INFO_SITE_TEXT=${INFO_SITE_TEXT} - INFO_SITE_URL=${INFO_SITE_URL} + extra_hosts: + - host.docker.internal:host-gateway networks: - von-network ports: @@ -59,7 +60,7 @@ services: # Nodes # node1: - image: nessusio/von-network:${VON_NETWORK_VERSION:-latest} + image: nessusio/von-network:${VON_NETWORK_VERSION:-1.7.2} container_name: indy-node1 command: ./scripts/start_node.sh 1 networks: @@ -73,11 +74,13 @@ services: - DOCKERHOST=${DOCKERHOST:-host.docker.internal} - LOG_LEVEL=${LOG_LEVEL:-info} - RUST_LOG=${RUST_LOG:-warn} + extra_hosts: + - host.docker.internal:host-gateway volumes: - node1-data:/home/indy/ledger node2: - image: nessusio/von-network:${VON_NETWORK_VERSION:-latest} + image: nessusio/von-network:${VON_NETWORK_VERSION:-1.7.2} container_name: indy-node2 command: ./scripts/start_node.sh 2 networks: @@ -91,11 +94,13 @@ services: - DOCKERHOST=${DOCKERHOST:-host.docker.internal} - LOG_LEVEL=${LOG_LEVEL:-info} - RUST_LOG=${RUST_LOG:-warn} + extra_hosts: + - host.docker.internal:host-gateway volumes: - node2-data:/home/indy/ledger node3: - image: nessusio/von-network:${VON_NETWORK_VERSION:-latest} + image: nessusio/von-network:${VON_NETWORK_VERSION:-1.7.2} container_name: indy-node3 command: ./scripts/start_node.sh 3 networks: @@ -109,11 +114,13 @@ services: - DOCKERHOST=${DOCKERHOST:-host.docker.internal} - LOG_LEVEL=${LOG_LEVEL:-info} - RUST_LOG=${RUST_LOG:-warn} + extra_hosts: + - host.docker.internal:host-gateway volumes: - node3-data:/home/indy/ledger node4: - image: nessusio/von-network:${VON_NETWORK_VERSION:-latest} + image: nessusio/von-network:${VON_NETWORK_VERSION:-1.7.2} container_name: indy-node4 command: ./scripts/start_node.sh 4 networks: @@ -127,16 +134,20 @@ services: - DOCKERHOST=${DOCKERHOST:-host.docker.internal} - LOG_LEVEL=${LOG_LEVEL:-info} - RUST_LOG=${RUST_LOG:-warn} + extra_hosts: + - host.docker.internal:host-gateway volumes: - node4-data:/home/indy/ledger tails-server: - image: nessusio/indy-tails-server:${TAILS_SERVER_VERSION:-latest} + image: nessusio/indy-tails-server:${TAILS_SERVER_VERSION:-1.0.0} container_name: tails-server ports: - 6543:6543 networks: - - tails-server + - von-network + extra_hosts: + - host.docker.internal:host-gateway command: > tails-server --host 0.0.0.0 @@ -145,20 +156,15 @@ services: --log-level ${LOG_LEVEL:-info} acapy: - image: nessusio/aries-cloudagent-python:${ACAPY_VERSION:-latest} + image: nessusio/aries-cloudagent-python:${ACAPY_VERSION:-0.7.5} container_name: acapy ports: - ${ACAPY_USER_PORT:-8030}:${ACAPY_USER_PORT:-8030} - ${ACAPY_ADMIN_PORT:-8031}:${ACAPY_ADMIN_PORT:-8031} networks: - von-network - depends_on: - - node1 - - node2 - - node3 - - node4 - - webserver - - tails-server + extra_hosts: + - host.docker.internal:host-gateway command: > start --genesis-url http://${DOCKERHOST:-host.docker.internal}:9000/genesis @@ -182,7 +188,14 @@ services: --auto-ping-connection --auto-accept-requests --log-level info - + depends_on: + - node1 + - node2 + - node3 + - node4 + - webserver + - tails-server + volumes: webserver-cli: webserver-ledger: diff --git a/components/camel-hyperledger-aries/src/generated/java/org/apache/camel/converter/aries/ReceiveInvitationFilterConverterLoader.java b/components/camel-hyperledger-aries/src/generated/java/org/apache/camel/converter/aries/ReceiveInvitationFilterConverterLoader.java new file mode 100644 index 00000000000..9e9687cb0e8 --- /dev/null +++ b/components/camel-hyperledger-aries/src/generated/java/org/apache/camel/converter/aries/ReceiveInvitationFilterConverterLoader.java @@ -0,0 +1,56 @@ +/* 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 ReceiveInvitationFilterConverterLoader implements TypeConverterLoader, CamelContextAware { + + private CamelContext camelContext; + + public ReceiveInvitationFilterConverterLoader() { + } + + @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, org.hyperledger.aries.api.out_of_band.ReceiveInvitationFilter.class, com.google.gson.JsonObject.class, false, + (type, exchange, value) -> org.apache.camel.converter.aries.ReceiveInvitationFilterConverter.toAries((com.google.gson.JsonObject) value)); + addTypeConverter(registry, org.hyperledger.aries.api.out_of_band.ReceiveInvitationFilter.class, java.lang.String.class, false, + (type, exchange, value) -> org.apache.camel.converter.aries.ReceiveInvitationFilterConverter.toAries((java.lang.String) value)); + addTypeConverter(registry, org.hyperledger.aries.api.out_of_band.ReceiveInvitationFilter.class, java.util.Map.class, false, + (type, exchange, value) -> org.apache.camel.converter.aries.ReceiveInvitationFilterConverter.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 bfbe4d1afcb..53f2af79bc6 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 @@ -8,6 +8,7 @@ org.apache.camel.converter.aries.CredentialDefinitionRequestConverterLoader org.apache.camel.converter.aries.IssueCredentialRecordsFilterConverterLoader org.apache.camel.converter.aries.PresentProofRequestConverterLoader org.apache.camel.converter.aries.PresentationRequestConverterLoader +org.apache.camel.converter.aries.ReceiveInvitationFilterConverterLoader org.apache.camel.converter.aries.ReceiveInvitationRequestConverterLoader org.apache.camel.converter.aries.RevRegCreateRequestConverterLoader org.apache.camel.converter.aries.RevokeRequestConverterLoader 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 82f0d16881e..ab24bde9cc0 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 @@ -21,6 +21,7 @@ import java.util.Map; 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.NessusWallet; import io.nessus.aries.wallet.WalletRegistry; @@ -44,6 +45,8 @@ public class HyperledgerAriesComponent extends DefaultComponent { private boolean removeWalletsOnShutdown; private AriesClient adminClient; + private WebSocketClient adminWebSocketClient; + private WebSocketListener adminWebSocketListener; @Override protected Endpoint createEndpoint(String uri, String remaining, Map<String, Object> parameters) throws Exception { @@ -66,6 +69,9 @@ public class HyperledgerAriesComponent extends DefaultComponent { @Override protected void doShutdown() throws Exception { + + closeAdminWebSocketClient(); + if (removeWalletsOnShutdown) { for (NessusWallet wallet : walletRegistry.getWallets()) { wallet.closeAndRemove(); @@ -121,11 +127,39 @@ public class HyperledgerAriesComponent extends DefaultComponent { return AriesClientFactory.createClient(agentConfig, wallet); } + public WebSocketListener createAdminWebSocketListener() { + return new WebSocketListener("admin", null, null); + } + + public WebSocketClient createAdminWebSocketClient() { + WebSocketListener wslistener = createAdminWebSocketListener(); + return createAdminWebSocketClient(wslistener); + } + public WebSocketClient createAdminWebSocketClient(WebSocketListener wslistener) { + AssertArg.notNull(wslistener, "No wslistener"); + AssertState.isNull(adminWebSocketClient, "WebSocket client already created"); AgentConfiguration agentConfig = getAgentConfiguration(); - WebSocketClient wsclient = new WebSocketClient(agentConfig, null); - wsclient.openWebSocket(wslistener); - return wsclient; + adminWebSocketClient = new WebSocketClient(agentConfig, null); + adminWebSocketClient.openWebSocket(wslistener); + adminWebSocketListener = wslistener; + return adminWebSocketClient; + } + + public WebSocketClient getAdminWebSocketClient() { + return adminWebSocketClient; + } + + public WebSocketListener getAdminWebSocketListener() { + return adminWebSocketListener; + } + + public void closeAdminWebSocketClient() { + if (adminWebSocketClient != null) { + adminWebSocketClient.close(); + adminWebSocketListener = null; + adminWebSocketClient = null; + } } public WebSocketClient createWebSocketClient(String walletName, WebSocketListener wslistener) { 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 fde9b513ef5..b313cf9dcfd 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 @@ -22,8 +22,10 @@ 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.CredentialsServiceHandler; +import org.apache.camel.component.aries.handler.DidExchangeServiceHandler; import org.apache.camel.component.aries.handler.IssueCredentialV1ServiceHandler; import org.apache.camel.component.aries.handler.MultitenancyServiceHandler; +import org.apache.camel.component.aries.handler.OutOfBandServiceHandler; import org.apache.camel.component.aries.handler.PresentProofServiceHandler; import org.apache.camel.component.aries.handler.RevocationServiceHandler; import org.apache.camel.component.aries.handler.SchemasServiceHandler; @@ -58,12 +60,18 @@ public class HyperledgerAriesProducer extends DefaultProducer { } else if (service.startsWith("/credentials")) { serviceHandler = new CredentialsServiceHandler(getEndpoint()); + } else if (service.startsWith("/didexchange")) { + serviceHandler = new DidExchangeServiceHandler(getEndpoint()); + } else if (service.startsWith("/issue-credential")) { serviceHandler = new IssueCredentialV1ServiceHandler(getEndpoint()); } else if (service.startsWith("/multitenancy")) { serviceHandler = new MultitenancyServiceHandler(getEndpoint()); + } else if (service.startsWith("/out-of-band")) { + serviceHandler = new OutOfBandServiceHandler(getEndpoint()); + } else if (service.startsWith("/present-proof")) { serviceHandler = new PresentProofServiceHandler(getEndpoint()); 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 d3439b3aedb..7e0f0b2cd55 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 @@ -19,6 +19,7 @@ package org.apache.camel.component.aries.handler; import java.io.IOException; import io.nessus.aries.util.AssertState; +import io.nessus.aries.websocket.WebSocketListener; import org.apache.camel.Exchange; import org.apache.camel.Message; import org.apache.camel.component.aries.HyperledgerAriesComponent; @@ -118,4 +119,8 @@ public abstract class AbstractServiceHandler implements ServiceHandler { public AriesClient createClient() throws IOException { return endpoint.createClient(); } + + public WebSocketListener getAdminWebSocketListener() { + return getComponent().getAdminWebSocketListener(); + } } diff --git a/components/camel-hyperledger-aries/src/main/java/org/apache/camel/component/aries/handler/DidExchangeServiceHandler.java b/components/camel-hyperledger-aries/src/main/java/org/apache/camel/component/aries/handler/DidExchangeServiceHandler.java new file mode 100644 index 00000000000..d69307bcdc6 --- /dev/null +++ b/components/camel-hyperledger-aries/src/main/java/org/apache/camel/component/aries/handler/DidExchangeServiceHandler.java @@ -0,0 +1,79 @@ +/* + * 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.component.aries.handler; + +import java.util.concurrent.TimeUnit; + +import io.nessus.aries.util.AssertState; +import io.nessus.aries.websocket.WebSocketListener; +import org.apache.camel.Exchange; +import org.apache.camel.component.aries.HyperledgerAriesEndpoint; +import org.apache.camel.component.aries.UnsupportedServiceException; +import org.hyperledger.aries.api.connection.ConnectionRecord; +import org.hyperledger.aries.api.connection.ConnectionState; +import org.hyperledger.aries.api.did_exchange.DidExchangeAcceptInvitationFilter; + +public class DidExchangeServiceHandler extends AbstractServiceHandler { + + public DidExchangeServiceHandler(HyperledgerAriesEndpoint endpoint) { + super(endpoint); + } + + @Override + public void process(Exchange exchange, String service) throws Exception { + + if (service.startsWith("/didexchange")) { + + String connectionId = getServicePathToken(service, 1); + AssertState.notNull(connectionId, "Null connectionId"); + + if (service.endsWith("/accept-invitation")) { + DidExchangeAcceptInvitationFilter filter = maybeHeader(exchange, DidExchangeAcceptInvitationFilter.class); + ConnectionRecord conrec = adminClient().didExchangeAcceptInvitation(connectionId, filter).get(); + WebSocketListener wsevents = getAdminWebSocketListener(); + if (conrec == null && wsevents != null) { + conrec = wsevents.awaitConnection( + cr -> cr.getState() == ConnectionState.COMPLETED + && cr.getConnectionId().equals(connectionId), + 10, TimeUnit.SECONDS) + .findFirst().orElse(null); + } + AssertState.notNull(conrec, String.format("No ConnectionRecord for %s", connectionId)); + exchange.getIn().setBody(conrec); + + } else if (service.endsWith(connectionId)) { + WebSocketListener wsevents = getAdminWebSocketListener(); + ConnectionRecord conrec = createClient().connectionsGetById(connectionId).orElse(null); + if (conrec == null && wsevents != null) { + conrec = wsevents.awaitConnection( + cr -> cr.getState() == ConnectionState.COMPLETED + && cr.getConnectionId().equals(connectionId), + 10, TimeUnit.SECONDS) + .findFirst().orElse(null); + } + AssertState.notNull(conrec, String.format("No ConnectionRecord for %s", connectionId)); + exchange.getIn().setBody(conrec); + + } 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/OutOfBandServiceHandler.java b/components/camel-hyperledger-aries/src/main/java/org/apache/camel/component/aries/handler/OutOfBandServiceHandler.java new file mode 100644 index 00000000000..b4f5fa34fdf --- /dev/null +++ b/components/camel-hyperledger-aries/src/main/java/org/apache/camel/component/aries/handler/OutOfBandServiceHandler.java @@ -0,0 +1,62 @@ +/* + * 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.component.aries.handler; + +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.aries.api.connection.ConnectionRecord; +import org.hyperledger.aries.api.connection.ConnectionState; +import org.hyperledger.aries.api.out_of_band.InvitationMessage; +import org.hyperledger.aries.api.out_of_band.InvitationMessage.InvitationMessageService; +import org.hyperledger.aries.api.out_of_band.ReceiveInvitationFilter; + +public class OutOfBandServiceHandler extends AbstractServiceHandler { + + public OutOfBandServiceHandler(HyperledgerAriesEndpoint endpoint) { + super(endpoint); + } + + @Override + public void process(Exchange exchange, String service) throws Exception { + + if (service.equals("/out-of-band/receive-invitation")) { + @SuppressWarnings("unchecked") + InvitationMessage<InvitationMessageService> reqObj = assertBody(exchange, InvitationMessage.class); + ReceiveInvitationFilter filter = maybeHeader(exchange, ReceiveInvitationFilter.class); + if (filter == null) { + filter = ReceiveInvitationFilter.builder() + .useExistingConnection(false) + .autoAccept(false) + .build(); + } + ConnectionRecord oobRecord = createClient().outOfBandReceiveInvitation(reqObj, filter).get(); + String connectionId = oobRecord.getConnectionId(); + AssertState.notNull(connectionId); + ConnectionRecord resObj = adminClient().connections().get().stream() + .filter(cr -> cr.getState() == ConnectionState.INVITATION) + .filter(cr -> cr.getConnectionId().equals(connectionId)) + .findFirst().orElse(null); + AssertState.notNull(resObj, String.format("No ConnectionRecord for %s", connectionId)); + exchange.getMessage().setBody(resObj); + + } else { + throw new UnsupportedServiceException(service); + } + } +} diff --git a/components/camel-hyperledger-aries/src/main/java/org/apache/camel/converter/aries/ReceiveInvitationFilterConverter.java b/components/camel-hyperledger-aries/src/main/java/org/apache/camel/converter/aries/ReceiveInvitationFilterConverter.java new file mode 100644 index 00000000000..10852994a77 --- /dev/null +++ b/components/camel-hyperledger-aries/src/main/java/org/apache/camel/converter/aries/ReceiveInvitationFilterConverter.java @@ -0,0 +1,42 @@ +/* + * 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.out_of_band.ReceiveInvitationFilter; + +@Converter(generateLoader = true) +public final class ReceiveInvitationFilterConverter extends AbstractAriesConverter { + + @Converter + public static ReceiveInvitationFilter toAries(JsonObject jsonObj) { + return toAries(jsonObj, ReceiveInvitationFilter.class); + } + + @Converter + public static ReceiveInvitationFilter toAries(String json) { + return toAries(json, ReceiveInvitationFilter.class); + } + + @Converter + public static ReceiveInvitationFilter toAries(Map<String, Object> map) { + return toAries(map, ReceiveInvitationFilter.class); + } +} diff --git a/components/camel-hyperledger-aries/src/test/java/org/apache/camel/component/aries/PresentationExchangeTest.java b/components/camel-hyperledger-aries/src/test/java/org/apache/camel/component/aries/PresentationExchangeTest.java index 94d9e1975b5..4f11f5c2429 100644 --- a/components/camel-hyperledger-aries/src/test/java/org/apache/camel/component/aries/PresentationExchangeTest.java +++ b/components/camel-hyperledger-aries/src/test/java/org/apache/camel/component/aries/PresentationExchangeTest.java @@ -38,7 +38,8 @@ public class PresentationExchangeTest extends AbstractCamelAriesTest { @Test public void testWorkflow() throws Exception { - List<PresentationExchangeState> states = Arrays.asList(PROPOSAL_SENT, + List<PresentationExchangeState> states = Arrays.asList( + PROPOSAL_SENT, PROPOSAL_RECEIVED, REQUEST_SENT, REQUEST_RECEIVED,