This is an automated email from the ASF dual-hosted git repository. davsclaus pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/camel.git
The following commit(s) were added to refs/heads/master by this push: new 03f7c1c CAMEL-15478: Add Roaster workaround for vargs in toSignature. 03f7c1c is described below commit 03f7c1ca5ac8684386c92bdbd6facc4faaf7368a Author: Claus Ibsen <claus.ib...@gmail.com> AuthorDate: Fri Sep 4 21:56:08 2020 +0200 CAMEL-15478: Add Roaster workaround for vargs in toSignature. --- .../org/apache/camel/maven/JavaSourceParser.java | 32 ++++++++++++++++++++-- .../org/apache/camel/component/test/TestProxy.java | 9 ++++++ .../apache/camel/maven/JavaSourceParserTest.java | 15 +++++++++- 3 files changed, 53 insertions(+), 3 deletions(-) diff --git a/tooling/maven/camel-api-component-maven-plugin/src/main/java/org/apache/camel/maven/JavaSourceParser.java b/tooling/maven/camel-api-component-maven-plugin/src/main/java/org/apache/camel/maven/JavaSourceParser.java index 5c46a7f..0d42a0b 100644 --- a/tooling/maven/camel-api-component-maven-plugin/src/main/java/org/apache/camel/maven/JavaSourceParser.java +++ b/tooling/maven/camel-api-component-maven-plugin/src/main/java/org/apache/camel/maven/JavaSourceParser.java @@ -25,6 +25,7 @@ import java.util.Map; import org.jboss.forge.roaster.Roaster; import org.jboss.forge.roaster.model.JavaDocTag; +import org.jboss.forge.roaster.model.Visibility; import org.jboss.forge.roaster.model.source.JavaClassSource; import org.jboss.forge.roaster.model.source.MethodSource; import org.jboss.forge.roaster.model.source.ParameterSource; @@ -49,7 +50,7 @@ public class JavaSourceParser { if (!ms.isPublic() || ms.isConstructor()) { continue; } - String signature = ms.toSignature(); + String signature = toSignatureRoasterFix(ms); // roaster signatures has return values at end // public create(String, AddressRequest) : Result @@ -79,7 +80,11 @@ public class JavaSourceParser { if (type.startsWith("java.lang.")) { type = type.substring(10); } - sb.append(type).append(" ").append(name); + sb.append(type); + if (ps.isVarArgs()) { + sb.append("..."); + } + sb.append(" ").append(name); if (i < list.size() - 1) { sb.append(", "); } @@ -172,4 +177,27 @@ public class JavaSourceParser { public Map<String, Map<String, String>> getParameters() { return parameters; } + + private static String toSignatureRoasterFix(MethodSource ms) { + StringBuilder signature = new StringBuilder(); + signature.append(Visibility.PACKAGE_PRIVATE.equals(ms.getVisibility().scope()) + ? "" + : ms.getVisibility() + .scope()); + signature.append(" "); + signature.append(ms.getName()).append("("); + List<ParameterSource<?>> parameters = ms.getParameters(); + for (ParameterSource<?> p : parameters) { + signature.append(p.getType().getName()); + if (p.isVarArgs()) { + signature.append("..."); + } + if (parameters.indexOf(p) < (parameters.size() - 1)) { + signature.append(", "); + } + } + + signature.append(") : ").append((ms.getReturnType() == null ? "void" : ms.getReturnType().getName())); + return signature.toString(); + } } diff --git a/tooling/maven/camel-api-component-maven-plugin/src/test/java/org/apache/camel/component/test/TestProxy.java b/tooling/maven/camel-api-component-maven-plugin/src/test/java/org/apache/camel/component/test/TestProxy.java index 4772e83..7234a11 100644 --- a/tooling/maven/camel-api-component-maven-plugin/src/test/java/org/apache/camel/component/test/TestProxy.java +++ b/tooling/maven/camel-api-component-maven-plugin/src/test/java/org/apache/camel/component/test/TestProxy.java @@ -84,6 +84,15 @@ public class TestProxy { return builder.toString(); } + public final String greetWildcard(String... names) { + StringBuilder builder = new StringBuilder("Greetings "); + for (String name : names) { + builder.append(name).append(", "); + } + builder.delete(builder.length() - 2, builder.length()); + return builder.toString(); + } + public final <K, V> String greetAll(Map<K, V> peopleMap) { return null; } diff --git a/tooling/maven/camel-api-component-maven-plugin/src/test/java/org/apache/camel/maven/JavaSourceParserTest.java b/tooling/maven/camel-api-component-maven-plugin/src/test/java/org/apache/camel/maven/JavaSourceParserTest.java index 3a384b8..7cef248 100644 --- a/tooling/maven/camel-api-component-maven-plugin/src/test/java/org/apache/camel/maven/JavaSourceParserTest.java +++ b/tooling/maven/camel-api-component-maven-plugin/src/test/java/org/apache/camel/maven/JavaSourceParserTest.java @@ -16,6 +16,8 @@ */ package org.apache.camel.maven; +import java.io.FileInputStream; + import org.junit.jupiter.api.Test; import static org.junit.jupiter.api.Assertions.assertEquals; @@ -75,8 +77,19 @@ public class JavaSourceParserTest { assertEquals("The document id of a previously uploaded document", parser.getParameters().get("addFileEvidence").get("documentId")); - parser.reset(); + } + @Test + public void testWildcard() throws Exception { + final JavaSourceParser parser = new JavaSourceParser(); + + parser.parse(new FileInputStream("src/test/java/org/apache/camel/component/test/TestProxy.java")); + assertEquals(11, parser.getMethods().size()); + + assertEquals( + "public java.lang.String greetWildcard(String... names)", + parser.getMethods().get(7)); + parser.reset(); } }