You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by he...@apache.org on 2015/11/16 10:24:28 UTC

camel git commit: [CAMEL-9328] KuraRouter should provide required and option service resolvers.

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 <he...@gmail.com>
Authored: Mon Nov 16 10:24:21 2015 +0100
Committer: Henryk Konsek <he...@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 {