You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by js...@apache.org on 2012/09/03 14:39:52 UTC
svn commit: r1380220 - in /camel/trunk/components/camel-cdi: ./
src/main/java/org/apache/camel/component/cdi/internal/
src/test/java/org/apache/camel/cdi/
src/test/java/org/apache/camel/cdi/support/
Author: jstrachan
Date: Mon Sep 3 12:39:51 2012
New Revision: 1380220
URL: http://svn.apache.org/viewvc?rev=1380220&view=rev
Log:
fix for CAMEL-5553 so that we can support injection via @EndpointInject and @Produce without any need for @Inject (though we use more usual CDI methods for injecting via @Inject) along with processing of @Consume
Added:
camel/trunk/components/camel-cdi/src/main/java/org/apache/camel/component/cdi/internal/DelegateInjectionTarget.java (with props)
camel/trunk/components/camel-cdi/src/test/java/org/apache/camel/cdi/CamelEndpointInjectTest.java (with props)
camel/trunk/components/camel-cdi/src/test/java/org/apache/camel/cdi/support/CamelEndpointInjectedBean.java (with props)
Modified:
camel/trunk/components/camel-cdi/pom.xml
camel/trunk/components/camel-cdi/src/main/java/org/apache/camel/component/cdi/internal/BeanAdapter.java
camel/trunk/components/camel-cdi/src/main/java/org/apache/camel/component/cdi/internal/CamelExtension.java
camel/trunk/components/camel-cdi/src/test/java/org/apache/camel/cdi/CdiContextTestSupport.java
camel/trunk/components/camel-cdi/src/test/java/org/apache/camel/cdi/InjectCamelAnnotationsTest.java
camel/trunk/components/camel-cdi/src/test/java/org/apache/camel/cdi/ProduceInjectTest.java
Modified: camel/trunk/components/camel-cdi/pom.xml
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-cdi/pom.xml?rev=1380220&r1=1380219&r2=1380220&view=diff
==============================================================================
--- camel/trunk/components/camel-cdi/pom.xml (original)
+++ camel/trunk/components/camel-cdi/pom.xml Mon Sep 3 12:39:51 2012
@@ -117,9 +117,6 @@
<profiles>
<profile>
<id>owb</id>
- <activation>
- <activeByDefault>true</activeByDefault>
- </activation>
<dependencies>
<dependency>
<groupId>org.apache.geronimo.specs</groupId>
@@ -149,6 +146,10 @@
<profile>
<id>weld</id>
+ <!-- active by default as the overriding of InvocationTarget is currently broken in owb which breaks ProduceInjectTest -->
+ <activation>
+ <activeByDefault>true</activeByDefault>
+ </activation>
<dependencies>
<dependency>
<groupId>org.apache.deltaspike.cdictrl</groupId>
Modified: camel/trunk/components/camel-cdi/src/main/java/org/apache/camel/component/cdi/internal/BeanAdapter.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-cdi/src/main/java/org/apache/camel/component/cdi/internal/BeanAdapter.java?rev=1380220&r1=1380219&r2=1380220&view=diff
==============================================================================
--- camel/trunk/components/camel-cdi/src/main/java/org/apache/camel/component/cdi/internal/BeanAdapter.java (original)
+++ camel/trunk/components/camel-cdi/src/main/java/org/apache/camel/component/cdi/internal/BeanAdapter.java Mon Sep 3 12:39:51 2012
@@ -23,6 +23,7 @@ import java.util.ArrayList;
import java.util.List;
import javax.enterprise.inject.spi.Bean;
+import org.apache.camel.EndpointInject;
import org.apache.camel.Produce;
import org.apache.camel.impl.CamelPostProcessorHelper;
import org.apache.camel.impl.DefaultCamelBeanPostProcessor;
@@ -31,29 +32,18 @@ import org.apache.camel.impl.DefaultCame
* Contains the bean and the consume methods
*/
public class BeanAdapter {
- private final Bean<?> bean;
private final List<Method> consumeMethods = new ArrayList<Method>();
private final List<Method> produceMethods = new ArrayList<Method>();
+ private final List<Method> endpointMethods = new ArrayList<Method>();
private final List<Field> produceFields = new ArrayList<Field>();
+ private final List<Field> endpointFields = new ArrayList<Field>();
- public BeanAdapter(Bean<?> bean) {
- this.bean = bean;
- }
-
- public Bean<?> getBean() {
- return bean;
- }
-
- public List<Method> getConsumeMethods() {
- return consumeMethods;
- }
-
- public List<Method> getProduceMethods() {
- return produceMethods;
- }
-
- public List<Field> getProduceFields() {
- return produceFields;
+ /**
+ * Returns true if this adapter is empty (i.e. has no custom adapter code)
+ */
+ public boolean isEmpty() {
+ return consumeMethods.isEmpty() && produceMethods.isEmpty() && produceFields.isEmpty() &&
+ endpointMethods.isEmpty() && endpointFields.isEmpty();
}
public void addConsumeMethod(Method method) {
@@ -68,30 +58,52 @@ public class BeanAdapter {
produceFields.add(field);
}
+ public void addEndpointField(Field field) {
+ endpointFields.add(field);
+ }
+
+ public void addEndpointMethod(Method method) {
+ endpointMethods.add(method);
+ }
+
/**
- * Perform processing of the various @Consume, @Produce methods on the given bean reference
+ * Perform injections
*/
- public void initialiseBean(DefaultCamelBeanPostProcessor postProcessor, Object reference,
- String beanName) {
+ public void inject(DefaultCamelBeanPostProcessor postProcessor, Object reference,
+ String beanName) {
CamelPostProcessorHelper postProcessorHelper = postProcessor.getPostProcessorHelper();
for (Method method : consumeMethods) {
postProcessorHelper.consumerInjection(method, reference, beanName);
}
for (Method method : produceMethods) {
- Produce produce = method.getAnnotation(Produce.class);
- if (produce != null && postProcessorHelper.matchContext(produce.context())) {
- postProcessor.setterInjection(method, bean, beanName, produce.uri(), produce.ref(),
- produce.property());
+ Produce annotation = method.getAnnotation(Produce.class);
+ if (annotation != null && postProcessorHelper.matchContext(annotation.context())) {
+ postProcessor.setterInjection(method, reference, beanName, annotation.uri(), annotation.ref(),
+ annotation.property());
+
+ }
+ }
+ for (Method method : endpointMethods) {
+ EndpointInject annotation = method.getAnnotation(EndpointInject.class);
+ if (annotation != null && postProcessorHelper.matchContext(annotation.context())) {
+ postProcessor.setterInjection(method, reference, beanName, annotation.uri(), annotation.ref(),
+ annotation.property());
}
}
for (Field field : produceFields) {
- Produce produce = field.getAnnotation(Produce.class);
- if (produce != null && postProcessorHelper.matchContext(produce.context())) {
- postProcessor.injectField(field, produce.uri(), produce.ref(),
- produce.property(), reference, beanName);
+ Produce annotation = field.getAnnotation(Produce.class);
+ if (annotation != null && postProcessorHelper.matchContext(annotation.context())) {
+ postProcessor.injectField(field, annotation.uri(), annotation.ref(),
+ annotation.property(), reference, beanName);
+ }
+ }
+ for (Field field : endpointFields) {
+ EndpointInject annotation = field.getAnnotation(EndpointInject.class);
+ if (annotation != null && postProcessorHelper.matchContext(annotation.context())) {
+ postProcessor.injectField(field, annotation.uri(), annotation.ref(),
+ annotation.property(), reference, beanName);
}
}
}
-
}
Modified: camel/trunk/components/camel-cdi/src/main/java/org/apache/camel/component/cdi/internal/CamelExtension.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-cdi/src/main/java/org/apache/camel/component/cdi/internal/CamelExtension.java?rev=1380220&r1=1380219&r2=1380220&view=diff
==============================================================================
--- camel/trunk/components/camel-cdi/src/main/java/org/apache/camel/component/cdi/internal/CamelExtension.java (original)
+++ camel/trunk/components/camel-cdi/src/main/java/org/apache/camel/component/cdi/internal/CamelExtension.java Mon Sep 3 12:39:51 2012
@@ -18,10 +18,9 @@ package org.apache.camel.component.cdi.i
import java.lang.reflect.Field;
import java.lang.reflect.Method;
-import java.util.Collection;
import java.util.HashMap;
-import java.util.List;
import java.util.Map;
+import java.util.Set;
import javax.enterprise.context.spi.CreationalContext;
import javax.enterprise.event.Observes;
import javax.enterprise.inject.spi.AfterBeanDiscovery;
@@ -31,16 +30,18 @@ import javax.enterprise.inject.spi.Bean;
import javax.enterprise.inject.spi.BeanManager;
import javax.enterprise.inject.spi.BeforeShutdown;
import javax.enterprise.inject.spi.Extension;
+import javax.enterprise.inject.spi.InjectionTarget;
import javax.enterprise.inject.spi.ProcessAnnotatedType;
import javax.enterprise.inject.spi.ProcessBean;
+import javax.enterprise.inject.spi.ProcessInjectionTarget;
import javax.inject.Inject;
import org.apache.camel.CamelContext;
import org.apache.camel.CamelContextAware;
import org.apache.camel.Consume;
+import org.apache.camel.EndpointInject;
import org.apache.camel.Produce;
import org.apache.camel.component.cdi.CdiCamelContext;
-import org.apache.camel.impl.CamelPostProcessorHelper;
import org.apache.camel.impl.DefaultCamelBeanPostProcessor;
import org.apache.camel.util.ObjectHelper;
import org.apache.camel.util.ReflectionHelper;
@@ -56,6 +57,7 @@ public class CamelExtension implements E
* Context instance.
*/
private CamelContext camelContext;
+ private DefaultCamelBeanPostProcessor postProcessor;
private Map<Bean<?>, BeanAdapter> beanAdapters = new HashMap<Bean<?>, BeanAdapter>();
@@ -65,7 +67,8 @@ public class CamelExtension implements E
* @param process Annotated type.
* @throws Exception In case of exceptions.
*/
- protected void contextAwareness(@Observes ProcessAnnotatedType<CamelContextAware> process) throws Exception {
+ protected void contextAwareness(@Observes ProcessAnnotatedType<CamelContextAware> process)
+ throws Exception {
AnnotatedType<CamelContextAware> annotatedType = process.getAnnotatedType();
Class<CamelContextAware> javaClass = annotatedType.getJavaClass();
if (CamelContextAware.class.isAssignableFrom(javaClass)) {
@@ -94,7 +97,8 @@ public class CamelExtension implements E
* @param manager Bean manager.
*/
protected void registerManagedCamelContext(@Observes AfterBeanDiscovery abd, BeanManager manager) {
- abd.addBean(new CamelContextBean(manager.createInjectionTarget(manager.createAnnotatedType(CdiCamelContext.class))));
+ abd.addBean(new CamelContextBean(
+ manager.createInjectionTarget(manager.createAnnotatedType(CdiCamelContext.class))));
}
/**
@@ -119,6 +123,9 @@ public class CamelExtension implements E
}
}
+ /**
+ * Lets detect all beans annotated with @Consume
+ */
public void detectConsumeBeans(@Observes ProcessBean<?> event) {
final Bean<?> bean = event.getBean();
ReflectionHelper.doWithMethods(bean.getBeanClass(), new ReflectionHelper.MethodCallback() {
@@ -129,51 +136,111 @@ public class CamelExtension implements E
BeanAdapter beanAdapter = getBeanAdapter(bean);
beanAdapter.addConsumeMethod(method);
}
- Produce produce = method.getAnnotation(Produce.class);
- if (produce != null) {
- BeanAdapter beanAdapter = getBeanAdapter(bean);
- beanAdapter.addProduceMethod(method);
- }
- }
- });
- ReflectionHelper.doWithFields(bean.getBeanClass(), new ReflectionHelper.FieldCallback() {
- @Override
- public void doWith(Field field) throws IllegalArgumentException, IllegalAccessException {
- Produce produce = field.getAnnotation(Produce.class);
- if (produce != null && !injectAnnotatedField(field)) {
- BeanAdapter beanAdapter = getBeanAdapter(bean);
- beanAdapter.addProduceField(field);
- }
}
});
}
/**
- * Returns true if this field is annotated with @Inject
+ * Lets force the CDI container to create all beans annotated with @Consume so that the consumer becomes active
*/
- protected static boolean injectAnnotatedField(Field field) {
- return field.getAnnotation(Inject.class) != null;
- }
-
- public void initializeBeans(@Observes AfterDeploymentValidation event, BeanManager beanManager) {
+ public void startConsumeBeans(@Observes AfterDeploymentValidation event, BeanManager beanManager) {
ObjectHelper.notNull(getCamelContext(), "camelContext");
- DefaultCamelBeanPostProcessor postProcessor = new DefaultCamelBeanPostProcessor(getCamelContext());
- Collection<BeanAdapter> adapters = beanAdapters.values();
- for (BeanAdapter adapter : adapters) {
- Bean<?> bean = adapter.getBean();
+ Set<Map.Entry<Bean<?>, BeanAdapter>> entries = beanAdapters.entrySet();
+ for (Map.Entry<Bean<?>, BeanAdapter> entry : entries) {
+ Bean<?> bean = entry.getKey();
+ BeanAdapter adapter = entry.getValue();
CreationalContext<?> creationalContext = beanManager.createCreationalContext(bean);
Object reference = beanManager.getReference(bean, Object.class, creationalContext);
- String beanName = bean.getName();
+ }
+ }
+
+
+ /**
+ * Lets perform injection of all beans which use Camel annotations
+ */
+ public void onInjectionTarget(@Observes ProcessInjectionTarget event) {
+ final InjectionTarget injectionTarget = event.getInjectionTarget();
+ final Class beanClass = event.getAnnotatedType().getJavaClass();
+ // TODO this is a bit of a hack - what should the bean name be?
+ final String beanName = event.getInjectionTarget().toString();
+ final BeanAdapter adapter = createBeanAdapter(beanClass);
+ if (!adapter.isEmpty()) {
+ DelegateInjectionTarget newTarget = new DelegateInjectionTarget(injectionTarget) {
+
+ @Override
+ public void postConstruct(Object instance) {
+ super.postConstruct(instance);
+
+ // now lets do the post instruct to inject our Camel injections
+ adapter.inject(getPostProcessor(), instance, beanName);
+ }
+ };
+ event.setInjectionTarget(newTarget);
+ }
+ }
+
+ /**
+ * Perform injection on an existing bean such as a test case which is created directly by a testing framework.
+ *
+ * This is because BeanProvider.injectFields() does not invoke the onInjectionTarget() method so the injection
+ * of @Produce / @EndpointInject and processing of the @Consume annotations are not performed.
+ */
+ public void inject(Object bean) {
+ final BeanAdapter adapter = createBeanAdapter(bean.getClass());
+ if (!adapter.isEmpty()) {
+ // TODO this is a bit of a hack - what should the bean name be?
+ final String beanName = bean.toString();
+ adapter.inject(getPostProcessor(), bean, beanName);
+ }
+ }
+
+ private BeanAdapter createBeanAdapter(Class beanClass) {
+ final BeanAdapter adapter = new BeanAdapter();
+ ReflectionHelper.doWithFields(beanClass, new ReflectionHelper.FieldCallback() {
+ @Override
+ public void doWith(Field field) throws IllegalArgumentException, IllegalAccessException {
+ Produce produce = field.getAnnotation(Produce.class);
+ if (produce != null && !injectAnnotatedField(field)) {
+ adapter.addProduceField(field);
+ }
+ EndpointInject endpointInject = field.getAnnotation(EndpointInject.class);
+ if (endpointInject != null) {
+ adapter.addEndpointField(field);
+ }
+ }
+ });
+ ReflectionHelper.doWithMethods(beanClass, new ReflectionHelper.MethodCallback() {
+ @Override
+ public void doWith(Method method) throws IllegalArgumentException, IllegalAccessException {
+ Consume consume = method.getAnnotation(Consume.class);
+ if (consume != null) {
+ adapter.addConsumeMethod(method);
+ }
+ Produce produce = method.getAnnotation(Produce.class);
+ if (produce != null) {
+ adapter.addProduceMethod(method);
+ }
+ EndpointInject endpointInject = method.getAnnotation(EndpointInject.class);
+ if (endpointInject != null) {
+ adapter.addEndpointMethod(method);
+ }
+ }
+ });
+ return adapter;
+ }
- adapter.initialiseBean(postProcessor, reference, beanName);
+ protected DefaultCamelBeanPostProcessor getPostProcessor() {
+ if (postProcessor == null) {
+ postProcessor = new DefaultCamelBeanPostProcessor(getCamelContext());
}
+ return postProcessor;
}
protected BeanAdapter getBeanAdapter(Bean<?> bean) {
BeanAdapter beanAdapter = beanAdapters.get(bean);
if (beanAdapter == null) {
- beanAdapter = new BeanAdapter(bean);
+ beanAdapter = new BeanAdapter();
beanAdapters.put(bean, beanAdapter);
}
return beanAdapter;
@@ -185,4 +252,12 @@ public class CamelExtension implements E
}
return camelContext;
}
+
+
+ /**
+ * Returns true if this field is annotated with @Inject
+ */
+ protected static boolean injectAnnotatedField(Field field) {
+ return field.getAnnotation(Inject.class) != null;
+ }
}
Added: camel/trunk/components/camel-cdi/src/main/java/org/apache/camel/component/cdi/internal/DelegateInjectionTarget.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-cdi/src/main/java/org/apache/camel/component/cdi/internal/DelegateInjectionTarget.java?rev=1380220&view=auto
==============================================================================
--- camel/trunk/components/camel-cdi/src/main/java/org/apache/camel/component/cdi/internal/DelegateInjectionTarget.java (added)
+++ camel/trunk/components/camel-cdi/src/main/java/org/apache/camel/component/cdi/internal/DelegateInjectionTarget.java Mon Sep 3 12:39:51 2012
@@ -0,0 +1,64 @@
+/**
+ *
+ * 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.component.cdi.internal;
+
+import java.util.Set;
+import javax.enterprise.context.spi.CreationalContext;
+import javax.enterprise.inject.spi.InjectionPoint;
+import javax.enterprise.inject.spi.InjectionTarget;
+
+/**
+ * A helper class for creating delegate implementations of {@link InjectionTarget}
+ */
+public abstract class DelegateInjectionTarget implements InjectionTarget {
+ private final InjectionTarget delegate;
+
+ public DelegateInjectionTarget(InjectionTarget delegate) {
+ this.delegate = delegate;
+ }
+
+ @Override
+ public void dispose(Object instance) {
+ delegate.dispose(instance);
+ }
+
+ @Override
+ public Set<InjectionPoint> getInjectionPoints() {
+ return delegate.getInjectionPoints();
+ }
+
+ @Override
+ public void inject(Object instance, CreationalContext ctx) {
+ delegate.inject(instance, ctx);
+ }
+
+ @Override
+ public void postConstruct(Object instance) {
+ delegate.postConstruct(instance);
+ }
+
+ @Override
+ public void preDestroy(Object instance) {
+ delegate.preDestroy(instance);
+ }
+
+ @Override
+ public Object produce(CreationalContext creationalContext) {
+ return delegate.produce(creationalContext);
+ }
+}
Propchange: camel/trunk/components/camel-cdi/src/main/java/org/apache/camel/component/cdi/internal/DelegateInjectionTarget.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: camel/trunk/components/camel-cdi/src/test/java/org/apache/camel/cdi/CamelEndpointInjectTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-cdi/src/test/java/org/apache/camel/cdi/CamelEndpointInjectTest.java?rev=1380220&view=auto
==============================================================================
--- camel/trunk/components/camel-cdi/src/test/java/org/apache/camel/cdi/CamelEndpointInjectTest.java (added)
+++ camel/trunk/components/camel-cdi/src/test/java/org/apache/camel/cdi/CamelEndpointInjectTest.java Mon Sep 3 12:39:51 2012
@@ -0,0 +1,48 @@
+/**
+ * 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;
+
+import javax.inject.Inject;
+
+import org.apache.camel.Endpoint;
+import org.apache.camel.ProducerTemplate;
+import org.apache.camel.cdi.support.CamelEndpointInjectedBean;
+import org.apache.camel.cdi.support.ProduceInjectedBean;
+import org.apache.camel.component.mock.MockEndpoint;
+import org.junit.Test;
+
+/**
+ * Test endpoint injection using vanilla camel annotations without the use of @Inject
+ */
+public class CamelEndpointInjectTest extends CdiTestSupport {
+
+ @Inject
+ private CamelEndpointInjectedBean bean;
+
+ @Test
+ public void shouldInjectEndpoint() {
+ assertNotNull(bean);
+ Endpoint endpoint = bean.getEndpoint();
+ assertNotNull("Could not find injected endpoint!", endpoint);
+ assertEquals("endpoint URI", "direct://inject", endpoint.getEndpointUri());
+
+ MockEndpoint mockEndpoint = bean.getMockEndpoint();
+ assertNotNull("Could not find injected mock endpoint!", mockEndpoint);
+ assertEquals("mock endpoint URI", "mock://result", mockEndpoint.getEndpointUri());
+ }
+
+}
Propchange: camel/trunk/components/camel-cdi/src/test/java/org/apache/camel/cdi/CamelEndpointInjectTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Modified: camel/trunk/components/camel-cdi/src/test/java/org/apache/camel/cdi/CdiContextTestSupport.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-cdi/src/test/java/org/apache/camel/cdi/CdiContextTestSupport.java?rev=1380220&r1=1380219&r2=1380220&view=diff
==============================================================================
--- camel/trunk/components/camel-cdi/src/test/java/org/apache/camel/cdi/CdiContextTestSupport.java (original)
+++ camel/trunk/components/camel-cdi/src/test/java/org/apache/camel/cdi/CdiContextTestSupport.java Mon Sep 3 12:39:51 2012
@@ -19,6 +19,7 @@ package org.apache.camel.cdi;
import java.util.logging.LogManager;
import org.apache.camel.CamelContext;
+import org.apache.camel.component.cdi.internal.CamelExtension;
import org.apache.camel.test.junit4.CamelTestSupport;
import org.apache.deltaspike.cdise.api.CdiContainer;
import org.apache.deltaspike.cdise.api.CdiContainerLoader;
@@ -70,12 +71,9 @@ public abstract class CdiContextTestSupp
@Override
protected void applyCamelPostProcessor() throws Exception {
- // lets do nothing and let CDI do all the injection on this
-
- // TODO as a workaround until we support backwards compatible injection
- // on @Produce / @EndpointInject without the use of @Inject
- // lets keep the old behaviour
- super.applyCamelPostProcessor();
+ // lets perform any custom camel injection on the test case object
+ CamelExtension camelExtension = BeanProvider.getContextualReference(CamelExtension.class);
+ camelExtension.inject(this);
}
}
Modified: camel/trunk/components/camel-cdi/src/test/java/org/apache/camel/cdi/InjectCamelAnnotationsTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-cdi/src/test/java/org/apache/camel/cdi/InjectCamelAnnotationsTest.java?rev=1380220&r1=1380219&r2=1380220&view=diff
==============================================================================
--- camel/trunk/components/camel-cdi/src/test/java/org/apache/camel/cdi/InjectCamelAnnotationsTest.java (original)
+++ camel/trunk/components/camel-cdi/src/test/java/org/apache/camel/cdi/InjectCamelAnnotationsTest.java Mon Sep 3 12:39:51 2012
@@ -16,36 +16,38 @@
*/
package org.apache.camel.cdi;
-import org.apache.camel.*;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.camel.Endpoint;
+import org.apache.camel.EndpointInject;
+import org.apache.camel.Exchange;
+import org.apache.camel.Produce;
+import org.apache.camel.ProducerTemplate;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.cdi.store.Item;
-import org.apache.camel.cdi.store.ShoppingBean;
import org.apache.camel.component.mock.MockEndpoint;
import org.junit.Test;
-import javax.inject.Inject;
-import java.util.ArrayList;
-import java.util.List;
-
public class InjectCamelAnnotationsTest extends CdiContextTestSupport {
@EndpointInject(uri="direct:inject")
Endpoint directInjectEndpoint;
@EndpointInject(uri="mock:result")
- MockEndpoint mockResultendpoint;
+ MockEndpoint mockResultEndpoint;
@Produce(uri = "mock:result")
ProducerTemplate myProducer;
@Test
public void beanShouldBeInjected() throws InterruptedException {
- mockResultendpoint.expectedMessageCount(1);
+ mockResultEndpoint.expectedMessageCount(1);
myProducer.sendBody("direct:inject", "hello");
assertMockEndpointsSatisfied();
- Exchange exchange = mockResultendpoint.getExchanges().get(0);
+ Exchange exchange = mockResultEndpoint.getExchanges().get(0);
List<?> results = exchange.getIn().getBody(List.class);
List<Item> expected = itemsExpected();
assertNotNull(results);
@@ -69,7 +71,7 @@ public class InjectCamelAnnotationsTest
public void configure() throws Exception {
from(directInjectEndpoint)
.beanRef("shoppingBean", "listAllProducts")
- .to(mockResultendpoint);
+ .to(mockResultEndpoint);
}
};
}
Modified: camel/trunk/components/camel-cdi/src/test/java/org/apache/camel/cdi/ProduceInjectTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-cdi/src/test/java/org/apache/camel/cdi/ProduceInjectTest.java?rev=1380220&r1=1380219&r2=1380220&view=diff
==============================================================================
--- camel/trunk/components/camel-cdi/src/test/java/org/apache/camel/cdi/ProduceInjectTest.java (original)
+++ camel/trunk/components/camel-cdi/src/test/java/org/apache/camel/cdi/ProduceInjectTest.java Mon Sep 3 12:39:51 2012
@@ -18,12 +18,8 @@ package org.apache.camel.cdi;
import javax.inject.Inject;
-import org.apache.camel.Endpoint;
import org.apache.camel.ProducerTemplate;
-import org.apache.camel.cdi.support.EndpointInjectedBean;
import org.apache.camel.cdi.support.ProduceInjectedBean;
-import org.apache.camel.component.mock.MockEndpoint;
-import org.junit.Ignore;
import org.junit.Test;
/**
@@ -34,7 +30,7 @@ public class ProduceInjectTest extends C
@Inject
private ProduceInjectedBean bean;
- @Ignore
+ @Test
public void shouldInjectEndpoint() {
assertNotNull(bean);
ProducerTemplate producer = bean.getProducer();
Added: camel/trunk/components/camel-cdi/src/test/java/org/apache/camel/cdi/support/CamelEndpointInjectedBean.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-cdi/src/test/java/org/apache/camel/cdi/support/CamelEndpointInjectedBean.java?rev=1380220&view=auto
==============================================================================
--- camel/trunk/components/camel-cdi/src/test/java/org/apache/camel/cdi/support/CamelEndpointInjectedBean.java (added)
+++ camel/trunk/components/camel-cdi/src/test/java/org/apache/camel/cdi/support/CamelEndpointInjectedBean.java Mon Sep 3 12:39:51 2012
@@ -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.support;
+
+import javax.inject.Inject;
+
+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;
+ }
+}
Propchange: camel/trunk/components/camel-cdi/src/test/java/org/apache/camel/cdi/support/CamelEndpointInjectedBean.java
------------------------------------------------------------------------------
svn:eol-style = native