This is an automated email from the ASF dual-hosted git repository.
jbonofre pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/karaf-decanter.git
The following commit(s) were added to refs/heads/master by this push:
new 7ddb7cf [KARAF-6486] Upgrade to Camel 3.7.1
new 1b3d076 Merge pull request #229 from jbonofre/KARAF-6486
7ddb7cf is described below
commit 7ddb7cf78dfe7eb9743b88c05ecea56189283a98
Author: jbonofre <[email protected]>
AuthorDate: Fri Jan 29 10:22:42 2021 +0100
[KARAF-6486] Upgrade to Camel 3.7.1
---
appender/camel/pom.xml | 10 +++-
.../decanter/appender/camel/CamelAppender.java | 23 +++++++--
.../decanter/appender/camel/CamelAppenderTest.java | 4 +-
assembly/src/main/feature/feature.xml | 2 +-
.../decanter/collector/camel/CamelEventMapper.java | 54 ++++++++-----------
.../collector/camel/DecanterEventNotifier.java | 60 ++++++++++------------
.../collector/camel/DecanterInterceptStrategy.java | 3 +-
.../collector/camel/DefaultExchangeExtender.java | 50 +++++++++++++++---
.../collector/camel/DecanterEventNotifierTest.java | 24 ++++-----
itest/pom.xml | 4 +-
.../itests/appender/CamelAppenderTest.java | 23 +++++++--
.../itests/collector/CamelCollectorTest.java | 34 ++++++------
.../itests/processor/CamelProcessorTest.java | 11 +++-
pom.xml | 2 +-
processor/camel/pom.xml | 14 ++++-
.../decanter/processor/camel/CamelProcessor.java | 9 +++-
16 files changed, 202 insertions(+), 125 deletions(-)
diff --git a/appender/camel/pom.xml b/appender/camel/pom.xml
index b67d699..3710d86 100644
--- a/appender/camel/pom.xml
+++ b/appender/camel/pom.xml
@@ -35,8 +35,8 @@
<dependencies>
<dependency>
- <groupId>org.apache.camel</groupId>
- <artifactId>camel-core</artifactId>
+ <groupId>org.apache.camel.karaf</groupId>
+ <artifactId>camel-core-osgi</artifactId>
<version>${camel.version}</version>
</dependency>
<dependency>
@@ -46,6 +46,12 @@
<!-- test -->
<dependency>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-core</artifactId>
+ <version>${camel.version}</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
<scope>test</scope>
diff --git
a/appender/camel/src/main/java/org/apache/karaf/decanter/appender/camel/CamelAppender.java
b/appender/camel/src/main/java/org/apache/karaf/decanter/appender/camel/CamelAppender.java
index ffc0e3f..7f73899 100644
---
a/appender/camel/src/main/java/org/apache/karaf/decanter/appender/camel/CamelAppender.java
+++
b/appender/camel/src/main/java/org/apache/karaf/decanter/appender/camel/CamelAppender.java
@@ -18,8 +18,14 @@ package org.apache.karaf.decanter.appender.camel;
import org.apache.camel.CamelContext;
import org.apache.camel.ProducerTemplate;
+import org.apache.camel.core.osgi.OsgiClassResolver;
+import org.apache.camel.core.osgi.OsgiDataFormatResolver;
+import org.apache.camel.core.osgi.OsgiDefaultCamelContext;
+import org.apache.camel.core.osgi.OsgiLanguageResolver;
import org.apache.camel.impl.DefaultCamelContext;
import org.apache.karaf.decanter.appender.utils.EventFilter;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.FrameworkUtil;
import org.osgi.service.cm.ConfigurationException;
import org.osgi.service.component.ComponentContext;
import org.osgi.service.component.annotations.Activate;
@@ -48,19 +54,28 @@ public class CamelAppender implements EventHandler {
private final static Logger LOGGER =
LoggerFactory.getLogger(CamelAppender.class);
- @SuppressWarnings("unchecked")
@Activate
public void activate(ComponentContext context) throws
ConfigurationException {
- open(context.getProperties());
+ open(context.getProperties(), context.getBundleContext());
}
- public void open(Dictionary<String, Object> config) throws
ConfigurationException {
+ public void open(Dictionary<String, Object> config, BundleContext
bundleContext) throws ConfigurationException {
this.config = config;
if (config.get(DESTINATION_URI_KEY) == null) {
throw new ConfigurationException(DESTINATION_URI_KEY,
DESTINATION_URI_KEY + " is not defined");
}
LOGGER.debug("Creating CamelContext, and use the {} URI",
config.get(DESTINATION_URI_KEY));
- this.camelContext = new DefaultCamelContext();
+ if (bundleContext == null) {
+ this.camelContext = new DefaultCamelContext();
+ } else {
+ OsgiDefaultCamelContext osgiCamelContext = new
OsgiDefaultCamelContext(bundleContext);
+ osgiCamelContext.setName("decanter-appender-context");
+ osgiCamelContext.setClassResolver(new
OsgiClassResolver(osgiCamelContext, bundleContext));
+ osgiCamelContext.setDataFormatResolver(new
OsgiDataFormatResolver(bundleContext));
+ osgiCamelContext.setLanguageResolver(new
OsgiLanguageResolver(bundleContext));
+ this.camelContext = osgiCamelContext;
+ }
+ this.camelContext.start();
}
@Override
diff --git
a/appender/camel/src/test/java/org/apache/karaf/decanter/appender/camel/CamelAppenderTest.java
b/appender/camel/src/test/java/org/apache/karaf/decanter/appender/camel/CamelAppenderTest.java
index 4fca767..3eb95aa 100644
---
a/appender/camel/src/test/java/org/apache/karaf/decanter/appender/camel/CamelAppenderTest.java
+++
b/appender/camel/src/test/java/org/apache/karaf/decanter/appender/camel/CamelAppenderTest.java
@@ -62,7 +62,7 @@ public class CamelAppenderTest {
CamelAppender appender = new CamelAppender();
Hashtable<String, Object> config = new Hashtable<>();
config.put(CamelAppender.DESTINATION_URI_KEY, "direct-vm:decanter");
- appender.open(config);
+ appender.open(config, null);
Map<String, Object> data = new HashMap<>();
data.put(EventConstants.TIMESTAMP, TIMESTAMP);
@@ -87,7 +87,7 @@ public class CamelAppenderTest {
config.put(CamelAppender.DESTINATION_URI_KEY, "direct-vm:decanter");
config.put(EventFilter.PROPERTY_NAME_EXCLUDE_CONFIG, ".*refused.*");
config.put(EventFilter.PROPERTY_VALUE_EXCLUDE_CONFIG, ".*refused.*");
- appender.open(config);
+ appender.open(config, null);
Map<String, Object> data = new HashMap<>();
data.put(EventConstants.TIMESTAMP, TIMESTAMP);
diff --git a/assembly/src/main/feature/feature.xml
b/assembly/src/main/feature/feature.xml
index d39e479..f10865c 100644
--- a/assembly/src/main/feature/feature.xml
+++ b/assembly/src/main/feature/feature.xml
@@ -496,7 +496,7 @@
org.apache.felix.eventadmin.IgnoreTimeout=org.apache.karaf.decanter.
<feature name="decanter-processor-camel-core" version="${project.version}"
description="Karaf Decanter Camel Processor core">
<feature>decanter-common</feature>
<feature>camel-core</feature>
- <bundle
dependency="true">mvn:org.apache.camel/camel-core-osgi/${camel.version}</bundle>
+ <bundle
dependency="true">mvn:org.apache.camel.karaf/camel-core-osgi/${camel.version}</bundle>
<bundle>mvn:org.apache.karaf.decanter.processor/org.apache.karaf.decanter.processor.camel/${project.version}</bundle>
</feature>
diff --git
a/collector/camel/src/main/java/org/apache/karaf/decanter/collector/camel/CamelEventMapper.java
b/collector/camel/src/main/java/org/apache/karaf/decanter/collector/camel/CamelEventMapper.java
index 2c13a20..ded8345 100644
---
a/collector/camel/src/main/java/org/apache/karaf/decanter/collector/camel/CamelEventMapper.java
+++
b/collector/camel/src/main/java/org/apache/karaf/decanter/collector/camel/CamelEventMapper.java
@@ -18,25 +18,16 @@ package org.apache.karaf.decanter.collector.camel;
import java.net.InetAddress;
import java.net.UnknownHostException;
-import java.util.EventObject;
import java.util.HashMap;
import java.util.Map;
import org.apache.camel.CamelContext;
import org.apache.camel.Route;
-import org.apache.camel.management.event.CamelContextResumeFailureEvent;
-import org.apache.camel.management.event.CamelContextStartupFailureEvent;
-import org.apache.camel.management.event.CamelContextStopFailureEvent;
-import org.apache.camel.management.event.ExchangeFailureHandledEvent;
-import org.apache.camel.management.event.ExchangeRedeliveryEvent;
-import org.apache.camel.management.event.ExchangeSendingEvent;
-import org.apache.camel.management.event.ExchangeSentEvent;
-import org.apache.camel.management.event.ServiceStartupFailureEvent;
-import org.apache.camel.management.event.ServiceStopFailureEvent;
+import org.apache.camel.spi.CamelEvent;
public class CamelEventMapper {
- public Map<String, Object> toMap(EventObject event) throws
UnknownHostException {
+ public Map<String, Object> toMap(CamelEvent event) throws
UnknownHostException {
HashMap<String, Object> data = new HashMap<String, Object>();
data.put("eventType", event.getClass().getName());
data.put("type", "camelEvent");
@@ -46,59 +37,56 @@ public class CamelEventMapper {
data.put("timestamp", System.currentTimeMillis());
Object source = event.getSource();
- if (event instanceof ExchangeSentEvent) {
- ExchangeSentEvent sent = (ExchangeSentEvent) event;
+ if (event instanceof CamelEvent.ExchangeSentEvent) {
+ CamelEvent.ExchangeSentEvent sent = (CamelEvent.ExchangeSentEvent)
event;
data.put("sentToEndpointUri", sent.getEndpoint()
.getEndpointUri());
data.put("sentTimeTaken", sent.getTimeTaken());
}
- if (event instanceof ExchangeSendingEvent) {
- ExchangeSendingEvent sending = (ExchangeSendingEvent) event;
+ if (event instanceof CamelEvent.ExchangeSendingEvent) {
+ CamelEvent.ExchangeSendingEvent sending =
(CamelEvent.ExchangeSendingEvent) event;
data.put("sendingToEndpointUri",
sending.getEndpoint().getEndpointUri());
}
- if (event instanceof ExchangeFailureHandledEvent) {
- ExchangeFailureHandledEvent failHandled =
(ExchangeFailureHandledEvent) event;
- data.put("failureIsHandled", failHandled.isHandled());
+ if (event instanceof CamelEvent.ExchangeFailureHandledEvent) {
+ CamelEvent.ExchangeFailureHandledEvent failHandled =
(CamelEvent.ExchangeFailureHandledEvent) event;
data.put("failureIsDeadLetterChannel",
failHandled.isDeadLetterChannel());
data.put("failureHandler", failHandled.getFailureHandler() == null
? "null"
:
failHandled.getFailureHandler().getClass().getName());
}
- if (event instanceof ExchangeRedeliveryEvent) {
- ExchangeRedeliveryEvent redelivery = (ExchangeRedeliveryEvent)
event;
+ if (event instanceof CamelEvent.ExchangeRedeliveryEvent) {
+ CamelEvent.ExchangeRedeliveryEvent redelivery =
(CamelEvent.ExchangeRedeliveryEvent) event;
data.put("redeliveryAttempt", redelivery.getAttempt());
}
if (source instanceof Route) {
Route route = (Route)source;
data.put("routeId", route.getId());
- data.put("camelContextName",
route.getRouteContext().getCamelContext().getName());
+ data.put("camelContextName", route.getCamelContext().getName());
}
if (source instanceof CamelContext) {
CamelContext context = (CamelContext)source;
data.put("camelContextName", context.getName());
}
- if (event instanceof ServiceStartupFailureEvent) {
- ServiceStartupFailureEvent service = (ServiceStartupFailureEvent)
event;
+ if (event instanceof CamelEvent.ServiceStartupFailureEvent) {
+ CamelEvent.ServiceStartupFailureEvent service =
(CamelEvent.ServiceStartupFailureEvent) event;
data.put("serviceName", service.getService().getClass().getName());
- data.put("camelContextName", service.getContext().getName());
data.put("cause", service.getCause().toString());
}
- if (event instanceof ServiceStopFailureEvent) {
- ServiceStopFailureEvent service = (ServiceStopFailureEvent) event;
+ if (event instanceof CamelEvent.ServiceStopFailureEvent) {
+ CamelEvent.ServiceStopFailureEvent service =
(CamelEvent.ServiceStopFailureEvent) event;
data.put("serviceName", service.getService().getClass().getName());
- data.put("camelContextName", service.getContext().getName());
data.put("cause", service.getCause().toString());
}
- if (event instanceof CamelContextResumeFailureEvent) {
- CamelContextResumeFailureEvent context =
(CamelContextResumeFailureEvent) event;
+ if (event instanceof CamelEvent.CamelContextResumeFailureEvent) {
+ CamelEvent.CamelContextResumeFailureEvent context =
(CamelEvent.CamelContextResumeFailureEvent) event;
data.put("cause", context.getCause().toString());
}
- if (event instanceof CamelContextStartupFailureEvent) {
- CamelContextStartupFailureEvent context =
(CamelContextStartupFailureEvent) event;
+ if (event instanceof CamelEvent.CamelContextStartupFailureEvent) {
+ CamelEvent.CamelContextStartupFailureEvent context =
(CamelEvent.CamelContextStartupFailureEvent) event;
data.put("cause", context.getCause().toString());
}
- if (event instanceof CamelContextStopFailureEvent) {
- CamelContextStartupFailureEvent context =
(CamelContextStartupFailureEvent) event;
+ if (event instanceof CamelEvent.CamelContextStopFailureEvent) {
+ CamelEvent.CamelContextStartupFailureEvent context =
(CamelEvent.CamelContextStartupFailureEvent) event;
data.put("cause", context.getCause().toString());
}
return data;
diff --git
a/collector/camel/src/main/java/org/apache/karaf/decanter/collector/camel/DecanterEventNotifier.java
b/collector/camel/src/main/java/org/apache/karaf/decanter/collector/camel/DecanterEventNotifier.java
index df417d0..4aa8eea 100644
---
a/collector/camel/src/main/java/org/apache/karaf/decanter/collector/camel/DecanterEventNotifier.java
+++
b/collector/camel/src/main/java/org/apache/karaf/decanter/collector/camel/DecanterEventNotifier.java
@@ -16,20 +16,12 @@
*/
package org.apache.karaf.decanter.collector.camel;
-import java.util.EventObject;
import java.util.Map;
import org.apache.camel.CamelContext;
import org.apache.camel.Exchange;
import org.apache.camel.Route;
-import org.apache.camel.management.event.ExchangeCompletedEvent;
-import org.apache.camel.management.event.ExchangeCreatedEvent;
-import org.apache.camel.management.event.ExchangeFailureHandledEvent;
-import org.apache.camel.management.event.ExchangeRedeliveryEvent;
-import org.apache.camel.management.event.ExchangeSendingEvent;
-import org.apache.camel.management.event.ExchangeSentEvent;
-import org.apache.camel.management.event.ServiceStartupFailureEvent;
-import org.apache.camel.management.event.ServiceStopFailureEvent;
+import org.apache.camel.spi.CamelEvent;
import org.apache.camel.support.EventNotifierSupport;
import org.osgi.service.event.Event;
import org.osgi.service.event.EventAdmin;
@@ -78,49 +70,48 @@ public class DecanterEventNotifier extends
EventNotifierSupport {
dextender.setIncludeProperties(includeProperties);
}
- private boolean isIgnored(EventObject event) {
+ private boolean isIgnored(CamelEvent event) {
if (isIgnoredBySourceType(event)) {
return true;
}
- if (event instanceof ExchangeSentEvent &&
isIgnoreExchangeSentEvents()) {
+ if (event instanceof CamelEvent.ExchangeSentEvent &&
isIgnoreExchangeSentEvents()) {
return true;
}
- if (event instanceof ExchangeSendingEvent &&
isIgnoreExchangeSendingEvents()) {
+ if (event instanceof CamelEvent.ExchangeSendingEvent &&
isIgnoreExchangeSendingEvents()) {
return true;
}
- if (event instanceof ExchangeFailureHandledEvent &&
isIgnoreExchangeFailedEvents()) {
+ if (event instanceof CamelEvent.ExchangeFailureHandledEvent &&
isIgnoreExchangeFailedEvents()) {
return true;
}
- if (event instanceof ExchangeRedeliveryEvent &&
isIgnoreExchangeRedeliveryEvents()) {
+ if (event instanceof CamelEvent.ExchangeRedeliveryEvent &&
isIgnoreExchangeRedeliveryEvents()) {
return true;
}
- if (event instanceof ExchangeCompletedEvent &&
isIgnoreExchangeCompletedEvent()) {
+ if (event instanceof CamelEvent.ExchangeCompletedEvent &&
isIgnoreExchangeCompletedEvent()) {
return true;
}
- if (event instanceof ExchangeCreatedEvent &&
isIgnoreExchangeCreatedEvent()) {
+ if (event instanceof CamelEvent.ExchangeCreatedEvent &&
isIgnoreExchangeCreatedEvent()) {
return true;
}
- if (event instanceof ServiceStartupFailureEvent &&
isIgnoreServiceEvents()) {
+ if (event instanceof CamelEvent.ServiceStartupFailureEvent &&
isIgnoreServiceEvents()) {
return true;
}
- if (event instanceof ServiceStopFailureEvent &&
isIgnoreServiceEvents()) {
+ if (event instanceof CamelEvent.ServiceStopFailureEvent &&
isIgnoreServiceEvents()) {
return true;
}
return false;
}
- private boolean isIgnoredBySourceType(EventObject event) {
+ private boolean isIgnoredBySourceType(CamelEvent event) {
Object source = event.getSource();
return (source instanceof Exchange && isIgnoreExchangeEvents()
|| source instanceof Route && isIgnoreRouteEvents()
|| source instanceof CamelContext && isIgnoreCamelContextEvents());
}
- @Override
- public boolean isEnabled(EventObject eventObject) {
+ public boolean isEnabled(CamelEvent eventObject) {
if (eventObject == null) {
return false;
}
@@ -141,26 +132,29 @@ public class DecanterEventNotifier extends
EventNotifierSupport {
return context.getName().matches(camelContextMatcher);
} else if (source instanceof Route) {
Route route = (Route)source;
- boolean contextMatches =
route.getRouteContext().getCamelContext().getName().matches(camelContextMatcher);
+ boolean contextMatches =
route.getCamelContext().getName().matches(camelContextMatcher);
return contextMatches && route.getId().matches(routeMatcher);
} else {
return false;
}
}
- public void notify(EventObject event) throws Exception {
- try {
- Map<String, Object> eventMap = new CamelEventMapper().toMap(event);
- Object source = event.getSource();
- if (source instanceof Exchange) {
- dextender.extend(eventMap, (Exchange)source);
- if (extender != null) {
- extender.extend(eventMap, (Exchange)source);
+ @Override
+ public void notify(CamelEvent event) throws Exception {
+ if (isEnabled(event)) {
+ try {
+ Map<String, Object> eventMap = new
CamelEventMapper().toMap(event);
+ Object source = event.getSource();
+ if (source instanceof Exchange) {
+ dextender.extend(eventMap, (Exchange) source);
+ if (extender != null) {
+ extender.extend(eventMap, (Exchange) source);
+ }
}
+ eventAdmin.postEvent(new Event("decanter/collect/camel/event",
eventMap));
+ } catch (Exception ex) {
+ LOG.warn("Failed to handle event", ex);
}
- eventAdmin.postEvent(new Event("decanter/collect/camel/event",
eventMap));
- } catch (Exception ex) {
- LOG.warn("Failed to handle event", ex);
}
}
diff --git
a/collector/camel/src/main/java/org/apache/karaf/decanter/collector/camel/DecanterInterceptStrategy.java
b/collector/camel/src/main/java/org/apache/karaf/decanter/collector/camel/DecanterInterceptStrategy.java
index bea43d8..4b7cad8 100644
---
a/collector/camel/src/main/java/org/apache/karaf/decanter/collector/camel/DecanterInterceptStrategy.java
+++
b/collector/camel/src/main/java/org/apache/karaf/decanter/collector/camel/DecanterInterceptStrategy.java
@@ -21,6 +21,7 @@ import java.util.HashMap;
import org.apache.camel.CamelContext;
import org.apache.camel.Exchange;
+import org.apache.camel.NamedNode;
import org.apache.camel.Processor;
import org.apache.camel.model.ProcessorDefinition;
import org.apache.camel.spi.InterceptStrategy;
@@ -34,7 +35,7 @@ public class DecanterInterceptStrategy implements
InterceptStrategy {
private DecanterCamelEventExtender extender;
@Override
- public Processor wrapProcessorInInterceptors(CamelContext context,
ProcessorDefinition<?> definition, Processor target, Processor nextTarget)
throws Exception {
+ public Processor wrapProcessorInInterceptors(CamelContext context,
NamedNode definition, Processor target, Processor nextTarget) throws Exception {
Processor answer = new Processor() {
@Override
public void process(Exchange exchange) throws Exception {
diff --git
a/collector/camel/src/main/java/org/apache/karaf/decanter/collector/camel/DefaultExchangeExtender.java
b/collector/camel/src/main/java/org/apache/karaf/decanter/collector/camel/DefaultExchangeExtender.java
index 026e695..d2d7345 100644
---
a/collector/camel/src/main/java/org/apache/karaf/decanter/collector/camel/DefaultExchangeExtender.java
+++
b/collector/camel/src/main/java/org/apache/karaf/decanter/collector/camel/DefaultExchangeExtender.java
@@ -19,10 +19,8 @@ package org.apache.karaf.decanter.collector.camel;
import java.util.List;
import java.util.Map;
-import org.apache.camel.Exchange;
-import org.apache.camel.MessageHistory;
-import org.apache.camel.RouteNode;
-import org.apache.camel.util.MessageHelper;
+import org.apache.camel.*;
+import org.apache.camel.util.ObjectHelper;
/**
* Adds the default data from the Exchange to the data map
@@ -48,17 +46,17 @@ public class DefaultExchangeExtender implements
DecanterCamelEventExtender {
data.put("inHeaders", exchange.getIn().getHeaders());
}
if (includeBody) {
- data.put("inBody",
MessageHelper.extractBodyAsString(exchange.getIn()));
+ data.put("inBody", extractBodyAsString(exchange.getIn()));
}
- data.put("inBodyType",
MessageHelper.getBodyTypeName(exchange.getIn()));
+ data.put("inBodyType", getBodyTypeName(exchange.getIn()));
if (exchange.hasOut()) {
if (includeHeaders) {
data.put("outHeaders", exchange.getOut().getHeaders());
}
if (includeBody) {
- data.put("outBody",
MessageHelper.extractBodyAsString(exchange.getOut()));
+ data.put("outBody", extractBodyAsString(exchange.getOut()));
}
- data.put("outBodyType",
MessageHelper.getBodyTypeName(exchange.getOut()));
+ data.put("outBodyType", getBodyTypeName(exchange.getOut()));
}
data.put("causedByException", extractCausedByException(exchange));
}
@@ -89,6 +87,42 @@ public class DefaultExchangeExtender implements
DecanterCamelEventExtender {
return (cause != null) ? cause.toString() : null;
}
+ private static String extractBodyAsString(Message message) {
+ if (message == null) {
+ return null;
+ } else {
+ Object body = message.getBody();
+ if (body instanceof String) {
+ return (String)body;
+ } else {
+ StreamCache newBody =
(StreamCache)message.getBody(StreamCache.class);
+ if (newBody != null) {
+ message.setBody(newBody);
+ }
+
+ Object answer = message.getBody(String.class);
+ if (answer == null) {
+ answer = message.getBody();
+ }
+
+ if (newBody != null) {
+ newBody.reset();
+ }
+
+ return answer != null ? answer.toString() : null;
+ }
+ }
+ }
+
+ private static String getBodyTypeName(Message message) {
+ if (message == null) {
+ return null;
+ } else {
+ String answer = ObjectHelper.classCanonicalName(message.getBody());
+ return answer != null && answer.startsWith("java.lang.") ?
answer.substring(10) : answer;
+ }
+ }
+
public void setIncludeBody(boolean includeBody) {
this.includeBody = includeBody;
}
diff --git
a/collector/camel/src/test/java/org/apache/karaf/decanter/collector/camel/DecanterEventNotifierTest.java
b/collector/camel/src/test/java/org/apache/karaf/decanter/collector/camel/DecanterEventNotifierTest.java
index 6916bc1..5912bf8 100644
---
a/collector/camel/src/test/java/org/apache/karaf/decanter/collector/camel/DecanterEventNotifierTest.java
+++
b/collector/camel/src/test/java/org/apache/karaf/decanter/collector/camel/DecanterEventNotifierTest.java
@@ -20,7 +20,7 @@ import org.apache.camel.Exchange;
import org.apache.camel.ProducerTemplate;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.impl.DefaultCamelContext;
-import org.apache.camel.management.event.*;
+import org.apache.camel.spi.CamelEvent;
import org.junit.Assert;
import org.junit.Test;
import org.osgi.service.event.Event;
@@ -40,44 +40,38 @@ public class DecanterEventNotifierTest {
ProducerTemplate producerTemplate =
camelContext.createProducerTemplate();
producerTemplate.sendBodyAndHeader("direct:start", "TEST", "foo",
"bar");
- Assert.assertEquals(10, eventAdmin.getPostEvents().size());
+ Assert.assertEquals(12, eventAdmin.getPostEvents().size());
Event camelContextStartingEvent = eventAdmin.getPostEvents().get(0);
Assert.assertEquals("test-context",
camelContextStartingEvent.getProperty("camelContextName"));
- Assert.assertEquals(CamelContextStartingEvent.class.getName(),
camelContextStartingEvent.getProperty("eventType"));
+
Assert.assertEquals(org.apache.camel.impl.event.CamelContextStartingEvent.class.getName(),
camelContextStartingEvent.getProperty("eventType"));
Assert.assertEquals("camelEvent",
camelContextStartingEvent.getProperty("type"));
Event routeAddedEvent = eventAdmin.getPostEvents().get(1);
Assert.assertEquals("test-context",
routeAddedEvent.getProperty("camelContextName"));
- Assert.assertEquals("test-route",
routeAddedEvent.getProperty("routeId"));
- Assert.assertEquals(RouteAddedEvent.class.getName(),
routeAddedEvent.getProperty("eventType"));
+
Assert.assertEquals(org.apache.camel.impl.event.CamelContextRoutesStartingEvent.class.getName(),
routeAddedEvent.getProperty("eventType"));
Assert.assertEquals("camelEvent", routeAddedEvent.getProperty("type"));
Event routeStartedEvent = eventAdmin.getPostEvents().get(2);
Assert.assertEquals("test-context",
routeStartedEvent.getProperty("camelContextName"));
Assert.assertEquals("test-route",
routeStartedEvent.getProperty("routeId"));
- Assert.assertEquals(RouteStartedEvent.class.getName(),
routeStartedEvent.getProperty("eventType"));
+
Assert.assertEquals(org.apache.camel.impl.event.RouteAddedEvent.class.getName(),
routeStartedEvent.getProperty("eventType"));
Assert.assertEquals("camelEvent",
routeStartedEvent.getProperty("type"));
Event camelContextStartedEvent = eventAdmin.getPostEvents().get(3);
Assert.assertEquals("test-context",
camelContextStartedEvent.getProperty("camelContextName"));
- Assert.assertEquals(CamelContextStartedEvent.class.getName(),
camelContextStartedEvent.getProperty("eventType"));
+
Assert.assertEquals(org.apache.camel.impl.event.RouteStartedEvent.class.getName(),
camelContextStartedEvent.getProperty("eventType"));
Assert.assertEquals("camelEvent",
camelContextStartedEvent.getProperty("type"));
Event exchangeSendingEvent = eventAdmin.getPostEvents().get(4);
Assert.assertEquals("test-context",
exchangeSendingEvent.getProperty("camelContextName"));
- Assert.assertEquals(ExchangeSendingEvent.class.getName(),
exchangeSendingEvent.getProperty("eventType"));
+
Assert.assertEquals(org.apache.camel.impl.event.CamelContextRoutesStartedEvent.class.getName(),
exchangeSendingEvent.getProperty("eventType"));
Assert.assertEquals("camelEvent",
exchangeSendingEvent.getProperty("type"));
- Assert.assertEquals("InOnly",
exchangeSendingEvent.getProperty("exchangePattern"));
- Assert.assertEquals("direct://start",
exchangeSendingEvent.getProperty("sendingToEndpointUri"));
- Assert.assertEquals("TEST",
exchangeSendingEvent.getProperty("inBody"));
Event exchangeCreatedEvent = eventAdmin.getPostEvents().get(5);
Assert.assertEquals("test-context",
exchangeCreatedEvent.getProperty("camelContextName"));
- Assert.assertEquals(ExchangeCreatedEvent.class.getName(),
exchangeCreatedEvent.getProperty("eventType"));
+
Assert.assertEquals(org.apache.camel.impl.event.CamelContextStartedEvent.class.getName(),
exchangeCreatedEvent.getProperty("eventType"));
Assert.assertEquals("camelEvent",
exchangeCreatedEvent.getProperty("type"));
- Assert.assertEquals("InOnly",
exchangeCreatedEvent.getProperty("exchangePattern"));
- Assert.assertEquals("TEST",
exchangeCreatedEvent.getProperty("inBody"));
}
@Test
@@ -108,7 +102,7 @@ public class DecanterEventNotifierTest {
ProducerTemplate producerTemplate =
camelContext.createProducerTemplate();
producerTemplate.sendBodyAndHeader("direct:start", "TEST", "foo",
"bar");
- Assert.assertEquals(4, eventAdmin.getPostEvents().size());
+ Assert.assertEquals(6, eventAdmin.getPostEvents().size());
}
@Test
diff --git a/itest/pom.xml b/itest/pom.xml
index 09e13c3..9624b77 100644
--- a/itest/pom.xml
+++ b/itest/pom.xml
@@ -98,8 +98,8 @@
<!-- camel -->
<dependency>
- <groupId>org.apache.camel</groupId>
- <artifactId>camel-core</artifactId>
+ <groupId>org.apache.camel.karaf</groupId>
+ <artifactId>camel-core-osgi</artifactId>
<version>${camel.version}</version>
<scope>test</scope>
</dependency>
diff --git
a/itest/src/test/java/org/apache/karaf/decanter/itests/appender/CamelAppenderTest.java
b/itest/src/test/java/org/apache/karaf/decanter/itests/appender/CamelAppenderTest.java
index 4c2ff09..616d81d 100644
---
a/itest/src/test/java/org/apache/karaf/decanter/itests/appender/CamelAppenderTest.java
+++
b/itest/src/test/java/org/apache/karaf/decanter/itests/appender/CamelAppenderTest.java
@@ -16,9 +16,14 @@
*/
package org.apache.karaf.decanter.itests.appender;
+import org.apache.camel.CamelContext;
import org.apache.camel.Exchange;
import org.apache.camel.Processor;
import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.core.osgi.OsgiClassResolver;
+import org.apache.camel.core.osgi.OsgiDataFormatResolver;
+import org.apache.camel.core.osgi.OsgiDefaultCamelContext;
+import org.apache.camel.core.osgi.OsgiLanguageResolver;
import org.apache.camel.impl.DefaultCamelContext;
import org.apache.karaf.itests.KarafTestSupport;
import org.apache.karaf.jaas.boot.principal.RolePrincipal;
@@ -31,11 +36,14 @@ import org.ops4j.pax.exam.junit.PaxExam;
import org.ops4j.pax.exam.karaf.options.KarafDistributionOption;
import org.ops4j.pax.exam.spi.reactors.ExamReactorStrategy;
import org.ops4j.pax.exam.spi.reactors.PerClass;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.FrameworkUtil;
import org.osgi.service.event.Event;
import org.osgi.service.event.EventAdmin;
import java.util.ArrayList;
import java.util.HashMap;
+import java.util.Hashtable;
import java.util.List;
import java.util.stream.Stream;
@@ -53,7 +61,7 @@ public class CamelAppenderTest extends KarafTestSupport {
return Stream.of(super.config(),
options).flatMap(Stream::of).toArray(Option[]::new);
}
- @Test
+ @Test(timeout = 60000)
public void test() throws Exception {
final List<Exchange> exchanges = new ArrayList<>();
@@ -62,18 +70,25 @@ public class CamelAppenderTest extends KarafTestSupport {
RouteBuilder routeBuilder = new RouteBuilder() {
@Override
public void configure() throws Exception {
- from("direct-vm:decanter").process(new Processor() {
+ from("direct-vm:decanter").routeId("test").process(new
Processor() {
@Override
public void process(Exchange exchange) throws Exception {
+ System.out.println("Adding exchange");
exchanges.add(exchange);
}
});
}
};
- DefaultCamelContext camelContext = new DefaultCamelContext();
+
+ BundleContext bundleContext =
FrameworkUtil.getBundle(this.getClass()).getBundleContext();
+ OsgiDefaultCamelContext camelContext = new
OsgiDefaultCamelContext(bundleContext);
+ camelContext.setClassResolver(new OsgiClassResolver(camelContext,
bundleContext));
+ camelContext.setDataFormatResolver(new
OsgiDataFormatResolver(bundleContext));
+ camelContext.setLanguageResolver(new
OsgiLanguageResolver(bundleContext));
camelContext.setName("context-test");
- camelContext.addRoutes(routeBuilder);
+ bundleContext.registerService(CamelContext.class, camelContext, null);
camelContext.start();
+ camelContext.addRoutes(routeBuilder);
while (!camelContext.isStarted()) {
Thread.sleep(200);
diff --git
a/itest/src/test/java/org/apache/karaf/decanter/itests/collector/CamelCollectorTest.java
b/itest/src/test/java/org/apache/karaf/decanter/itests/collector/CamelCollectorTest.java
index 2b211d2..713ef91 100644
---
a/itest/src/test/java/org/apache/karaf/decanter/itests/collector/CamelCollectorTest.java
+++
b/itest/src/test/java/org/apache/karaf/decanter/itests/collector/CamelCollectorTest.java
@@ -18,6 +18,10 @@ package org.apache.karaf.decanter.itests.collector;
import org.apache.camel.ProducerTemplate;
import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.core.osgi.OsgiClassResolver;
+import org.apache.camel.core.osgi.OsgiDataFormatResolver;
+import org.apache.camel.core.osgi.OsgiDefaultCamelContext;
+import org.apache.camel.core.osgi.OsgiLanguageResolver;
import org.apache.camel.impl.DefaultCamelContext;
import org.apache.karaf.decanter.collector.camel.DecanterEventNotifier;
import org.apache.karaf.decanter.collector.camel.DecanterInterceptStrategy;
@@ -85,11 +89,14 @@ public class CamelCollectorTest extends KarafTestSupport {
from("direct:test").routeId("route-test").to("log:foo");
}
};
- DefaultCamelContext camelContext = new DefaultCamelContext();
+ OsgiDefaultCamelContext camelContext = new
OsgiDefaultCamelContext(bundleContext);
+ camelContext.setClassResolver(new OsgiClassResolver(camelContext,
bundleContext));
+ camelContext.setDataFormatResolver(new
OsgiDataFormatResolver(bundleContext));
+ camelContext.setLanguageResolver(new
OsgiLanguageResolver(bundleContext));
camelContext.setName("context-test");
- camelContext.addRoutes(routeBuilder);
camelContext.addInterceptStrategy(tracer);
camelContext.start();
+ camelContext.addRoutes(routeBuilder);
// send a exchange into the route
ProducerTemplate producerTemplate =
camelContext.createProducerTemplate();
@@ -101,7 +108,6 @@ public class CamelCollectorTest extends KarafTestSupport {
Assert.assertEquals("context-test",
received.get(0).getProperty("camelContextName"));
Assert.assertEquals("InOnly",
received.get(0).getProperty("exchangePattern"));
Assert.assertEquals("camelTracer",
received.get(0).getProperty("type"));
- Assert.assertEquals("log:foo",
received.get(0).getProperty("to1.label"));
Assert.assertEquals("route-test",
received.get(0).getProperty("routeId"));
Assert.assertEquals("direct://test",
received.get(0).getProperty("fromEndpointUri"));
Assert.assertEquals("root", received.get(0).getProperty("karafName"));
@@ -139,11 +145,14 @@ public class CamelCollectorTest extends KarafTestSupport {
}
};
- DefaultCamelContext camelContext = new DefaultCamelContext();
+ OsgiDefaultCamelContext camelContext = new
OsgiDefaultCamelContext(bundleContext);
+ camelContext.setClassResolver(new OsgiClassResolver(camelContext,
bundleContext));
+ camelContext.setDataFormatResolver(new
OsgiDataFormatResolver(bundleContext));
+ camelContext.setLanguageResolver(new
OsgiLanguageResolver(bundleContext));
camelContext.setName("context-test");
- camelContext.addRoutes(builder);
camelContext.getManagementStrategy().addEventNotifier(notifier);
camelContext.start();
+ camelContext.addRoutes(builder);
// send a exchange into the route
ProducerTemplate producerTemplate =
camelContext.createProducerTemplate();
@@ -154,41 +163,36 @@ public class CamelCollectorTest extends KarafTestSupport {
// camel context starting
Assert.assertEquals("decanter/collect/camel/event",
received.get(0).getTopic());
Assert.assertEquals("root", received.get(0).getProperty("karafName"));
-
Assert.assertEquals("org.apache.camel.management.event.CamelContextStartingEvent",
received.get(0).getProperty("eventType"));
+
Assert.assertEquals("org.apache.camel.impl.event.CamelContextStartingEvent",
received.get(0).getProperty("eventType"));
Assert.assertEquals("context-test",
received.get(0).getProperty("camelContextName"));
Assert.assertEquals("camelEvent", received.get(0).getProperty("type"));
// add route
Assert.assertEquals("decanter/collect/camel/event",
received.get(1).getTopic());
Assert.assertEquals("root", received.get(1).getProperty("karafName"));
-
Assert.assertEquals("org.apache.camel.management.event.RouteAddedEvent",
received.get(1).getProperty("eventType"));
+
Assert.assertEquals("org.apache.camel.impl.event.CamelContextRoutesStartingEvent",
received.get(1).getProperty("eventType"));
Assert.assertEquals("context-test",
received.get(1).getProperty("camelContextName"));
- Assert.assertEquals("route-test",
received.get(1).getProperty("routeId"));
Assert.assertEquals("camelEvent", received.get(1).getProperty("type"));
// route started
Assert.assertEquals("decanter/collect/camel/event",
received.get(2).getTopic());
Assert.assertEquals("root", received.get(2).getProperty("karafName"));
-
Assert.assertEquals("org.apache.camel.management.event.RouteStartedEvent",
received.get(2).getProperty("eventType"));
+
Assert.assertEquals("org.apache.camel.impl.event.CamelContextRoutesStartedEvent",
received.get(2).getProperty("eventType"));
Assert.assertEquals("context-test",
received.get(2).getProperty("camelContextName"));
- Assert.assertEquals("route-test",
received.get(2).getProperty("routeId"));
Assert.assertEquals("camelEvent", received.get(2).getProperty("type"));
// camel context started
Assert.assertEquals("decanter/collect/camel/event",
received.get(3).getTopic());
Assert.assertEquals("root", received.get(3).getProperty("karafName"));
-
Assert.assertEquals("org.apache.camel.management.event.CamelContextStartedEvent",
received.get(3).getProperty("eventType"));
+
Assert.assertEquals("org.apache.camel.impl.event.CamelContextStartedEvent",
received.get(3).getProperty("eventType"));
Assert.assertEquals("context-test",
received.get(3).getProperty("camelContextName"));
Assert.assertEquals("camelEvent", received.get(3).getProperty("type"));
// exchange sending
Assert.assertEquals("decanter/collect/camel/event",
received.get(4).getTopic());
Assert.assertEquals("root", received.get(4).getProperty("karafName"));
-
Assert.assertEquals("org.apache.camel.management.event.ExchangeSendingEvent",
received.get(4).getProperty("eventType"));
+ Assert.assertEquals("org.apache.camel.impl.event.RouteAddedEvent",
received.get(4).getProperty("eventType"));
Assert.assertEquals("context-test",
received.get(4).getProperty("camelContextName"));
- Assert.assertEquals("direct://test",
received.get(4).getProperty("fromEndpointUri"));
- Assert.assertEquals("This is a test",
received.get(4).getProperty("inBody"));
- Assert.assertEquals("String",
received.get(4).getProperty("inBodyType"));
}
}
diff --git
a/itest/src/test/java/org/apache/karaf/decanter/itests/processor/CamelProcessorTest.java
b/itest/src/test/java/org/apache/karaf/decanter/itests/processor/CamelProcessorTest.java
index 62bbc2d..552b6fd 100644
---
a/itest/src/test/java/org/apache/karaf/decanter/itests/processor/CamelProcessorTest.java
+++
b/itest/src/test/java/org/apache/karaf/decanter/itests/processor/CamelProcessorTest.java
@@ -19,6 +19,10 @@ package org.apache.karaf.decanter.itests.processor;
import org.apache.camel.Exchange;
import org.apache.camel.Processor;
import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.core.osgi.OsgiClassResolver;
+import org.apache.camel.core.osgi.OsgiDataFormatResolver;
+import org.apache.camel.core.osgi.OsgiDefaultCamelContext;
+import org.apache.camel.core.osgi.OsgiLanguageResolver;
import org.apache.camel.impl.DefaultCamelContext;
import org.apache.karaf.itests.KarafTestSupport;
import org.apache.karaf.jaas.boot.principal.RolePrincipal;
@@ -64,8 +68,12 @@ public class CamelProcessorTest extends KarafTestSupport {
}
System.out.println("Creating test Camel route ...");
- DefaultCamelContext camelContext = new DefaultCamelContext();
+ OsgiDefaultCamelContext camelContext = new
OsgiDefaultCamelContext(bundleContext);
+ camelContext.setClassResolver(new OsgiClassResolver(camelContext,
bundleContext));
+ camelContext.setDataFormatResolver(new
OsgiDataFormatResolver(bundleContext));
+ camelContext.setLanguageResolver(new
OsgiLanguageResolver(bundleContext));
camelContext.setName("decanter-test-context");
+ camelContext.start();
camelContext.addRoutes(new RouteBuilder() {
@Override
public void configure() throws Exception {
@@ -80,7 +88,6 @@ public class CamelProcessorTest extends KarafTestSupport {
}).to("direct-vm:decanter-callback");
}
});
- camelContext.start();
while (!camelContext.isStarted()) {
Thread.sleep(200);
}
diff --git a/pom.xml b/pom.xml
index 0447f2e..7814a7d 100644
--- a/pom.xml
+++ b/pom.xml
@@ -38,7 +38,7 @@
<baseline>1.0.0</baseline>
<baseline.skip>true</baseline.skip>
<activemq.version>5.15.13</activemq.version>
- <camel.version>2.25.2</camel.version>
+ <camel.version>3.7.1</camel.version>
<cassandra.driver.version>4.9.0</cassandra.driver.version>
<glassfish-json.version>1.1.4</glassfish-json.version>
<json-api.version>1.1.4</json-api.version>
diff --git a/processor/camel/pom.xml b/processor/camel/pom.xml
index a7c8cef..74c7077 100644
--- a/processor/camel/pom.xml
+++ b/processor/camel/pom.xml
@@ -35,7 +35,7 @@
<dependencies>
<dependency>
- <groupId>org.apache.camel</groupId>
+ <groupId>org.apache.camel.karaf</groupId>
<artifactId>camel-core-osgi</artifactId>
<version>${camel.version}</version>
</dependency>
@@ -46,6 +46,18 @@
<artifactId>slf4j-simple</artifactId>
<scope>test</scope>
</dependency>
+ <dependency>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-core-languages</artifactId>
+ <version>${camel.version}</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-directvm</artifactId>
+ <version>${camel.version}</version>
+ <scope>test</scope>
+ </dependency>
</dependencies>
<build>
diff --git
a/processor/camel/src/main/java/org/apache/karaf/decanter/processor/camel/CamelProcessor.java
b/processor/camel/src/main/java/org/apache/karaf/decanter/processor/camel/CamelProcessor.java
index 1f4b224..ecd610b 100644
---
a/processor/camel/src/main/java/org/apache/karaf/decanter/processor/camel/CamelProcessor.java
+++
b/processor/camel/src/main/java/org/apache/karaf/decanter/processor/camel/CamelProcessor.java
@@ -21,7 +21,10 @@ import org.apache.camel.Exchange;
import org.apache.camel.Processor;
import org.apache.camel.ProducerTemplate;
import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.core.osgi.OsgiClassResolver;
+import org.apache.camel.core.osgi.OsgiDataFormatResolver;
import org.apache.camel.core.osgi.OsgiDefaultCamelContext;
+import org.apache.camel.core.osgi.OsgiLanguageResolver;
import org.apache.camel.impl.DefaultCamelContext;
import org.apache.camel.model.ModelCamelContext;
import org.apache.camel.model.RouteDefinition;
@@ -70,7 +73,11 @@ public class CamelProcessor implements EventHandler {
delegateUri = (configuration.get("delegate.uri") != null) ?
configuration.get("delegate.uri").toString() : "direct-vm:decanter-delegate";
if (bundleContext != null) {
- camelContext = new OsgiDefaultCamelContext(bundleContext);
+ OsgiDefaultCamelContext osgiCamelContext = new
OsgiDefaultCamelContext(bundleContext);
+ osgiCamelContext.setClassResolver(new
OsgiClassResolver(camelContext, bundleContext));
+ osgiCamelContext.setDataFormatResolver(new
OsgiDataFormatResolver(bundleContext));
+ osgiCamelContext.setLanguageResolver(new
OsgiLanguageResolver(bundleContext));
+ camelContext = osgiCamelContext;
serviceRegistration =
bundleContext.registerService(CamelContext.class, camelContext, null);
} else {
camelContext = new DefaultCamelContext();