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:50 UTC

[1/2] camel git commit: [CAMEL-8556] AnnotationTypeConverterLoader treats package as class

Repository: camel
Updated Branches:
  refs/heads/camel-2.15.x a121d067e -> f2f46faa8
  refs/heads/master 7eb6eb7fc -> b60903a7b


[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/f2f46faa
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/f2f46faa
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/f2f46faa

Branch: refs/heads/camel-2.15.x
Commit: f2f46faa82e3491ef86888ef29e2890132a6bb49
Parents: a121d06
Author: Thomas Diesler <th...@jboss.com>
Authored: Thu Mar 26 14:41:47 2015 +0100
Committer: Thomas Diesler <th...@jboss.com>
Committed: Thu Mar 26 14:41:47 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/f2f46faa/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/f2f46faa/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/f2f46faa/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 e68b8bf..7e99405 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/f2f46faa/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(""));


[2/2] camel git commit: [CAMEL-8556] AnnotationTypeConverterLoader treats package as class

Posted by da...@apache.org.
[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(""));