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 13:52:21 UTC
[camel] 01/03: CAMEL-15478: camel-api maven plugin fix javasource
parser with generic type classloading warning
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
commit 44c4339c49be076678693fe235120366062b98e1
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Fri Sep 4 15:40:45 2020 +0200
CAMEL-15478: camel-api maven plugin fix javasource parser with generic type classloading warning
---
.../maven/AbstractApiMethodGeneratorMojo.java | 43 ++++++++++++----------
.../org/apache/camel/maven/JavaSourceParser.java | 4 ++
2 files changed, 28 insertions(+), 19 deletions(-)
diff --git a/tooling/maven/camel-api-component-maven-plugin/src/main/java/org/apache/camel/maven/AbstractApiMethodGeneratorMojo.java b/tooling/maven/camel-api-component-maven-plugin/src/main/java/org/apache/camel/maven/AbstractApiMethodGeneratorMojo.java
index 9365b04..adff960 100644
--- a/tooling/maven/camel-api-component-maven-plugin/src/main/java/org/apache/camel/maven/AbstractApiMethodGeneratorMojo.java
+++ b/tooling/maven/camel-api-component-maven-plugin/src/main/java/org/apache/camel/maven/AbstractApiMethodGeneratorMojo.java
@@ -404,26 +404,31 @@ public abstract class AbstractApiMethodGeneratorMojo extends AbstractApiMethodBa
argType = argType.substring(1);
}
- // try loading as is first
- try {
- parameterizedType.append(getCanonicalName(getProjectClassLoader().loadClass(argType)));
- } catch (ClassNotFoundException e) {
-
- // try loading with default java.lang package prefix
+ if ("URL".equals(argType)) {
+ parameterizedType.append("java.net.URL");
+ } else if ("URI".equals(argType)) {
+ parameterizedType.append("java.net.URI");
+ } else {
+ // try loading as is first
try {
- if (log.isDebugEnabled()) {
- log.debug("Could not load " + argType + ", trying to load java.lang." + argType);
- }
- parameterizedType.append(
- getCanonicalName(getProjectClassLoader().loadClass("java.lang." + argType)));
- } catch (ClassNotFoundException e1) {
- parameterizedType.append("?");
- // if the length of the artType is 1, we think that it's variable type parameter (like T in List<T>)
- // not perfect solution, but should work in most of the cases
- if (argType.trim().length() > 1) {
- log.warn("Ignoring type parameters <" + typeArgs + "> for argument " + argument.getName()
- + ", unable to load parametric type argument " + argType,
- e1);
+ parameterizedType.append(getCanonicalName(getProjectClassLoader().loadClass(argType)));
+ } catch (ClassNotFoundException e) {
+ // try loading with default java.lang package prefix
+ try {
+ if (log.isDebugEnabled()) {
+ log.debug("Could not load " + argType + ", trying to load java.lang." + argType);
+ }
+ parameterizedType.append(
+ getCanonicalName(getProjectClassLoader().loadClass("java.lang." + argType)));
+ } catch (ClassNotFoundException e1) {
+ parameterizedType.append("?");
+ // if the length of the artType is 1, we think that it's variable type parameter (like T in List<T>)
+ // not perfect solution, but should work in most of the cases
+ if (argType.trim().length() > 1) {
+ log.warn("Ignoring type parameters <" + typeArgs + "> for argument " + argument.getName()
+ + ", unable to load parametric type argument " + argType,
+ e1);
+ }
}
}
}
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 5694dda..5c46a7f 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
@@ -72,6 +72,10 @@ public class JavaSourceParser {
ParameterSource ps = list.get(i);
String name = ps.getName();
String type = ps.getType().getQualifiedNameWithGenerics();
+ if (Character.isUpperCase(type.charAt(0))) {
+ // okay no package name so its a local inner class
+ type = clazz.getPackage() + "." + type;
+ }
if (type.startsWith("java.lang.")) {
type = type.substring(10);
}