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 2020/09/04 19:56:57 UTC

[camel] branch master updated: CAMEL-15478: Add Roaster workaround for vargs in toSignature.

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 <cl...@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();
     }
 
 }