You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2019/08/20 19:05:24 UTC
[camel] 04/12: CAMEL-13870: Fast property configuration of Camel
endpoints. Work in progress.
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 <cl...@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);
+ }
+ }
+
}