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 <lburgazz...@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")) + "}" + ); + } }