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 <claus.ib...@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); }