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