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);
+ }
+}