diff --git a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/AbstractGenerateConfigurerMojo.java b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/AbstractGenerateConfigurerMojo.java index c2ff0bb292d7b..00ded04b8200d 100644 --- a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/AbstractGenerateConfigurerMojo.java +++ b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/AbstractGenerateConfigurerMojo.java @@ -61,6 +61,7 @@ import org.jboss.jandex.Index; import org.jboss.jandex.IndexReader; +import static org.apache.camel.maven.packaging.generics.PackagePluginUtils.readJandexIndex; import static org.apache.camel.tooling.util.ReflectionHelper.doWithMethods; import static org.apache.camel.tooling.util.Strings.between; @@ -160,13 +161,7 @@ protected void doExecute(File sourcesOutputDir, File resourcesOutputDir, List bootstrapAndExtendedSet, String currentClass, Set bootstrapSet, Set extendedSet, Set set) { 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 9b4cc1020b544..314aac2d50dc3 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 @@ -369,19 +369,14 @@ private boolean doCreateEndpointDsl(ComponentModel model, List a private void processMasterScheme( List aliases, List staticBuilders, JavaClass javaClass, JavaClass builderClass, JavaClass dslClass) { - Method method; + // we only want the first alias (master scheme) as static builders boolean firstAlias = true; for (ComponentModel componentModel : aliases) { String desc = getMainDescription(componentModel); String methodName = camelCaseLower(componentModel.getScheme()); - method = dslClass.addMethod().setStatic().setName(methodName) - .addParameter(String.class, "path") - .setReturnType(new GenericType(loadClass(builderClass.getCanonicalName()))) - .setDefault() - .setBodyF("return %s.%s(%s);", javaClass.getName(), "endpointBuilder", - "\"" + componentModel.getScheme() + "\", path"); + Method method = doAddMethod(javaClass, builderClass, dslClass, componentModel, methodName); String javaDoc = desc; javaDoc += "\n\n@param path " + pathParameterJavaDoc(componentModel); javaDoc += "\n@return the dsl builder\n"; @@ -434,18 +429,22 @@ private void processMasterScheme( } } + private Method doAddMethod(JavaClass javaClass, JavaClass builderClass, JavaClass dslClass, ComponentModel componentModel, String methodName) { + return dslClass.addMethod().setStatic().setName(methodName) + .addParameter(String.class, "path") + .setReturnType(new GenericType(loadClass(builderClass.getCanonicalName()))) + .setDefault() + .setBodyF("return %s.%s(%s);", javaClass.getName(), "endpointBuilder", + "\"" + componentModel.getScheme() + "\", path"); + } + private void processAliases( ComponentModel model, List staticBuilders, JavaClass javaClass, JavaClass builderClass, JavaClass dslClass) { Method method; String desc = getMainDescription(model); String methodName = camelCaseLower(model.getScheme()); - method = dslClass.addMethod().setStatic().setName(methodName) - .addParameter(String.class, "path") - .setReturnType(new GenericType(loadClass(builderClass.getCanonicalName()))) - .setDefault() - .setBodyF("return %s.%s(%s);", javaClass.getName(), "endpointBuilder", - "\"" + model.getScheme() + "\", path"); + method = doAddMethod(javaClass, builderClass, dslClass, model, methodName); String javaDoc = desc; javaDoc += "\n\n@param path " + pathParameterJavaDoc(model); javaDoc += "\n@return the dsl builder\n"; diff --git a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/TypeConverterLoaderGeneratorMojo.java b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/TypeConverterLoaderGeneratorMojo.java index 4701d3f4a6147..8e3cb57c0f83b 100644 --- a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/TypeConverterLoaderGeneratorMojo.java +++ b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/TypeConverterLoaderGeneratorMojo.java @@ -50,6 +50,7 @@ import org.jboss.jandex.Type; import static org.apache.camel.maven.packaging.SchemaHelper.dashToCamelCase; +import static org.apache.camel.maven.packaging.generics.PackagePluginUtils.readJandexIndex; @Mojo(name = "generate-type-converter-loader", threadSafe = true, requiresDependencyResolution = ResolutionScope.COMPILE_PLUS_RUNTIME, defaultPhase = LifecyclePhase.PROCESS_CLASSES) @@ -82,13 +83,7 @@ public void execute() throws MojoExecutionException, MojoFailureException { return; } - Path output = Paths.get(project.getBuild().getOutputDirectory()); - Index index; - try (InputStream is = Files.newInputStream(output.resolve("META-INF/jandex.idx"))) { - index = new IndexReader(is).read(); - } catch (IOException e) { - throw new MojoExecutionException("IOException: " + e.getMessage(), e); - } + Index index = readJandexIndex(project); Map converters = new TreeMap<>(); List bulkConverters = new ArrayList<>(); diff --git a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/generics/PackagePluginUtils.java b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/generics/PackagePluginUtils.java new file mode 100644 index 0000000000000..4dcb28a10fe93 --- /dev/null +++ b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/generics/PackagePluginUtils.java @@ -0,0 +1,47 @@ +/* + * 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.maven.packaging.generics; + +import java.io.IOException; +import java.io.InputStream; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; + +import org.apache.maven.plugin.MojoExecutionException; +import org.apache.maven.project.MavenProject; +import org.jboss.jandex.Index; +import org.jboss.jandex.IndexReader; + +public class PackagePluginUtils { + private PackagePluginUtils() { + + } + + public static Index readJandexIndex(MavenProject project) throws MojoExecutionException { + Path output = Paths.get(project.getBuild().getOutputDirectory()); + Index index; + try (InputStream is = Files.newInputStream(output.resolve("META-INF/jandex.idx"))) { + index = new IndexReader(is).read(); + } catch (IOException e) { + throw new MojoExecutionException("IOException: " + e.getMessage(), e); + } + return index; + } + +}