You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ac...@apache.org on 2018/12/04 13:06:18 UTC
[camel] branch master updated (a37983a -> e59f4d5)
This is an automated email from the ASF dual-hosted git repository.
acosentino pushed a change to branch master
in repository https://gitbox.apache.org/repos/asf/camel.git.
from a37983a Upgrade Zipkin Reporter to version 2.7.12
new a5ad137 CAMEL-12973: Init deferred to first call when WIH uses Deployment-scoped context in combination with Singleton RuntimeStrategy. Removed redundant double slash from 'direct' URL.
new e59f4d5 CAMEL-12973 - Fixed CS
The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails. The revisions
listed as "add" were already present in the repository and have only
been added to this reference.
Summary of changes:
.../jbpm/workitem/AbstractCamelCommand.java | 4 +-
.../workitem/AbstractCamelWorkItemHandler.java | 52 ++++++--
.../CamelWorkItemHandlerIntegrationTests.java | 4 +
.../DeploymentContextCamelCommandTest.java | 62 ++++-----
.../workitem/GlobalContextCamelCommandTest.java | 36 ++---
.../workitem/InOnlyCamelWorkItemHandlerTest.java | 40 +++---
.../workitem/InOutCamelWorkItemHandlerTest.java | 145 ++++++++++++++++-----
7 files changed, 234 insertions(+), 109 deletions(-)
[camel] 02/02: CAMEL-12973 - Fixed CS
Posted by ac...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
acosentino pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/camel.git
commit e59f4d5c44460d7f1ef7c971f8961c172b804bd4
Author: Andrea Cosentino <an...@gmail.com>
AuthorDate: Tue Dec 4 14:05:20 2018 +0100
CAMEL-12973 - Fixed CS
---
.../workitem/AbstractCamelWorkItemHandler.java | 5 ++-
.../workitem/InOutCamelWorkItemHandlerTest.java | 46 ++++++++++------------
2 files changed, 24 insertions(+), 27 deletions(-)
diff --git a/components/camel-jbpm/src/main/java/org/apache/camel/component/jbpm/workitem/AbstractCamelWorkItemHandler.java b/components/camel-jbpm/src/main/java/org/apache/camel/component/jbpm/workitem/AbstractCamelWorkItemHandler.java
index 1361889..47e34a4 100644
--- a/components/camel-jbpm/src/main/java/org/apache/camel/component/jbpm/workitem/AbstractCamelWorkItemHandler.java
+++ b/components/camel-jbpm/src/main/java/org/apache/camel/component/jbpm/workitem/AbstractCamelWorkItemHandler.java
@@ -61,7 +61,7 @@ public abstract class AbstractCamelWorkItemHandler extends AbstractLogOrThrowWor
private final String camelContextKey;
- private boolean initialized = false;
+ private boolean initialized;
/**
* Default Constructor. This creates a {@link ProducerTemplate} for the global {@link CamelContext}.
@@ -97,7 +97,8 @@ public abstract class AbstractCamelWorkItemHandler extends AbstractLogOrThrowWor
this.initialized = true;
} catch (IllegalArgumentException iae) {
String message = "CamelContext with identifier '" + camelContextKey
- + "' not found in ServiceRegistry. This can be caused by the order in which the platform extensions are initialized. Deferring Camel ProducerTemplate creation until the first WorkItemHandler call.";
+ + "' not found in ServiceRegistry. This can be caused by the order in which the platform extensions are initialized. "
+ + "Deferring Camel ProducerTemplate creation until the first WorkItemHandler call.";
logger.info(message, iae);
}
}
diff --git a/components/camel-jbpm/src/test/java/org/apache/camel/component/jbpm/workitem/InOutCamelWorkItemHandlerTest.java b/components/camel-jbpm/src/test/java/org/apache/camel/component/jbpm/workitem/InOutCamelWorkItemHandlerTest.java
index 8453f09..2aed17e 100644
--- a/components/camel-jbpm/src/test/java/org/apache/camel/component/jbpm/workitem/InOutCamelWorkItemHandlerTest.java
+++ b/components/camel-jbpm/src/test/java/org/apache/camel/component/jbpm/workitem/InOutCamelWorkItemHandlerTest.java
@@ -40,7 +40,6 @@ import static org.junit.Assert.*;
import static org.mockito.ArgumentMatchers.*;
import static org.mockito.Mockito.*;
-
@RunWith(MockitoJUnitRunner.class)
public class InOutCamelWorkItemHandlerTest {
@@ -78,31 +77,30 @@ public class InOutCamelWorkItemHandlerTest {
when(outMessage.getBody()).thenReturn(testReponse);
try {
- ServiceRegistry.get().register("GlobalCamelService", camelContext);
+ ServiceRegistry.get().register("GlobalCamelService", camelContext);
- TestWorkItemManager manager = new TestWorkItemManager();
- WorkItemImpl workItem = new WorkItemImpl();
- workItem.setParameter("CamelEndpointId", camelEndpointId);
- workItem.setParameter("Request", "someRequest");
- workItem.setDeploymentId("testDeploymentId");
- workItem.setProcessInstanceId(1L);
- workItem.setId(1L);
+ TestWorkItemManager manager = new TestWorkItemManager();
+ WorkItemImpl workItem = new WorkItemImpl();
+ workItem.setParameter("CamelEndpointId", camelEndpointId);
+ workItem.setParameter("Request", "someRequest");
+ workItem.setDeploymentId("testDeploymentId");
+ workItem.setProcessInstanceId(1L);
+ workItem.setId(1L);
+
+ AbstractCamelWorkItemHandler handler = new InOutCamelWorkItemHandler();
+
+ handler.executeWorkItem(workItem, manager);
+ assertThat(manager.getResults(), is(notNullValue()));
+ assertThat(manager.getResults().size(), equalTo(1));
+ assertThat(manager.getResults().containsKey(workItem.getId()), is(true));
+ Map<String, Object> results = manager.getResults(workItem.getId());
+ assertThat(results.size(), equalTo(2));
+ assertThat(results.get("Response"), equalTo(testReponse));
- AbstractCamelWorkItemHandler handler = new InOutCamelWorkItemHandler();
-
- handler.executeWorkItem(workItem,
- manager);
- assertThat(manager.getResults(), is(notNullValue()));
- assertThat(manager.getResults().size(), equalTo(1));
- assertThat(manager.getResults().containsKey(workItem.getId()), is(true));
- Map<String, Object> results = manager.getResults(workItem.getId());
- assertThat(results.size(), equalTo(2));
- assertThat(results.get("Response"), equalTo(testReponse));
-
} finally {
ServiceRegistry.get().remove("GlobalCamelService");
}
-
+
}
@Test
@@ -141,8 +139,7 @@ public class InOutCamelWorkItemHandlerTest {
AbstractCamelWorkItemHandler handler = new InOutCamelWorkItemHandler(runtimeManager);
TestWorkItemManager manager = new TestWorkItemManager();
- handler.executeWorkItem(workItem,
- manager);
+ handler.executeWorkItem(workItem, manager);
assertThat(manager.getResults(), is(notNullValue()));
assertThat(manager.getResults().size(), equalTo(1));
assertThat(manager.getResults().containsKey(workItem.getId()), is(true));
@@ -191,8 +188,7 @@ public class InOutCamelWorkItemHandlerTest {
ServiceRegistry.get().register(runtimeManagerId + "_CamelService", camelContext);
TestWorkItemManager manager = new TestWorkItemManager();
- handler.executeWorkItem(workItem,
- manager);
+ handler.executeWorkItem(workItem, manager);
assertThat(manager.getResults(), is(notNullValue()));
assertThat(manager.getResults().size(), equalTo(1));
assertThat(manager.getResults().containsKey(workItem.getId()), is(true));
[camel] 01/02: CAMEL-12973: Init deferred to first call when WIH
uses Deployment-scoped context in combination with Singleton
RuntimeStrategy. Removed redundant double slash from 'direct' URL.
Posted by ac...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
acosentino pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/camel.git
commit a5ad137b5f5e5eafb170750b05ee1a66f3b2c101
Author: Duncan Doyle <Du...@gmail.com>
AuthorDate: Mon Dec 3 11:47:07 2018 +0100
CAMEL-12973: Init deferred to first call when WIH uses Deployment-scoped context in combination with Singleton RuntimeStrategy. Removed redundant double slash from 'direct' URL.
---
.../jbpm/workitem/AbstractCamelCommand.java | 4 +-
.../workitem/AbstractCamelWorkItemHandler.java | 51 +++++++---
.../CamelWorkItemHandlerIntegrationTests.java | 4 +
.../DeploymentContextCamelCommandTest.java | 62 +++++------
.../workitem/GlobalContextCamelCommandTest.java | 36 ++++---
.../workitem/InOnlyCamelWorkItemHandlerTest.java | 40 ++++----
.../workitem/InOutCamelWorkItemHandlerTest.java | 113 ++++++++++++++++++---
7 files changed, 219 insertions(+), 91 deletions(-)
diff --git a/components/camel-jbpm/src/main/java/org/apache/camel/component/jbpm/workitem/AbstractCamelCommand.java b/components/camel-jbpm/src/main/java/org/apache/camel/component/jbpm/workitem/AbstractCamelCommand.java
index 1900960..212dd71 100644
--- a/components/camel-jbpm/src/main/java/org/apache/camel/component/jbpm/workitem/AbstractCamelCommand.java
+++ b/components/camel-jbpm/src/main/java/org/apache/camel/component/jbpm/workitem/AbstractCamelCommand.java
@@ -35,7 +35,7 @@ import org.slf4j.LoggerFactory;
* The command passes the {@WorkItem} retrieved from the {@link CommandContext} to the route that has a consumer on the endpoint-id
* that can be passed with the <code>camel-endpoint-id</code> {@link WorkItem} parameter. E.g. when a the value "myCamelEndpoint" is passed to the
* {link WorkItem} via the <code>camel-endpoint-id</code> parameter, this {@link Command} will send the {@link WorkItem} to
- * the Camel URI <code>direct://myCamelEndpoint</code>.
+ * the Camel URI <code>direct:myCamelEndpoint</code>.
* <p/>
* The body of the result {@link Message} of the invocation is returned via the <code>Response</code> parameter. Access to the raw response
* {@link Message} is provided via the <code>Message</code> parameter. This gives the user access to more advanced fields like message headers
@@ -55,7 +55,7 @@ public abstract class AbstractCamelCommand implements Command, Cacheable {
String camelEndpointId = (String) workItem.getParameter(JBPMConstants.CAMEL_ENDPOINT_ID_WI_PARAM);
// We only support direct. We don't need to support more, as direct simply gives us the entrypoint into the actual Camel Routes.
- String camelUri = "direct://" + camelEndpointId;
+ String camelUri = "direct:" + camelEndpointId;
ProducerTemplate producerTemplate = getProducerTemplate(ctx);
Exchange inExchange = ExchangeBuilder.anExchange(producerTemplate.getCamelContext()).withBody(workItem).build();
diff --git a/components/camel-jbpm/src/main/java/org/apache/camel/component/jbpm/workitem/AbstractCamelWorkItemHandler.java b/components/camel-jbpm/src/main/java/org/apache/camel/component/jbpm/workitem/AbstractCamelWorkItemHandler.java
index d5ea7df..1361889 100644
--- a/components/camel-jbpm/src/main/java/org/apache/camel/component/jbpm/workitem/AbstractCamelWorkItemHandler.java
+++ b/components/camel-jbpm/src/main/java/org/apache/camel/component/jbpm/workitem/AbstractCamelWorkItemHandler.java
@@ -35,9 +35,9 @@ import org.slf4j.LoggerFactory;
* Camel jBPM {@link WorkItemHandler} which allows to call Camel routes with a <code>direct</code> endpoint.
* <p/>
* The handler passes the {@WorkItem} to the route that has a consumer on the endpoint-id that can be passed with the
- * <code>CamelEndpointId</code>{@link WorkItem} parameter. E.g. when a the value "myCamelEndpoint" is passed to the {link WorkItem} via
- * the <code>CamelEndpointId</code> parameter, this command will send the {@link WorkItem} to the Camel URI
- * <code>direct://myCamelEndpoint</code>.
+ * <code>CamelEndpointId</code>{@link WorkItem} parameter. E.g. when a the value "myCamelEndpoint" is passed to the {link WorkItem} via the
+ * <code>CamelEndpointId</code> parameter, this command will send the {@link WorkItem} to the Camel URI
+ * <code>direct:myCamelEndpoint</code>.
* <p/>
* The body of the result {@link Message} of the invocation is returned via the <code>Response</code> parameter. Access to the raw response
* {@link Message} is provided via the <code>Message</code> parameter. This gives the user access to more advanced fields like message
@@ -47,18 +47,22 @@ import org.slf4j.LoggerFactory;
* to find the global KIE {@link CamelContext} from the <code>jBPM</code> {@link ServiceRegistry}. When the {@link RuntimeManager} is passed
* to the constructor, the handler will retrieve and use the {@link CamelContext} bound to the {@link RuntimeManage} from the
* {@link ServiceRegistry}. When a <code>CamelEndpointId</code> is passed to the constructor, the handler will send all requests to the
- * Camel route that is consuming from that endpoint, unless the endpoint is overridden by passing a the <code>CamelEndpointId</code> in
- * the {@link WorkItem} parameters.
+ * Camel route that is consuming from that endpoint, unless the endpoint is overridden by passing a the <code>CamelEndpointId</code> in the
+ * {@link WorkItem} parameters.
*
*/
public abstract class AbstractCamelWorkItemHandler extends AbstractLogOrThrowWorkItemHandler implements Cacheable {
private static Logger logger = LoggerFactory.getLogger(AbstractCamelWorkItemHandler.class);
- private final ProducerTemplate producerTemplate;
+ private ProducerTemplate producerTemplate;
private final String camelEndpointId;
-
+
+ private final String camelContextKey;
+
+ private boolean initialized = false;
+
/**
* Default Constructor. This creates a {@link ProducerTemplate} for the global {@link CamelContext}.
*/
@@ -67,9 +71,10 @@ public abstract class AbstractCamelWorkItemHandler extends AbstractLogOrThrowWor
}
public AbstractCamelWorkItemHandler(String camelEndointId) {
- CamelContext globalCamelContext = (CamelContext) ServiceRegistry.get().service(JBPMConstants.GLOBAL_CAMEL_CONTEXT_SERVICE_KEY);
- this.producerTemplate = globalCamelContext.createProducerTemplate();
this.camelEndpointId = camelEndointId;
+ this.camelContextKey = JBPMConstants.GLOBAL_CAMEL_CONTEXT_SERVICE_KEY;
+ this.producerTemplate = buildProducerTemplate(camelContextKey);
+ this.initialized = true;
}
/**
@@ -81,18 +86,38 @@ public abstract class AbstractCamelWorkItemHandler extends AbstractLogOrThrowWor
}
public AbstractCamelWorkItemHandler(RuntimeManager runtimeManager, String camelEndpointId) {
- String runtimeCamelContextKey = runtimeManager.getIdentifier() + JBPMConstants.DEPLOYMENT_CAMEL_CONTEXT_SERVICE_KEY_POSTFIX;
- CamelContext runtimeCamelContext = (CamelContext) ServiceRegistry.get().service(runtimeCamelContextKey);
- this.producerTemplate = runtimeCamelContext.createProducerTemplate();
this.camelEndpointId = camelEndpointId;
+ this.camelContextKey = runtimeManager.getIdentifier() + JBPMConstants.DEPLOYMENT_CAMEL_CONTEXT_SERVICE_KEY_POSTFIX;
+ /*
+ * Depending on the order of session creation and CamelContext creation and registration, the CamelContext might not yet be
+ * available. Hence, when we deal with a Deployment scoped CamelContext, we can lazy-init when the context is not yet available.
+ */
+ try {
+ this.producerTemplate = buildProducerTemplate(camelContextKey);
+ this.initialized = true;
+ } catch (IllegalArgumentException iae) {
+ String message = "CamelContext with identifier '" + camelContextKey
+ + "' not found in ServiceRegistry. This can be caused by the order in which the platform extensions are initialized. Deferring Camel ProducerTemplate creation until the first WorkItemHandler call.";
+ logger.info(message, iae);
+ }
}
+ private ProducerTemplate buildProducerTemplate(String key) {
+ CamelContext camelContext = (CamelContext) ServiceRegistry.get().service(key);
+ return this.producerTemplate = camelContext.createProducerTemplate();
+ }
+
+
public void executeWorkItem(WorkItem workItem, final WorkItemManager manager) {
+ if (!initialized) {
+ this.producerTemplate = buildProducerTemplate(camelContextKey);
+ initialized = true;
+ }
String workItemCamelEndpointId = getCamelEndpointId(workItem);
// We only support direct. We don't need to support more, as direct simply gives us the entrypoint into the actual Camel Routes.
- String camelUri = "direct://" + workItemCamelEndpointId;
+ String camelUri = "direct:" + workItemCamelEndpointId;
try {
Exchange requestExchange = buildExchange(producerTemplate, workItem);
diff --git a/components/camel-jbpm/src/test/java/org/apache/camel/component/jbpm/workitem/CamelWorkItemHandlerIntegrationTests.java b/components/camel-jbpm/src/test/java/org/apache/camel/component/jbpm/workitem/CamelWorkItemHandlerIntegrationTests.java
index 67d54fb..a0fcee5 100644
--- a/components/camel-jbpm/src/test/java/org/apache/camel/component/jbpm/workitem/CamelWorkItemHandlerIntegrationTests.java
+++ b/components/camel-jbpm/src/test/java/org/apache/camel/component/jbpm/workitem/CamelWorkItemHandlerIntegrationTests.java
@@ -79,6 +79,7 @@ public class CamelWorkItemHandlerIntegrationTests extends CamelTestSupport {
} finally {
// Cleanup
context.removeRoute(routeId);
+ ServiceRegistry.get().remove(JBPMConstants.GLOBAL_CAMEL_CONTEXT_SERVICE_KEY);
}
}
@@ -120,6 +121,7 @@ public class CamelWorkItemHandlerIntegrationTests extends CamelTestSupport {
} finally {
// Cleanup
context.removeRoute(routeId);
+ ServiceRegistry.get().remove(JBPMConstants.GLOBAL_CAMEL_CONTEXT_SERVICE_KEY);
}
}
@@ -160,6 +162,7 @@ public class CamelWorkItemHandlerIntegrationTests extends CamelTestSupport {
} finally {
// Cleanup
context.removeRoute(routeId);
+ ServiceRegistry.get().remove(JBPMConstants.GLOBAL_CAMEL_CONTEXT_SERVICE_KEY);
}
}
@@ -198,6 +201,7 @@ public class CamelWorkItemHandlerIntegrationTests extends CamelTestSupport {
} finally {
// Cleanup
context.removeRoute(routeId);
+ ServiceRegistry.get().remove(JBPMConstants.GLOBAL_CAMEL_CONTEXT_SERVICE_KEY);
}
}
diff --git a/components/camel-jbpm/src/test/java/org/apache/camel/component/jbpm/workitem/DeploymentContextCamelCommandTest.java b/components/camel-jbpm/src/test/java/org/apache/camel/component/jbpm/workitem/DeploymentContextCamelCommandTest.java
index b0086b9..d2d3d94 100644
--- a/components/camel-jbpm/src/test/java/org/apache/camel/component/jbpm/workitem/DeploymentContextCamelCommandTest.java
+++ b/components/camel-jbpm/src/test/java/org/apache/camel/component/jbpm/workitem/DeploymentContextCamelCommandTest.java
@@ -38,58 +38,62 @@ import static org.mockito.Mockito.*;
@RunWith(MockitoJUnitRunner.class)
public class DeploymentContextCamelCommandTest {
-
+
@Mock
ProducerTemplate producerTemplate;
@Mock
Exchange outExchange;
-
+
@Mock
Message outMessage;
-
+
@Mock
CamelContext camelContext;
-
+
@Mock
RuntimeManager runtimeManager;
-
+
@Mock
CommandContext commandContext;
@Test
public void testExecuteCommandDeploymentCamelContext() throws Exception {
-
+
String camelEndpointId = "testCamelRoute";
- String camelRouteUri = "direct://" + camelEndpointId;
-
+ String camelRouteUri = "direct:" + camelEndpointId;
+
String testReponse = "testResponse";
-
+
String deploymentId = "testDeployment";
-
+
when(producerTemplate.send(eq(camelRouteUri), any(Exchange.class))).thenReturn(outExchange);
when(producerTemplate.getCamelContext()).thenReturn(camelContext);
-
+
when(camelContext.createProducerTemplate()).thenReturn(producerTemplate);
-
+
when(outExchange.getOut()).thenReturn(outMessage);
when(outMessage.getBody()).thenReturn(testReponse);
-
- //Register the RuntimeManager bound camelcontext.
- ServiceRegistry.get().register(deploymentId + JBPMConstants.DEPLOYMENT_CAMEL_CONTEXT_SERVICE_KEY_POSTFIX, camelContext);
-
- WorkItemImpl workItem = new WorkItemImpl();
- workItem.setParameter(JBPMConstants.CAMEL_ENDPOINT_ID_WI_PARAM, camelEndpointId);
- workItem.setParameter("Request", "someRequest");
-
- when(commandContext.getData("workItem")).thenReturn(workItem);
- when(commandContext.getData("deploymentId")).thenReturn(deploymentId);
-
- Command command = new DeploymentContextCamelCommand();
- ExecutionResults results = command.execute(commandContext);
-
- assertNotNull(results);
- assertEquals(2, results.getData().size());
- assertEquals(testReponse, results.getData().get(JBPMConstants.RESPONSE_WI_PARAM));
+
+ // Register the RuntimeManager bound camelcontext.
+ try {
+ ServiceRegistry.get().register(deploymentId + JBPMConstants.DEPLOYMENT_CAMEL_CONTEXT_SERVICE_KEY_POSTFIX, camelContext);
+
+ WorkItemImpl workItem = new WorkItemImpl();
+ workItem.setParameter(JBPMConstants.CAMEL_ENDPOINT_ID_WI_PARAM, camelEndpointId);
+ workItem.setParameter("Request", "someRequest");
+
+ when(commandContext.getData("workItem")).thenReturn(workItem);
+ when(commandContext.getData("deploymentId")).thenReturn(deploymentId);
+
+ Command command = new DeploymentContextCamelCommand();
+ ExecutionResults results = command.execute(commandContext);
+
+ assertNotNull(results);
+ assertEquals(2, results.getData().size());
+ assertEquals(testReponse, results.getData().get(JBPMConstants.RESPONSE_WI_PARAM));
+ } finally {
+ ServiceRegistry.get().remove(deploymentId + JBPMConstants.DEPLOYMENT_CAMEL_CONTEXT_SERVICE_KEY_POSTFIX);
+ }
}
}
diff --git a/components/camel-jbpm/src/test/java/org/apache/camel/component/jbpm/workitem/GlobalContextCamelCommandTest.java b/components/camel-jbpm/src/test/java/org/apache/camel/component/jbpm/workitem/GlobalContextCamelCommandTest.java
index 031bc69..0d0db7c 100644
--- a/components/camel-jbpm/src/test/java/org/apache/camel/component/jbpm/workitem/GlobalContextCamelCommandTest.java
+++ b/components/camel-jbpm/src/test/java/org/apache/camel/component/jbpm/workitem/GlobalContextCamelCommandTest.java
@@ -44,16 +44,16 @@ public class GlobalContextCamelCommandTest {
@Mock
Exchange outExchange;
-
+
@Mock
Message outMessage;
-
+
@Mock
CamelContext camelContext;
-
+
@Mock
RuntimeManager runtimeManager;
-
+
@Mock
CommandContext commandContext;
@@ -61,7 +61,7 @@ public class GlobalContextCamelCommandTest {
public void testExecuteGlobalCommand() throws Exception {
String camelEndpointId = "testCamelRoute";
- String camelRouteUri = "direct://" + camelEndpointId;
+ String camelRouteUri = "direct:" + camelEndpointId;
String testReponse = "testResponse";
@@ -76,20 +76,24 @@ public class GlobalContextCamelCommandTest {
when(outExchange.getOut()).thenReturn(outMessage);
when(outMessage.getBody()).thenReturn(testReponse);
- //Register the RuntimeManager bound camelContext.
- ServiceRegistry.get().register(JBPMConstants.GLOBAL_CAMEL_CONTEXT_SERVICE_KEY, camelContext);
+ // Register the RuntimeManager bound camelcontext.
+ try {
+ ServiceRegistry.get().register(JBPMConstants.GLOBAL_CAMEL_CONTEXT_SERVICE_KEY, camelContext);
- WorkItemImpl workItem = new WorkItemImpl();
- workItem.setParameter(JBPMConstants.CAMEL_ENDPOINT_ID_WI_PARAM, camelEndpointId);
- workItem.setParameter("Request", "someRequest");
+ WorkItemImpl workItem = new WorkItemImpl();
+ workItem.setParameter(JBPMConstants.CAMEL_ENDPOINT_ID_WI_PARAM, camelEndpointId);
+ workItem.setParameter("Request", "someRequest");
- when(commandContext.getData(anyString())).thenReturn(workItem);
+ when(commandContext.getData(anyString())).thenReturn(workItem);
- Command command = new GlobalContextCamelCommand();
- ExecutionResults results = command.execute(commandContext);
+ Command command = new GlobalContextCamelCommand();
+ ExecutionResults results = command.execute(commandContext);
- assertNotNull(results);
- assertEquals(2, results.getData().size());
- assertEquals(testReponse, results.getData().get(JBPMConstants.RESPONSE_WI_PARAM));
+ assertNotNull(results);
+ assertEquals(2, results.getData().size());
+ assertEquals(testReponse, results.getData().get(JBPMConstants.RESPONSE_WI_PARAM));
+ } finally {
+ ServiceRegistry.get().remove(JBPMConstants.GLOBAL_CAMEL_CONTEXT_SERVICE_KEY);
+ }
}
}
\ No newline at end of file
diff --git a/components/camel-jbpm/src/test/java/org/apache/camel/component/jbpm/workitem/InOnlyCamelWorkItemHandlerTest.java b/components/camel-jbpm/src/test/java/org/apache/camel/component/jbpm/workitem/InOnlyCamelWorkItemHandlerTest.java
index b97822e..324f04c 100644
--- a/components/camel-jbpm/src/test/java/org/apache/camel/component/jbpm/workitem/InOnlyCamelWorkItemHandlerTest.java
+++ b/components/camel-jbpm/src/test/java/org/apache/camel/component/jbpm/workitem/InOnlyCamelWorkItemHandlerTest.java
@@ -60,7 +60,7 @@ public class InOnlyCamelWorkItemHandlerTest {
public void testExecuteInOnlyLocalCamelContext() throws Exception {
String camelEndpointId = "testCamelRoute";
- String camelRouteUri = "direct://" + camelEndpointId;
+ String camelRouteUri = "direct:" + camelEndpointId;
String testReponse = "testResponse";
@@ -76,22 +76,26 @@ public class InOnlyCamelWorkItemHandlerTest {
when(camelContext.getHeadersMapFactory()).thenReturn(hmf);
// Register the RuntimeManager bound camelcontext.
- ServiceRegistry.get().register(runtimeManagerId + "_CamelService", camelContext);
-
- WorkItemImpl workItem = new WorkItemImpl();
- workItem.setParameter(JBPMConstants.CAMEL_ENDPOINT_ID_WI_PARAM, camelEndpointId);
- workItem.setParameter("Request", "someRequest");
- workItem.setDeploymentId("testDeploymentId");
- workItem.setProcessInstanceId(1L);
- workItem.setId(1L);
-
- AbstractCamelWorkItemHandler handler = new InOnlyCamelWorkItemHandler(runtimeManager);
-
- TestWorkItemManager manager = new TestWorkItemManager();
- handler.executeWorkItem(workItem,
- manager);
- assertThat(manager.getResults(), is(notNullValue()));
- //InOnly does not complete WorkItem.
- assertThat(manager.getResults().size(), equalTo(0));
+ try {
+ ServiceRegistry.get().register(runtimeManagerId + "_CamelService", camelContext);
+
+ WorkItemImpl workItem = new WorkItemImpl();
+ workItem.setParameter(JBPMConstants.CAMEL_ENDPOINT_ID_WI_PARAM, camelEndpointId);
+ workItem.setParameter("Request", "someRequest");
+ workItem.setDeploymentId("testDeploymentId");
+ workItem.setProcessInstanceId(1L);
+ workItem.setId(1L);
+
+ AbstractCamelWorkItemHandler handler = new InOnlyCamelWorkItemHandler(runtimeManager);
+
+ TestWorkItemManager manager = new TestWorkItemManager();
+ handler.executeWorkItem(workItem,
+ manager);
+ assertThat(manager.getResults(), is(notNullValue()));
+ // InOnly does not complete WorkItem.
+ assertThat(manager.getResults().size(), equalTo(0));
+ } finally {
+ ServiceRegistry.get().remove(runtimeManagerId + "_CamelService");
+ }
}
}
diff --git a/components/camel-jbpm/src/test/java/org/apache/camel/component/jbpm/workitem/InOutCamelWorkItemHandlerTest.java b/components/camel-jbpm/src/test/java/org/apache/camel/component/jbpm/workitem/InOutCamelWorkItemHandlerTest.java
index 578de78..8453f09 100644
--- a/components/camel-jbpm/src/test/java/org/apache/camel/component/jbpm/workitem/InOutCamelWorkItemHandlerTest.java
+++ b/components/camel-jbpm/src/test/java/org/apache/camel/component/jbpm/workitem/InOutCamelWorkItemHandlerTest.java
@@ -63,7 +63,7 @@ public class InOutCamelWorkItemHandlerTest {
public void testExecuteInOutGlobalCamelContext() throws Exception {
String camelEndpointId = "testCamelRoute";
- String camelRouteUri = "direct://" + camelEndpointId;
+ String camelRouteUri = "direct:" + camelEndpointId;
String testReponse = "testResponse";
@@ -77,6 +77,7 @@ public class InOutCamelWorkItemHandlerTest {
when(outExchange.getOut()).thenReturn(outMessage);
when(outMessage.getBody()).thenReturn(testReponse);
+ try {
ServiceRegistry.get().register("GlobalCamelService", camelContext);
TestWorkItemManager manager = new TestWorkItemManager();
@@ -97,13 +98,18 @@ public class InOutCamelWorkItemHandlerTest {
Map<String, Object> results = manager.getResults(workItem.getId());
assertThat(results.size(), equalTo(2));
assertThat(results.get("Response"), equalTo(testReponse));
+
+ } finally {
+ ServiceRegistry.get().remove("GlobalCamelService");
+ }
+
}
@Test
public void testExecuteInOutLocalCamelContext() throws Exception {
String camelEndpointId = "testCamelRoute";
- String camelRouteUri = "direct://" + camelEndpointId;
+ String camelRouteUri = "direct:" + camelEndpointId;
String testReponse = "testResponse";
@@ -122,7 +128,94 @@ public class InOutCamelWorkItemHandlerTest {
when(outMessage.getBody()).thenReturn(testReponse);
// Register the RuntimeManager bound camelcontext.
- ServiceRegistry.get().register(runtimeManagerId + "_CamelService", camelContext);
+ try {
+ ServiceRegistry.get().register(runtimeManagerId + "_CamelService", camelContext);
+
+ WorkItemImpl workItem = new WorkItemImpl();
+ workItem.setParameter(JBPMConstants.CAMEL_ENDPOINT_ID_WI_PARAM, camelEndpointId);
+ workItem.setParameter("Request", "someRequest");
+ workItem.setDeploymentId("testDeploymentId");
+ workItem.setProcessInstanceId(1L);
+ workItem.setId(1L);
+
+ AbstractCamelWorkItemHandler handler = new InOutCamelWorkItemHandler(runtimeManager);
+
+ TestWorkItemManager manager = new TestWorkItemManager();
+ handler.executeWorkItem(workItem,
+ manager);
+ assertThat(manager.getResults(), is(notNullValue()));
+ assertThat(manager.getResults().size(), equalTo(1));
+ assertThat(manager.getResults().containsKey(workItem.getId()), is(true));
+
+ Map<String, Object> results = manager.getResults(workItem.getId());
+ assertThat(results.size(), equalTo(2));
+ assertThat(results.get(JBPMConstants.RESPONSE_WI_PARAM), equalTo(testReponse));
+ } finally {
+ ServiceRegistry.get().remove(runtimeManagerId + "_CamelService");
+ }
+ }
+
+ @Test
+ public void testExecuteInOutLocalCamelContextLazyInit() throws Exception {
+
+ String camelEndpointId = "testCamelRoute";
+ String camelRouteUri = "direct:" + camelEndpointId;
+
+ String testReponse = "testResponse";
+
+ String runtimeManagerId = "testRuntimeManager";
+
+ when(runtimeManager.getIdentifier()).thenReturn(runtimeManagerId);
+
+ when(producerTemplate.send(eq(camelRouteUri), ArgumentMatchers.any(Exchange.class))).thenReturn(outExchange);
+ when(producerTemplate.getCamelContext()).thenReturn(camelContext);
+
+ when(camelContext.createProducerTemplate()).thenReturn(producerTemplate);
+ HeadersMapFactory hmf = new DefaultHeadersMapFactory();
+ when(camelContext.getHeadersMapFactory()).thenReturn(hmf);
+
+ when(outExchange.getOut()).thenReturn(outMessage);
+ when(outMessage.getBody()).thenReturn(testReponse);
+
+ WorkItemImpl workItem = new WorkItemImpl();
+ workItem.setParameter(JBPMConstants.CAMEL_ENDPOINT_ID_WI_PARAM, camelEndpointId);
+ workItem.setParameter("Request", "someRequest");
+ workItem.setDeploymentId("testDeploymentId");
+ workItem.setProcessInstanceId(1L);
+ workItem.setId(1L);
+
+ AbstractCamelWorkItemHandler handler = new InOutCamelWorkItemHandler(runtimeManager);
+
+ // Register the context after we've created the WIH to test lazy-init.
+ try {
+ ServiceRegistry.get().register(runtimeManagerId + "_CamelService", camelContext);
+
+ TestWorkItemManager manager = new TestWorkItemManager();
+ handler.executeWorkItem(workItem,
+ manager);
+ assertThat(manager.getResults(), is(notNullValue()));
+ assertThat(manager.getResults().size(), equalTo(1));
+ assertThat(manager.getResults().containsKey(workItem.getId()), is(true));
+
+ Map<String, Object> results = manager.getResults(workItem.getId());
+ assertThat(results.size(), equalTo(2));
+ assertThat(results.get(JBPMConstants.RESPONSE_WI_PARAM), equalTo(testReponse));
+ } finally {
+ ServiceRegistry.get().remove(runtimeManagerId + "_CamelService");
+ }
+ }
+
+ @Test(expected = IllegalArgumentException.class)
+ public void testExecuteInOutLocalCamelContextLazyInitFail() throws Exception {
+
+ String camelEndpointId = "testCamelRoute";
+ String camelRouteUri = "direct:" + camelEndpointId;
+
+ String testReponse = "testResponse";
+
+ String runtimeManagerId = "testRuntimeManager";
+
+ when(runtimeManager.getIdentifier()).thenReturn(runtimeManagerId);
WorkItemImpl workItem = new WorkItemImpl();
workItem.setParameter(JBPMConstants.CAMEL_ENDPOINT_ID_WI_PARAM, camelEndpointId);
@@ -134,15 +227,9 @@ public class InOutCamelWorkItemHandlerTest {
AbstractCamelWorkItemHandler handler = new InOutCamelWorkItemHandler(runtimeManager);
TestWorkItemManager manager = new TestWorkItemManager();
- handler.executeWorkItem(workItem,
- manager);
- assertThat(manager.getResults(), is(notNullValue()));
- assertThat(manager.getResults().size(), equalTo(1));
- assertThat(manager.getResults().containsKey(workItem.getId()), is(true));
-
- Map<String, Object> results = manager.getResults(workItem.getId());
- assertThat(results.size(), equalTo(2));
- assertThat(results.get(JBPMConstants.RESPONSE_WI_PARAM), equalTo(testReponse));
+ // This is expected to throw an exception.
+ handler.executeWorkItem(workItem, manager);
+
}
-
+
}