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 2016/01/22 15:59:21 UTC

[8/9] camel git commit: Add @Default qualifier to @ContextName context bean if there is only one

Add @Default qualifier to @ContextName context bean if there is only one


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

Branch: refs/heads/master
Commit: b8924bb31b7125a03fa7d44e8852c874e5ab8b8a
Parents: bca893f
Author: Antonin Stefanutti <an...@stefanutti.fr>
Authored: Fri Jan 22 15:15:36 2016 +0100
Committer: Claus Ibsen <da...@apache.org>
Committed: Fri Jan 22 15:57:19 2016 +0100

----------------------------------------------------------------------
 .../org/apache/camel/cdi/CdiCamelExtension.java | 16 ++--
 .../test/RouteBuilderWithContextNameTest.java   | 93 ++++++++++++++++++++
 2 files changed, 103 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/b8924bb3/components/camel-cdi/src/main/java/org/apache/camel/cdi/CdiCamelExtension.java
----------------------------------------------------------------------
diff --git a/components/camel-cdi/src/main/java/org/apache/camel/cdi/CdiCamelExtension.java b/components/camel-cdi/src/main/java/org/apache/camel/cdi/CdiCamelExtension.java
index 6177370..9f80a0f 100755
--- a/components/camel-cdi/src/main/java/org/apache/camel/cdi/CdiCamelExtension.java
+++ b/components/camel-cdi/src/main/java/org/apache/camel/cdi/CdiCamelExtension.java
@@ -210,15 +210,19 @@ public class CdiCamelExtension implements Extension {
     }
 
     private void afterBeanDiscovery(@Observes AfterBeanDiscovery abd, BeanManager manager) {
-        // Add @ContextName Camel context beans if missing
+        // Missing @ContextName Camel context qualifiers
         contextNames.removeAll(contextQualifiers);
-        for (ContextName name : contextNames) {
-            abd.addBean(camelContextBean(manager, AnyLiteral.INSTANCE, name));
-        }
-
-        // Add a default Camel context bean if any
         if (contextQualifiers.isEmpty() && contextNames.isEmpty()) {
+            // Add a @Default Camel context bean if any
             abd.addBean(camelContextBean(manager, AnyLiteral.INSTANCE, DefaultLiteral.INSTANCE));
+        } else if (contextQualifiers.isEmpty() && contextNames.size() == 1) {
+            // Add a @ContextName and @Default Camel context bean if only one
+            abd.addBean(camelContextBean(manager, AnyLiteral.INSTANCE, DefaultLiteral.INSTANCE, contextNames.iterator().next()));
+        } else {
+            // Add missing @ContextName Camel context beans
+            for (ContextName name : contextNames) {
+                abd.addBean(camelContextBean(manager, AnyLiteral.INSTANCE, name));
+            }
         }
 
         // Update @ContextName Camel context qualifiers

http://git-wip-us.apache.org/repos/asf/camel/blob/b8924bb3/components/camel-cdi/src/test/java/org/apache/camel/cdi/test/RouteBuilderWithContextNameTest.java
----------------------------------------------------------------------
diff --git a/components/camel-cdi/src/test/java/org/apache/camel/cdi/test/RouteBuilderWithContextNameTest.java b/components/camel-cdi/src/test/java/org/apache/camel/cdi/test/RouteBuilderWithContextNameTest.java
new file mode 100644
index 0000000..4510fb5
--- /dev/null
+++ b/components/camel-cdi/src/test/java/org/apache/camel/cdi/test/RouteBuilderWithContextNameTest.java
@@ -0,0 +1,93 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.cdi.test;
+
+import java.util.concurrent.TimeUnit;
+import javax.enterprise.inject.Any;
+import javax.enterprise.inject.Instance;
+
+import org.apache.camel.CamelContext;
+import org.apache.camel.ProducerTemplate;
+import org.apache.camel.ServiceStatus;
+import org.apache.camel.cdi.CdiCamelExtension;
+import org.apache.camel.cdi.ContextName;
+import org.apache.camel.cdi.Uri;
+import org.apache.camel.cdi.bean.FirstCamelContextEndpointInjectRoute;
+import org.apache.camel.component.mock.MockEndpoint;
+import org.jboss.arquillian.container.test.api.Deployment;
+import org.jboss.arquillian.junit.Arquillian;
+import org.jboss.shrinkwrap.api.Archive;
+import org.jboss.shrinkwrap.api.ShrinkWrap;
+import org.jboss.shrinkwrap.api.asset.EmptyAsset;
+import org.jboss.shrinkwrap.api.spec.JavaArchive;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import static org.apache.camel.component.mock.MockEndpoint.assertIsSatisfied;
+import static org.hamcrest.Matchers.contains;
+import static org.hamcrest.Matchers.equalTo;
+import static org.hamcrest.Matchers.hasProperty;
+import static org.hamcrest.Matchers.is;
+import static org.junit.Assert.assertThat;
+
+@RunWith(Arquillian.class)
+public class RouteBuilderWithContextNameTest {
+
+    @Deployment
+    public static Archive<?> deployment() {
+        return ShrinkWrap.create(JavaArchive.class)
+            // Camel CDI
+            .addPackage(CdiCamelExtension.class.getPackage())
+            // Test class
+            .addClass(FirstCamelContextEndpointInjectRoute.class)
+            // Bean archive deployment descriptor
+            .addAsManifestResource(EmptyAsset.INSTANCE, "beans.xml");
+    }
+
+    @Test
+    public void verifyCamelContexts(@Any Instance<CamelContext> contexts) {
+        assertThat("Context instances are incorrect!", contexts,
+            contains(
+                hasProperty("name", is(equalTo("first")))));
+    }
+
+    @Test
+    public void verifyNamedCamelContext(@ContextName("first") CamelContext first) {
+        assertThat("Context name is incorrect!", first.getName(), is(equalTo("first")));
+        assertThat("Number of routes is incorrect!", first.getRoutes().size(), is(equalTo(1)));
+        assertThat("Context status is incorrect!", first.getStatus(), is(equalTo(ServiceStatus.Started)));
+    }
+
+    @Test
+    public void verifyDefaultCamelContext(CamelContext context) {
+        assertThat("Context name is incorrect!", context.getName(), is(equalTo("first")));
+        assertThat("Number of routes is incorrect!", context.getRoutes().size(), is(equalTo(1)));
+        assertThat("Context status is incorrect!", context.getStatus(), is(equalTo(ServiceStatus.Started)));
+    }
+
+    @Test
+    public void sendMessageToInbound(@Uri("direct:inbound") ProducerTemplate inbound,
+                                     @Uri("mock:outbound") MockEndpoint outbound) throws InterruptedException {
+        outbound.expectedMessageCount(1);
+        outbound.expectedBodiesReceived("test");
+        outbound.expectedHeaderReceived("context", "first");
+
+        inbound.sendBody("test");
+
+        assertIsSatisfied(2L, TimeUnit.SECONDS, outbound);
+    }
+}