http://git-wip-us.apache.org/repos/asf/camel/blob/0421c24d/components/camel-cdi/src/test/java/org/apache/camel/cdi/bean/PropertyEndpointRoute.java
----------------------------------------------------------------------
diff --git 
a/components/camel-cdi/src/test/java/org/apache/camel/cdi/bean/PropertyEndpointRoute.java
 
b/components/camel-cdi/src/test/java/org/apache/camel/cdi/bean/PropertyEndpointRoute.java
new file mode 100644
index 0000000..6d5ee7d
--- /dev/null
+++ 
b/components/camel-cdi/src/test/java/org/apache/camel/cdi/bean/PropertyEndpointRoute.java
@@ -0,0 +1,30 @@
+/**
+ * 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.bean;
+
+import org.apache.camel.builder.RouteBuilder;
+
+public class PropertyEndpointRoute extends RouteBuilder {
+
+    @Override
+    public void configure() {
+        from("direct:{{from}}")
+            .routeId("route")
+            .setHeader("header").simple("properties:header.message")
+            .to("{{to}}");
+    }
+}

http://git-wip-us.apache.org/repos/asf/camel/blob/0421c24d/components/camel-cdi/src/test/java/org/apache/camel/cdi/bean/PropertyInjectBean.java
----------------------------------------------------------------------
diff --git 
a/components/camel-cdi/src/test/java/org/apache/camel/cdi/bean/PropertyInjectBean.java
 
b/components/camel-cdi/src/test/java/org/apache/camel/cdi/bean/PropertyInjectBean.java
new file mode 100644
index 0000000..e0cfbc4
--- /dev/null
+++ 
b/components/camel-cdi/src/test/java/org/apache/camel/cdi/bean/PropertyInjectBean.java
@@ -0,0 +1,38 @@
+/**
+ * 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.bean;
+
+import java.util.Map;
+
+import org.apache.camel.Handler;
+import org.apache.camel.Headers;
+import org.apache.camel.PropertyInject;
+
+public class PropertyInjectBean {
+
+    @PropertyInject("property")
+    private String property;
+
+    @Handler
+    public void process(@Headers Map<String, Object> headers) {
+        headers.put("header", property);
+    }
+    
+    public String getProperty() {
+        return property;
+    }
+}

http://git-wip-us.apache.org/repos/asf/camel/blob/0421c24d/components/camel-cdi/src/test/java/org/apache/camel/cdi/bean/RecipientListMethodBean.java
----------------------------------------------------------------------
diff --git 
a/components/camel-cdi/src/test/java/org/apache/camel/cdi/bean/RecipientListMethodBean.java
 
b/components/camel-cdi/src/test/java/org/apache/camel/cdi/bean/RecipientListMethodBean.java
new file mode 100644
index 0000000..3e54e6a
--- /dev/null
+++ 
b/components/camel-cdi/src/test/java/org/apache/camel/cdi/bean/RecipientListMethodBean.java
@@ -0,0 +1,34 @@
+/**
+ * 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.bean;
+
+import java.util.Arrays;
+import java.util.List;
+import javax.enterprise.context.ApplicationScoped;
+
+import org.apache.camel.Consume;
+import org.apache.camel.RecipientList;
+
+@ApplicationScoped
+public class RecipientListMethodBean {
+
+    @RecipientList
+    @Consume(uri = "direct:inbound")
+    public List<String> route() {
+        return Arrays.asList("mock:outbound1", "mock:outbound2");
+    }
+}

http://git-wip-us.apache.org/repos/asf/camel/blob/0421c24d/components/camel-cdi/src/test/java/org/apache/camel/cdi/bean/SecondCamelContextBean.java
----------------------------------------------------------------------
diff --git 
a/components/camel-cdi/src/test/java/org/apache/camel/cdi/bean/SecondCamelContextBean.java
 
b/components/camel-cdi/src/test/java/org/apache/camel/cdi/bean/SecondCamelContextBean.java
new file mode 100644
index 0000000..8f83e30
--- /dev/null
+++ 
b/components/camel-cdi/src/test/java/org/apache/camel/cdi/bean/SecondCamelContextBean.java
@@ -0,0 +1,33 @@
+/**
+ * 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.bean;
+
+import javax.annotation.PostConstruct;
+import javax.enterprise.context.ApplicationScoped;
+
+import org.apache.camel.cdi.ContextName;
+import org.apache.camel.impl.DefaultCamelContext;
+
+@ApplicationScoped
+@ContextName("second")
+public class SecondCamelContextBean extends DefaultCamelContext {
+
+    @PostConstruct
+    void postConstruct() {
+        setAutoStartup(false);
+    }
+}

http://git-wip-us.apache.org/repos/asf/camel/blob/0421c24d/components/camel-cdi/src/test/java/org/apache/camel/cdi/bean/SecondCamelContextEndpointInjectRoute.java
----------------------------------------------------------------------
diff --git 
a/components/camel-cdi/src/test/java/org/apache/camel/cdi/bean/SecondCamelContextEndpointInjectRoute.java
 
b/components/camel-cdi/src/test/java/org/apache/camel/cdi/bean/SecondCamelContextEndpointInjectRoute.java
new file mode 100644
index 0000000..9889786
--- /dev/null
+++ 
b/components/camel-cdi/src/test/java/org/apache/camel/cdi/bean/SecondCamelContextEndpointInjectRoute.java
@@ -0,0 +1,34 @@
+/**
+ * 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.bean;
+
+import org.apache.camel.Endpoint;
+import org.apache.camel.EndpointInject;
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.cdi.ContextName;
+
+@ContextName("second")
+public class SecondCamelContextEndpointInjectRoute extends RouteBuilder {
+
+    @EndpointInject(uri = "direct:inbound", context = "second")
+    private Endpoint inbound;
+    
+    @Override
+    public void configure() {
+        
from(inbound).setHeader("context").constant("second").to("mock:outbound");
+    }
+}

http://git-wip-us.apache.org/repos/asf/camel/blob/0421c24d/components/camel-cdi/src/test/java/org/apache/camel/cdi/bean/SecondCamelContextEventConsumingRoute.java
----------------------------------------------------------------------
diff --git 
a/components/camel-cdi/src/test/java/org/apache/camel/cdi/bean/SecondCamelContextEventConsumingRoute.java
 
b/components/camel-cdi/src/test/java/org/apache/camel/cdi/bean/SecondCamelContextEventConsumingRoute.java
new file mode 100644
index 0000000..45678a2
--- /dev/null
+++ 
b/components/camel-cdi/src/test/java/org/apache/camel/cdi/bean/SecondCamelContextEventConsumingRoute.java
@@ -0,0 +1,38 @@
+/**
+ * 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.bean;
+
+import javax.enterprise.context.ApplicationScoped;
+import javax.inject.Inject;
+
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.cdi.CdiEventEndpoint;
+import org.apache.camel.cdi.ContextName;
+
+@ApplicationScoped
+@ContextName("second")
+public class SecondCamelContextEventConsumingRoute extends RouteBuilder {
+
+    @Inject
+    @ContextName("second")
+    private CdiEventEndpoint<String> stringCdiEventEndpoint;
+
+    @Override
+    public void configure() {
+        from(stringCdiEventEndpoint).to("mock:consumeString");
+    }
+}

http://git-wip-us.apache.org/repos/asf/camel/blob/0421c24d/components/camel-cdi/src/test/java/org/apache/camel/cdi/bean/SecondCamelContextEventProducingRoute.java
----------------------------------------------------------------------
diff --git 
a/components/camel-cdi/src/test/java/org/apache/camel/cdi/bean/SecondCamelContextEventProducingRoute.java
 
b/components/camel-cdi/src/test/java/org/apache/camel/cdi/bean/SecondCamelContextEventProducingRoute.java
new file mode 100644
index 0000000..d856d22
--- /dev/null
+++ 
b/components/camel-cdi/src/test/java/org/apache/camel/cdi/bean/SecondCamelContextEventProducingRoute.java
@@ -0,0 +1,38 @@
+/**
+ * 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.bean;
+
+import javax.enterprise.context.ApplicationScoped;
+import javax.inject.Inject;
+
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.cdi.CdiEventEndpoint;
+import org.apache.camel.cdi.ContextName;
+
+@ApplicationScoped
+@ContextName("second")
+public class SecondCamelContextEventProducingRoute extends RouteBuilder {
+
+    @Inject
+    @ContextName("second")
+    private CdiEventEndpoint<String> stringCdiEventEndpoint;
+
+    @Override
+    public void configure() {
+        from("direct:produceString").to(stringCdiEventEndpoint);
+    }
+}

http://git-wip-us.apache.org/repos/asf/camel/blob/0421c24d/components/camel-cdi/src/test/java/org/apache/camel/cdi/bean/SecondCamelContextProduceTemplateBean.java
----------------------------------------------------------------------
diff --git 
a/components/camel-cdi/src/test/java/org/apache/camel/cdi/bean/SecondCamelContextProduceTemplateBean.java
 
b/components/camel-cdi/src/test/java/org/apache/camel/cdi/bean/SecondCamelContextProduceTemplateBean.java
new file mode 100644
index 0000000..fe97114
--- /dev/null
+++ 
b/components/camel-cdi/src/test/java/org/apache/camel/cdi/bean/SecondCamelContextProduceTemplateBean.java
@@ -0,0 +1,30 @@
+/**
+ * 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.bean;
+
+import org.apache.camel.Produce;
+import org.apache.camel.ProducerTemplate;
+
+public class SecondCamelContextProduceTemplateBean {
+
+    @Produce(uri = "mock:outbound", context = "second")
+    private ProducerTemplate producer;
+
+    public void sendToProducer(String body) {
+        producer.sendBody(body + "-second");
+    }
+}

http://git-wip-us.apache.org/repos/asf/camel/blob/0421c24d/components/camel-cdi/src/test/java/org/apache/camel/cdi/bean/SecondCamelContextPropertyInjectBean.java
----------------------------------------------------------------------
diff --git 
a/components/camel-cdi/src/test/java/org/apache/camel/cdi/bean/SecondCamelContextPropertyInjectBean.java
 
b/components/camel-cdi/src/test/java/org/apache/camel/cdi/bean/SecondCamelContextPropertyInjectBean.java
new file mode 100644
index 0000000..b1006c4
--- /dev/null
+++ 
b/components/camel-cdi/src/test/java/org/apache/camel/cdi/bean/SecondCamelContextPropertyInjectBean.java
@@ -0,0 +1,38 @@
+/**
+ * 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.bean;
+
+import java.util.Map;
+
+import org.apache.camel.Handler;
+import org.apache.camel.Headers;
+import org.apache.camel.PropertyInject;
+
+public class SecondCamelContextPropertyInjectBean {
+
+    @PropertyInject(value = "property", context = "second")
+    private String property;
+
+    @Handler
+    public void process(@Headers Map<String, Object> headers) {
+        headers.put("header", property);
+    }
+    
+    public String getProperty() {
+        return property;
+    }
+}

http://git-wip-us.apache.org/repos/asf/camel/blob/0421c24d/components/camel-cdi/src/test/java/org/apache/camel/cdi/bean/SecondNamedCamelContextBean.java
----------------------------------------------------------------------
diff --git 
a/components/camel-cdi/src/test/java/org/apache/camel/cdi/bean/SecondNamedCamelContextBean.java
 
b/components/camel-cdi/src/test/java/org/apache/camel/cdi/bean/SecondNamedCamelContextBean.java
new file mode 100644
index 0000000..711e475
--- /dev/null
+++ 
b/components/camel-cdi/src/test/java/org/apache/camel/cdi/bean/SecondNamedCamelContextBean.java
@@ -0,0 +1,29 @@
+/**
+ * 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.bean;
+
+import javax.enterprise.context.ApplicationScoped;
+import javax.inject.Named;
+
+import org.apache.camel.cdi.ContextName;
+import org.apache.camel.impl.DefaultCamelContext;
+
+@ApplicationScoped
+@Named("second")
+@ContextName("second")
+public class SecondNamedCamelContextBean extends DefaultCamelContext {
+}

http://git-wip-us.apache.org/repos/asf/camel/blob/0421c24d/components/camel-cdi/src/test/java/org/apache/camel/cdi/bean/SecondNamedCamelContextRoute.java
----------------------------------------------------------------------
diff --git 
a/components/camel-cdi/src/test/java/org/apache/camel/cdi/bean/SecondNamedCamelContextRoute.java
 
b/components/camel-cdi/src/test/java/org/apache/camel/cdi/bean/SecondNamedCamelContextRoute.java
new file mode 100644
index 0000000..fd78a1e
--- /dev/null
+++ 
b/components/camel-cdi/src/test/java/org/apache/camel/cdi/bean/SecondNamedCamelContextRoute.java
@@ -0,0 +1,29 @@
+/**
+ * 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.bean;
+
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.cdi.ContextName;
+
+@ContextName("second")
+public class SecondNamedCamelContextRoute extends RouteBuilder {
+
+    @Override
+    public void configure() {
+        
from("direct:in").transform(body().prepend("second-")).to("direct:out");
+    }
+}

http://git-wip-us.apache.org/repos/asf/camel/blob/0421c24d/components/camel-cdi/src/test/java/org/apache/camel/cdi/bean/SimpleCamelRoute.java
----------------------------------------------------------------------
diff --git 
a/components/camel-cdi/src/test/java/org/apache/camel/cdi/bean/SimpleCamelRoute.java
 
b/components/camel-cdi/src/test/java/org/apache/camel/cdi/bean/SimpleCamelRoute.java
new file mode 100644
index 0000000..48de1e7
--- /dev/null
+++ 
b/components/camel-cdi/src/test/java/org/apache/camel/cdi/bean/SimpleCamelRoute.java
@@ -0,0 +1,40 @@
+/**
+ * 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.bean;
+
+import javax.inject.Inject;
+
+import org.apache.camel.Endpoint;
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.cdi.Uri;
+import org.apache.camel.component.mock.MockEndpoint;
+
+public class SimpleCamelRoute extends RouteBuilder {
+
+    @Inject
+    @Uri("direct:start")
+    private Endpoint direct;
+
+    @Inject
+    @Uri("mock:result")
+    private MockEndpoint mock;
+
+    @Override
+    public void configure() {
+        from(direct).routeId("simple").to(mock);
+    }
+}

http://git-wip-us.apache.org/repos/asf/camel/blob/0421c24d/components/camel-cdi/src/test/java/org/apache/camel/cdi/bean/UriEndpointRoute.java
----------------------------------------------------------------------
diff --git 
a/components/camel-cdi/src/test/java/org/apache/camel/cdi/bean/UriEndpointRoute.java
 
b/components/camel-cdi/src/test/java/org/apache/camel/cdi/bean/UriEndpointRoute.java
new file mode 100644
index 0000000..e75fe65
--- /dev/null
+++ 
b/components/camel-cdi/src/test/java/org/apache/camel/cdi/bean/UriEndpointRoute.java
@@ -0,0 +1,30 @@
+/**
+ * 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.bean;
+
+import javax.enterprise.context.ApplicationScoped;
+
+import org.apache.camel.builder.RouteBuilder;
+
+@ApplicationScoped
+public class UriEndpointRoute extends RouteBuilder {
+
+    @Override
+    public void configure() {
+        from("direct:inbound").routeId("uri-route").to("mock:outbound");
+    }
+}

http://git-wip-us.apache.org/repos/asf/camel/blob/0421c24d/components/camel-cdi/src/test/java/org/apache/camel/cdi/component/properties/PropertiesComponentTest.java
----------------------------------------------------------------------
diff --git 
a/components/camel-cdi/src/test/java/org/apache/camel/cdi/component/properties/PropertiesComponentTest.java
 
b/components/camel-cdi/src/test/java/org/apache/camel/cdi/component/properties/PropertiesComponentTest.java
deleted file mode 100644
index f6bd0b3..0000000
--- 
a/components/camel-cdi/src/test/java/org/apache/camel/cdi/component/properties/PropertiesComponentTest.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/**
- * 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.component.properties;
-
-import org.apache.camel.cdi.CdiContextTestSupport;
-import org.junit.Test;
-
-/**
- * Verifies behavior of properties component in CDI environment.
- */
-public class PropertiesComponentTest extends CdiContextTestSupport {
-
-    @Test
-    public void shouldUseCdiProperties() throws Exception {
-        assertTrue(context.getComponent("properties") instanceof 
CdiPropertiesComponent);
-        String resolved = 
context.resolvePropertyPlaceholders("d{{directEndpoint}}b");
-
-        assertEquals("ddirect:injectb", resolved);
-        resolved = 
context.resolvePropertyPlaceholders("{{directEndpoint}}_{{directEndpoint}}");
-
-        assertEquals("direct:inject_direct:inject", resolved);
-    }
-
-    @Test
-    public void testNullArgument() throws Exception {
-        assertNull(context.resolvePropertyPlaceholders(null));
-    }
-
-    @Test
-    public void testTextWithNoPlaceholder() throws Exception {
-        assertEquals("IamAnonymous", 
context.resolvePropertyPlaceholders("IamAnonymous"));
-    }
-
-    @Test(expected = IllegalArgumentException.class)
-    public void testUnknownNestedPlaceholder() throws Exception {
-        context.resolvePropertyPlaceholders("{{IamAnonymous}}");
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/camel/blob/0421c24d/components/camel-cdi/src/test/java/org/apache/camel/cdi/converter/InjectedTypeConverter.java
----------------------------------------------------------------------
diff --git 
a/components/camel-cdi/src/test/java/org/apache/camel/cdi/converter/InjectedTypeConverter.java
 
b/components/camel-cdi/src/test/java/org/apache/camel/cdi/converter/InjectedTypeConverter.java
new file mode 100644
index 0000000..ef0b245
--- /dev/null
+++ 
b/components/camel-cdi/src/test/java/org/apache/camel/cdi/converter/InjectedTypeConverter.java
@@ -0,0 +1,42 @@
+/**
+ * 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.converter;
+
+import javax.inject.Inject;
+
+import org.apache.camel.CamelContext;
+import org.apache.camel.Converter;
+import org.apache.camel.cdi.pojo.TypeConverterInput;
+import org.apache.camel.cdi.pojo.TypeConverterOutput;
+
+@Converter
+public final class InjectedTypeConverter {
+
+    private final CamelContext context;
+    
+    @Inject
+    InjectedTypeConverter(CamelContext context) {
+        this.context = context;
+    }
+
+    @Converter
+    public TypeConverterOutput convert(TypeConverterInput input) throws 
Exception {
+        TypeConverterOutput output = new TypeConverterOutput();
+        
output.setProperty(context.resolvePropertyPlaceholders(input.getProperty()));
+        return output;
+    }
+}

http://git-wip-us.apache.org/repos/asf/camel/blob/0421c24d/components/camel-cdi/src/test/java/org/apache/camel/cdi/expression/ExchangeExpression.java
----------------------------------------------------------------------
diff --git 
a/components/camel-cdi/src/test/java/org/apache/camel/cdi/expression/ExchangeExpression.java
 
b/components/camel-cdi/src/test/java/org/apache/camel/cdi/expression/ExchangeExpression.java
new file mode 100644
index 0000000..1576a74
--- /dev/null
+++ 
b/components/camel-cdi/src/test/java/org/apache/camel/cdi/expression/ExchangeExpression.java
@@ -0,0 +1,37 @@
+/**
+ * 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.expression;
+
+import org.apache.camel.Exchange;
+import org.apache.camel.Expression;
+import org.apache.camel.Predicate;
+import org.apache.camel.util.PredicateToExpressionAdapter;
+
+public final class ExchangeExpression {
+
+    private ExchangeExpression() {
+    }
+
+    public static Expression fromCamelContext(final String contextName) {
+        return new PredicateToExpressionAdapter(new Predicate() {
+            @Override
+            public boolean matches(Exchange exchange) {
+                return exchange.getContext().getName().equals(contextName);
+            }
+        });
+    }
+}

http://git-wip-us.apache.org/repos/asf/camel/blob/0421c24d/components/camel-cdi/src/test/java/org/apache/camel/cdi/pojo/EventPayload.java
----------------------------------------------------------------------
diff --git 
a/components/camel-cdi/src/test/java/org/apache/camel/cdi/pojo/EventPayload.java
 
b/components/camel-cdi/src/test/java/org/apache/camel/cdi/pojo/EventPayload.java
new file mode 100644
index 0000000..8f7a6c8
--- /dev/null
+++ 
b/components/camel-cdi/src/test/java/org/apache/camel/cdi/pojo/EventPayload.java
@@ -0,0 +1,47 @@
+/**
+ * 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.pojo;
+
+public class EventPayload<T> {
+
+    private final T payload;
+
+    public EventPayload(T payload) {
+        this.payload = payload;
+    }
+
+    public T getPayload() {
+        return payload;
+    }
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) {
+            return true;
+        }
+        if (o == null || getClass() != o.getClass()) {
+            return false;
+        }
+        EventPayload that = (EventPayload) o;
+        return payload.equals(that.payload);
+    }
+
+    @Override
+    public int hashCode() {
+        return payload.hashCode();
+    }
+}

http://git-wip-us.apache.org/repos/asf/camel/blob/0421c24d/components/camel-cdi/src/test/java/org/apache/camel/cdi/pojo/EventPayloadInteger.java
----------------------------------------------------------------------
diff --git 
a/components/camel-cdi/src/test/java/org/apache/camel/cdi/pojo/EventPayloadInteger.java
 
b/components/camel-cdi/src/test/java/org/apache/camel/cdi/pojo/EventPayloadInteger.java
new file mode 100644
index 0000000..7bf8ed8
--- /dev/null
+++ 
b/components/camel-cdi/src/test/java/org/apache/camel/cdi/pojo/EventPayloadInteger.java
@@ -0,0 +1,24 @@
+/**
+ * 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.pojo;
+
+public class EventPayloadInteger extends EventPayload<Integer> {
+
+    public EventPayloadInteger(Integer payload) {
+        super(payload);
+    }
+}

http://git-wip-us.apache.org/repos/asf/camel/blob/0421c24d/components/camel-cdi/src/test/java/org/apache/camel/cdi/pojo/EventPayloadString.java
----------------------------------------------------------------------
diff --git 
a/components/camel-cdi/src/test/java/org/apache/camel/cdi/pojo/EventPayloadString.java
 
b/components/camel-cdi/src/test/java/org/apache/camel/cdi/pojo/EventPayloadString.java
new file mode 100644
index 0000000..0b2160a
--- /dev/null
+++ 
b/components/camel-cdi/src/test/java/org/apache/camel/cdi/pojo/EventPayloadString.java
@@ -0,0 +1,24 @@
+/**
+ * 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.pojo;
+
+public class EventPayloadString extends EventPayload<String> {
+
+    public EventPayloadString(String payload) {
+        super(payload);
+    }
+}

http://git-wip-us.apache.org/repos/asf/camel/blob/0421c24d/components/camel-cdi/src/test/java/org/apache/camel/cdi/pojo/TypeConverterInput.java
----------------------------------------------------------------------
diff --git 
a/components/camel-cdi/src/test/java/org/apache/camel/cdi/pojo/TypeConverterInput.java
 
b/components/camel-cdi/src/test/java/org/apache/camel/cdi/pojo/TypeConverterInput.java
new file mode 100644
index 0000000..e176abe
--- /dev/null
+++ 
b/components/camel-cdi/src/test/java/org/apache/camel/cdi/pojo/TypeConverterInput.java
@@ -0,0 +1,30 @@
+/**
+ * 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.pojo;
+
+public class TypeConverterInput {
+
+    private String property;
+
+    public String getProperty() {
+        return property;
+    }
+
+    public void setProperty(String property) {
+        this.property = property;
+    }
+}

http://git-wip-us.apache.org/repos/asf/camel/blob/0421c24d/components/camel-cdi/src/test/java/org/apache/camel/cdi/pojo/TypeConverterOutput.java
----------------------------------------------------------------------
diff --git 
a/components/camel-cdi/src/test/java/org/apache/camel/cdi/pojo/TypeConverterOutput.java
 
b/components/camel-cdi/src/test/java/org/apache/camel/cdi/pojo/TypeConverterOutput.java
new file mode 100644
index 0000000..2b95d54
--- /dev/null
+++ 
b/components/camel-cdi/src/test/java/org/apache/camel/cdi/pojo/TypeConverterOutput.java
@@ -0,0 +1,30 @@
+/**
+ * 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.pojo;
+
+public class TypeConverterOutput {
+    
+    private String property;
+    
+    public String getProperty() {
+        return property;
+    }
+
+    public void setProperty(String property) {
+        this.property = property;
+    }
+}

http://git-wip-us.apache.org/repos/asf/camel/blob/0421c24d/components/camel-cdi/src/test/java/org/apache/camel/cdi/qualifier/BarQualifier.java
----------------------------------------------------------------------
diff --git 
a/components/camel-cdi/src/test/java/org/apache/camel/cdi/qualifier/BarQualifier.java
 
b/components/camel-cdi/src/test/java/org/apache/camel/cdi/qualifier/BarQualifier.java
new file mode 100644
index 0000000..606f75f
--- /dev/null
+++ 
b/components/camel-cdi/src/test/java/org/apache/camel/cdi/qualifier/BarQualifier.java
@@ -0,0 +1,38 @@
+/**
+ * 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.qualifier;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.Retention;
+import java.lang.annotation.Target;
+import static java.lang.annotation.ElementType.FIELD;
+import static java.lang.annotation.ElementType.METHOD;
+import static java.lang.annotation.ElementType.PARAMETER;
+import static java.lang.annotation.ElementType.TYPE;
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+import javax.enterprise.util.AnnotationLiteral;
+import javax.inject.Qualifier;
+
+@Qualifier
+@Documented
+@Retention(RUNTIME)
+@Target({ TYPE, METHOD, PARAMETER, FIELD })
+public @interface BarQualifier {
+
+    final class Literal extends AnnotationLiteral<BarQualifier> implements 
BarQualifier {
+    }
+}

http://git-wip-us.apache.org/repos/asf/camel/blob/0421c24d/components/camel-cdi/src/test/java/org/apache/camel/cdi/qualifier/FooQualifier.java
----------------------------------------------------------------------
diff --git 
a/components/camel-cdi/src/test/java/org/apache/camel/cdi/qualifier/FooQualifier.java
 
b/components/camel-cdi/src/test/java/org/apache/camel/cdi/qualifier/FooQualifier.java
new file mode 100644
index 0000000..f606124
--- /dev/null
+++ 
b/components/camel-cdi/src/test/java/org/apache/camel/cdi/qualifier/FooQualifier.java
@@ -0,0 +1,38 @@
+/**
+ * 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.qualifier;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.Retention;
+import java.lang.annotation.Target;
+import static java.lang.annotation.ElementType.FIELD;
+import static java.lang.annotation.ElementType.METHOD;
+import static java.lang.annotation.ElementType.PARAMETER;
+import static java.lang.annotation.ElementType.TYPE;
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+import javax.enterprise.util.AnnotationLiteral;
+import javax.inject.Qualifier;
+
+@Qualifier
+@Documented
+@Retention(RUNTIME)
+@Target({ TYPE, METHOD, PARAMETER, FIELD })
+public @interface FooQualifier {
+
+    final class Literal extends AnnotationLiteral<FooQualifier> implements 
FooQualifier {
+    }
+}

http://git-wip-us.apache.org/repos/asf/camel/blob/0421c24d/components/camel-cdi/src/test/java/org/apache/camel/cdi/qualifier/Manual.java
----------------------------------------------------------------------
diff --git 
a/components/camel-cdi/src/test/java/org/apache/camel/cdi/qualifier/Manual.java 
b/components/camel-cdi/src/test/java/org/apache/camel/cdi/qualifier/Manual.java
new file mode 100644
index 0000000..0d5d4e7
--- /dev/null
+++ 
b/components/camel-cdi/src/test/java/org/apache/camel/cdi/qualifier/Manual.java
@@ -0,0 +1,34 @@
+/**
+ * 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.qualifier;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.Retention;
+import java.lang.annotation.Target;
+import static java.lang.annotation.ElementType.FIELD;
+import static java.lang.annotation.ElementType.METHOD;
+import static java.lang.annotation.ElementType.PARAMETER;
+import static java.lang.annotation.ElementType.TYPE;
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+import javax.inject.Qualifier;
+
+@Qualifier
+@Documented
+@Retention(RUNTIME)
+@Target({ TYPE, METHOD, PARAMETER, FIELD })
+public @interface Manual {
+}

http://git-wip-us.apache.org/repos/asf/camel/blob/0421c24d/components/camel-cdi/src/test/java/org/apache/camel/cdi/rule/ExpectedDeploymentException.java
----------------------------------------------------------------------
diff --git 
a/components/camel-cdi/src/test/java/org/apache/camel/cdi/rule/ExpectedDeploymentException.java
 
b/components/camel-cdi/src/test/java/org/apache/camel/cdi/rule/ExpectedDeploymentException.java
new file mode 100644
index 0000000..b6c2b5f
--- /dev/null
+++ 
b/components/camel-cdi/src/test/java/org/apache/camel/cdi/rule/ExpectedDeploymentException.java
@@ -0,0 +1,105 @@
+/**
+ * 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.rule;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.hamcrest.CoreMatchers;
+import org.hamcrest.Matcher;
+import org.junit.rules.RuleChain;
+import org.junit.rules.TestRule;
+import org.junit.runner.Description;
+import org.junit.runners.model.Statement;
+
+import static org.hamcrest.CoreMatchers.allOf;
+import static org.hamcrest.CoreMatchers.anyOf;
+import static org.hamcrest.Matchers.hasItem;
+import static org.junit.Assert.assertThat;
+
+public final class ExpectedDeploymentException implements TestRule {
+
+    private final List<Matcher<Throwable>> exceptions = new ArrayList<>();
+
+    private final List<Matcher<String>> messages = new ArrayList<>();
+
+    private final LogVerifier log = new LogVerifier();
+
+    private final TestRule chain;
+
+    private ExpectedDeploymentException() {
+        chain = RuleChain
+            .outerRule(log)
+            .around(new TestRule() {
+                @Override
+                public Statement apply(final Statement base, Description 
description) {
+                    return new Statement() {
+                        @Override
+                        public void evaluate() throws Throwable {
+                            try {
+                                base.evaluate();
+                            } catch (Throwable exception) {
+                                assertThat(exception, allOf(pecs(exceptions)));
+                                try {
+                                    // OpenWebBeans logs the deployment 
exception details
+                                    // TODO: OpenWebBeans only log the root 
cause of exception thrown in producer methods
+                                    //assertThat(log.getMessages(), 
containsInRelativeOrder(pecs(messages)))
+                                    assertThat(log.getMessages(), 
anyOf(hasItems(messages)));
+                                } catch (AssertionError error) {
+                                    // Weld stores the deployment exception 
details in the exception message
+                                    assertThat(exception.getMessage(), 
allOf(pecs(messages)));
+                                }
+                            }
+                        }
+                    };
+                }
+            });
+    }
+
+    public static ExpectedDeploymentException none() {
+        return new ExpectedDeploymentException();
+    }
+
+    public ExpectedDeploymentException expect(Class<? extends Throwable> type) 
{
+        exceptions.add(CoreMatchers.<Throwable>instanceOf(type));
+        return this;
+    }
+
+    public ExpectedDeploymentException expectMessage(Matcher<String> matcher) {
+        messages.add(matcher);
+        return this;
+    }
+
+    @SuppressWarnings({"unchecked", "rawtypes"})
+    private <T> List<Matcher<? super T>> pecs(List<Matcher<T>> matchers) {
+        return new ArrayList<>((List) matchers);
+    }
+
+    private <T> Matcher<Iterable<? super T>>[] hasItems(List<Matcher<T>> 
matchers) {
+        @SuppressWarnings("unchecked")
+        Matcher<Iterable<? super T>>[] items = new Matcher[matchers.size()];
+        for (int i = 0; i < items.length; i++) {
+            items[i] = hasItem(matchers.get(i));
+        }
+        return items;
+    }
+
+    @Override
+    public Statement apply(Statement base, Description description) {
+        return chain.apply(base, description);
+    }
+}

http://git-wip-us.apache.org/repos/asf/camel/blob/0421c24d/components/camel-cdi/src/test/java/org/apache/camel/cdi/rule/LogVerifier.java
----------------------------------------------------------------------
diff --git 
a/components/camel-cdi/src/test/java/org/apache/camel/cdi/rule/LogVerifier.java 
b/components/camel-cdi/src/test/java/org/apache/camel/cdi/rule/LogVerifier.java
new file mode 100644
index 0000000..804ae2c
--- /dev/null
+++ 
b/components/camel-cdi/src/test/java/org/apache/camel/cdi/rule/LogVerifier.java
@@ -0,0 +1,75 @@
+/**
+ * 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.rule;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+import org.apache.log4j.Appender;
+import org.apache.log4j.AppenderSkeleton;
+import org.apache.log4j.LogManager;
+import org.apache.log4j.spi.LoggingEvent;
+import org.junit.rules.Verifier;
+import org.junit.runner.Description;
+import org.junit.runners.model.Statement;
+
+public class LogVerifier extends Verifier {
+
+    private final Appender appender;
+
+    private final List<String> messages = new ArrayList<>();
+
+    public LogVerifier() {
+        this.appender = new AppenderSkeleton() {
+            @Override
+            public void close() {
+            }
+
+            @Override
+            public boolean requiresLayout() {
+                return false;
+            }
+
+            @Override
+            protected void append(LoggingEvent event) {
+                messages.add(event.getRenderedMessage());
+            }
+        };
+    }
+
+    public List<String> getMessages() {
+        return Collections.unmodifiableList(messages);
+    }
+
+    @Override
+    public Statement apply(final Statement base, Description description) {
+        return new Statement() {
+            @Override
+            public void evaluate() throws Throwable {
+                LogManager.getRootLogger().addAppender(appender);
+                try {
+                    base.evaluate();
+                    verify();
+                } finally {
+                    LogManager.getRootLogger().removeAppender(appender);
+                    appender.close();
+                }
+            }
+        };
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/camel/blob/0421c24d/components/camel-cdi/src/test/java/org/apache/camel/cdi/store/Item.java
----------------------------------------------------------------------
diff --git 
a/components/camel-cdi/src/test/java/org/apache/camel/cdi/store/Item.java 
b/components/camel-cdi/src/test/java/org/apache/camel/cdi/store/Item.java
deleted file mode 100644
index 1b82fa0..0000000
--- a/components/camel-cdi/src/test/java/org/apache/camel/cdi/store/Item.java
+++ /dev/null
@@ -1,85 +0,0 @@
-/**
- * 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.store;
-
-import java.io.Serializable;
-
-public class Item implements Serializable {
-    private static final long serialVersionUID = 1L;
-
-    private String name;
-    private long price;
-
-    public Item() {
-    }
-
-    public Item(String name, long price) {
-        this.name = name;
-        this.price = price;
-    }
-
-    /**
-     * @return the name
-     */
-    public String getName() {
-        return name;
-    }
-
-    /**
-     * @param name the name to set
-     */
-    public void setName(String name) {
-        this.name = name;
-    }
-
-    /**
-     * @return the price
-     */
-    public long getPrice() {
-        return price;
-    }
-
-    /**
-     * @param price the price to set
-     */
-    public void setPrice(long price) {
-        this.price = price;
-    }
-
-    // Simple equals implementation
-    @Override
-    public boolean equals(Object obj) {
-        if (this == obj) {
-            return true;
-        }
-        if (obj == null) {
-            return false;
-        }
-        if (getClass() != obj.getClass()) {
-            return false;
-        }
-
-        Item other = (Item)obj;
-        boolean nameMatch = name == null ? other.name == null : 
name.equals(other.name);
-        return nameMatch && price == other.price;
-    }
-
-    @Override
-    public int hashCode() {
-        return name.hashCode() * 997 + (int)price;
-    }
-}

http://git-wip-us.apache.org/repos/asf/camel/blob/0421c24d/components/camel-cdi/src/test/java/org/apache/camel/cdi/store/Products.java
----------------------------------------------------------------------
diff --git 
a/components/camel-cdi/src/test/java/org/apache/camel/cdi/store/Products.java 
b/components/camel-cdi/src/test/java/org/apache/camel/cdi/store/Products.java
deleted file mode 100644
index c91acdd..0000000
--- 
a/components/camel-cdi/src/test/java/org/apache/camel/cdi/store/Products.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/**
- * 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.store;
-
-import java.io.Serializable;
-import java.util.ArrayList;
-import java.util.List;
-import javax.annotation.PostConstruct;
-import javax.annotation.PreDestroy;
-import javax.inject.Named;
-
-@Named
-public class Products implements Serializable {
-    private static final long serialVersionUID = 1L;
-
-    private List<Item> products = new ArrayList<Item>();
-
-    public Products() {
-    }
-
-    @PostConstruct
-    public void afterInit() {
-        for (int i = 1; i < 10; i++) {
-            Item item = new Item("Item-" + i, i * 1500L);
-            products.add(item);
-        }
-    }
-
-    @PreDestroy
-    public void preDestroy() {
-        products.clear();
-    }
-
-    /**
-     * @return the products
-     */
-    public List<Item> getProducts() {
-        return products;
-    }
-
-
-}

http://git-wip-us.apache.org/repos/asf/camel/blob/0421c24d/components/camel-cdi/src/test/java/org/apache/camel/cdi/store/ShoppingBean.java
----------------------------------------------------------------------
diff --git 
a/components/camel-cdi/src/test/java/org/apache/camel/cdi/store/ShoppingBean.java
 
b/components/camel-cdi/src/test/java/org/apache/camel/cdi/store/ShoppingBean.java
deleted file mode 100644
index 0b0639a..0000000
--- 
a/components/camel-cdi/src/test/java/org/apache/camel/cdi/store/ShoppingBean.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/**
- * 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.store;
-
-import java.io.Serializable;
-import java.util.ArrayList;
-import java.util.List;
-import javax.enterprise.inject.New;
-import javax.enterprise.inject.Produces;
-import javax.inject.Inject;
-import javax.inject.Named;
-
-@Named
-public class ShoppingBean implements Serializable {
-    private static final long serialVersionUID = 1L;
-
-    @Inject
-    private Products products;
-    private List<Item> items = new ArrayList<Item>();
-
-    public ShoppingBean() {
-    }
-
-    @Inject
-    public ShoppingBean(@New Item defaultItem) {
-        defaultItem.setName("Default Item");
-        defaultItem.setPrice(1000L);
-
-        items.add(defaultItem);
-    }
-
-    @Produces
-    @Named("selectedItems")
-    public List<Item> listSelectedItems() {
-        return this.items;
-    }
-
-    @Produces
-    @Named("allProducts")
-    public List<Item> listAllProducts() {
-        return this.products.getProducts();
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/camel/blob/0421c24d/components/camel-cdi/src/test/java/org/apache/camel/cdi/support/CamelEndpointInjectedBean.java
----------------------------------------------------------------------
diff --git 
a/components/camel-cdi/src/test/java/org/apache/camel/cdi/support/CamelEndpointInjectedBean.java
 
b/components/camel-cdi/src/test/java/org/apache/camel/cdi/support/CamelEndpointInjectedBean.java
deleted file mode 100644
index a8c623a..0000000
--- 
a/components/camel-cdi/src/test/java/org/apache/camel/cdi/support/CamelEndpointInjectedBean.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/**
- * 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.support;
-
-import org.apache.camel.Endpoint;
-import org.apache.camel.EndpointInject;
-import org.apache.camel.component.mock.MockEndpoint;
-
-public class CamelEndpointInjectedBean {
-
-    @EndpointInject(uri = "direct:inject")
-    Endpoint endpoint;
-
-    @EndpointInject(uri = "mock:result")
-    MockEndpoint mockEndpoint;
-
-    public Endpoint getEndpoint() {
-        return endpoint;
-    }
-
-    public MockEndpoint getMockEndpoint() {
-        return mockEndpoint;
-    }
-}

http://git-wip-us.apache.org/repos/asf/camel/blob/0421c24d/components/camel-cdi/src/test/java/org/apache/camel/cdi/support/CdiConfigFile.java
----------------------------------------------------------------------
diff --git 
a/components/camel-cdi/src/test/java/org/apache/camel/cdi/support/CdiConfigFile.java
 
b/components/camel-cdi/src/test/java/org/apache/camel/cdi/support/CdiConfigFile.java
deleted file mode 100644
index e50418a..0000000
--- 
a/components/camel-cdi/src/test/java/org/apache/camel/cdi/support/CdiConfigFile.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/**
- * 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.support;
-
-import org.apache.deltaspike.core.api.config.PropertyFileConfig;
-
-/**
- * Class which is used to retrieve camel properties files tp configure 
endpoints.
- * By default, it will check for the file META-INF/camel-properties
- */
-public class CdiConfigFile implements PropertyFileConfig {
-
-    private static final long serialVersionUID = 1L;
-
-    @Override
-    public String getPropertyFileName() {
-        return "META-INF/camel.properties";
-    }
-
-    @Override
-    public boolean isOptional() {
-        return false;
-    }
-
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/camel/blob/0421c24d/components/camel-cdi/src/test/java/org/apache/camel/cdi/support/CheeseComponentFactory.java
----------------------------------------------------------------------
diff --git 
a/components/camel-cdi/src/test/java/org/apache/camel/cdi/support/CheeseComponentFactory.java
 
b/components/camel-cdi/src/test/java/org/apache/camel/cdi/support/CheeseComponentFactory.java
deleted file mode 100644
index 601d2e1..0000000
--- 
a/components/camel-cdi/src/test/java/org/apache/camel/cdi/support/CheeseComponentFactory.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/**
- * 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.support;
-
-import javax.enterprise.inject.Produces;
-import javax.inject.Named;
-
-import org.apache.camel.Component;
-import org.apache.camel.component.stub.StubComponent;
-
-/**
- * Stubs out the "cheese" component for testing
- */
-public class CheeseComponentFactory {
-
-    @Produces
-    @Named("cheese")
-    public Component createCheeseComponent() {
-        return new StubComponent();
-    }
-}

http://git-wip-us.apache.org/repos/asf/camel/blob/0421c24d/components/camel-cdi/src/test/java/org/apache/camel/cdi/support/ContextAwareBean.java
----------------------------------------------------------------------
diff --git 
a/components/camel-cdi/src/test/java/org/apache/camel/cdi/support/ContextAwareBean.java
 
b/components/camel-cdi/src/test/java/org/apache/camel/cdi/support/ContextAwareBean.java
deleted file mode 100644
index c56e707..0000000
--- 
a/components/camel-cdi/src/test/java/org/apache/camel/cdi/support/ContextAwareBean.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/**
- * 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.support;
-
-import org.apache.camel.CamelContext;
-import org.apache.camel.CamelContextAware;
-
-/**
- * Simple POJO interested in getting camel context.
- */
-public class ContextAwareBean implements CamelContextAware {
-
-    private CamelContext camelContext;
-
-    @Override
-    public CamelContext getCamelContext() {
-        return camelContext;
-    }
-
-    @Override
-    public void setCamelContext(CamelContext camelContext) {
-        this.camelContext = camelContext;
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/camel/blob/0421c24d/components/camel-cdi/src/test/java/org/apache/camel/cdi/support/EndpointInjectedBean.java
----------------------------------------------------------------------
diff --git 
a/components/camel-cdi/src/test/java/org/apache/camel/cdi/support/EndpointInjectedBean.java
 
b/components/camel-cdi/src/test/java/org/apache/camel/cdi/support/EndpointInjectedBean.java
deleted file mode 100644
index 7f73aed..0000000
--- 
a/components/camel-cdi/src/test/java/org/apache/camel/cdi/support/EndpointInjectedBean.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/**
- * 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.support;
-
-import org.apache.camel.Endpoint;
-import org.apache.camel.EndpointInject;
-
-/**
- */
-public class EndpointInjectedBean {
-
-    @EndpointInject(uri = "mock:blah")
-    private Endpoint endpoint;
-
-    public Endpoint getEndpoint() {
-        return endpoint;
-    }
-
-    public void setEndpoint(Endpoint endpoint) {
-        this.endpoint = endpoint;
-    }
-}

http://git-wip-us.apache.org/repos/asf/camel/blob/0421c24d/components/camel-cdi/src/test/java/org/apache/camel/cdi/support/EndpointUriInjectedBean.java
----------------------------------------------------------------------
diff --git 
a/components/camel-cdi/src/test/java/org/apache/camel/cdi/support/EndpointUriInjectedBean.java
 
b/components/camel-cdi/src/test/java/org/apache/camel/cdi/support/EndpointUriInjectedBean.java
deleted file mode 100644
index 4d98b55..0000000
--- 
a/components/camel-cdi/src/test/java/org/apache/camel/cdi/support/EndpointUriInjectedBean.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/**
- * 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.support;
-
-import javax.inject.Inject;
-
-import org.apache.camel.Endpoint;
-import org.apache.camel.cdi.Uri;
-
-/**
- */
-public class EndpointUriInjectedBean {
-
-    @Inject @Uri("mock:uriInjected")
-    private Endpoint endpoint;
-
-    @Inject @Uri("mock:anotherEndpoint")
-    private Endpoint endpoint2;
-
-    public Endpoint getEndpoint() {
-        return endpoint;
-    }
-
-    public void setEndpoint(Endpoint endpoint) {
-        this.endpoint = endpoint;
-    }
-
-    public Endpoint getEndpoint2() {
-        return endpoint2;
-    }
-
-    public void setEndpoint2(Endpoint endpoint2) {
-        this.endpoint2 = endpoint2;
-    }
-}

http://git-wip-us.apache.org/repos/asf/camel/blob/0421c24d/components/camel-cdi/src/test/java/org/apache/camel/cdi/support/EndpointUriPropertyInjectedBean.java
----------------------------------------------------------------------
diff --git 
a/components/camel-cdi/src/test/java/org/apache/camel/cdi/support/EndpointUriPropertyInjectedBean.java
 
b/components/camel-cdi/src/test/java/org/apache/camel/cdi/support/EndpointUriPropertyInjectedBean.java
deleted file mode 100644
index a52dbc7..0000000
--- 
a/components/camel-cdi/src/test/java/org/apache/camel/cdi/support/EndpointUriPropertyInjectedBean.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/**
- * 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.support;
-
-import org.apache.camel.Endpoint;
-import org.apache.camel.EndpointInject;
-
-/**
- */
-public class EndpointUriPropertyInjectedBean {
-
-    @EndpointInject(property = "injectUri")
-    private Endpoint endpoint;
-
-    public Endpoint getEndpoint() {
-        return endpoint;
-    }
-
-    public void setEndpoint(Endpoint endpoint) {
-        this.endpoint = endpoint;
-    }
-
-    public String getInjectUri() {
-        return "mock:injectedByProperty";
-    }
-}

http://git-wip-us.apache.org/repos/asf/camel/blob/0421c24d/components/camel-cdi/src/test/java/org/apache/camel/cdi/support/MockEndpointInjectedBean.java
----------------------------------------------------------------------
diff --git 
a/components/camel-cdi/src/test/java/org/apache/camel/cdi/support/MockEndpointInjectedBean.java
 
b/components/camel-cdi/src/test/java/org/apache/camel/cdi/support/MockEndpointInjectedBean.java
deleted file mode 100644
index 694c116..0000000
--- 
a/components/camel-cdi/src/test/java/org/apache/camel/cdi/support/MockEndpointInjectedBean.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/**
- * 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.support;
-
-import javax.inject.Inject;
-
-import org.apache.camel.cdi.Mock;
-import org.apache.camel.component.mock.MockEndpoint;
-
-public class MockEndpointInjectedBean {
-
-    @Inject @Mock
-    private MockEndpoint foo;
-
-    @Inject @Mock("mock:something")
-    private MockEndpoint bar;
-
-    public MockEndpoint getBar() {
-        return bar;
-    }
-
-    public MockEndpoint getFoo() {
-        return foo;
-    }
-}

http://git-wip-us.apache.org/repos/asf/camel/blob/0421c24d/components/camel-cdi/src/test/java/org/apache/camel/cdi/support/NamedEndpointBean.java
----------------------------------------------------------------------
diff --git 
a/components/camel-cdi/src/test/java/org/apache/camel/cdi/support/NamedEndpointBean.java
 
b/components/camel-cdi/src/test/java/org/apache/camel/cdi/support/NamedEndpointBean.java
deleted file mode 100644
index c3916ab..0000000
--- 
a/components/camel-cdi/src/test/java/org/apache/camel/cdi/support/NamedEndpointBean.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/**
- * 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.support;
-
-import javax.enterprise.inject.Produces;
-import javax.inject.Named;
-
-import org.apache.camel.Endpoint;
-import org.apache.camel.component.mock.MockComponent;
-import org.apache.camel.component.mock.MockEndpoint;
-
-/**
- */
-public class NamedEndpointBean {
-    @Produces @Named("myNamedEndpoint")
-    public Endpoint createEndpoint() {
-        return new MockEndpoint("mock:nameInjected", new MockComponent());
-    }
-}

http://git-wip-us.apache.org/repos/asf/camel/blob/0421c24d/components/camel-cdi/src/test/java/org/apache/camel/cdi/support/ProduceInjectedBean.java
----------------------------------------------------------------------
diff --git 
a/components/camel-cdi/src/test/java/org/apache/camel/cdi/support/ProduceInjectedBean.java
 
b/components/camel-cdi/src/test/java/org/apache/camel/cdi/support/ProduceInjectedBean.java
deleted file mode 100644
index 01ee579..0000000
--- 
a/components/camel-cdi/src/test/java/org/apache/camel/cdi/support/ProduceInjectedBean.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/**
- * 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.support;
-
-import javax.inject.Inject;
-
-import org.apache.camel.Produce;
-import org.apache.camel.ProducerTemplate;
-import org.apache.camel.cdi.Uri;
-
-public class ProduceInjectedBean {
-
-    @Produce(uri = "mock:foo")
-    private ProducerTemplate producer;
-
-    @Inject @Uri("mock:bar")
-    private ProducerTemplate producer2;
-
-    public ProducerTemplate getProducer() {
-        return producer;
-    }
-
-    public ProducerTemplate getProducer2() {
-        return producer2;
-    }
-}

http://git-wip-us.apache.org/repos/asf/camel/blob/0421c24d/components/camel-cdi/src/test/java/org/apache/camel/cdi/test/AdvisedMockEndpointProducerTest.java
----------------------------------------------------------------------
diff --git 
a/components/camel-cdi/src/test/java/org/apache/camel/cdi/test/AdvisedMockEndpointProducerTest.java
 
b/components/camel-cdi/src/test/java/org/apache/camel/cdi/test/AdvisedMockEndpointProducerTest.java
new file mode 100644
index 0000000..4f454e3
--- /dev/null
+++ 
b/components/camel-cdi/src/test/java/org/apache/camel/cdi/test/AdvisedMockEndpointProducerTest.java
@@ -0,0 +1,96 @@
+/**
+ * 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.inject.Inject;
+
+import org.apache.camel.CamelContext;
+import org.apache.camel.ProducerTemplate;
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.cdi.CdiCamelExtension;
+import org.apache.camel.cdi.Uri;
+import org.apache.camel.cdi.bean.ManualStartupCamelContext;
+import org.apache.camel.component.mock.MockEndpoint;
+import org.jboss.arquillian.container.test.api.Deployment;
+import org.jboss.arquillian.junit.Arquillian;
+import org.jboss.arquillian.junit.InSequence;
+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;
+
+@RunWith(Arquillian.class)
+public class AdvisedMockEndpointProducerTest {
+
+    @Inject
+    @Uri("direct:inbound")
+    private ProducerTemplate inbound;
+
+    @Inject
+    @Uri("mock:outbound")
+    private MockEndpoint outbound;
+
+    @Inject
+    @Uri("mock:intercepted")
+    private MockEndpoint intercepted;
+
+    @Deployment
+    public static Archive<?> deployment() {
+        return ShrinkWrap.create(JavaArchive.class)
+            // Camel CDI
+            .addPackage(CdiCamelExtension.class.getPackage())
+            // Test class
+            .addClass(ManualStartupCamelContext.class)
+            // Bean archive deployment descriptor
+            .addAsManifestResource(EmptyAsset.INSTANCE, "beans.xml");
+    }
+
+    @Test
+    @InSequence(1)
+    public void startCamelContext(CamelContext context) throws Exception {
+        context.addRoutes(new RouteBuilder() {
+            @Override
+            public void configure() {
+                interceptSendToEndpoint("mock:outbound")
+                    .skipSendToOriginalEndpoint()
+                    .log("Intercepting message [${body}] from mock endpoint")
+                    .to("mock:intercepted");
+
+                from("direct:inbound").to("mock:outbound");
+            }
+        });
+
+        context.startAllRoutes();
+    }
+
+    @Test
+    @InSequence(2)
+    public void sendMessageToInbound() throws InterruptedException {
+        outbound.expectedMessageCount(0);
+        intercepted.expectedMessageCount(1);
+        intercepted.expectedBodiesReceived("test");
+
+        inbound.sendBody("test");
+
+        assertIsSatisfied(2L, TimeUnit.SECONDS, outbound, intercepted);
+    }
+}

Reply via email to