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/07 14:46:55 UTC
[camel] 04/07: CAMEL-15478: javasource parser can parse inner
classes
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 ee17e951cd4703fbc457ec10a199ded4032cbbfe
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Mon Sep 7 11:24:29 2020 +0200
CAMEL-15478: javasource parser can parse inner classes
---
.../org/apache/camel/maven/JavaSourceParser.java | 24 ++++++++++++++++++++++
1 file changed, 24 insertions(+)
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 fad784d..d1b39a5 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
@@ -166,6 +166,30 @@ public class JavaSourceParser {
if (inner) {
return clazz.getQualifiedName() + "$" + type;
}
+ int dot = type.indexOf('.');
+ if (Character.isUpperCase(type.charAt(0)) && dot != -1) {
+ // okay its likely a inner class with a nested sub type, so resolving is even more complex
+ String parent = type.substring(0, dot);
+ String child = type.substring(dot + 1);
+ inner = rootClazz.getNestedType(parent) != null;
+ if (inner) {
+ return rootClazz.getQualifiedName() + "$" + type.replace('.', '$');
+ }
+ inner = clazz.getNestedType(type) != null;
+ if (inner) {
+ return clazz.getQualifiedName() + "$" + type.replace('.', '$');
+ }
+ if (parent.equals(rootClazz.getName())) {
+ inner = rootClazz.getNestedType(child) != null;
+ if (inner) {
+ return rootClazz.getQualifiedName() + "$" + child.replace('.', '$');
+ }
+ inner = clazz.getNestedType(child) != null;
+ if (inner) {
+ return clazz.getQualifiedName() + "$" + child.replace('.', '$');
+ }
+ }
+ }
// okay attempt to resolve the type
String resolvedType = clazz.resolveType(type);