You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by as...@apache.org on 2016/04/20 17:32:15 UTC
camel git commit: Camel CDI: use Java 8 stream API
Repository: camel
Updated Branches:
refs/heads/master 11a8f695f -> 86bb7d547
Camel CDI: use Java 8 stream API
Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/86bb7d54
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/86bb7d54
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/86bb7d54
Branch: refs/heads/master
Commit: 86bb7d547f5f80c09dd0a4e5ddd7e56fce447784
Parents: 11a8f69
Author: Antonin Stefanutti <an...@stefanutti.fr>
Authored: Wed Apr 20 17:31:38 2016 +0200
Committer: Antonin Stefanutti <an...@stefanutti.fr>
Committed: Wed Apr 20 17:31:57 2016 +0200
----------------------------------------------------------------------
.../org/apache/camel/cdi/BeanManagerHelper.java | 5 +-
.../apache/camel/cdi/CamelContextProducer.java | 17 +++--
.../camel/cdi/CdiCamelBeanPostProcessor.java | 60 ++++++++--------
.../org/apache/camel/cdi/CdiCamelExtension.java | 62 ++++++++---------
.../org/apache/camel/cdi/CdiCamelFactory.java | 67 ++++++++----------
.../org/apache/camel/cdi/CdiCamelInjector.java | 4 +-
.../org/apache/camel/cdi/CdiCamelRegistry.java | 39 ++++++-----
.../java/org/apache/camel/cdi/CdiSpiHelper.java | 72 ++++++++------------
.../camel/cdi/ForwardingObserverMethod.java | 3 +-
.../main/java/org/apache/camel/cdi/Main.java | 34 ++++-----
.../apache/camel/cdi/SyntheticAnnotated.java | 12 ++--
.../camel/cdi/SyntheticBeanAttributes.java | 10 +--
.../org/apache/camel/cdi/XmlCdiBeanFactory.java | 38 ++++++-----
.../camel/cdi/XmlErrorHandlerFactoryBean.java | 9 +--
.../cdi/XmlFactoryBeanInjectionTarget.java | 4 +-
.../apache/camel/cdi/XmlProxyFactoryBean.java | 15 ++--
.../camel/cdi/XmlServiceExporterBean.java | 4 +-
.../cdi/rule/ExpectedDeploymentException.java | 35 ++++------
18 files changed, 233 insertions(+), 257 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/camel/blob/86bb7d54/components/camel-cdi/src/main/java/org/apache/camel/cdi/BeanManagerHelper.java
----------------------------------------------------------------------
diff --git a/components/camel-cdi/src/main/java/org/apache/camel/cdi/BeanManagerHelper.java b/components/camel-cdi/src/main/java/org/apache/camel/cdi/BeanManagerHelper.java
index d454270..555b342 100644
--- a/components/camel-cdi/src/main/java/org/apache/camel/cdi/BeanManagerHelper.java
+++ b/components/camel-cdi/src/main/java/org/apache/camel/cdi/BeanManagerHelper.java
@@ -19,7 +19,8 @@ package org.apache.camel.cdi;
import java.lang.annotation.Annotation;
import java.util.Optional;
import java.util.Set;
-import java.util.stream.Collectors;
+
+import static java.util.stream.Collectors.toSet;
import javax.enterprise.inject.spi.Bean;
import javax.enterprise.inject.spi.BeanManager;
@@ -33,7 +34,7 @@ final class BeanManagerHelper {
static <T> Set<T> getReferencesByType(BeanManager manager, Class<T> type, Annotation... qualifiers) {
return manager.getBeans(type, qualifiers).stream()
.map(bean -> getReference(manager, type, bean))
- .collect(Collectors.toSet());
+ .collect(toSet());
}
static <T> Optional<T> getReferenceByName(BeanManager manager, String name, Class<T> type) {
http://git-wip-us.apache.org/repos/asf/camel/blob/86bb7d54/components/camel-cdi/src/main/java/org/apache/camel/cdi/CamelContextProducer.java
----------------------------------------------------------------------
diff --git a/components/camel-cdi/src/main/java/org/apache/camel/cdi/CamelContextProducer.java b/components/camel-cdi/src/main/java/org/apache/camel/cdi/CamelContextProducer.java
index ac226f1..4dbe62e 100644
--- a/components/camel-cdi/src/main/java/org/apache/camel/cdi/CamelContextProducer.java
+++ b/components/camel-cdi/src/main/java/org/apache/camel/cdi/CamelContextProducer.java
@@ -16,10 +16,12 @@
*/
package org.apache.camel.cdi;
-import java.beans.Introspector;
import java.lang.annotation.Annotation;
import java.util.Set;
-import java.util.stream.Collectors;
+
+import static java.beans.Introspector.decapitalize;
+import static java.util.stream.Collectors.toSet;
+
import javax.enterprise.context.spi.CreationalContext;
import javax.enterprise.inject.InjectionException;
import javax.enterprise.inject.spi.Annotated;
@@ -34,13 +36,14 @@ import org.apache.camel.impl.DefaultCamelContext;
import org.apache.camel.impl.DefaultCamelContextNameStrategy;
import org.apache.camel.impl.ExplicitCamelContextNameStrategy;
import org.apache.camel.spi.CamelContextNameStrategy;
-import org.apache.camel.util.ObjectHelper;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import static org.apache.camel.cdi.AnyLiteral.ANY;
+import static org.apache.camel.cdi.CdiSpiHelper.getRawType;
import static org.apache.camel.cdi.CdiSpiHelper.isAnnotationType;
import static org.apache.camel.cdi.DefaultLiteral.DEFAULT;
+import static org.apache.camel.util.ObjectHelper.wrapRuntimeCamelException;
final class CamelContextProducer<T extends CamelContext> extends DelegateProducer<T> {
@@ -82,7 +85,7 @@ final class CamelContextProducer<T extends CamelContext> extends DelegateProduce
Set<Annotation> qualifiers = annotated.getAnnotations().stream()
.filter(isAnnotationType(Named.class).negate()
.and(q -> manager.isQualifier(q.annotationType())))
- .collect(Collectors.toSet());
+ .collect(toSet());
qualifiers.add(ANY);
if (qualifiers.size() == 1) {
qualifiers.add(DEFAULT);
@@ -104,7 +107,7 @@ final class CamelContextProducer<T extends CamelContext> extends DelegateProduce
try {
context.stop();
} catch (Exception cause) {
- throw ObjectHelper.wrapRuntimeCamelException(cause);
+ throw wrapRuntimeCamelException(cause);
}
}
}
@@ -121,10 +124,10 @@ final class CamelContextProducer<T extends CamelContext> extends DelegateProduce
} else if (annotated instanceof AnnotatedMethod) {
name = ((AnnotatedMethod) annotated).getJavaMember().getName();
if (name.startsWith("get")) {
- name = Introspector.decapitalize(name.substring(3));
+ name = decapitalize(name.substring(3));
}
} else {
- name = Introspector.decapitalize(CdiSpiHelper.getRawType(annotated.getBaseType()).getSimpleName());
+ name = decapitalize(getRawType(annotated.getBaseType()).getSimpleName());
}
}
return new ExplicitCamelContextNameStrategy(name);
http://git-wip-us.apache.org/repos/asf/camel/blob/86bb7d54/components/camel-cdi/src/main/java/org/apache/camel/cdi/CdiCamelBeanPostProcessor.java
----------------------------------------------------------------------
diff --git a/components/camel-cdi/src/main/java/org/apache/camel/cdi/CdiCamelBeanPostProcessor.java b/components/camel-cdi/src/main/java/org/apache/camel/cdi/CdiCamelBeanPostProcessor.java
index 8ca6092..f19a3a5 100644
--- a/components/camel-cdi/src/main/java/org/apache/camel/cdi/CdiCamelBeanPostProcessor.java
+++ b/components/camel-cdi/src/main/java/org/apache/camel/cdi/CdiCamelBeanPostProcessor.java
@@ -48,43 +48,41 @@ final class CdiCamelBeanPostProcessor extends DefaultCamelBeanPostProcessor {
}
protected void injectFields(final Object bean, final String beanName) {
- ReflectionHelper.doWithFields(bean.getClass(), new ReflectionHelper.FieldCallback() {
- public void doWith(Field field) throws IllegalAccessException {
- PropertyInject propertyInject = field.getAnnotation(PropertyInject.class);
- if (propertyInject != null) {
- try {
- injectFieldProperty(field, propertyInject.value(), propertyInject.defaultValue(), propertyInject.context(), bean, beanName);
- } catch (Exception cause) {
- throw new InjectionException("Injection of [" + propertyInject + "] for field [" + field + "] failed!", cause);
- }
+ ReflectionHelper.doWithFields(bean.getClass(), field -> {
+ PropertyInject propertyInject = field.getAnnotation(PropertyInject.class);
+ if (propertyInject != null) {
+ try {
+ injectFieldProperty(field, propertyInject.value(), propertyInject.defaultValue(), propertyInject.context(), bean, beanName);
+ } catch (Exception cause) {
+ throw new InjectionException("Injection of [" + propertyInject + "] for field [" + field + "] failed!", cause);
}
+ }
- BeanInject beanInject = field.getAnnotation(BeanInject.class);
- // TODO: proper support for multi Camel contexts
- if (beanInject != null && getPostProcessorHelper().matchContext(beanInject.context())) {
- try {
- injectFieldBean(field, beanInject.value(), bean, beanName);
- } catch (Exception cause) {
- throw new InjectionException("Injection of [" + beanInject + "] for field [" + field + "] failed!", cause);
- }
+ BeanInject beanInject = field.getAnnotation(BeanInject.class);
+ // TODO: proper support for multi Camel contexts
+ if (beanInject != null && getPostProcessorHelper().matchContext(beanInject.context())) {
+ try {
+ injectFieldBean(field, beanInject.value(), bean, beanName);
+ } catch (Exception cause) {
+ throw new InjectionException("Injection of [" + beanInject + "] for field [" + field + "] failed!", cause);
}
+ }
- EndpointInject endpointInject = field.getAnnotation(EndpointInject.class);
- if (endpointInject != null) {
- try {
- injectField(field, endpointInject.uri(), endpointInject.ref(), endpointInject.property(), endpointInject.context(), bean, beanName);
- } catch (Exception cause) {
- throw new InjectionException("Injection of [" + endpointInject + "] for field [" + field + "] failed!", cause);
- }
+ EndpointInject endpointInject = field.getAnnotation(EndpointInject.class);
+ if (endpointInject != null) {
+ try {
+ injectField(field, endpointInject.uri(), endpointInject.ref(), endpointInject.property(), endpointInject.context(), bean, beanName);
+ } catch (Exception cause) {
+ throw new InjectionException("Injection of [" + endpointInject + "] for field [" + field + "] failed!", cause);
}
+ }
- Produce produce = field.getAnnotation(Produce.class);
- if (produce != null) {
- try {
- injectField(field, produce.uri(), produce.ref(), produce.property(), produce.context(), bean, beanName);
- } catch (Exception cause) {
- throw new InjectionException("Injection of [" + produce + "] for field [" + field + "] failed!", cause);
- }
+ Produce produce = field.getAnnotation(Produce.class);
+ if (produce != null) {
+ try {
+ injectField(field, produce.uri(), produce.ref(), produce.property(), produce.context(), bean, beanName);
+ } catch (Exception cause) {
+ throw new InjectionException("Injection of [" + produce + "] for field [" + field + "] failed!", cause);
}
}
});
http://git-wip-us.apache.org/repos/asf/camel/blob/86bb7d54/components/camel-cdi/src/main/java/org/apache/camel/cdi/CdiCamelExtension.java
----------------------------------------------------------------------
diff --git a/components/camel-cdi/src/main/java/org/apache/camel/cdi/CdiCamelExtension.java b/components/camel-cdi/src/main/java/org/apache/camel/cdi/CdiCamelExtension.java
index 6808a43..4e38b77 100755
--- a/components/camel-cdi/src/main/java/org/apache/camel/cdi/CdiCamelExtension.java
+++ b/components/camel-cdi/src/main/java/org/apache/camel/cdi/CdiCamelExtension.java
@@ -22,16 +22,19 @@ import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.Collection;
-import java.util.Collections;
import java.util.EventObject;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
-import java.util.stream.Collectors;
import java.util.stream.Stream;
import static java.util.Collections.newSetFromMap;
+import static java.util.Collections.singleton;
+import static java.util.function.Predicate.isEqual;
+import static java.util.stream.Collectors.collectingAndThen;
+
+import static java.util.stream.Collectors.toSet;
import javax.enterprise.event.Observes;
import javax.enterprise.inject.Default;
@@ -39,13 +42,11 @@ import javax.enterprise.inject.InjectionException;
import javax.enterprise.inject.Produces;
import javax.enterprise.inject.spi.AfterBeanDiscovery;
import javax.enterprise.inject.spi.AfterDeploymentValidation;
-import javax.enterprise.inject.spi.AnnotatedMethod;
import javax.enterprise.inject.spi.AnnotatedType;
import javax.enterprise.inject.spi.Bean;
import javax.enterprise.inject.spi.BeanManager;
import javax.enterprise.inject.spi.Extension;
import javax.enterprise.inject.spi.InjectionPoint;
-import javax.enterprise.inject.spi.ObserverMethod;
import javax.enterprise.inject.spi.ProcessAnnotatedType;
import javax.enterprise.inject.spi.ProcessBean;
import javax.enterprise.inject.spi.ProcessInjectionTarget;
@@ -68,6 +69,7 @@ import org.apache.camel.ProducerTemplate;
import org.apache.camel.PropertyInject;
import org.apache.camel.RoutesBuilder;
import org.apache.camel.ServiceStatus;
+import org.apache.camel.component.mock.MockEndpoint;
import org.apache.camel.impl.DefaultCamelContext;
import org.apache.camel.management.event.AbstractExchangeEvent;
import org.apache.camel.model.RouteContainer;
@@ -84,6 +86,7 @@ import static org.apache.camel.cdi.CdiSpiHelper.hasAnnotation;
import static org.apache.camel.cdi.CdiSpiHelper.isAnnotationType;
import static org.apache.camel.cdi.DefaultLiteral.DEFAULT;
import static org.apache.camel.cdi.Excluded.EXCLUDED;
+import static org.apache.camel.cdi.ResourceHelper.getResource;
import static org.apache.camel.cdi.Startup.Literal.STARTUP;
public class CdiCamelExtension implements Extension {
@@ -189,25 +192,20 @@ public class CdiCamelExtension implements Extension {
}
private void camelFactoryProducers(@Observes ProcessAnnotatedType<CdiCamelFactory> pat, BeanManager manager) {
- AnnotatedType<CdiCamelFactory> at = pat.getAnnotatedType();
- Set<AnnotatedMethod<? super CdiCamelFactory>> methods = new HashSet<>();
- for (AnnotatedMethod<? super CdiCamelFactory> am : pat.getAnnotatedType().getMethods()) {
- if (!am.isAnnotationPresent(Produces.class)) {
- continue;
- }
- Class<?> type = getRawType(am.getBaseType());
- if (Endpoint.class.isAssignableFrom(type)
- || ConsumerTemplate.class.equals(type)
- || ProducerTemplate.class.equals(type)) {
- Set<Annotation> qualifiers = getQualifiers(am, manager);
- producerQualifiers.put(am.getJavaMember(), qualifiers);
- Set<Annotation> annotations = new HashSet<>(am.getAnnotations());
- annotations.removeAll(qualifiers);
- annotations.add(EXCLUDED);
- methods.add(new AnnotatedMethodDelegate<>(am, annotations));
- }
- }
- pat.setAnnotatedType(new AnnotatedTypeDelegate<>(at, methods));
+ pat.setAnnotatedType(
+ new AnnotatedTypeDelegate<>(
+ pat.getAnnotatedType(), pat.getAnnotatedType().getMethods().stream()
+ .filter(am -> am.isAnnotationPresent(Produces.class))
+ .filter(am -> am.getTypeClosure().stream().anyMatch(isEqual(Endpoint.class)
+ .or(isEqual(CdiEventEndpoint.class)).or(isEqual(MockEndpoint.class))
+ .or(isEqual(ConsumerTemplate.class)).or(isEqual(ProducerTemplate.class))))
+ .peek(am -> producerQualifiers.put(am.getJavaMember(), getQualifiers(am, manager)))
+ .map(am -> new AnnotatedMethodDelegate<>(am, am.getAnnotations().stream()
+ .filter(annotation -> !manager.isQualifier(annotation.annotationType()))
+ .collect(collectingAndThen(toSet(), annotations -> {
+ annotations.add(EXCLUDED); return annotations;
+ }))))
+ .collect(toSet())));
}
private <T extends EventObject> void camelEventNotifiers(@Observes ProcessObserverMethod<T, ?> pom) {
@@ -215,7 +213,8 @@ public class CdiCamelExtension implements Extension {
Type type = pom.getObserverMethod().getObservedType();
// Camel events are raw types
if (type instanceof Class && Class.class.cast(type).getPackage().equals(AbstractExchangeEvent.class.getPackage())) {
- eventQualifiers.addAll(pom.getObserverMethod().getObservedQualifiers().isEmpty() ? Collections.singleton(ANY) : pom.getObserverMethod().getObservedQualifiers());
+ eventQualifiers.addAll(pom.getObserverMethod().getObservedQualifiers().isEmpty()
+ ? singleton(ANY) : pom.getObserverMethod().getObservedQualifiers());
}
}
@@ -255,7 +254,7 @@ public class CdiCamelExtension implements Extension {
} catch (Exception cause) {
abd.addDefinitionError(
new InjectionException(
- "Error while importing resource [" + ResourceHelper.getResource(path) + "]", cause));
+ "Error while importing resource [" + getResource(path) + "]", cause));
}
}
}
@@ -304,10 +303,10 @@ public class CdiCamelExtension implements Extension {
// Update the CDI Camel factory beans
Set<Annotation> endpointQualifiers = cdiEventEndpoints.keySet().stream()
.flatMap(ip -> ip.getQualifiers().stream())
- .collect(Collectors.toSet());
+ .collect(toSet());
Set<Annotation> templateQualifiers = contextQualifiers.stream()
.filter(isAnnotationType(Default.class).or(isAnnotationType(Named.class)).negate())
- .collect(Collectors.toSet());
+ .collect(toSet());
// TODO: would be more correct to add a bean for each Camel context bean
producerBeans.entrySet().stream()
.map(producer -> new BeanDelegate<>(producer.getValue(),
@@ -318,9 +317,7 @@ public class CdiCamelExtension implements Extension {
.forEach(abd::addBean);
// Add CDI event endpoint observer methods
- for (ObserverMethod method : cdiEventEndpoints.values()) {
- abd.addObserverMethod(method);
- }
+ cdiEventEndpoints.values().forEach(abd::addObserverMethod);
}
private SyntheticBean<?> camelContextBean(BeanManager manager, Annotation... qualifiers) {
@@ -368,10 +365,7 @@ public class CdiCamelExtension implements Extension {
// the initialization of normal-scoped beans).
// FIXME: This does not work with OpenWebBeans for bean whose bean type is an
// interface as the Object methods does not get forwarded to the bean instances!
- for (AnnotatedType<?> type : eagerBeans) {
- // Calling toString is necessary to force the initialization of normal-scoped beans
- getReferencesByType(manager, type.getJavaClass(), ANY).toString();
- }
+ eagerBeans.forEach(type -> getReferencesByType(manager, type.getJavaClass(), ANY).toString());
manager.getBeans(Object.class, ANY, STARTUP).stream()
.forEach(bean -> getReference(manager, bean.getBeanClass(), bean).toString());
http://git-wip-us.apache.org/repos/asf/camel/blob/86bb7d54/components/camel-cdi/src/main/java/org/apache/camel/cdi/CdiCamelFactory.java
----------------------------------------------------------------------
diff --git a/components/camel-cdi/src/main/java/org/apache/camel/cdi/CdiCamelFactory.java b/components/camel-cdi/src/main/java/org/apache/camel/cdi/CdiCamelFactory.java
index 86fee57..8196d45 100755
--- a/components/camel-cdi/src/main/java/org/apache/camel/cdi/CdiCamelFactory.java
+++ b/components/camel-cdi/src/main/java/org/apache/camel/cdi/CdiCamelFactory.java
@@ -21,11 +21,14 @@ import java.lang.reflect.Field;
import java.lang.reflect.GenericArrayType;
import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
-import java.util.Arrays;
import java.util.Collection;
import java.util.HashSet;
-import java.util.Iterator;
+import java.util.Optional;
import java.util.Set;
+import java.util.stream.Stream;
+
+import static java.util.stream.Collectors.joining;
+
import javax.enterprise.event.Event;
import javax.enterprise.inject.Any;
import javax.enterprise.inject.Default;
@@ -44,6 +47,7 @@ import org.apache.camel.ProducerTemplate;
import org.apache.camel.TypeConverter;
import org.apache.camel.component.mock.MockEndpoint;
+import static org.apache.camel.cdi.CdiSpiHelper.isAnnotationType;
import static org.apache.camel.cdi.DefaultLiteral.DEFAULT;
final class CdiCamelFactory {
@@ -63,12 +67,9 @@ final class CdiCamelFactory {
@Default @Uri("")
// Qualifiers are dynamically added in CdiCamelExtension
private static ProducerTemplate producerTemplate(InjectionPoint ip, @Any Instance<CamelContext> instance, CdiCamelExtension extension) {
- Uri uri = CdiSpiHelper.getQualifierByType(ip, Uri.class);
- if (uri != null) {
- return producerTemplateFromUri(ip, instance, extension, uri);
- } else {
- return defaultProducerTemplate(ip, instance, extension);
- }
+ return getQualifierByType(ip, Uri.class)
+ .map(uri -> producerTemplateFromUri(ip, instance, extension, uri))
+ .orElseGet(() -> defaultProducerTemplate(ip, instance, extension));
}
private static ProducerTemplate producerTemplateFromUri(InjectionPoint ip, @Any Instance<CamelContext> instance, CdiCamelExtension extension, Uri uri) {
@@ -111,7 +112,7 @@ final class CdiCamelFactory {
@Typed(MockEndpoint.class)
// Qualifiers are dynamically added in CdiCamelExtension
private static MockEndpoint mockEndpointFromUri(InjectionPoint ip, @Any Instance<CamelContext> instance, CdiCamelExtension extension) {
- Uri uri = CdiSpiHelper.getQualifierByType(ip, Uri.class);
+ Uri uri = getQualifierByType(ip, Uri.class).get();
try {
CamelContext context = uri.context().isEmpty()
? selectContext(ip, instance, extension)
@@ -130,7 +131,7 @@ final class CdiCamelFactory {
@Typed(MockEndpoint.class)
// Qualifiers are dynamically added in CdiCamelExtension
private static MockEndpoint createMockEndpoint(InjectionPoint ip, @Any Instance<CamelContext> instance, CdiCamelExtension extension) {
- Mock mock = CdiSpiHelper.getQualifierByType(ip, Mock.class);
+ Mock mock = getQualifierByType(ip, Mock.class).get();
try {
CamelContext context = mock.context().isEmpty()
? selectContext(ip, instance, extension)
@@ -145,7 +146,7 @@ final class CdiCamelFactory {
@Produces
// Qualifiers are dynamically added in CdiCamelExtension
private static Endpoint endpoint(InjectionPoint ip, @Any Instance<CamelContext> instance, CdiCamelExtension extension) {
- Uri uri = CdiSpiHelper.getQualifierByType(ip, Uri.class);
+ Uri uri = getQualifierByType(ip, Uri.class).get();
try {
CamelContext context = uri.context().isEmpty()
? selectContext(ip, instance, extension)
@@ -179,7 +180,8 @@ final class CdiCamelFactory {
}
context.addEndpoint(uri,
new CdiEventEndpoint<>(
- event.select(literal, ip.getQualifiers().toArray(new Annotation[ip.getQualifiers().size()])), uri, context, (ForwardingObserverMethod<T>) extension.getObserverMethod(ip)));
+ event.select(literal, ip.getQualifiers().stream().toArray(Annotation[]::new)),
+ uri, context, (ForwardingObserverMethod<T>) extension.getObserverMethod(ip)));
}
return context.getEndpoint(uri, CdiEventEndpoint.class);
}
@@ -199,23 +201,14 @@ final class CdiCamelFactory {
if (qualifiers.isEmpty() && !instance.select(DEFAULT).isUnsatisfied()) {
return instance.select(DEFAULT).get();
}
- return instance.select(qualifiers.toArray(new Annotation[qualifiers.size()])).get();
+ return instance.select(qualifiers.stream().toArray(Annotation[]::new)).get();
}
private static String eventEndpointUri(Type type, Set<Annotation> qualifiers) {
- String uri = "cdi-event://" + authorityFromType(type);
- StringBuilder parameters = new StringBuilder();
- Iterator<Annotation> it = qualifiers.iterator();
- while (it.hasNext()) {
- parameters.append(it.next().annotationType().getCanonicalName());
- if (it.hasNext()) {
- parameters.append("%2C");
- }
- }
- if (parameters.length() > 0) {
- uri += "?qualifiers=" + parameters.toString();
- }
- return uri;
+ return "cdi-event://" + authorityFromType(type) + qualifiers.stream()
+ .map(Annotation::annotationType)
+ .map(Class::getCanonicalName)
+ .collect(joining("%2C", qualifiers.size() > 0 ? "?qualifiers=" : "", ""));
}
private static String authorityFromType(Type type) {
@@ -223,18 +216,9 @@ final class CdiCamelFactory {
return Class.class.cast(type).getName();
}
if (type instanceof ParameterizedType) {
- ParameterizedType pt = (ParameterizedType) type;
- StringBuilder builder = new StringBuilder(authorityFromType(pt.getRawType()));
- Iterator<Type> it = Arrays.asList(pt.getActualTypeArguments()).iterator();
- builder.append("%3C");
- while (it.hasNext()) {
- builder.append(authorityFromType(it.next()));
- if (it.hasNext()) {
- builder.append("%2C");
- }
- }
- builder.append("%3E");
- return builder.toString();
+ return Stream.of(((ParameterizedType) type).getActualTypeArguments())
+ .map(CdiCamelFactory::authorityFromType)
+ .collect(joining("%2C", "%3C", "%3E"));
}
if (type instanceof GenericArrayType) {
GenericArrayType arrayType = (GenericArrayType) type;
@@ -242,4 +226,11 @@ final class CdiCamelFactory {
}
throw new IllegalArgumentException("Cannot create URI authority for event type [" + type + "]");
}
+
+ private static <T extends Annotation> Optional<T> getQualifierByType(InjectionPoint ip, Class<T> type) {
+ return ip.getQualifiers().stream()
+ .filter(isAnnotationType(type))
+ .findAny()
+ .map(type::cast);
+ }
}
http://git-wip-us.apache.org/repos/asf/camel/blob/86bb7d54/components/camel-cdi/src/main/java/org/apache/camel/cdi/CdiCamelInjector.java
----------------------------------------------------------------------
diff --git a/components/camel-cdi/src/main/java/org/apache/camel/cdi/CdiCamelInjector.java b/components/camel-cdi/src/main/java/org/apache/camel/cdi/CdiCamelInjector.java
index d1e8ba9..a658051 100755
--- a/components/camel-cdi/src/main/java/org/apache/camel/cdi/CdiCamelInjector.java
+++ b/components/camel-cdi/src/main/java/org/apache/camel/cdi/CdiCamelInjector.java
@@ -20,6 +20,8 @@ import javax.enterprise.inject.spi.BeanManager;
import org.apache.camel.spi.Injector;
+import static org.apache.camel.cdi.BeanManagerHelper.getReferenceByType;
+
final class CdiCamelInjector implements Injector {
private final Injector injector;
@@ -33,7 +35,7 @@ final class CdiCamelInjector implements Injector {
@Override
public <T> T newInstance(Class<T> type) {
- return BeanManagerHelper.getReferenceByType(manager, type)
+ return getReferenceByType(manager, type)
.orElseGet(() -> injector.newInstance(type));
}
http://git-wip-us.apache.org/repos/asf/camel/blob/86bb7d54/components/camel-cdi/src/main/java/org/apache/camel/cdi/CdiCamelRegistry.java
----------------------------------------------------------------------
diff --git a/components/camel-cdi/src/main/java/org/apache/camel/cdi/CdiCamelRegistry.java b/components/camel-cdi/src/main/java/org/apache/camel/cdi/CdiCamelRegistry.java
index 1c49122..9593955 100755
--- a/components/camel-cdi/src/main/java/org/apache/camel/cdi/CdiCamelRegistry.java
+++ b/components/camel-cdi/src/main/java/org/apache/camel/cdi/CdiCamelRegistry.java
@@ -16,20 +16,25 @@
*/
package org.apache.camel.cdi;
-import java.util.HashMap;
import java.util.Map;
import java.util.Set;
+import static java.util.stream.Collectors.toMap;
+
import javax.enterprise.inject.spi.Bean;
import javax.enterprise.inject.spi.BeanManager;
import org.apache.camel.component.properties.PropertiesComponent;
import org.apache.camel.spi.Registry;
-import org.apache.camel.util.ObjectHelper;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import static org.apache.camel.cdi.AnyLiteral.ANY;
+import static org.apache.camel.cdi.BeanManagerHelper.getReference;
+import static org.apache.camel.cdi.BeanManagerHelper.getReferenceByName;
+import static org.apache.camel.cdi.BeanManagerHelper.getReferencesByType;
+import static org.apache.camel.util.ObjectHelper.notEmpty;
+import static org.apache.camel.util.ObjectHelper.notNull;
/**
* The {@link Registry} used by Camel to perform lookup into the CDI {@link BeanManager}.
@@ -47,43 +52,37 @@ final class CdiCamelRegistry implements Registry {
@Override
public Object lookupByName(String name) {
- ObjectHelper.notEmpty(name, "name");
+ notEmpty(name, "name");
logger.trace("Looking up bean with name [{}]", name);
// Work-around for WELD-2089
if ("properties".equals(name) && findByTypeWithName(PropertiesComponent.class).containsKey("properties")) {
- return BeanManagerHelper.getReferenceByName(manager, name, PropertiesComponent.class)
- .orElse(null);
+ return getReferenceByName(manager, name, PropertiesComponent.class).orElse(null);
}
- return BeanManagerHelper.getReferenceByName(manager, name, Object.class)
- .orElse(null);
+ return getReferenceByName(manager, name, Object.class).orElse(null);
}
@Override
public <T> T lookupByNameAndType(String name, Class<T> type) {
- ObjectHelper.notEmpty(name, "name");
- ObjectHelper.notNull(type, "type");
+ notEmpty(name, "name");
+ notNull(type, "type");
logger.trace("Looking up bean with name [{}] of type [{}]", name, type);
- return BeanManagerHelper.getReferenceByName(manager, name, type).orElse(null);
+ return getReferenceByName(manager, name, type).orElse(null);
}
@Override
public <T> Map<String, T> findByTypeWithName(Class<T> type) {
- ObjectHelper.notNull(type, "type");
+ notNull(type, "type");
logger.trace("Looking up named beans of type [{}]", type);
- Map<String, T> references = new HashMap<>();
- for (Bean<?> bean : manager.getBeans(type, ANY)) {
- if (bean.getName() != null) {
- references.put(bean.getName(), BeanManagerHelper.getReference(manager, type, bean));
- }
- }
- return references;
+ return manager.getBeans(type, ANY).stream()
+ .filter(bean -> bean.getName() != null)
+ .collect(toMap(Bean::getName, bean -> getReference(manager, type, bean)));
}
@Override
public <T> Set<T> findByType(Class<T> type) {
- ObjectHelper.notNull(type, "type");
+ notNull(type, "type");
logger.trace("Looking up beans of type [{}]", type);
- return BeanManagerHelper.getReferencesByType(manager, type, ANY);
+ return getReferencesByType(manager, type, ANY);
}
@Override
http://git-wip-us.apache.org/repos/asf/camel/blob/86bb7d54/components/camel-cdi/src/main/java/org/apache/camel/cdi/CdiSpiHelper.java
----------------------------------------------------------------------
diff --git a/components/camel-cdi/src/main/java/org/apache/camel/cdi/CdiSpiHelper.java b/components/camel-cdi/src/main/java/org/apache/camel/cdi/CdiSpiHelper.java
index 8abd50f..33530b7 100644
--- a/components/camel-cdi/src/main/java/org/apache/camel/cdi/CdiSpiHelper.java
+++ b/components/camel-cdi/src/main/java/org/apache/camel/cdi/CdiSpiHelper.java
@@ -25,16 +25,20 @@ import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
import java.lang.reflect.TypeVariable;
import java.lang.reflect.WildcardType;
-import java.security.AccessController;
import java.security.PrivilegedAction;
import java.util.Collection;
-import java.util.HashSet;
import java.util.Objects;
import java.util.Set;
import java.util.StringJoiner;
import java.util.function.Predicate;
-import java.util.stream.Collectors;
import java.util.stream.Stream;
+
+import static java.security.AccessController.doPrivileged;
+import static java.util.Objects.requireNonNull;
+import static java.util.stream.Collectors.collectingAndThen;
+import static java.util.stream.Collectors.joining;
+import static java.util.stream.Collectors.toSet;
+
import javax.enterprise.inject.spi.Annotated;
import javax.enterprise.inject.spi.AnnotatedConstructor;
import javax.enterprise.inject.spi.AnnotatedField;
@@ -42,9 +46,6 @@ import javax.enterprise.inject.spi.AnnotatedMethod;
import javax.enterprise.inject.spi.AnnotatedType;
import javax.enterprise.inject.spi.Bean;
import javax.enterprise.inject.spi.BeanManager;
-import javax.enterprise.inject.spi.InjectionPoint;
-
-import org.apache.camel.util.ObjectHelper;
import static org.apache.camel.cdi.AnyLiteral.ANY;
import static org.apache.camel.cdi.DefaultLiteral.DEFAULT;
@@ -55,21 +56,8 @@ final class CdiSpiHelper {
private CdiSpiHelper() {
}
- static <T extends Annotation> T getQualifierByType(InjectionPoint ip, Class<T> type) {
- return getFirstElementOfType(ip.getQualifiers(), type);
- }
-
- static <E, T extends E> T getFirstElementOfType(Collection<E> collection, Class<T> type) {
- for (E item : collection) {
- if ((item != null) && type.isAssignableFrom(item.getClass())) {
- return ObjectHelper.cast(type, item);
- }
- }
- return null;
- }
-
static Predicate<Annotation> isAnnotationType(Class<? extends Annotation> clazz) {
- Objects.requireNonNull(clazz);
+ requireNonNull(clazz);
return annotation -> clazz.equals(annotation.annotationType());
}
@@ -101,12 +89,10 @@ final class CdiSpiHelper {
@SafeVarargs
static boolean hasAnnotation(AnnotatedType<?> type, Class<? extends Annotation>... annotations) {
- for (Class<? extends Annotation> annotation : annotations) {
- if (hasAnnotation(type, annotation)) {
- return true;
- }
- }
- return false;
+ return Stream.of(annotations)
+ .filter(annotation -> hasAnnotation(type, annotation))
+ .findAny()
+ .isPresent();
}
static boolean hasAnnotation(AnnotatedType<?> type, Class<? extends Annotation> annotation) {
@@ -132,17 +118,17 @@ final class CdiSpiHelper {
}
static Set<Annotation> getQualifiers(Annotated annotated, BeanManager manager) {
- Set<Annotation> qualifiers = new HashSet<>();
- for (Annotation annotation : annotated.getAnnotations()) {
- if (manager.isQualifier(annotation.annotationType())) {
- qualifiers.add(annotation);
- }
- }
- if (qualifiers.isEmpty()) {
- qualifiers.add(DEFAULT);
- }
- qualifiers.add(ANY);
- return qualifiers;
+ return annotated.getAnnotations().stream()
+ .filter(annotation -> manager.isQualifier(annotation.annotationType()))
+ .collect(collectingAndThen(toSet(),
+ qualifiers -> {
+ if (qualifiers.isEmpty()) {
+ qualifiers.add(DEFAULT);
+ }
+ qualifiers.add(ANY);
+ return qualifiers;
+ })
+ );
}
/**
@@ -153,8 +139,8 @@ final class CdiSpiHelper {
bean.getScope().getName(),
createAnnotationCollectionId(bean.getQualifiers()),
createTypeCollectionId(bean.getTypes()))
- .filter(s -> s != null)
- .collect(Collectors.joining(","));
+ .filter(Objects::nonNull)
+ .collect(joining(","));
}
/**
@@ -164,7 +150,7 @@ final class CdiSpiHelper {
return types.stream()
.sorted((t1, t2) -> createTypeId(t1).compareTo(createTypeId(t2)))
.map(CdiSpiHelper::createTypeId)
- .collect(Collectors.joining(",", "[", "]"));
+ .collect(joining(",", "[", "]"));
}
/**
@@ -179,7 +165,7 @@ final class CdiSpiHelper {
return createTypeId(((ParameterizedType) type).getRawType())
+ Stream.of(((ParameterizedType) type).getActualTypeArguments())
.map(CdiSpiHelper::createTypeId)
- .collect(Collectors.joining(",", "<", ">"));
+ .collect(joining(",", "<", ">"));
}
if (type instanceof TypeVariable<?>) {
@@ -204,14 +190,14 @@ final class CdiSpiHelper {
return annotations.stream()
.sorted((a1, a2) -> a1.annotationType().getName().compareTo(a2.annotationType().getName()))
.map(CdiSpiHelper::createAnnotationId)
- .collect(Collectors.joining(",", "[", "]"));
+ .collect(joining(",", "[", "]"));
}
/**
* Generates a unique signature for an {@link Annotation}.
*/
private static String createAnnotationId(Annotation annotation) {
- Method[] methods = AccessController.doPrivileged(
+ Method[] methods = doPrivileged(
(PrivilegedAction<Method[]>) () -> annotation.annotationType().getDeclaredMethods());
return Stream.of(methods)
http://git-wip-us.apache.org/repos/asf/camel/blob/86bb7d54/components/camel-cdi/src/main/java/org/apache/camel/cdi/ForwardingObserverMethod.java
----------------------------------------------------------------------
diff --git a/components/camel-cdi/src/main/java/org/apache/camel/cdi/ForwardingObserverMethod.java b/components/camel-cdi/src/main/java/org/apache/camel/cdi/ForwardingObserverMethod.java
index 3f2b565..b0f8a32 100644
--- a/components/camel-cdi/src/main/java/org/apache/camel/cdi/ForwardingObserverMethod.java
+++ b/components/camel-cdi/src/main/java/org/apache/camel/cdi/ForwardingObserverMethod.java
@@ -26,9 +26,8 @@ import javax.enterprise.inject.spi.ObserverMethod;
import org.apache.camel.CamelContext;
-/* package-private */ final class ForwardingObserverMethod<T> implements ObserverMethod<T> {
+final class ForwardingObserverMethod<T> implements ObserverMethod<T> {
- // Should be replaced with the Java 8 functional interface Consumer<T>
private final AtomicReference<CdiEventEndpoint<T>> observer = new AtomicReference<>();
private final Type type;
http://git-wip-us.apache.org/repos/asf/camel/blob/86bb7d54/components/camel-cdi/src/main/java/org/apache/camel/cdi/Main.java
----------------------------------------------------------------------
diff --git a/components/camel-cdi/src/main/java/org/apache/camel/cdi/Main.java b/components/camel-cdi/src/main/java/org/apache/camel/cdi/Main.java
index 380573b..9b58aa3 100644
--- a/components/camel-cdi/src/main/java/org/apache/camel/cdi/Main.java
+++ b/components/camel-cdi/src/main/java/org/apache/camel/cdi/Main.java
@@ -16,9 +16,12 @@
*/
package org.apache.camel.cdi;
-import java.util.HashMap;
import java.util.Map;
import java.util.Set;
+
+import static java.util.function.Function.identity;
+import static java.util.stream.Collectors.toMap;
+
import javax.enterprise.inject.UnsatisfiedResolutionException;
import javax.enterprise.inject.spi.Bean;
import javax.enterprise.inject.spi.BeanManager;
@@ -27,11 +30,13 @@ import org.apache.camel.CamelContext;
import org.apache.camel.ProducerTemplate;
import org.apache.camel.main.MainSupport;
import org.apache.deltaspike.cdise.api.CdiContainer;
-import org.apache.deltaspike.cdise.api.CdiContainerLoader;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import static org.apache.camel.cdi.AnyLiteral.ANY;
+import static org.apache.camel.cdi.BeanManagerHelper.getReference;
+import static org.apache.camel.cdi.BeanManagerHelper.getReferenceByType;
+import static org.apache.deltaspike.cdise.api.CdiContainerLoader.getCdiContainer;
/**
* Camel CDI boot integration. Allows Camel and CDI to be booted up on the command line as a JVM process.
@@ -70,30 +75,25 @@ public class Main extends MainSupport {
@Override
protected ProducerTemplate findOrCreateCamelTemplate() {
- BeanManager manager = cdiContainer.getBeanManager();
- Bean<?> bean = manager.resolve(manager.getBeans(CamelContext.class));
- if (bean == null) {
- throw new UnsatisfiedResolutionException("No default Camel context is deployed, cannot create default ProducerTemplate!");
- }
- CamelContext context = (CamelContext) manager.getReference(bean, CamelContext.class, manager.createCreationalContext(bean));
- return context.createProducerTemplate();
+ return getReferenceByType(cdiContainer.getBeanManager(), CamelContext.class)
+ .orElseThrow(
+ () -> new UnsatisfiedResolutionException("No default Camel context is deployed, "
+ + "cannot create default ProducerTemplate!"))
+ .createProducerTemplate();
}
@Override
protected Map<String, CamelContext> getCamelContextMap() {
BeanManager manager = cdiContainer.getBeanManager();
- Map<String, CamelContext> answer = new HashMap<>();
- for (Bean<?> bean : manager.getBeans(CamelContext.class, ANY)) {
- CamelContext context = (CamelContext) manager.getReference(bean, CamelContext.class, manager.createCreationalContext(bean));
- answer.put(context.getName(), context);
- }
- return answer;
+ return manager.getBeans(CamelContext.class, ANY).stream()
+ .map(bean -> getReference(manager, CamelContext.class, bean))
+ .collect(toMap(CamelContext::getName, identity()));
}
@Override
protected void doStart() throws Exception {
// TODO: Use standard CDI Java SE support when CDI 2.0 becomes a prerequisite
- CdiContainer container = CdiContainerLoader.getCdiContainer();
+ CdiContainer container = getCdiContainer();
container.boot();
container.getContextControl().startContexts();
cdiContainer = container;
@@ -106,7 +106,7 @@ public class Main extends MainSupport {
BeanManager manager = cdiContainer.getBeanManager();
Set<Bean<?>> contexts = manager.getBeans(CamelContext.class);
// Warn if the default CDI Camel context has no routes
- if (contexts.size() == 1 && BeanManagerHelper.getReference(manager, CamelContext.class, contexts.iterator().next()).getRoutes().isEmpty()) {
+ if (contexts.size() == 1 && getReference(manager, CamelContext.class, contexts.iterator().next()).getRoutes().isEmpty()) {
LOG.warn("Camel CDI main has started with no Camel routes! "
+ "You may add some RouteBuilder beans to your project.");
}
http://git-wip-us.apache.org/repos/asf/camel/blob/86bb7d54/components/camel-cdi/src/main/java/org/apache/camel/cdi/SyntheticAnnotated.java
----------------------------------------------------------------------
diff --git a/components/camel-cdi/src/main/java/org/apache/camel/cdi/SyntheticAnnotated.java b/components/camel-cdi/src/main/java/org/apache/camel/cdi/SyntheticAnnotated.java
index 1c7f00a..679a8b8 100644
--- a/components/camel-cdi/src/main/java/org/apache/camel/cdi/SyntheticAnnotated.java
+++ b/components/camel-cdi/src/main/java/org/apache/camel/cdi/SyntheticAnnotated.java
@@ -18,11 +18,13 @@ package org.apache.camel.cdi;
import java.lang.annotation.Annotation;
import java.lang.reflect.Type;
-import java.util.Arrays;
import java.util.Collection;
-import java.util.Collections;
import java.util.HashSet;
import java.util.Set;
+
+import static java.util.Arrays.asList;
+import static java.util.Collections.unmodifiableSet;
+
import javax.enterprise.inject.spi.Annotated;
import static org.apache.camel.cdi.CdiSpiHelper.isAnnotationType;
@@ -37,7 +39,7 @@ final class SyntheticAnnotated implements Annotated {
private final Set<Annotation> annotations;
SyntheticAnnotated(Class<?> type, Set<Type> types, Annotation... annotations) {
- this(type, types, Arrays.asList(annotations));
+ this(type, types, asList(annotations));
}
SyntheticAnnotated(Class<?> type, Set<Type> types, Collection<Annotation> annotations) {
@@ -57,12 +59,12 @@ final class SyntheticAnnotated implements Annotated {
@Override
public Set<Type> getTypeClosure() {
- return Collections.unmodifiableSet(types);
+ return unmodifiableSet(types);
}
@Override
public Set<Annotation> getAnnotations() {
- return Collections.unmodifiableSet(annotations);
+ return unmodifiableSet(annotations);
}
@Override
http://git-wip-us.apache.org/repos/asf/camel/blob/86bb7d54/components/camel-cdi/src/main/java/org/apache/camel/cdi/SyntheticBeanAttributes.java
----------------------------------------------------------------------
diff --git a/components/camel-cdi/src/main/java/org/apache/camel/cdi/SyntheticBeanAttributes.java b/components/camel-cdi/src/main/java/org/apache/camel/cdi/SyntheticBeanAttributes.java
index e6f407c..6303b37 100644
--- a/components/camel-cdi/src/main/java/org/apache/camel/cdi/SyntheticBeanAttributes.java
+++ b/components/camel-cdi/src/main/java/org/apache/camel/cdi/SyntheticBeanAttributes.java
@@ -18,9 +18,11 @@ package org.apache.camel.cdi;
import java.lang.annotation.Annotation;
import java.lang.reflect.Type;
-import java.util.Collections;
import java.util.Set;
-import java.util.stream.Collectors;
+
+import static java.util.Collections.emptySet;
+import static java.util.stream.Collectors.toSet;
+
import javax.enterprise.context.Dependent;
import javax.enterprise.inject.spi.BeanManager;
import javax.inject.Named;
@@ -53,7 +55,7 @@ class SyntheticBeanAttributes<T> {
public Set<Annotation> getQualifiers() {
return annotated.getAnnotations().stream()
.filter(a -> manager.isQualifier(a.annotationType()))
- .collect(Collectors.toSet());
+ .collect(toSet());
}
public String getName() {
@@ -66,7 +68,7 @@ class SyntheticBeanAttributes<T> {
}
public Set<Class<? extends Annotation>> getStereotypes() {
- return Collections.emptySet();
+ return emptySet();
}
public Set<Type> getTypes() {
http://git-wip-us.apache.org/repos/asf/camel/blob/86bb7d54/components/camel-cdi/src/main/java/org/apache/camel/cdi/XmlCdiBeanFactory.java
----------------------------------------------------------------------
diff --git a/components/camel-cdi/src/main/java/org/apache/camel/cdi/XmlCdiBeanFactory.java b/components/camel-cdi/src/main/java/org/apache/camel/cdi/XmlCdiBeanFactory.java
index 51f2b68..d496d58 100644
--- a/components/camel-cdi/src/main/java/org/apache/camel/cdi/XmlCdiBeanFactory.java
+++ b/components/camel-cdi/src/main/java/org/apache/camel/cdi/XmlCdiBeanFactory.java
@@ -21,15 +21,18 @@ import java.io.InputStream;
import java.lang.annotation.Annotation;
import java.lang.reflect.Type;
import java.net.URL;
-import java.util.Collections;
import java.util.HashSet;
import java.util.List;
import java.util.Objects;
import java.util.Set;
-import java.util.stream.Collectors;
import java.util.stream.Stream;
import static java.lang.String.format;
+import static java.util.Collections.addAll;
+import static java.util.Collections.emptySet;
+import static java.util.Collections.singleton;
+import static java.util.Objects.requireNonNull;
+import static java.util.stream.Collectors.toSet;
import javax.enterprise.inject.CreationException;
import javax.enterprise.inject.spi.Bean;
@@ -51,14 +54,15 @@ import org.apache.camel.impl.DefaultCamelContext;
import org.apache.camel.model.RouteDefinition;
import org.apache.camel.model.RoutesDefinition;
import org.apache.camel.model.rest.RestDefinition;
-import org.apache.camel.util.ObjectHelper;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import static org.apache.camel.cdi.AnyLiteral.ANY;
import static org.apache.camel.cdi.ApplicationScopedLiteral.APPLICATION_SCOPED;
import static org.apache.camel.cdi.DefaultLiteral.DEFAULT;
+import static org.apache.camel.cdi.ResourceHelper.getResource;
import static org.apache.camel.cdi.Startup.Literal.STARTUP;
+import static org.apache.camel.util.ObjectHelper.isEmpty;
import static org.apache.camel.util.ObjectHelper.isNotEmpty;
final class XmlCdiBeanFactory {
@@ -82,10 +86,10 @@ final class XmlCdiBeanFactory {
}
Set<SyntheticBean<?>> beansFrom(String path) throws JAXBException, IOException {
- URL url = ResourceHelper.getResource(path);
+ URL url = getResource(path);
if (url == null) {
logger.warn("Unable to locate resource [{}] for import!", path);
- return Collections.emptySet();
+ return emptySet();
}
return beansFrom(url);
}
@@ -97,7 +101,7 @@ final class XmlCdiBeanFactory {
.unmarshal(xml);
if (node instanceof RoutesDefinition) {
RoutesDefinition routes = (RoutesDefinition) node;
- return Collections.singleton(routesDefinitionBean(routes, url));
+ return singleton(routesDefinitionBean(routes, url));
} else if (node instanceof ApplicationContextFactoryBean) {
ApplicationContextFactoryBean app = (ApplicationContextFactoryBean) node;
Set<SyntheticBean<?>> beans = new HashSet<>();
@@ -136,20 +140,20 @@ final class XmlCdiBeanFactory {
return beans;
} else if (node instanceof RestContextDefinition) {
RestContextDefinition factory = (RestContextDefinition) node;
- return Collections.singleton(restContextBean(factory, url));
+ return singleton(restContextBean(factory, url));
} else if (node instanceof RouteContextDefinition) {
RouteContextDefinition factory = (RouteContextDefinition) node;
- return Collections.singleton(routeContextBean(factory, url));
+ return singleton(routeContextBean(factory, url));
}
}
- return Collections.emptySet();
+ return emptySet();
}
private SyntheticBean<?> camelContextBean(CamelContextFactoryBean factory, URL url) {
Set<Annotation> annotations = new HashSet<>();
annotations.add(ANY);
if (factory.getId() != null) {
- Collections.addAll(annotations,
+ addAll(annotations,
ContextName.Literal.of(factory.getId()), NamedLiteral.of(factory.getId()));
} else {
annotations.add(DEFAULT);
@@ -260,7 +264,7 @@ final class XmlCdiBeanFactory {
}
private SyntheticBean<?> proxyFactoryBean(Bean<?> context, CamelProxyFactoryDefinition proxy, URL url) {
- if (ObjectHelper.isEmpty(proxy.getServiceRef()) && ObjectHelper.isEmpty(proxy.getServiceUrl())) {
+ if (isEmpty(proxy.getServiceRef()) && isEmpty(proxy.getServiceUrl())) {
throw new CreationException(
format("Missing [%s] or [%s] attribute for imported bean [%s] from resource [%s]",
"serviceRef", "serviceUrl", proxy.getId(), url));
@@ -279,7 +283,7 @@ final class XmlCdiBeanFactory {
private SyntheticBean<?> serviceExporterBean(Bean<?> context, CamelServiceExporterDefinition exporter, URL url) {
// TODO: replace with CreationException
- Objects.requireNonNull(exporter.getServiceRef(),
+ requireNonNull(exporter.getServiceRef(),
() -> format("Missing [%s] attribute for imported bean [%s] from resource [%s]",
"serviceRef", Objects.toString(exporter.getId(), "export"), url));
@@ -291,7 +295,7 @@ final class XmlCdiBeanFactory {
if (bean != null) {
type = bean.getBeanClass();
} else {
- Objects.requireNonNull(exporter.getServiceInterface(),
+ requireNonNull(exporter.getServiceInterface(),
() -> format("Missing [%s] attribute for imported bean [%s] from resource [%s]",
"serviceInterface", Objects.toString(exporter.getId(), "export"), url));
type = exporter.getServiceInterface();
@@ -315,14 +319,14 @@ final class XmlCdiBeanFactory {
}
private SyntheticBean<?> restContextBean(RestContextDefinition definition, URL url) {
- Objects.requireNonNull(definition.getId(),
+ requireNonNull(definition.getId(),
() -> format("Missing [%s] attribute for imported bean [%s] from resource [%s]",
"id", "restContext", url));
return new SyntheticBean<>(manager,
new SyntheticAnnotated(List.class,
Stream.of(List.class, new ListParameterizedType(RestDefinition.class))
- .collect(Collectors.toSet()),
+ .collect(toSet()),
ANY, NamedLiteral.of(definition.getId())),
List.class,
new SyntheticInjectionTarget<>(definition::getRests), bean ->
@@ -333,14 +337,14 @@ final class XmlCdiBeanFactory {
}
private SyntheticBean<?> routeContextBean(RouteContextDefinition definition, URL url) {
- Objects.requireNonNull(definition.getId(),
+ requireNonNull(definition.getId(),
() -> format("Missing [%s] attribute for imported bean [%s] from resource [%s]",
"id", "routeContext", url));
return new SyntheticBean<>(manager,
new SyntheticAnnotated(List.class,
Stream.of(List.class, new ListParameterizedType(RouteDefinition.class))
- .collect(Collectors.toSet()),
+ .collect(toSet()),
ANY, NamedLiteral.of(definition.getId())),
List.class,
new SyntheticInjectionTarget<>(definition::getRoutes), bean ->
http://git-wip-us.apache.org/repos/asf/camel/blob/86bb7d54/components/camel-cdi/src/main/java/org/apache/camel/cdi/XmlErrorHandlerFactoryBean.java
----------------------------------------------------------------------
diff --git a/components/camel-cdi/src/main/java/org/apache/camel/cdi/XmlErrorHandlerFactoryBean.java b/components/camel-cdi/src/main/java/org/apache/camel/cdi/XmlErrorHandlerFactoryBean.java
index 9966030..f88f7b6 100644
--- a/components/camel-cdi/src/main/java/org/apache/camel/cdi/XmlErrorHandlerFactoryBean.java
+++ b/components/camel-cdi/src/main/java/org/apache/camel/cdi/XmlErrorHandlerFactoryBean.java
@@ -18,6 +18,7 @@ package org.apache.camel.cdi;
import java.util.function.Function;
+import static java.lang.String.format;
import static java.util.Objects.nonNull;
import javax.enterprise.context.spi.CreationalContext;
@@ -96,7 +97,7 @@ final class XmlErrorHandlerFactoryBean extends SyntheticBean<ErrorHandlerBuilder
if (isNotEmpty(handler.getOnExceptionOccurredRef())) {
Processor processor = getReferenceByName(manager, handler.getOnExceptionOccurredRef(), Processor.class)
.orElseThrow(() -> new UnsatisfiedResolutionException(
- String.format("No bean with name [%s] to satisfy attribute [%s]",
+ format("No bean with name [%s] to satisfy attribute [%s]",
handler.getOnPrepareFailureRef(), "onExceptionOccurredRef")));
builder.setOnExceptionOccurred(processor);
}
@@ -104,7 +105,7 @@ final class XmlErrorHandlerFactoryBean extends SyntheticBean<ErrorHandlerBuilder
if (isNotEmpty(handler.getOnPrepareFailureRef())) {
Processor processor = getReferenceByName(manager, handler.getOnPrepareFailureRef(), Processor.class)
.orElseThrow(() -> new UnsatisfiedResolutionException(
- String.format("No bean with name [%s] to satisfy attribute [%s]",
+ format("No bean with name [%s] to satisfy attribute [%s]",
handler.getOnPrepareFailureRef(), "onPrepareFailureRef")));
builder.setOnPrepareFailure(processor);
}
@@ -112,7 +113,7 @@ final class XmlErrorHandlerFactoryBean extends SyntheticBean<ErrorHandlerBuilder
if (isNotEmpty(handler.getOnRedeliveryRef())) {
Processor processor = getReferenceByName(manager, handler.getOnRedeliveryRef(), Processor.class)
.orElseThrow(() -> new UnsatisfiedResolutionException(
- String.format("No bean with name [%s] to satisfy attribute [%s]",
+ format("No bean with name [%s] to satisfy attribute [%s]",
handler.getOnPrepareFailureRef(), "onRedeliveryRef")));
builder.setOnRedelivery(processor);
}
@@ -126,7 +127,7 @@ final class XmlErrorHandlerFactoryBean extends SyntheticBean<ErrorHandlerBuilder
if (isNotEmpty(handler.getRedeliveryPolicyRef())) {
RedeliveryPolicy policy = getReferenceByName(manager, handler.getRedeliveryPolicyRef(), RedeliveryPolicy.class)
.orElseThrow(() -> new UnsatisfiedResolutionException(
- String.format("No bean with name [%s] to satisfy attribute [%s]",
+ format("No bean with name [%s] to satisfy attribute [%s]",
handler.getRedeliveryPolicyRef(), "redeliveryPolicyRef")));
builder.setRedeliveryPolicy(policy);
}
http://git-wip-us.apache.org/repos/asf/camel/blob/86bb7d54/components/camel-cdi/src/main/java/org/apache/camel/cdi/XmlFactoryBeanInjectionTarget.java
----------------------------------------------------------------------
diff --git a/components/camel-cdi/src/main/java/org/apache/camel/cdi/XmlFactoryBeanInjectionTarget.java b/components/camel-cdi/src/main/java/org/apache/camel/cdi/XmlFactoryBeanInjectionTarget.java
index 234b653..b9df796 100644
--- a/components/camel-cdi/src/main/java/org/apache/camel/cdi/XmlFactoryBeanInjectionTarget.java
+++ b/components/camel-cdi/src/main/java/org/apache/camel/cdi/XmlFactoryBeanInjectionTarget.java
@@ -23,9 +23,9 @@ import javax.enterprise.inject.spi.BeanManager;
import org.apache.camel.CamelContext;
import org.apache.camel.core.xml.AbstractCamelFactoryBean;
-import org.apache.camel.util.ObjectHelper;
import static org.apache.camel.cdi.BeanManagerHelper.getReference;
+import static org.apache.camel.util.ObjectHelper.isEmpty;
final class XmlFactoryBeanInjectionTarget<T> extends SyntheticInjectionTarget<T> {
@@ -33,7 +33,7 @@ final class XmlFactoryBeanInjectionTarget<T> extends SyntheticInjectionTarget<T>
super(
() -> {
try {
- if (ObjectHelper.isEmpty(factory.getCamelContextId()) && context != null) {
+ if (isEmpty(factory.getCamelContextId()) && context != null) {
factory.setCamelContext(getReference(manager, CamelContext.class, context));
}
factory.afterPropertiesSet();
http://git-wip-us.apache.org/repos/asf/camel/blob/86bb7d54/components/camel-cdi/src/main/java/org/apache/camel/cdi/XmlProxyFactoryBean.java
----------------------------------------------------------------------
diff --git a/components/camel-cdi/src/main/java/org/apache/camel/cdi/XmlProxyFactoryBean.java b/components/camel-cdi/src/main/java/org/apache/camel/cdi/XmlProxyFactoryBean.java
index bb93451..e969f4c 100644
--- a/components/camel-cdi/src/main/java/org/apache/camel/cdi/XmlProxyFactoryBean.java
+++ b/components/camel-cdi/src/main/java/org/apache/camel/cdi/XmlProxyFactoryBean.java
@@ -28,14 +28,13 @@ import org.apache.camel.CamelContext;
import org.apache.camel.Endpoint;
import org.apache.camel.FailedToCreateProducerException;
import org.apache.camel.Producer;
-import org.apache.camel.component.bean.ProxyHelper;
import org.apache.camel.core.xml.CamelProxyFactoryDefinition;
-import org.apache.camel.util.ObjectHelper;
-import org.apache.camel.util.ServiceHelper;
import static org.apache.camel.cdi.BeanManagerHelper.getReference;
import static org.apache.camel.cdi.BeanManagerHelper.getReferenceByName;
+import static org.apache.camel.component.bean.ProxyHelper.createProxy;
import static org.apache.camel.util.ObjectHelper.isNotEmpty;
+import static org.apache.camel.util.ServiceHelper.startService;
final class XmlProxyFactoryBean<T> extends SyntheticBean<T> {
@@ -60,10 +59,10 @@ final class XmlProxyFactoryBean<T> extends SyntheticBean<T> {
: getReference(manager, CamelContext.class, this.context);
Endpoint endpoint;
- if (ObjectHelper.isNotEmpty(proxy.getServiceRef())) {
+ if (isNotEmpty(proxy.getServiceRef())) {
endpoint = context.getRegistry().lookupByNameAndType(proxy.getServiceRef(), Endpoint.class);
} else {
- if (ObjectHelper.isNotEmpty(proxy.getServiceUrl())) {
+ if (isNotEmpty(proxy.getServiceUrl())) {
endpoint = context.getEndpoint(proxy.getServiceUrl());
} else {
throw new IllegalStateException("serviceUrl or serviceRef must not be empty!");
@@ -72,7 +71,7 @@ final class XmlProxyFactoryBean<T> extends SyntheticBean<T> {
if (endpoint == null) {
throw new UnsatisfiedResolutionException("Could not resolve endpoint: "
- + (ObjectHelper.isNotEmpty(proxy.getServiceRef())
+ + (isNotEmpty(proxy.getServiceRef())
? proxy.getServiceRef()
: proxy.getServiceUrl()));
}
@@ -82,11 +81,11 @@ final class XmlProxyFactoryBean<T> extends SyntheticBean<T> {
try {
// Start the endpoint before we create the producer
- ServiceHelper.startService(endpoint);
+ startService(endpoint);
Producer producer = endpoint.createProducer();
// Add and start the producer
context.addService(producer, true, true);
- return ProxyHelper.createProxy(endpoint, bind, producer, (Class<T>) proxy.getServiceInterface());
+ return createProxy(endpoint, bind, producer, (Class<T>) proxy.getServiceInterface());
} catch (Exception cause) {
throw new FailedToCreateProducerException(endpoint, cause);
}
http://git-wip-us.apache.org/repos/asf/camel/blob/86bb7d54/components/camel-cdi/src/main/java/org/apache/camel/cdi/XmlServiceExporterBean.java
----------------------------------------------------------------------
diff --git a/components/camel-cdi/src/main/java/org/apache/camel/cdi/XmlServiceExporterBean.java b/components/camel-cdi/src/main/java/org/apache/camel/cdi/XmlServiceExporterBean.java
index cc35dc4..e1fc896 100644
--- a/components/camel-cdi/src/main/java/org/apache/camel/cdi/XmlServiceExporterBean.java
+++ b/components/camel-cdi/src/main/java/org/apache/camel/cdi/XmlServiceExporterBean.java
@@ -30,12 +30,12 @@ import org.apache.camel.Endpoint;
import org.apache.camel.FailedToCreateConsumerException;
import org.apache.camel.component.bean.BeanProcessor;
import org.apache.camel.core.xml.CamelServiceExporterDefinition;
-import org.apache.camel.util.ServiceHelper;
import static org.apache.camel.cdi.BeanManagerHelper.getReference;
import static org.apache.camel.cdi.BeanManagerHelper.getReferenceByName;
import static org.apache.camel.util.CamelContextHelper.getMandatoryEndpoint;
import static org.apache.camel.util.ObjectHelper.isNotEmpty;
+import static org.apache.camel.util.ServiceHelper.startService;
final class XmlServiceExporterBean<T> extends SyntheticBean<T> {
@@ -73,7 +73,7 @@ final class XmlServiceExporterBean<T> extends SyntheticBean<T> {
Endpoint endpoint = getMandatoryEndpoint(context, exporter.getUri());
try {
// need to start endpoint before we create consumer
- ServiceHelper.startService(endpoint);
+ startService(endpoint);
Consumer consumer = endpoint.createConsumer(new BeanProcessor(service, context));
// add and start consumer
context.addService(consumer, true, true);
http://git-wip-us.apache.org/repos/asf/camel/blob/86bb7d54/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
index 3f2769a..08ead49 100644
--- 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
@@ -44,28 +44,23 @@ public final class ExpectedDeploymentException implements TestRule {
private ExpectedDeploymentException() {
chain = RuleChain
.outerRule(log)
- .around(new TestRule() {
+ .around((base, description) -> new Statement() {
@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 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)));
}
- };
+ }
}
});
}