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

[camel] 04/05: CAMEL-14389: fix findings

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

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

commit 73506e65fe1f9c439db8639024b64ae3b0ce6ab2
Author: lburgazzoli <lb...@gmail.com>
AuthorDate: Wed Jan 15 13:56:18 2020 +0100

    CAMEL-14389: fix findings
---
 .../org/apache/camel/EndpointConsumerResolver.java |  4 ++
 .../org/apache/camel/EndpointProducerResolver.java |  4 ++
 .../builder/endpoint/EndpointBuilderFactory.java   | 18 ++++++++-
 .../builder/endpoint/EndpointBuilderSupport.java   | 44 ----------------------
 .../camel/builder/endpoint/EndpointBuilders.java   |  1 +
 .../camel/maven/packaging/EndpointDslMojo.java     | 30 ++++++++++++++-
 6 files changed, 55 insertions(+), 46 deletions(-)

diff --git a/core/camel-api/src/main/java/org/apache/camel/EndpointConsumerResolver.java b/core/camel-api/src/main/java/org/apache/camel/EndpointConsumerResolver.java
index 8786d9e..9ce2c22 100644
--- a/core/camel-api/src/main/java/org/apache/camel/EndpointConsumerResolver.java
+++ b/core/camel-api/src/main/java/org/apache/camel/EndpointConsumerResolver.java
@@ -16,6 +16,10 @@
  */
 package org.apache.camel;
 
+/**
+ * An interface to represent an object that can be resolved as a consumer {@link Endpoint}
+ */
+@FunctionalInterface
 public interface EndpointConsumerResolver {
     /**
      * Resolves this object as an endpoint.
diff --git a/core/camel-api/src/main/java/org/apache/camel/EndpointProducerResolver.java b/core/camel-api/src/main/java/org/apache/camel/EndpointProducerResolver.java
index 669c218..7e55401 100644
--- a/core/camel-api/src/main/java/org/apache/camel/EndpointProducerResolver.java
+++ b/core/camel-api/src/main/java/org/apache/camel/EndpointProducerResolver.java
@@ -16,6 +16,10 @@
  */
 package org.apache.camel;
 
+/**
+ * An interface to represent an object that can be resolved as a producer {@link Endpoint}
+ */
+@FunctionalInterface
 public interface EndpointProducerResolver {
     /**
      * Resolves this object as an endpoint.
diff --git a/core/camel-endpointdsl/src/main/java/org/apache/camel/builder/endpoint/EndpointBuilderFactory.java b/core/camel-endpointdsl/src/main/java/org/apache/camel/builder/endpoint/EndpointBuilderFactory.java
index a922368..e08bd65 100644
--- a/core/camel-endpointdsl/src/main/java/org/apache/camel/builder/endpoint/EndpointBuilderFactory.java
+++ b/core/camel-endpointdsl/src/main/java/org/apache/camel/builder/endpoint/EndpointBuilderFactory.java
@@ -16,6 +16,13 @@
  */
 package org.apache.camel.builder.endpoint;
 
+import java.util.List;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
+import org.apache.camel.Exchange;
+import org.apache.camel.Expression;
+import org.apache.camel.builder.EndpointProducerBuilder;
+import org.apache.camel.support.ExpressionAdapter;
 import javax.annotation.Generated;
 
 /**
@@ -25,7 +32,15 @@ import javax.annotation.Generated;
 public interface EndpointBuilderFactory {
 
     default org.apache.camel.Expression endpoints(org.apache.camel.builder.EndpointProducerBuilder... endpoints) {
-        return EndpointBuilderSupport.endpoints(endpoints);
+        return new ExpressionAdapter() {
+
+            List<Expression> expressions = Stream.of(endpoints).map(EndpointProducerBuilder::expr).collect(Collectors.toList());
+
+            @Override
+            public Object evaluate(Exchange exchange) {
+                return expressions.stream().map(e -> e.evaluate(exchange, Object.class)).collect(Collectors.toList());
+            }
+        };
     }
 
     /**
@@ -989,6 +1004,7 @@ public interface EndpointBuilderFactory {
      * different signer/verifier/encryptor/decryptor endpoints within the camel
      * context.
      */
+    @Deprecated
     default org.apache.camel.builder.endpoint.dsl.CryptoCmsEndpointBuilderFactory.CryptoCmsEndpointBuilder cryptoCms(String path) {
         return org.apache.camel.builder.endpoint.dsl.CryptoCmsEndpointBuilderFactory.cryptoCms(path);
     }
diff --git a/core/camel-endpointdsl/src/main/java/org/apache/camel/builder/endpoint/EndpointBuilderSupport.java b/core/camel-endpointdsl/src/main/java/org/apache/camel/builder/endpoint/EndpointBuilderSupport.java
deleted file mode 100644
index 14bf45f..0000000
--- a/core/camel-endpointdsl/src/main/java/org/apache/camel/builder/endpoint/EndpointBuilderSupport.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * 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.builder.endpoint;
-
-import java.util.List;
-import java.util.stream.Collectors;
-import java.util.stream.Stream;
-
-import org.apache.camel.Exchange;
-import org.apache.camel.Expression;
-import org.apache.camel.builder.EndpointProducerBuilder;
-import org.apache.camel.support.ExpressionAdapter;
-
-public final class EndpointBuilderSupport {
-    private EndpointBuilderSupport() {
-    }
-
-    public static Expression endpoints(EndpointProducerBuilder... endpoints) {
-        return new ExpressionAdapter() {
-            List<Expression> expressions = Stream.of(endpoints)
-                .map(EndpointProducerBuilder::expr).collect(Collectors.toList());
-
-            @Override
-            public Object evaluate(Exchange exchange) {
-                return expressions.stream().map(e -> e.evaluate(exchange, Object.class))
-                    .collect(Collectors.toList());
-            }
-        };
-    }
-}
diff --git a/core/camel-endpointdsl/src/main/java/org/apache/camel/builder/endpoint/EndpointBuilders.java b/core/camel-endpointdsl/src/main/java/org/apache/camel/builder/endpoint/EndpointBuilders.java
index e489317..a769f85 100644
--- a/core/camel-endpointdsl/src/main/java/org/apache/camel/builder/endpoint/EndpointBuilders.java
+++ b/core/camel-endpointdsl/src/main/java/org/apache/camel/builder/endpoint/EndpointBuilders.java
@@ -985,6 +985,7 @@ public interface EndpointBuilders {
      * different signer/verifier/encryptor/decryptor endpoints within the camel
      * context.
      */
+    @Deprecated
     static org.apache.camel.builder.endpoint.dsl.CryptoCmsEndpointBuilderFactory.CryptoCmsEndpointBuilder cryptoCms(String path) {
         return org.apache.camel.builder.endpoint.dsl.CryptoCmsEndpointBuilderFactory.cryptoCms(path);
     }
diff --git a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/EndpointDslMojo.java b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/EndpointDslMojo.java
index 060cfaa..88c1574 100644
--- a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/EndpointDslMojo.java
+++ b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/EndpointDslMojo.java
@@ -36,6 +36,7 @@ import java.util.TreeSet;
 import java.util.function.Function;
 import java.util.function.Supplier;
 import java.util.stream.Collectors;
+import java.util.stream.Stream;
 
 import javax.annotation.Generated;
 
@@ -486,6 +487,13 @@ public class EndpointDslMojo extends AbstractMojo {
 
         CompilationUnit endpointBuilderUnit = new CompilationUnit();
         endpointBuilderUnit.setPackageDeclaration(StringHelper.before(packageName, ".dsl"));
+        endpointBuilderUnit.addImport("java.util.List");
+        endpointBuilderUnit.addImport("java.util.stream.Collectors");
+        endpointBuilderUnit.addImport("java.util.stream.Stream");
+        endpointBuilderUnit.addImport("org.apache.camel.Exchange");
+        endpointBuilderUnit.addImport("org.apache.camel.Expression");
+        endpointBuilderUnit.addImport("org.apache.camel.builder.EndpointProducerBuilder");
+        endpointBuilderUnit.addImport("org.apache.camel.support.ExpressionAdapter");
 
         // EndpointBuilderFactory
         ClassOrInterfaceDeclaration endpointBuilderClass = endpointBuilderUnit.addClass("EndpointBuilderFactory");
@@ -498,7 +506,16 @@ public class EndpointDslMojo extends AbstractMojo {
         MethodDeclaration endpoints = endpointBuilderClass.addMethod("endpoints");
         endpoints.setDefault(true);
         endpoints.addAndGetParameter("org.apache.camel.builder.EndpointProducerBuilder", "endpoints").setVarArgs(true);
-        endpoints.setBody(new BlockStmt().addStatement("return EndpointBuilderSupport.endpoints(endpoints);"));
+        endpoints.setBody(block(
+            "return new ExpressionAdapter() {",
+            "    List<Expression> expressions = Stream.of(endpoints).map(EndpointProducerBuilder::expr).collect(Collectors.toList());",
+            "    @Override",
+            "    public Object evaluate(Exchange exchange) {",
+            "        return expressions.stream().map(e -> e.evaluate(exchange, Object.class)).collect(Collectors.toList());",
+            "    }",
+            "};")
+        );
+
         endpoints.setType("org.apache.camel.Expression");
 
         // Copy entry points from builder factories
@@ -521,6 +538,9 @@ public class EndpointDslMojo extends AbstractMojo {
                         method.setDefault(true);
                         method.setParameters(declaration.getParameters());
 
+                        // copy annotations from the source method
+                        declaration.getAnnotations().forEach(method::addAnnotation);
+
                         method.setBody(
                             new BlockStmt().addStatement(
                                 String.format("return %s.%s.%s(%s);",
@@ -584,6 +604,9 @@ public class EndpointDslMojo extends AbstractMojo {
                         method.setStatic(true);
                         method.setParameters(declaration.getParameters());
 
+                        // copy annotations from the source method
+                        declaration.getAnnotations().forEach(method::addAnnotation);
+
                         method.setBody(
                             new BlockStmt().addStatement(
                                 String.format("return %s.%s.%s(%s);",
@@ -1016,4 +1039,9 @@ public class EndpointDslMojo extends AbstractMojo {
         }
     }
 
+    private static BlockStmt block(String... statements) {
+        return StaticJavaParser.parseBlock(
+            "{" + Stream.of(statements).collect(Collectors.joining("\n")) + "}"
+        );
+    }
 }