This is an automated email from the ASF dual-hosted git repository. davsclaus pushed a commit to branch CAMEL-13870 in repository https://gitbox.apache.org/repos/asf/camel.git
commit 6c3447ff272ae76bb26bd344aee4062a75017c3b Author: Claus Ibsen <claus.ib...@gmail.com> AuthorDate: Tue Aug 20 11:19:03 2019 +0200 CAMEL-13870: Fast property configuration of Camel endpoints. Work in progress. --- .../org/apache/camel/support/DefaultComponent.java | 4 ++-- .../camel/tools/apt/EndpointAnnotationProcessor.java | 1 + .../tools/apt/EndpointPropertyConfigurerGenerator.java | 18 ++++++++++++++++++ 3 files changed, 21 insertions(+), 2 deletions(-) diff --git a/core/camel-support/src/main/java/org/apache/camel/support/DefaultComponent.java b/core/camel-support/src/main/java/org/apache/camel/support/DefaultComponent.java index eecb64c..866f9a6 100644 --- a/core/camel-support/src/main/java/org/apache/camel/support/DefaultComponent.java +++ b/core/camel-support/src/main/java/org/apache/camel/support/DefaultComponent.java @@ -57,7 +57,7 @@ public abstract class DefaultComponent extends ServiceSupport implements Compone */ private static final Pattern RAW_PATTERN = Pattern.compile("RAW[({].*&&.*[)}]"); - private static final String RESOURCE_PATH = "META-INF/services/org/apache/camel/component/"; + private static final String RESOURCE_PATH = "META-INF/services/org/apache/camel/configurer/"; private volatile Class endpointPropertyConfigurerClass; @@ -335,7 +335,7 @@ public abstract class DefaultComponent extends ServiceSupport implements Compone String name = ann.value(); try { Optional<Class<?>> clazz = getCamelContext().getExtension(ExtendedCamelContext.class).getFactoryFinder(RESOURCE_PATH) - .findOptionalClass(name, "endpoint-property-configurer-"); + .findOptionalClass(name + "-endpoint", null); clazz.ifPresent(aClass -> endpointPropertyConfigurerClass = aClass); } catch (NoFactoryAvailableException e) { // ignore diff --git a/tooling/apt/src/main/java/org/apache/camel/tools/apt/EndpointAnnotationProcessor.java b/tooling/apt/src/main/java/org/apache/camel/tools/apt/EndpointAnnotationProcessor.java index e8d2f01..361bcef 100644 --- a/tooling/apt/src/main/java/org/apache/camel/tools/apt/EndpointAnnotationProcessor.java +++ b/tooling/apt/src/main/java/org/apache/camel/tools/apt/EndpointAnnotationProcessor.java @@ -181,6 +181,7 @@ public class EndpointAnnotationProcessor extends AbstractCamelAnnotationProcesso String fqn = pn + "." + cn; EndpointPropertyConfigurerGenerator.generatePropertyConfigurer(processingEnv, parent, pn, cn, fqn, en, fqen, endpointPaths, endpointOptions); + EndpointPropertyConfigurerGenerator.generateMetaInfConfigurer(processingEnv, componentModel.getScheme() + "-endpoint", fqn); } public String createParameterJsonSchema(ComponentModel componentModel, Set<ComponentOption> componentOptions, diff --git a/tooling/apt/src/main/java/org/apache/camel/tools/apt/EndpointPropertyConfigurerGenerator.java b/tooling/apt/src/main/java/org/apache/camel/tools/apt/EndpointPropertyConfigurerGenerator.java index fb3001a..6e4e236 100644 --- a/tooling/apt/src/main/java/org/apache/camel/tools/apt/EndpointPropertyConfigurerGenerator.java +++ b/tooling/apt/src/main/java/org/apache/camel/tools/apt/EndpointPropertyConfigurerGenerator.java @@ -16,13 +16,18 @@ */ package org.apache.camel.tools.apt; +import java.io.IOException; import java.io.Writer; import java.util.Set; import javax.annotation.processing.ProcessingEnvironment; +import javax.lang.model.element.AnnotationMirror; import javax.lang.model.element.TypeElement; import javax.tools.Diagnostic; +import javax.tools.FileObject; import javax.tools.JavaFileObject; +import javax.tools.StandardLocation; +import org.apache.camel.spi.annotations.SubServiceFactory; import org.apache.camel.tools.apt.helper.IOHelper; import org.apache.camel.tools.apt.model.EndpointOption; import org.apache.camel.tools.apt.model.EndpointPath; @@ -128,4 +133,17 @@ public final class EndpointPropertyConfigurerGenerator { return sb.toString(); } + public static void generateMetaInfConfigurer(ProcessingEnvironment processingEnv, String name, String fqn) { + try { + FileObject resource = processingEnv.getFiler().createResource(StandardLocation.CLASS_OUTPUT, "", + "META-INF/services/org/apache/camel/configurer/" + name); + try (Writer w = resource.openWriter()) { + w.append("# Generated by camel annotation processor\n"); + w.append("class=").append(fqn).append("\n"); + } + } catch (IOException e) { + throw new RuntimeException(e); + } + } + }