You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by gn...@apache.org on 2009/06/18 11:07:58 UTC
svn commit: r785968 - in /camel/branches/camel-1.x/components/camel-osgi/src:
main/java/org/apache/camel/osgi/Activator.java
main/java/org/apache/camel/osgi/OsgiAnnotationTypeConverterLoader.java
test/java/org/apache/camel/osgi/ActivatorTest.java
Author: gnodet
Date: Thu Jun 18 09:07:57 2009
New Revision: 785968
URL: http://svn.apache.org/viewvc?rev=785968&view=rev
Log:
CAMEL-1729: converters are not correctly loaded in OSGi
Modified:
camel/branches/camel-1.x/components/camel-osgi/src/main/java/org/apache/camel/osgi/Activator.java
camel/branches/camel-1.x/components/camel-osgi/src/main/java/org/apache/camel/osgi/OsgiAnnotationTypeConverterLoader.java
camel/branches/camel-1.x/components/camel-osgi/src/test/java/org/apache/camel/osgi/ActivatorTest.java
Modified: camel/branches/camel-1.x/components/camel-osgi/src/main/java/org/apache/camel/osgi/Activator.java
URL: http://svn.apache.org/viewvc/camel/branches/camel-1.x/components/camel-osgi/src/main/java/org/apache/camel/osgi/Activator.java?rev=785968&r1=785967&r2=785968&view=diff
==============================================================================
--- camel/branches/camel-1.x/components/camel-osgi/src/main/java/org/apache/camel/osgi/Activator.java (original)
+++ camel/branches/camel-1.x/components/camel-osgi/src/main/java/org/apache/camel/osgi/Activator.java Thu Jun 18 09:07:57 2009
@@ -28,6 +28,7 @@
import java.util.Properties;
import java.util.Set;
import java.util.StringTokenizer;
+import java.util.Collection;
import org.apache.camel.util.ObjectHelper;
import org.apache.commons.logging.Log;
@@ -59,7 +60,7 @@
Class type;
}
- private class TypeConverterEntry {
+ public class TypeConverterEntry {
Bundle bundle;
URL resource;
Set<String> converterPackages;
@@ -246,21 +247,12 @@
protected static Bundle getBundle() {
return bundle;
}
-
- protected static synchronized String[] findTypeConverterPackageNames() {
- LOG.trace("Finding TypeConverterPackageNames");
- Set<String> packages = new HashSet<String>();
- for (TypeConverterEntry entry : TYPE_CONVERTERS.values()) {
- for (String packageName : entry.converterPackages) {
- if (LOG.isTraceEnabled()) {
- LOG.trace("Found TypeConverterPackage: " + packageName);
- }
- packages.add(packageName);
- }
- }
- return packages.toArray(new String[packages.size()]);
+
+ protected static synchronized TypeConverterEntry[] getTypeConverterEntries() {
+ Collection<TypeConverterEntry> entries = TYPE_CONVERTERS.values();
+ return entries.toArray(new TypeConverterEntry[entries.size()]);
}
-
+
public static synchronized Class getComponent(String name) throws Exception {
LOG.trace("Finding Component: " + name);
return getClassFromEntries(name, COMPONENTS);
Modified: camel/branches/camel-1.x/components/camel-osgi/src/main/java/org/apache/camel/osgi/OsgiAnnotationTypeConverterLoader.java
URL: http://svn.apache.org/viewvc/camel/branches/camel-1.x/components/camel-osgi/src/main/java/org/apache/camel/osgi/OsgiAnnotationTypeConverterLoader.java?rev=785968&r1=785967&r2=785968&view=diff
==============================================================================
--- camel/branches/camel-1.x/components/camel-osgi/src/main/java/org/apache/camel/osgi/OsgiAnnotationTypeConverterLoader.java (original)
+++ camel/branches/camel-1.x/components/camel-osgi/src/main/java/org/apache/camel/osgi/OsgiAnnotationTypeConverterLoader.java Thu Jun 18 09:07:57 2009
@@ -16,19 +16,37 @@
*/
package org.apache.camel.osgi;
+import java.util.Set;
+
import org.apache.camel.impl.converter.AnnotationTypeConverterLoader;
+import org.apache.camel.impl.converter.TypeConverterRegistry;
+import org.apache.camel.util.ObjectHelper;
+import org.apache.camel.Converter;
+import org.apache.commons.logging.LogFactory;
+import org.apache.commons.logging.Log;
import org.osgi.framework.BundleContext;
public class OsgiAnnotationTypeConverterLoader extends AnnotationTypeConverterLoader {
+ private static final transient Log LOG = LogFactory.getLog(OsgiAnnotationTypeConverterLoader.class);
+
public OsgiAnnotationTypeConverterLoader(BundleContext context) {
super(new OsgiResolverUtil(context));
}
- protected String[] findPackageNames() {
- return Activator.findTypeConverterPackageNames();
+ @Override
+ public void load(TypeConverterRegistry registry) throws Exception {
+ for (Activator.TypeConverterEntry entry : Activator.getTypeConverterEntries()) {
+ OsgiResolverUtil resolver = new OsgiResolverUtil(entry.bundle.getBundleContext());
+ String[] packages = entry.converterPackages.toArray(new String[entry.converterPackages.size()]);
+ resolver.findAnnotated(Converter.class, packages);
+ Set<Class> classes = resolver.getClasses();
+ for (Class type : classes) {
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("Loading converter class: " + ObjectHelper.name(type));
+ }
+ loadConverterMethods(registry, type);
+ }
+ }
}
-
-
-
}
Modified: camel/branches/camel-1.x/components/camel-osgi/src/test/java/org/apache/camel/osgi/ActivatorTest.java
URL: http://svn.apache.org/viewvc/camel/branches/camel-1.x/components/camel-osgi/src/test/java/org/apache/camel/osgi/ActivatorTest.java?rev=785968&r1=785967&r2=785968&view=diff
==============================================================================
--- camel/branches/camel-1.x/components/camel-osgi/src/test/java/org/apache/camel/osgi/ActivatorTest.java (original)
+++ camel/branches/camel-1.x/components/camel-osgi/src/test/java/org/apache/camel/osgi/ActivatorTest.java Thu Jun 18 09:07:57 2009
@@ -16,6 +16,8 @@
*/
package org.apache.camel.osgi;
+import java.util.Set;
+
import junit.framework.TestCase;
import org.springframework.osgi.mock.MockBundle;
import org.springframework.osgi.mock.MockBundleContext;
@@ -38,20 +40,23 @@
assertNotNull("The bean_test component should not be null", clazz);
}
- private boolean containsPackageName(String packageName, String[] packages) {
- for (String name : packages) {
- if (name.equals(packageName)) {
- return true;
+ private boolean containsPackageName(String packageName, Activator.TypeConverterEntry[] entries) {
+ for (Activator.TypeConverterEntry entry : entries) {
+ for (String name : entry.converterPackages) {
+ if (name.equals(packageName)) {
+ return true;
+ }
}
}
return false;
}
- public void testFindTypeConverterPackageNames() throws Exception {
- String[] packages = Activator.findTypeConverterPackageNames();
- assertEquals("We should find three converter package here", 3, packages.length);
-
- assertTrue("Here should contains org.apache.camel.osgi.test", containsPackageName("org.apache.camel.osgi.test", packages));
+ public void testGetTypeConverterEntries() throws Exception {
+ Activator.TypeConverterEntry[] entries = Activator.getTypeConverterEntries();
+
+ assertTrue("Here should contains org.apache.camel.converter", containsPackageName("org.apache.camel.converter", entries));
+ assertTrue("Here should contains org.apache.camel.spring.converter", containsPackageName("org.apache.camel.spring.converter", entries));
+ assertTrue("Here should contains org.apache.camel.osgi.test", containsPackageName("org.apache.camel.osgi.test", entries));
}
}