You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by dh...@apache.org on 2016/06/21 22:56:45 UTC
camel git commit: CAMEL-10082: Fixed inner class name handling in
camel-api-component-maven-plugin
Repository: camel
Updated Branches:
refs/heads/master 532f5a048 -> 201583bce
CAMEL-10082: Fixed inner class name handling in camel-api-component-maven-plugin
Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/201583bc
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/201583bc
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/201583bc
Branch: refs/heads/master
Commit: 201583bce4bab6dda27b5e107b63af8d23a544f3
Parents: 532f5a0
Author: Dhiraj Bokde <dh...@yahoo.com>
Authored: Tue Jun 21 15:54:21 2016 -0700
Committer: Dhiraj Bokde <dh...@yahoo.com>
Committed: Tue Jun 21 15:54:21 2016 -0700
----------------------------------------------------------------------
.../camel/util/component/ApiMethodParser.java | 30 +++++++++++++++++---
.../util/component/ApiMethodHelperTest.java | 10 +++++--
.../ArgumentSubstitutionParserTest.java | 12 +++++---
.../apache/camel/util/component/TestProxy.java | 16 +++++++++++
.../camel-api-component-maven-plugin/pom.xml | 9 ++----
.../apache/camel/component/test/TestProxy.java | 16 +++++++++++
.../test/resources/test-proxy-signatures.txt | 1 +
7 files changed, 77 insertions(+), 17 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/camel/blob/201583bc/camel-core/src/main/java/org/apache/camel/util/component/ApiMethodParser.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/util/component/ApiMethodParser.java b/camel-core/src/main/java/org/apache/camel/util/component/ApiMethodParser.java
index 5040bd0..a7a1a70 100644
--- a/camel-core/src/main/java/org/apache/camel/util/component/ApiMethodParser.java
+++ b/camel-core/src/main/java/org/apache/camel/util/component/ApiMethodParser.java
@@ -237,7 +237,7 @@ public abstract class ApiMethodParser<T> {
}
public static Class<?> forName(String className, ClassLoader classLoader) throws ClassNotFoundException {
- Class<?> result;
+ Class<?> result = null;
try {
// lookup primitive types first
result = PRIMITIVE_TYPES.get(className);
@@ -249,10 +249,32 @@ public abstract class ApiMethodParser<T> {
if (className.endsWith("[]")) {
final int firstDim = className.indexOf('[');
final int nDimensions = (className.length() - firstDim) / 2;
- return Array.newInstance(forName(className.substring(0, firstDim), classLoader), new int[nDimensions]).getClass();
+ result = Array.newInstance(forName(className.substring(0, firstDim), classLoader), new int[nDimensions]).getClass();
+ } else if (className.indexOf('.') != -1) {
+ // try replacing last '.' with $ to look for inner classes
+ String innerClass = className;
+ while (result == null && innerClass.indexOf('.') != -1) {
+ int endIndex = innerClass.lastIndexOf('.');
+ innerClass = innerClass.substring(0, endIndex) + "$" + innerClass.substring(endIndex + 1);
+ try {
+ result = Class.forName(innerClass, true, classLoader);
+ } catch (ClassNotFoundException ignore) {
+ // ignore
+ }
+ }
+ }
+ if (result == null && !className.startsWith(JAVA_LANG)) {
+ // try loading from default Java package java.lang
+ try {
+ result = forName(JAVA_LANG + className, classLoader);
+ } catch (ClassNotFoundException ignore) {
+ // ignore
+ }
}
- // try loading from default Java package java.lang
- result = Class.forName(JAVA_LANG + className, true, classLoader);
+ }
+
+ if (result == null) {
+ throw new ClassNotFoundException(className);
}
return result;
http://git-wip-us.apache.org/repos/asf/camel/blob/201583bc/camel-core/src/test/java/org/apache/camel/util/component/ApiMethodHelperTest.java
----------------------------------------------------------------------
diff --git a/camel-core/src/test/java/org/apache/camel/util/component/ApiMethodHelperTest.java b/camel-core/src/test/java/org/apache/camel/util/component/ApiMethodHelperTest.java
index 2287993..574c9d4 100644
--- a/camel-core/src/test/java/org/apache/camel/util/component/ApiMethodHelperTest.java
+++ b/camel-core/src/test/java/org/apache/camel/util/component/ApiMethodHelperTest.java
@@ -60,6 +60,9 @@ public class ApiMethodHelperTest {
methods = apiMethodHelper.getCandidateMethods("greetAll", "nameMap");
assertEquals("Can't find greetAll(nameMap)", 1, methods.size());
+
+ methods = apiMethodHelper.getCandidateMethods("greetInnerChild", "child");
+ assertEquals("Can't find greetInnerChild(child)", 1, methods.size());
}
@Test
@@ -95,6 +98,7 @@ public class ApiMethodHelperTest {
assertEquals("GetArguments failed for greetMe", 2, apiMethodHelper.getArguments("greetMe").size());
assertEquals("GetArguments failed for greetUs", 4, apiMethodHelper.getArguments("greetUs").size());
assertEquals("GetArguments failed for greetAll", 6, apiMethodHelper.getArguments("greetAll").size());
+ assertEquals("GetArguments failed for greetInnerChild", 2, apiMethodHelper.getArguments("greetInnerChild").size());
}
@Test
@@ -115,7 +119,7 @@ public class ApiMethodHelperTest {
@Test
public void testAllArguments() throws Exception {
- assertEquals("Get all arguments", 7, apiMethodHelper.allArguments().size());
+ assertEquals("Get all arguments", 8, apiMethodHelper.allArguments().size());
}
@Test
@@ -124,6 +128,7 @@ public class ApiMethodHelperTest {
assertEquals("Get type name1", String.class, apiMethodHelper.getType("name1"));
assertEquals("Get type name2", String.class, apiMethodHelper.getType("name2"));
assertEquals("Get type nameMap", Map.class, apiMethodHelper.getType("nameMap"));
+ assertEquals("Get type child", TestProxy.InnerChild.class, apiMethodHelper.getType("child"));
}
@Test
@@ -184,7 +189,8 @@ public class ApiMethodHelperTest {
GREETALL(String.class, "greetAll", new String[0].getClass(), "names"),
GREETALL_1(String.class, "greetAll", List.class, "nameList"),
GREETALL_2(Map.class, "greetAll", Map.class, "nameMap"),
- GREETTIMES(new String[0].getClass(), "greetTimes", String.class, "name", int.class, "times");
+ GREETTIMES(new String[0].getClass(), "greetTimes", String.class, "name", int.class, "times"),
+ GREETINNERCHILD(new String[0].getClass(), "greetInnerChild", TestProxy.InnerChild.class, "child");
private final ApiMethod apiMethod;
http://git-wip-us.apache.org/repos/asf/camel/blob/201583bc/camel-core/src/test/java/org/apache/camel/util/component/ArgumentSubstitutionParserTest.java
----------------------------------------------------------------------
diff --git a/camel-core/src/test/java/org/apache/camel/util/component/ArgumentSubstitutionParserTest.java b/camel-core/src/test/java/org/apache/camel/util/component/ArgumentSubstitutionParserTest.java
index 56f7886..9947283 100644
--- a/camel-core/src/test/java/org/apache/camel/util/component/ArgumentSubstitutionParserTest.java
+++ b/camel-core/src/test/java/org/apache/camel/util/component/ArgumentSubstitutionParserTest.java
@@ -48,19 +48,20 @@ public class ArgumentSubstitutionParserTest {
signatures.add("public final String greetAll(java.util.List<String> names);");
signatures.add("public final java.util.Map<String, String> greetAll(java.util.Map<String> nameMap);");
signatures.add("public final String[] greetTimes(String name, int times);");
+ signatures.add("public final String greetInnerChild(org.apache.camel.util.component.TestProxy.InnerChild child);");
parser.setSignatures(signatures);
final List<ApiMethodParser.ApiMethodModel> methodModels = parser.parse();
- assertEquals(8, methodModels.size());
+ assertEquals(9, methodModels.size());
- final ApiMethodParser.ApiMethodModel sayHi1 = methodModels.get(7);
+ final ApiMethodParser.ApiMethodModel sayHi1 = methodModels.get(8);
assertEquals(PERSON, sayHi1.getArguments().get(0).getName());
assertEquals("SAYHI_1", sayHi1.getUniqueName());
- final ApiMethodParser.ApiMethodModel greetMe = methodModels.get(3);
+ final ApiMethodParser.ApiMethodModel greetMe = methodModels.get(4);
assertEquals(PERSON, greetMe.getArguments().get(0).getName());
- final ApiMethodParser.ApiMethodModel greetUs = methodModels.get(5);
+ final ApiMethodParser.ApiMethodModel greetUs = methodModels.get(6);
assertEquals("astronaut1", greetUs.getArguments().get(0).getName());
assertEquals("astronaut2", greetUs.getArguments().get(1).getName());
@@ -72,6 +73,9 @@ public class ArgumentSubstitutionParserTest {
final ApiMethodParser.ApiMethodModel greetAll2 = methodModels.get(2);
assertEquals("stringArray", greetAll2.getArguments().get(0).getName());
+
+ final ApiMethodParser.ApiMethodModel greetInnerChild = methodModels.get(3);
+ assertEquals("child", greetInnerChild.getArguments().get(0).getName());
}
}
http://git-wip-us.apache.org/repos/asf/camel/blob/201583bc/camel-core/src/test/java/org/apache/camel/util/component/TestProxy.java
----------------------------------------------------------------------
diff --git a/camel-core/src/test/java/org/apache/camel/util/component/TestProxy.java b/camel-core/src/test/java/org/apache/camel/util/component/TestProxy.java
index 2b4a320..1a61ac9 100644
--- a/camel-core/src/test/java/org/apache/camel/util/component/TestProxy.java
+++ b/camel-core/src/test/java/org/apache/camel/util/component/TestProxy.java
@@ -73,4 +73,20 @@ class TestProxy {
}
return result;
}
+
+ public final String greetInnerChild(InnerChild child) {
+ return sayHi(child.getName());
+ }
+
+ public static class InnerChild {
+ private String name;
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+ }
}
http://git-wip-us.apache.org/repos/asf/camel/blob/201583bc/tooling/maven/camel-api-component-maven-plugin/pom.xml
----------------------------------------------------------------------
diff --git a/tooling/maven/camel-api-component-maven-plugin/pom.xml b/tooling/maven/camel-api-component-maven-plugin/pom.xml
index ac0a5ae..152e457 100644
--- a/tooling/maven/camel-api-component-maven-plugin/pom.xml
+++ b/tooling/maven/camel-api-component-maven-plugin/pom.xml
@@ -123,15 +123,10 @@
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
</dependency>
+ <!-- add maven slf4j simple logger -->
<dependency>
<groupId>org.slf4j</groupId>
- <artifactId>slf4j-log4j12</artifactId>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>log4j</groupId>
- <artifactId>log4j</artifactId>
- <scope>test</scope>
+ <artifactId>slf4j-simple</artifactId>
</dependency>
<dependency>
http://git-wip-us.apache.org/repos/asf/camel/blob/201583bc/tooling/maven/camel-api-component-maven-plugin/src/test/java/org/apache/camel/component/test/TestProxy.java
----------------------------------------------------------------------
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 48eb11b..e6c4c1c 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
@@ -65,4 +65,20 @@ public class TestProxy {
}
return result.toArray(new String[result.size()]);
}
+
+ public final String greetInnerChild(InnerChild child) {
+ return sayHi(child.getName());
+ }
+
+ public static class InnerChild {
+ private String name;
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+ }
}
http://git-wip-us.apache.org/repos/asf/camel/blob/201583bc/tooling/maven/camel-api-component-maven-plugin/src/test/resources/test-proxy-signatures.txt
----------------------------------------------------------------------
diff --git a/tooling/maven/camel-api-component-maven-plugin/src/test/resources/test-proxy-signatures.txt b/tooling/maven/camel-api-component-maven-plugin/src/test/resources/test-proxy-signatures.txt
index 4c47474..d9214f0 100644
--- a/tooling/maven/camel-api-component-maven-plugin/src/test/resources/test-proxy-signatures.txt
+++ b/tooling/maven/camel-api-component-maven-plugin/src/test/resources/test-proxy-signatures.txt
@@ -6,3 +6,4 @@ public final String greetUs(final String name1, String name2);
public final String greetAll(String[] names);
public final String greetAll(java.util.List<String> names);
public final String[] greetTimes(String name, int times);
+public final String greetInnerChild(org.apache.camel.component.test.TestProxy.InnerChild child);