Repository: camel
Updated Branches:
  refs/heads/master dc0b730f6 -> 005df4cb7


[CAMEL-9328] KuraRouter should provide required and option service resolvers.


Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/005df4cb
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/005df4cb
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/005df4cb

Branch: refs/heads/master
Commit: 005df4cb73063d19ae11e79a4106ba30c235f24c
Parents: dc0b730
Author: Henryk Konsek <hekon...@gmail.com>
Authored: Mon Nov 16 10:24:21 2015 +0100
Committer: Henryk Konsek <hekon...@gmail.com>
Committed: Mon Nov 16 10:24:21 2015 +0100

----------------------------------------------------------------------
 .../apache/camel/component/kura/KuraRouter.java  | 10 ++++++++++
 .../camel/component/kura/KuraRouterTest.java     | 19 +++++++++++++++++++
 2 files changed, 29 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/005df4cb/components/camel-kura/src/main/java/org/apache/camel/component/kura/KuraRouter.java
----------------------------------------------------------------------
diff --git 
a/components/camel-kura/src/main/java/org/apache/camel/component/kura/KuraRouter.java
 
b/components/camel-kura/src/main/java/org/apache/camel/component/kura/KuraRouter.java
index 1548633..b3f16ca 100644
--- 
a/components/camel-kura/src/main/java/org/apache/camel/component/kura/KuraRouter.java
+++ 
b/components/camel-kura/src/main/java/org/apache/camel/component/kura/KuraRouter.java
@@ -49,7 +49,9 @@ public abstract class KuraRouter extends RouteBuilder 
implements BundleActivator
             this.bundleContext = bundleContext;
             log.debug("Initializing bundle {}.", 
bundleContext.getBundle().getBundleId());
             camelContext = createCamelContext();
+
             camelContext.addRoutes(this);
+
             beforeStart(camelContext);
             log.debug("About to start Camel Kura router: {}", 
getClass().getName());
             camelContext.start();
@@ -89,6 +91,14 @@ public abstract class KuraRouter extends RouteBuilder 
implements BundleActivator
 
     protected <T> T service(Class<T> serviceType) {
         ServiceReference reference = 
bundleContext.getServiceReference(serviceType);
+        return reference == null ? null : (T) 
bundleContext.getService(reference);
+    }
+
+    protected <T> T requiredService(Class<T> serviceType) {
+        ServiceReference reference = 
bundleContext.getServiceReference(serviceType);
+        if (reference == null) {
+            throw new IllegalStateException("Cannot find service: " + 
serviceType.getName());
+        }
         return (T) bundleContext.getService(reference);
     }
 

http://git-wip-us.apache.org/repos/asf/camel/blob/005df4cb/components/camel-kura/src/test/java/org/apache/camel/component/kura/KuraRouterTest.java
----------------------------------------------------------------------
diff --git 
a/components/camel-kura/src/test/java/org/apache/camel/component/kura/KuraRouterTest.java
 
b/components/camel-kura/src/test/java/org/apache/camel/component/kura/KuraRouterTest.java
index 03fefa4..6e8dbf9 100644
--- 
a/components/camel-kura/src/test/java/org/apache/camel/component/kura/KuraRouterTest.java
+++ 
b/components/camel-kura/src/test/java/org/apache/camel/component/kura/KuraRouterTest.java
@@ -25,8 +25,10 @@ import org.junit.Assert;
 import org.junit.Before;
 import org.junit.Test;
 import org.osgi.framework.BundleContext;
+import org.osgi.service.cm.ConfigurationAdmin;
 
 import static org.mockito.BDDMockito.given;
+import static org.mockito.Matchers.any;
 import static org.mockito.Mockito.RETURNS_DEEP_STUBS;
 import static org.mockito.Mockito.mock;
 
@@ -76,6 +78,23 @@ public class KuraRouterTest extends Assert {
         assertNotNull(router.consumerTemplate);
     }
 
+    @Test
+    public void shouldReturnNoService() {
+        
given(bundleContext.getServiceReference(any(Class.class))).willReturn(null);
+        assertNull(router.service(ConfigurationAdmin.class));
+    }
+
+    @Test
+    public void shouldReturnService() {
+        assertNotNull(router.service(ConfigurationAdmin.class));
+    }
+
+    @Test(expected = IllegalStateException.class)
+    public void shouldValidateLackOfService() {
+        
given(bundleContext.getServiceReference(any(Class.class))).willReturn(null);
+        router.requiredService(ConfigurationAdmin.class);
+    }
+
 }
 
 class TestKuraRouter extends KuraRouter {

Reply via email to