You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ja...@apache.org on 2020/10/07 13:57:54 UTC

[camel-quarkus] branch master updated: Crypto extension requires reflective access to DigitalSignatureConstants

This is an automated email from the ASF dual-hosted git repository.

jamesnetherton pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/camel-quarkus.git


The following commit(s) were added to refs/heads/master by this push:
     new 62a4201  Crypto extension requires reflective access to DigitalSignatureConstants
62a4201 is described below

commit 62a4201a76d2bd27ff107cfdfa4920a02a8d8cc8
Author: James Netherton <ja...@gmail.com>
AuthorDate: Wed Oct 7 13:23:33 2020 +0100

    Crypto extension requires reflective access to DigitalSignatureConstants
---
 .../component/crypto/deployment/CryptoProcessor.java  |  9 +++++++++
 .../quarkus/component/crypto/it/CryptoResource.java   | 19 +++++++++++++++++--
 .../camel/quarkus/component/crypto/it/CryptoTest.java |  4 +++-
 3 files changed, 29 insertions(+), 3 deletions(-)

diff --git a/extensions/crypto/deployment/src/main/java/org/apache/camel/quarkus/component/crypto/deployment/CryptoProcessor.java b/extensions/crypto/deployment/src/main/java/org/apache/camel/quarkus/component/crypto/deployment/CryptoProcessor.java
index 60a3645..25d08f3 100644
--- a/extensions/crypto/deployment/src/main/java/org/apache/camel/quarkus/component/crypto/deployment/CryptoProcessor.java
+++ b/extensions/crypto/deployment/src/main/java/org/apache/camel/quarkus/component/crypto/deployment/CryptoProcessor.java
@@ -19,6 +19,8 @@ package org.apache.camel.quarkus.component.crypto.deployment;
 import io.quarkus.deployment.annotations.BuildStep;
 import io.quarkus.deployment.builditem.ExtensionSslNativeSupportBuildItem;
 import io.quarkus.deployment.builditem.FeatureBuildItem;
+import io.quarkus.deployment.builditem.nativeimage.ReflectiveClassBuildItem;
+import org.apache.camel.component.crypto.DigitalSignatureConstants;
 
 class CryptoProcessor {
 
@@ -33,4 +35,11 @@ class CryptoProcessor {
     ExtensionSslNativeSupportBuildItem activeNativeSSLSupport() {
         return new ExtensionSslNativeSupportBuildItem(FEATURE);
     }
+
+    @BuildStep
+    ReflectiveClassBuildItem registerForReflection() {
+        // TODO: Remove this when upgrading to Camel >= 3.6.0
+        // https://github.com/apache/camel-quarkus/issues/1881
+        return new ReflectiveClassBuildItem(false, true, DigitalSignatureConstants.class);
+    }
 }
diff --git a/integration-tests/crypto/src/main/java/org/apache/camel/quarkus/component/crypto/it/CryptoResource.java b/integration-tests/crypto/src/main/java/org/apache/camel/quarkus/component/crypto/it/CryptoResource.java
index ca7c397..0195228 100644
--- a/integration-tests/crypto/src/main/java/org/apache/camel/quarkus/component/crypto/it/CryptoResource.java
+++ b/integration-tests/crypto/src/main/java/org/apache/camel/quarkus/component/crypto/it/CryptoResource.java
@@ -30,6 +30,7 @@ import javax.ws.rs.POST;
 import javax.ws.rs.Path;
 import javax.ws.rs.Produces;
 import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
 
 import org.apache.camel.Exchange;
 import org.apache.camel.Message;
@@ -64,8 +65,22 @@ public class CryptoResource {
     @Path("/signature/verify")
     @POST
     @Consumes(MediaType.TEXT_PLAIN)
-    public void verify(String signature) {
-        producerTemplate.sendBodyAndHeader("direct:verify", MESSAGE, DigitalSignatureConstants.SIGNATURE, signature);
+    public Response verify(String signature) {
+        Exchange exchange = producerTemplate.send("direct:verify", new Processor() {
+            @Override
+            public void process(Exchange exchange) throws Exception {
+                Message message = exchange.getMessage();
+                message.setHeader(DigitalSignatureConstants.SIGNATURE, signature);
+                message.setBody(MESSAGE);
+            }
+        });
+
+        if (exchange.isFailed()) {
+            // Expected in the signature verification failure scenario
+            return Response.serverError().build();
+        }
+
+        return Response.ok(exchange.getMessage().getHeaders().size() == 0).build();
     }
 
     @Path("/encrypt")
diff --git a/integration-tests/crypto/src/test/java/org/apache/camel/quarkus/component/crypto/it/CryptoTest.java b/integration-tests/crypto/src/test/java/org/apache/camel/quarkus/component/crypto/it/CryptoTest.java
index 45c471b..bfac55c 100644
--- a/integration-tests/crypto/src/test/java/org/apache/camel/quarkus/component/crypto/it/CryptoTest.java
+++ b/integration-tests/crypto/src/test/java/org/apache/camel/quarkus/component/crypto/it/CryptoTest.java
@@ -24,6 +24,7 @@ import org.apache.commons.codec.binary.Base64;
 import org.junit.jupiter.api.Test;
 
 import static org.apache.camel.quarkus.component.crypto.it.CryptoResource.MESSAGE;
+import static org.hamcrest.Matchers.is;
 import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertTrue;
 
@@ -59,7 +60,8 @@ class CryptoTest {
                 .body(signature)
                 .post("/crypto/signature/verify")
                 .then()
-                .statusCode(204);
+                .statusCode(200)
+                .body(is("true"));
     }
 
     @Test