Author: iocanel
Date: Mon Oct 29 12:51:07 2012
New Revision: 1403273

URL: http://svn.apache.org/viewvc?rev=1403273&view=rev
Log:
[CAMEL-5756] OSGi resolvers for component, dataformat and language, now check 
if service is assignable

Modified:
    
camel/branches/camel-2.10.x/components/camel-core-osgi/src/main/java/org/apache/camel/core/osgi/OsgiComponentResolver.java
    
camel/branches/camel-2.10.x/components/camel-core-osgi/src/main/java/org/apache/camel/core/osgi/OsgiDataFormatResolver.java
    
camel/branches/camel-2.10.x/components/camel-core-osgi/src/main/java/org/apache/camel/core/osgi/OsgiLanguageResolver.java

Modified: 
camel/branches/camel-2.10.x/components/camel-core-osgi/src/main/java/org/apache/camel/core/osgi/OsgiComponentResolver.java
URL: 
http://svn.apache.org/viewvc/camel/branches/camel-2.10.x/components/camel-core-osgi/src/main/java/org/apache/camel/core/osgi/OsgiComponentResolver.java?rev=1403273&r1=1403272&r2=1403273&view=diff
==============================================================================
--- 
camel/branches/camel-2.10.x/components/camel-core-osgi/src/main/java/org/apache/camel/core/osgi/OsgiComponentResolver.java
 (original)
+++ 
camel/branches/camel-2.10.x/components/camel-core-osgi/src/main/java/org/apache/camel/core/osgi/OsgiComponentResolver.java
 Mon Oct 29 12:51:07 2012
@@ -68,9 +68,14 @@ public class OsgiComponentResolver imple
         LOG.trace("Finding Component: {}", name);
         try {
             ServiceReference[] refs = 
bundleContext.getServiceReferences(ComponentResolver.class.getName(), 
"(component=" + name + ")");
-            if (refs != null && refs.length > 0) {
-                ComponentResolver resolver = (ComponentResolver) 
bundleContext.getService(refs[0]);
-                return resolver.resolveComponent(name, context);
+            if (refs != null) {
+                for (ServiceReference ref : refs) {
+                    Object service = bundleContext.getService(ref);
+                    if 
(ComponentResolver.class.isAssignableFrom(service.getClass())) {
+                        ComponentResolver resolver = (ComponentResolver) 
service;
+                        return resolver.resolveComponent(name, context);
+                    }
+                }
             }
             return null;
         } catch (InvalidSyntaxException e) {

Modified: 
camel/branches/camel-2.10.x/components/camel-core-osgi/src/main/java/org/apache/camel/core/osgi/OsgiDataFormatResolver.java
URL: 
http://svn.apache.org/viewvc/camel/branches/camel-2.10.x/components/camel-core-osgi/src/main/java/org/apache/camel/core/osgi/OsgiDataFormatResolver.java?rev=1403273&r1=1403272&r2=1403273&view=diff
==============================================================================
--- 
camel/branches/camel-2.10.x/components/camel-core-osgi/src/main/java/org/apache/camel/core/osgi/OsgiDataFormatResolver.java
 (original)
+++ 
camel/branches/camel-2.10.x/components/camel-core-osgi/src/main/java/org/apache/camel/core/osgi/OsgiDataFormatResolver.java
 Mon Oct 29 12:51:07 2012
@@ -58,9 +58,14 @@ public class OsgiDataFormatResolver impl
         LOG.trace("Finding DataFormat: {}", name);
         try {
             ServiceReference[] refs = 
bundleContext.getServiceReferences(DataFormatResolver.class.getName(), 
"(dataformat=" + name + ")");
-            if (refs != null && refs.length > 0) {
-                DataFormatResolver resolver = (DataFormatResolver) 
bundleContext.getService(refs[0]);
-                return resolver.resolveDataFormat(name, context);
+            if (refs != null) {
+                for (ServiceReference ref : refs) {
+                    Object service = bundleContext.getService(ref);
+                    if 
(DataFormatResolver.class.isAssignableFrom(service.getClass())) {
+                        DataFormatResolver resolver = (DataFormatResolver) 
service;
+                        return resolver.resolveDataFormat(name, context);
+                    }
+                }
             }
             return null;
         } catch (InvalidSyntaxException e) {

Modified: 
camel/branches/camel-2.10.x/components/camel-core-osgi/src/main/java/org/apache/camel/core/osgi/OsgiLanguageResolver.java
URL: 
http://svn.apache.org/viewvc/camel/branches/camel-2.10.x/components/camel-core-osgi/src/main/java/org/apache/camel/core/osgi/OsgiLanguageResolver.java?rev=1403273&r1=1403272&r2=1403273&view=diff
==============================================================================
--- 
camel/branches/camel-2.10.x/components/camel-core-osgi/src/main/java/org/apache/camel/core/osgi/OsgiLanguageResolver.java
 (original)
+++ 
camel/branches/camel-2.10.x/components/camel-core-osgi/src/main/java/org/apache/camel/core/osgi/OsgiLanguageResolver.java
 Mon Oct 29 12:51:07 2012
@@ -67,10 +67,16 @@ public class OsgiLanguageResolver implem
         LOG.trace("Finding Language: {}", name);
         try {
             ServiceReference[] refs = 
bundleContext.getServiceReferences(LanguageResolver.class.getName(), 
"(language=" + name + ")");
-            if (refs != null && refs.length > 0) {
-                LanguageResolver resolver = (LanguageResolver) 
bundleContext.getService(refs[0]);
-                return resolver.resolveLanguage(name, context);
+            if (refs != null) {
+                for (ServiceReference ref : refs) {
+                    Object service = bundleContext.getService(ref);
+                    if 
(LanguageResolver.class.isAssignableFrom(service.getClass())) {
+                        LanguageResolver resolver = (LanguageResolver) service;
+                        return resolver.resolveLanguage(name, context);
+                    }
+                }
             }
+
             return null;
         } catch (InvalidSyntaxException e) {
             throw ObjectHelper.wrapRuntimeCamelException(e);
@@ -81,9 +87,14 @@ public class OsgiLanguageResolver implem
         LOG.trace("Finding LanguageResolver: {}", name);
         try {
             ServiceReference[] refs = 
bundleContext.getServiceReferences(LanguageResolver.class.getName(), 
"(resolver=" + name + ")");
-            if (refs != null && refs.length > 0) {
-                LanguageResolver resolver = (LanguageResolver) 
bundleContext.getService(refs[0]);
-                return resolver;
+            if (refs != null) {
+                for (ServiceReference ref : refs) {
+                    Object service = bundleContext.getService(ref);
+                    if 
(service.getClass().isAssignableFrom(LanguageResolver.class)) {
+                        LanguageResolver resolver = (LanguageResolver) service;
+                        return resolver;
+                    }
+                }
             }
             return null;
         } catch (InvalidSyntaxException e) {


Reply via email to