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 2015/03/26 15:26:51 UTC
[2/2] camel git commit: [CAMEL-8556] AnnotationTypeConverterLoader
treats package as class
[CAMEL-8556] AnnotationTypeConverterLoader treats package as class
Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/b60903a7
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/b60903a7
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/b60903a7
Branch: refs/heads/master
Commit: b60903a7bd4fdf390ac93dce02abaf689a6275b2
Parents: 7eb6eb7
Author: Thomas Diesler <th...@jboss.com>
Authored: Thu Mar 26 14:41:47 2015 +0100
Committer: Claus Ibsen <da...@apache.org>
Committed: Thu Mar 26 15:28:59 2015 +0100
----------------------------------------------------------------------
.../AnnotationTypeConverterLoader.java | 4 ++--
.../org/apache/camel/impl/osgi/Activator.java | 4 ++--
.../org/apache/camel/util/StringHelper.java | 25 ++++++++++++++++----
.../org/apache/camel/util/StringHelperTest.java | 19 ++++++++++++++-
4 files changed, 43 insertions(+), 9 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/camel/blob/b60903a7/camel-core/src/main/java/org/apache/camel/impl/converter/AnnotationTypeConverterLoader.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/impl/converter/AnnotationTypeConverterLoader.java b/camel-core/src/main/java/org/apache/camel/impl/converter/AnnotationTypeConverterLoader.java
index f493b7e..c724870 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/converter/AnnotationTypeConverterLoader.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/converter/AnnotationTypeConverterLoader.java
@@ -62,7 +62,7 @@ import org.slf4j.LoggerFactory;
* Likewise the procedure for scanning using {@link PackageScanClassResolver} may require custom implementations
* to work in various containers such as JBoss, OSGi, etc.
*
- * @version
+ * @version
*/
public class AnnotationTypeConverterLoader implements TypeConverterLoader {
public static final String META_INF_SERVICES = "META-INF/services/org/apache/camel/TypeConverter";
@@ -163,7 +163,7 @@ public class AnnotationTypeConverterLoader implements TypeConverterLoader {
// try to load it as a class first
for (String name : packageNames) {
// must be a FQN class name by having an upper case letter
- if (StringHelper.hasUpperCase(name)) {
+ if (StringHelper.isClassName(name)) {
Class<?> clazz = null;
for (ClassLoader loader : resolver.getClassLoaders()) {
try {
http://git-wip-us.apache.org/repos/asf/camel/blob/b60903a7/camel-core/src/main/java/org/apache/camel/impl/osgi/Activator.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/impl/osgi/Activator.java b/camel-core/src/main/java/org/apache/camel/impl/osgi/Activator.java
index eebdc92..d73f6c6 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/osgi/Activator.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/osgi/Activator.java
@@ -324,7 +324,7 @@ public class Activator implements BundleActivator, BundleTrackerCustomizer {
for (String pkg : packages) {
- if (StringHelper.hasUpperCase(pkg)) {
+ if (StringHelper.isClassName(pkg)) {
// its a FQN class name so load it directly
LOG.trace("Loading {} class", pkg);
try {
@@ -411,7 +411,7 @@ public class Activator implements BundleActivator, BundleTrackerCustomizer {
}
return answer;
} finally {
- Thread.currentThread().setContextClassLoader(oldClassLoader);
+ Thread.currentThread().setContextClassLoader(oldClassLoader);
}
}
http://git-wip-us.apache.org/repos/asf/camel/blob/b60903a7/camel-core/src/main/java/org/apache/camel/util/StringHelper.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/util/StringHelper.java b/camel-core/src/main/java/org/apache/camel/util/StringHelper.java
index 60919db..c8f1000 100644
--- a/camel-core/src/main/java/org/apache/camel/util/StringHelper.java
+++ b/camel-core/src/main/java/org/apache/camel/util/StringHelper.java
@@ -19,7 +19,7 @@ package org.apache.camel.util;
import static org.apache.camel.util.StringQuoteHelper.doubleQuote;
/**
- * Helper methods for working with Strings.
+ * Helper methods for working with Strings.
*/
public final class StringHelper {
@@ -28,10 +28,10 @@ public final class StringHelper {
*/
private StringHelper() {
}
-
+
/**
* Ensures that <code>s</code> is friendly for a URL or file system.
- *
+ *
* @param s String to be sanitized.
* @return sanitized version of <code>s</code>.
* @throws NullPointerException if <code>s</code> is <code>null</code>.
@@ -94,7 +94,7 @@ public final class StringHelper {
// no quotes, so return as-is
return s;
}
-
+
public static boolean isQuoted(String s) {
if (ObjectHelper.isEmpty(s)) {
return false;
@@ -149,6 +149,23 @@ public final class StringHelper {
}
/**
+ * Determines if the string is a fully qualified class name
+ */
+ public static boolean isClassName(String text) {
+ boolean result = false;
+ if (text != null) {
+ String[] split = text.split("\\.");
+ if (split.length > 0) {
+ String lastToken = split[split.length - 1];
+ if (lastToken.length() > 0) {
+ result = Character.isUpperCase(lastToken.charAt(0));
+ }
+ }
+ }
+ return result;
+ }
+
+ /**
* Does the expression have the language start token?
*
* @param expression the expression
http://git-wip-us.apache.org/repos/asf/camel/blob/b60903a7/camel-core/src/test/java/org/apache/camel/util/StringHelperTest.java
----------------------------------------------------------------------
diff --git a/camel-core/src/test/java/org/apache/camel/util/StringHelperTest.java b/camel-core/src/test/java/org/apache/camel/util/StringHelperTest.java
index e9c5ed2..23cb1ac 100644
--- a/camel-core/src/test/java/org/apache/camel/util/StringHelperTest.java
+++ b/camel-core/src/test/java/org/apache/camel/util/StringHelperTest.java
@@ -77,6 +77,23 @@ public class StringHelperTest extends TestCase {
assertEquals(true, StringHelper.hasUpperCase("com.foo.MyClass"));
assertEquals(true, StringHelper.hasUpperCase("com.foo.My"));
+
+ // Note, this is not a FQN
+ assertEquals(true, StringHelper.hasUpperCase("com.foo.subA"));
+ }
+
+ public void testIsClassName() throws Exception {
+ assertEquals(false, StringHelper.isClassName(null));
+ assertEquals(false, StringHelper.isClassName(""));
+ assertEquals(false, StringHelper.isClassName(" "));
+ assertEquals(false, StringHelper.isClassName("com.foo"));
+ assertEquals(false, StringHelper.isClassName("com.foo.123"));
+
+ assertEquals(true, StringHelper.isClassName("com.foo.MyClass"));
+ assertEquals(true, StringHelper.isClassName("com.foo.My"));
+
+ // Note, this is not a FQN
+ assertEquals(false, StringHelper.isClassName("com.foo.subA"));
}
public void testHasStartToken() throws Exception {
@@ -96,7 +113,7 @@ public class StringHelperTest extends TestCase {
// $foo{ is valid because its foo language
assertEquals(true, StringHelper.hasStartToken("$foo{body}", "foo"));
}
-
+
public void testIsQuoted() throws Exception {
assertEquals(false, StringHelper.isQuoted(null));
assertEquals(false, StringHelper.isQuoted(""));