From 9a976d5b0d32836083fe6619b2e42a072d2cd2d9 Mon Sep 17 00:00:00 2001
From: Mario Fusco
Date: Tue, 6 Dec 2016 08:39:31 +0100
Subject: [PATCH] [DROOLS-1353] define ExecutableRunner interface (#1022)
---
.../simulation/BatchRunFluentTest.java | 133 +++++++-------
.../org/drools/core/SessionConfiguration.java | 4 +-
.../core/SessionConfigurationDelegate.java | 6 +-
.../drools/core/SessionConfigurationImpl.java | 27 ++-
.../core/audit/WorkingMemoryLogger.java | 2 +-
...WrappedStatefulKnowledgeSessionForRHS.java | 5 -
.../core/command/ConversationContext.java | 24 ---
.../command/ConversationContextManager.java | 21 ++-
.../core/command/EndConversationCommand.java | 6 +-
.../drools/core/command/ExecuteCommand.java | 4 +-
.../drools/core/command/FinishedCommand.java | 2 +-
.../core/command/GetKieContainerCommand.java | 2 +-
.../core/command/GetSessionClockCommand.java | 2 +-
.../core/command/GetVariableCommand.java | 9 +-
.../core/command/JoinConversationCommand.java | 6 +-
...wledgeBaseAddKnowledgePackagesCommand.java | 2 +-
.../command/LeaveConversationCommand.java | 4 +-
.../core/command/NewKieSessionCommand.java | 2 +-
...wKnowledgeBuilderConfigurationCommand.java | 2 +-
.../org/drools/core/command/OutCommand.java | 7 +-
.../core/command/RequestContextImpl.java | 55 +++---
.../SetVariableCommandFromCommand.java | 9 +-
.../SetVariableCommandFromLastReturn.java | 13 +-
.../command/SingleSessionCommandService.java | 7 +-
.../command/StartConversationCommand.java | 2 +-
.../core/command/assertion/AssertEquals.java | 2 +-
.../builder/KnowledgeBuilderAddCommand.java | 2 +-
.../KnowledgeBuilderGetErrorsCommand.java | 2 +-
...dgeBuilderGetKnowledgePackagesCommand.java | 2 +-
.../KnowledgeBuilderHasErrorsCommand.java | 2 +-
.../builder/NewKnowledgeBuilderCommand.java | 2 +-
.../command/impl/AbstractInterceptor.java | 29 ++--
.../command/impl/AsynchronousInterceptor.java | 9 +-
.../command/impl/CommandBasedEntryPoint.java | 32 ++--
.../CommandBasedStatefulKnowledgeSession.java | 162 +++++++++---------
.../drools/core/command/impl/ContextImpl.java | 2 +-
.../command/impl/ContextImplWithEviction.java | 2 +-
.../command/impl/DefaultCommandService.java | 39 -----
.../core/command/impl/ExecutableCommand.java | 5 +-
.../command/impl/FireAllRulesInterceptor.java | 27 ++-
.../core/command/impl/LoggingInterceptor.java | 14 +-
.../core/command/impl/RegistryContext.java | 5 +-
.../runtime/AddEventListenerCommand.java | 2 +-
.../runtime/BatchExecutionCommandImpl.java | 4 +-
.../runtime/DestroySessionCommand.java | 14 +-
.../core/command/runtime/DisposeCommand.java | 7 +-
.../command/runtime/GetCalendarsCommand.java | 2 +-
.../command/runtime/GetChannelsCommand.java | 2 +-
.../runtime/GetEnvironmentCommand.java | 2 +-
.../command/runtime/GetFactCountCommand.java | 2 +-
.../GetFactCountInEntryPointCommand.java | 2 +-
.../command/runtime/GetGlobalCommand.java | 2 +-
.../command/runtime/GetGlobalsCommand.java | 2 +-
.../core/command/runtime/GetIdCommand.java | 2 +-
.../runtime/GetKnowledgeBaseCommand.java | 2 +-
.../runtime/KBuilderSetPropertyCommand.java | 2 +-
.../runtime/RegisterChannelCommand.java | 2 +-
.../runtime/RemoveEventListenerCommand.java | 2 +-
.../command/runtime/SetGlobalCommand.java | 2 +-
.../runtime/UnregisterChannelCommand.java | 2 +-
.../process/AbortProcessInstanceCommand.java | 2 +-
.../runtime/process/AbortWorkItemCommand.java | 2 +-
.../process/CompleteWorkItemCommand.java | 2 +-
...reateCorrelatedProcessInstanceCommand.java | 2 +-
.../process/CreateProcessInstanceCommand.java | 2 +-
.../GetProcessEventListenersCommand.java | 2 +-
.../runtime/process/GetProcessIdsCommand.java | 2 +-
...rocessInstanceByCorrelationKeyCommand.java | 2 +-
.../process/GetProcessInstanceCommand.java | 2 +-
.../process/GetProcessInstancesCommand.java | 2 +-
.../runtime/process/GetWorkItemCommand.java | 2 +-
.../process/GetWorkItemIdsCommand.java | 2 +-
.../runtime/process/ReTryWorkItemCommand.java | 2 +-
.../RegisterWorkItemHandlerCommand.java | 2 +-
.../SetProcessInstanceVariablesCommand.java | 2 +-
.../runtime/process/SignalEventCommand.java | 2 +-
.../StartCorrelatedProcessCommand.java | 2 +-
.../runtime/process/StartProcessCommand.java | 2 +-
.../process/StartProcessInstanceCommand.java | 2 +-
.../rule/AgendaGroupSetFocusCommand.java | 2 +-
.../rule/ClearActivationGroupCommand.java | 2 +-
.../runtime/rule/ClearAgendaCommand.java | 2 +-
.../runtime/rule/ClearAgendaGroupCommand.java | 2 +-
.../rule/ClearRuleFlowGroupCommand.java | 2 +-
.../command/runtime/rule/DeleteCommand.java | 2 +-
.../rule/DeleteFromEntryPointCommand.java | 2 +-
.../runtime/rule/DeleteObjectCommand.java | 2 +-
.../runtime/rule/EnableAuditLogCommand.java | 2 +-
.../runtime/rule/FireAllRulesCommand.java | 2 +-
.../runtime/rule/FireUntilHaltCommand.java | 2 +-
.../rule/FromExternalFactHandleCommand.java | 2 +-
.../rule/GetAgendaEventListenersCommand.java | 2 +-
.../runtime/rule/GetEntryPointCommand.java | 2 +-
.../runtime/rule/GetEntryPointsCommand.java | 2 +-
.../runtime/rule/GetFactHandleCommand.java | 2 +-
.../GetFactHandleInEntryPointCommand.java | 2 +-
.../runtime/rule/GetFactHandlesCommand.java | 2 +-
.../GetFactHandlesInEntryPointCommand.java | 2 +-
.../runtime/rule/GetObjectCommand.java | 2 +-
.../rule/GetObjectInEntryPointCommand.java | 2 +-
.../runtime/rule/GetObjectsCommand.java | 2 +-
.../rule/GetObjectsInEntryPointCommand.java | 2 +-
.../GetRuleRuntimeEventListenersCommand.java | 2 +-
.../command/runtime/rule/HaltCommand.java | 2 +-
.../runtime/rule/InsertElementsCommand.java | 2 +-
.../runtime/rule/InsertObjectCommand.java | 2 +-
.../rule/InsertObjectInEntryPointCommand.java | 2 +-
.../command/runtime/rule/ModifyCommand.java | 2 +-
.../command/runtime/rule/QueryCommand.java | 2 +-
.../command/runtime/rule/UpdateCommand.java | 2 +-
.../rule/UpdateInEntryPointCommand.java | 2 +-
.../core/fluent/impl/BaseBatchFluent.java | 24 ++-
.../impl/Batch.java} | 17 +-
.../drools/core/fluent/impl/BatchImpl.java | 17 +-
.../core/fluent/impl/CommandRegister.java | 16 ++
.../core/fluent/impl/ExecutableImpl.java | 22 ++-
.../core/fluent/impl/FluentBuilderImpl.java | 18 +-
.../fluent/impl/FluentComponentFactory.java | 17 +-
.../drools/core/fluent/impl/GetCommand.java | 18 +-
.../core/fluent/impl/GetContextCommand.java | 22 ++-
.../core/fluent/impl/InternalExecutable.java | 33 ++++
.../fluent/impl/KieContainerFluentImpl.java | 16 ++
.../fluent/impl/KieSessionFluentImpl.java | 16 ++
.../core/fluent/impl/NewContextCommand.java | 26 ++-
.../core/fluent/impl/PseudoClockRunner.java | 63 ++++---
.../drools/core/fluent/impl/SetCommand.java | 20 ++-
.../fluent/impl/SetVarAsRegistryEntry.java | 19 +-
.../impl/StatefulKnowledgeSessionImpl.java | 29 +---
.../ChainableRunner.java} | 16 +-
.../core/runtime/InternalLocalRunner.java | 73 ++++++++
.../CommandServiceTimerJobFactoryManager.java | 6 +-
.../core/world/impl/ContextManagerImpl.java | 2 +-
.../rule/ExecuteCommandDisconnectedTest.java | 12 +-
.../rule/GetFactHandlesCommandTest.java | 32 ++--
.../core/reteoo/test/JUnitNodeTestRunner.java | 4 +-
...andService.java => PersistableRunner.java} | 140 +++++++--------
.../PersistenceContextManager.java | 14 +-
.../TransactionSynchronizationContainer.java | 7 +-
.../jpa/JDKCallableJobCommand.java | 2 +-
.../persistence/jpa/JpaJDKTimerService.java | 22 +--
.../jpa/JpaTimeJobFactoryManager.java | 12 +-
.../persistence/jpa/JpaTimerJobInstance.java | 6 +-
.../jpa/KnowledgeStoreServiceImpl.java | 60 +++----
.../jpa/OptimisticLockRetryInterceptor.java | 48 +++---
.../jta/TransactionLockInterceptor.java | 24 +--
.../jta/JtaTransactionManagerTest.java | 4 +-
.../jta/TransactionTestCommand.java | 4 +-
.../JpaPersistentStatefulSessionTest.java | 6 +-
.../session/AgendaRuleFlowGroupsTest.java | 4 +-
...aOptLockPersistentStatefulSessionTest.java | 4 +-
.../JpaPersistentStatefulSessionTest.java | 46 +++--
.../session/ReloadSessionTest.java | 2 +-
.../session/RuleFlowGroupRollbackTest.java | 2 +-
.../integrationtests/MultithreadTest.java | 6 +-
.../parser/ExternalSheetListenerTest.java | 2 +-
155 files changed, 1013 insertions(+), 791 deletions(-)
delete mode 100644 drools-core/src/main/java/org/drools/core/command/ConversationContext.java
delete mode 100644 drools-core/src/main/java/org/drools/core/command/impl/DefaultCommandService.java
rename drools-core/src/main/java/org/drools/core/{command/Interceptor.java => fluent/impl/Batch.java} (56%)
create mode 100644 drools-core/src/main/java/org/drools/core/fluent/impl/InternalExecutable.java
rename drools-core/src/main/java/org/drools/core/{command/CommandService.java => runtime/ChainableRunner.java} (61%)
create mode 100644 drools-core/src/main/java/org/drools/core/runtime/InternalLocalRunner.java
rename drools-persistence-jpa/src/main/java/org/drools/persistence/{SingleSessionCommandService.java => PersistableRunner.java} (83%)
diff --git a/drools-compiler/src/test/java/org/drools/compiler/simulation/BatchRunFluentTest.java b/drools-compiler/src/test/java/org/drools/compiler/simulation/BatchRunFluentTest.java
index cea5fe17eec..1a57a6853be 100644
--- a/drools-compiler/src/test/java/org/drools/compiler/simulation/BatchRunFluentTest.java
+++ b/drools-compiler/src/test/java/org/drools/compiler/simulation/BatchRunFluentTest.java
@@ -1,16 +1,32 @@
+/*
+ * Copyright 2016 Red Hat, Inc. and/or its affiliates.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
package org.drools.compiler.simulation;
import org.drools.compiler.CommonTestMethodBase;
import org.drools.compiler.Message;
import org.drools.core.command.RequestContextImpl;
import org.drools.core.fluent.impl.FluentBuilderImpl;
-import org.drools.core.fluent.impl.PseudoClockRunner;
import org.junit.Test;
import org.kie.api.KieServices;
import org.kie.api.builder.KieModule;
import org.kie.api.builder.ReleaseId;
import org.kie.api.io.ResourceType;
-import org.kie.internal.fluent.RequestContext;
+import org.kie.api.runtime.ExecutableRunner;
+import org.kie.api.runtime.RequestContext;
import org.kie.internal.fluent.Scope;
import org.kie.internal.fluent.runtime.FluentBuilder;
import org.kie.internal.fluent.runtime.KieSessionFluent;
@@ -32,9 +48,7 @@ public class BatchRunFluentTest extends CommonTestMethodBase {
@Test
public void testOutName() {
- PseudoClockRunner runner = new PseudoClockRunner();
-
- FluentBuilder f = new FluentBuilderImpl();
+ FluentBuilder f = FluentBuilder.create();
f.newApplicationContext("app1")
.getKieContainer(releaseId).newSession()
@@ -43,17 +57,15 @@ public void testOutName() {
.getGlobal("outS").out("outS")
.dispose();
- RequestContext requestContext = (RequestContext) runner.execute( f.getExecutable() );
+ RequestContext requestContext = ExecutableRunner.create().execute( f.getExecutable() );
- assertEquals("h1", requestContext.getOut().get("outS"));
+ assertEquals("h1", requestContext.get("outS"));
}
@Test
public void testOutWithPriorSetAndNoName() {
- PseudoClockRunner runner = new PseudoClockRunner();
-
- FluentBuilder f = new FluentBuilderImpl();
+ FluentBuilder f = FluentBuilder.create();
f.newApplicationContext("app1")
.getKieContainer(releaseId).newSession()
@@ -62,17 +74,15 @@ public void testOutWithPriorSetAndNoName() {
.getGlobal("outS").set("outS").out()
.dispose();
- RequestContextImpl requestContext = (RequestContextImpl) runner.execute(f.getExecutable());
+ RequestContext requestContext = ExecutableRunner.create().execute(f.getExecutable());
- assertEquals("h1", requestContext.getOut().get("outS"));
+ assertEquals("h1", requestContext.get("outS"));
assertEquals("h1", requestContext.get("outS"));
}
@Test
public void testOutWithoutPriorSetAndNoName() {
- PseudoClockRunner runner = new PseudoClockRunner();
-
- FluentBuilder f = new FluentBuilderImpl();
+ FluentBuilder f = FluentBuilder.create();
f.newApplicationContext("app1")
.getKieContainer(releaseId).newSession()
@@ -82,9 +92,9 @@ public void testOutWithoutPriorSetAndNoName() {
.dispose();
try {
- RequestContextImpl requestContext = (RequestContextImpl) runner.execute(f.getExecutable());
+ RequestContext requestContext = ExecutableRunner.create().execute(f.getExecutable());
- assertEquals("h1", requestContext.getOut().get("out1"));
+ assertEquals("h1", requestContext.get("out1"));
fail("Must throw Exception, as no prior set was called and no name given to out");
} catch ( Exception e ) {
@@ -93,9 +103,7 @@ public void testOutWithoutPriorSetAndNoName() {
@Test
public void testSetAndGetWithCommandRegisterWithEnds() {
- PseudoClockRunner runner = new PseudoClockRunner();
-
- FluentBuilder f = new FluentBuilderImpl();
+ FluentBuilder f = FluentBuilder.create();
f.newApplicationContext("app1")
// create two sessions, and assign names
@@ -116,18 +124,16 @@ public void testSetAndGetWithCommandRegisterWithEnds() {
.get("s2", KieSessionFluent.class)
.getGlobal("outS").out("outS2").dispose();
- RequestContextImpl requestContext = (RequestContextImpl) runner.execute(f.getExecutable());
+ RequestContext requestContext = ExecutableRunner.create().execute(f.getExecutable());
// Check that nothing went to the 'out'
- assertEquals("h1", requestContext.getOut().get("outS1"));
- assertEquals("h2", requestContext.getOut().get("outS2"));
+ assertEquals("h1", requestContext.get("outS1"));
+ assertEquals("h2", requestContext.get("outS2"));
}
@Test
public void testSetAndGetWithCommandRegisterWithoutEnds() {
- PseudoClockRunner runner = new PseudoClockRunner();
-
- FluentBuilder f = new FluentBuilderImpl();
+ FluentBuilder f = FluentBuilder.create();
f.newApplicationContext("app1")
// create two sessions, and assign names
@@ -148,19 +154,20 @@ public void testSetAndGetWithCommandRegisterWithoutEnds() {
.get("s2", KieSessionFluent.class)
.getGlobal("outS").out("outS2").dispose();
- RequestContextImpl requestContext = (RequestContextImpl) runner.execute(f.getExecutable());
+ RequestContext requestContext = ExecutableRunner.create().execute(f.getExecutable());
// Check that nothing went to the 'out'
- assertEquals("h1", requestContext.getOut().get("outS1"));
- assertEquals("h2", requestContext.getOut().get("outS2"));
+ assertEquals("h1", requestContext.get("outS1"));
+ assertEquals("h2", requestContext.get("outS2"));
}
@Test
- public void testConversationIdIncreases() {
- PseudoClockRunner runner = new PseudoClockRunner();
+ public void testDifferentConversationIds() {
+ ExecutableRunner runner = ExecutableRunner.create();
+ RequestContext requestContext = runner.createContext();
- FluentBuilder f = new FluentBuilderImpl();
+ FluentBuilder f = FluentBuilder.create();
f.newApplicationContext("app1").startConversation()
.getKieContainer(releaseId).newSession()
@@ -168,22 +175,18 @@ public void testConversationIdIncreases() {
.fireAllRules()
.dispose();
- RequestContextImpl requestContext = (RequestContextImpl) runner.execute(f.getExecutable());
+ runner.execute(f.getExecutable(), requestContext);
- long conversationId = requestContext.getConversationContext().getConversationId();
- assertEquals(0, conversationId);
+ String conversationId = requestContext.getConversationContext().getName();
- requestContext = (RequestContextImpl) runner.execute(f.getExecutable());
+ runner.execute(f.getExecutable(), requestContext);
- conversationId = requestContext.getConversationContext().getConversationId();
- assertEquals(1, conversationId);
+ assertNotEquals(conversationId, requestContext.getConversationContext().getName());
}
@Test
public void testRequestScope() {
- PseudoClockRunner runner = new PseudoClockRunner();
-
- FluentBuilder f = new FluentBuilderImpl();
+ FluentBuilder f = FluentBuilder.create();
f.newApplicationContext("app1")
.getKieContainer(releaseId).newSession()
@@ -192,10 +195,10 @@ public void testRequestScope() {
.getGlobal("outS").set("outS1") // Request is default
.dispose();
- RequestContextImpl requestContext = (RequestContextImpl) runner.execute(f.getExecutable());
+ RequestContext requestContext = ExecutableRunner.create().execute(f.getExecutable());
// Check that nothing went to the 'out'
- assertNull(requestContext.getOut().get("outS"));
+ assertNull(requestContext.get("outS"));
assertNull(requestContext.getApplicationContext().get("outS1") );
assertNull(requestContext.getConversationContext() );
assertEquals("h1", requestContext.get("outS1") );
@@ -203,9 +206,9 @@ public void testRequestScope() {
@Test
public void testApplicationScope() {
- PseudoClockRunner runner = new PseudoClockRunner();
+ ExecutableRunner runner = ExecutableRunner.create();
- FluentBuilder f = new FluentBuilderImpl();
+ FluentBuilder f = FluentBuilder.create();
f.newApplicationContext("app1")
.getKieContainer(releaseId).newSession()
@@ -214,10 +217,10 @@ public void testApplicationScope() {
.getGlobal("outS").set("outS1", Scope.APPLICATION)
.dispose();
- RequestContextImpl requestContext = (RequestContextImpl) runner.execute(f.getExecutable());
+ RequestContext requestContext = runner.execute(f.getExecutable());
// Check that nothing went to the 'out'
- assertEquals(null, requestContext.getOut().get("outS"));
+ assertEquals(null, requestContext.get("outS"));
assertEquals("h1", requestContext.getApplicationContext().get("outS1") );
// Make another request, add to application context, assert old and new values are there.
@@ -238,9 +241,9 @@ public void testApplicationScope() {
@Test
public void testConversationScope() {
- PseudoClockRunner runner = new PseudoClockRunner();
+ ExecutableRunner runner = ExecutableRunner.create();
- FluentBuilder f = new FluentBuilderImpl();
+ FluentBuilder f = FluentBuilder.create();
f.newApplicationContext("app1").startConversation()
.getKieContainer(releaseId).newSession()
@@ -252,9 +255,9 @@ public void testConversationScope() {
RequestContextImpl requestContext = (RequestContextImpl) runner.execute(f.getExecutable());
// check that nothing went to the 'out'
- assertEquals(null, requestContext.getOut().get("outS"));
+ assertEquals(null, requestContext.get("outS"));
- long conversationId = requestContext.getConversationContext().getConversationId();
+ String conversationId = requestContext.getConversationContext().getName();
assertEquals("h1", requestContext.getConversationContext().get("outS1") );
@@ -283,9 +286,9 @@ public void testConversationScope() {
@Test
public void testContextScopeSearching() {
- PseudoClockRunner runner = new PseudoClockRunner();
+ ExecutableRunner runner = ExecutableRunner.create();
- FluentBuilder f = new FluentBuilderImpl();
+ FluentBuilder f = FluentBuilder.create();
// Check that get() will search up to Application, when no request or conversation values
f.newApplicationContext("app1")
@@ -295,9 +298,9 @@ public void testContextScopeSearching() {
.getGlobal("outS").set("outS1", Scope.APPLICATION)
.get("outS1").out()
.dispose();
- RequestContextImpl requestContext = (RequestContextImpl) runner.execute(f.getExecutable());
+ RequestContext requestContext = runner.execute(f.getExecutable());
- assertEquals("h1", requestContext.getOut().get("outS1"));
+ assertEquals("h1", requestContext.get("outS1"));
assertEquals("h1", requestContext.getApplicationContext().get("outS1") );
assertEquals("h1", requestContext.get("outS1") );
@@ -311,9 +314,9 @@ public void testContextScopeSearching() {
.getGlobal("outS").set("outS1", Scope.CONVERSATION)
.get("outS1").out()
.dispose();
- requestContext = (RequestContextImpl) runner.execute(f.getExecutable());
+ requestContext = runner.execute(f.getExecutable());
- assertEquals("h2", requestContext.getOut().get("outS1"));
+ assertEquals("h2", requestContext.get("outS1"));
assertEquals("h1", requestContext.getApplicationContext().get("outS1") );
assertEquals("h2", requestContext.getConversationContext().get("outS1") );
assertEquals("h2", requestContext.get("outS1") );
@@ -322,16 +325,16 @@ public void testContextScopeSearching() {
// Check that get() will search directly to Request, thus over-riding Application and Conversation scoped values
f = new FluentBuilderImpl();
- f.getApplicationContext("app1").joinConversation(requestContext.getConversationContext().getConversationId())
+ f.getApplicationContext("app1").joinConversation(requestContext.getConversationContext().getName())
.getKieContainer(releaseId).newSession()
.insert("h3")
.fireAllRules()
.getGlobal("outS").set("outS1", Scope.REQUEST)
.get("outS1").out()
.dispose();
- requestContext = (RequestContextImpl) runner.execute(f.getExecutable());
+ requestContext = runner.execute(f.getExecutable());
- assertEquals("h3", requestContext.getOut().get("outS1"));
+ assertEquals("h3", requestContext.get("outS1"));
assertEquals("h1", requestContext.getApplicationContext().get("outS1") );
assertEquals("h2", requestContext.getConversationContext().get("outS1") );
assertEquals("h3", requestContext.get("outS1") );
@@ -341,9 +344,9 @@ public void testContextScopeSearching() {
@Test
public void testAfter() {
- PseudoClockRunner runner = new PseudoClockRunner( 0);
+ ExecutableRunner runner = ExecutableRunner.create(0L);
- FluentBuilder f = new FluentBuilderImpl();
+ FluentBuilder f = FluentBuilder.create();
// Check that get() will search up to Application, when no request or conversation values
f.after(1000).newApplicationContext("app1")
@@ -361,10 +364,10 @@ public void testAfter() {
.getGlobal("timeNow").out("timeNow2")
.dispose();
- RequestContextImpl requestContext = (RequestContextImpl) runner.execute(f.getExecutable());
+ RequestContext requestContext = runner.execute(f.getExecutable());
- assertEquals(1000l, requestContext.getOut().get("timeNow1"));
- assertEquals(2000l, requestContext.getOut().get("timeNow2"));
+ assertEquals(1000l, requestContext.get("timeNow1"));
+ assertEquals(2000l, requestContext.get("timeNow2"));
}
public static KieModule createAndDeployJar( KieServices ks,
diff --git a/drools-core/src/main/java/org/drools/core/SessionConfiguration.java b/drools-core/src/main/java/org/drools/core/SessionConfiguration.java
index 98540a29733..6528b49ad31 100644
--- a/drools-core/src/main/java/org/drools/core/SessionConfiguration.java
+++ b/drools-core/src/main/java/org/drools/core/SessionConfiguration.java
@@ -16,12 +16,12 @@
package org.drools.core;
-import org.drools.core.command.CommandService;
import org.drools.core.process.instance.WorkItemManagerFactory;
import org.drools.core.time.TimerService;
import org.drools.core.time.impl.TimerJobFactoryManager;
import org.drools.core.util.StringUtils;
import org.kie.api.runtime.Environment;
+import org.kie.api.runtime.ExecutableRunner;
import org.kie.api.runtime.KieSessionConfiguration;
import org.kie.api.runtime.conf.BeliefSystemTypeOption;
import org.kie.api.runtime.conf.ClockTypeOption;
@@ -101,7 +101,7 @@ public final TimerJobFactoryManager getTimerJobFactoryManager() {
public abstract String getSignalManagerFactory();
- public abstract CommandService getCommandService(KnowledgeBase kbase, Environment environment);
+ public abstract ExecutableRunner getRunner( KnowledgeBase kbase, Environment environment );
public abstract TimerService newTimerService();
diff --git a/drools-core/src/main/java/org/drools/core/SessionConfigurationDelegate.java b/drools-core/src/main/java/org/drools/core/SessionConfigurationDelegate.java
index 766508425fa..446ff5e2d02 100644
--- a/drools-core/src/main/java/org/drools/core/SessionConfigurationDelegate.java
+++ b/drools-core/src/main/java/org/drools/core/SessionConfigurationDelegate.java
@@ -16,10 +16,10 @@
package org.drools.core;
-import org.drools.core.command.CommandService;
import org.drools.core.process.instance.WorkItemManagerFactory;
import org.drools.core.time.TimerService;
import org.kie.api.runtime.Environment;
+import org.kie.api.runtime.ExecutableRunner;
import org.kie.api.runtime.conf.QueryListenerOption;
import org.kie.api.runtime.conf.TimedRuleExecutionFilter;
import org.kie.api.runtime.process.WorkItemHandler;
@@ -204,8 +204,8 @@ public String getSignalManagerFactory() {
}
@Override
- public CommandService getCommandService( KnowledgeBase kbase, Environment environment ) {
- return delegate.getCommandService( kbase, environment );
+ public ExecutableRunner getRunner( KnowledgeBase kbase, Environment environment ) {
+ return delegate.getRunner( kbase, environment );
}
@Override
diff --git a/drools-core/src/main/java/org/drools/core/SessionConfigurationImpl.java b/drools-core/src/main/java/org/drools/core/SessionConfigurationImpl.java
index b61f1fb27c6..3ab968c9070 100644
--- a/drools-core/src/main/java/org/drools/core/SessionConfigurationImpl.java
+++ b/drools-core/src/main/java/org/drools/core/SessionConfigurationImpl.java
@@ -16,13 +16,13 @@
package org.drools.core;
-import org.drools.core.command.CommandService;
import org.drools.core.common.ProjectClassLoader;
import org.drools.core.process.instance.WorkItemManagerFactory;
import org.drools.core.time.TimerService;
import org.drools.core.util.ConfFileUtils;
import org.drools.core.util.MVELSafeHelper;
import org.kie.api.runtime.Environment;
+import org.kie.api.runtime.ExecutableRunner;
import org.kie.api.runtime.KieSessionConfiguration;
import org.kie.api.runtime.conf.BeliefSystemTypeOption;
import org.kie.api.runtime.conf.ClockTypeOption;
@@ -83,11 +83,11 @@ public class SessionConfigurationImpl extends SessionConfiguration {
private Map workItemHandlers;
private WorkItemManagerFactory workItemManagerFactory;
- private CommandService commandService;
+ private ExecutableRunner runner;
private transient ClassLoader classLoader;
- private TimerJobFactoryType timerJobFactoryType;
+ private TimerJobFactoryType timerJobFactoryType;
public void writeExternal(ObjectOutput out) throws IOException {
out.writeObject( chainedProperties );
@@ -356,13 +356,12 @@ public String getSignalManagerFactory() {
"org.jbpm.process.instance.event.DefaultSignalManagerFactory" );
}
- public CommandService getCommandService(KnowledgeBase kbase,
- Environment environment) {
- if ( this.commandService == null ) {
+ public ExecutableRunner getRunner( KnowledgeBase kbase, Environment environment ) {
+ if ( this.runner == null ) {
initCommandService( kbase,
environment );
}
- return this.commandService;
+ return this.runner;
}
@SuppressWarnings("unchecked")
@@ -374,19 +373,19 @@ private void initCommandService(KnowledgeBase kbase,
return;
}
- Class clazz = null;
+ Class clazz = null;
try {
- clazz = (Class) this.classLoader.loadClass( className );
+ clazz = (Class) this.classLoader.loadClass( className );
} catch ( ClassNotFoundException e ) {
}
if ( clazz != null ) {
try {
- this.commandService = clazz.getConstructor( KnowledgeBase.class,
- KieSessionConfiguration.class,
- Environment.class ).newInstance( kbase,
- this,
- environment );
+ this.runner = clazz.getConstructor( KnowledgeBase.class,
+ KieSessionConfiguration.class,
+ Environment.class ).newInstance( kbase,
+ this,
+ environment );
} catch ( Exception e ) {
throw new IllegalArgumentException( "Unable to instantiate command service '" + className + "'",
e );
diff --git a/drools-core/src/main/java/org/drools/core/audit/WorkingMemoryLogger.java b/drools-core/src/main/java/org/drools/core/audit/WorkingMemoryLogger.java
index 71e82d6bb7d..c219e47b7bb 100644
--- a/drools-core/src/main/java/org/drools/core/audit/WorkingMemoryLogger.java
+++ b/drools-core/src/main/java/org/drools/core/audit/WorkingMemoryLogger.java
@@ -159,7 +159,7 @@ public WorkingMemoryLogger(final KnowledgeRuntimeEventManager session) {
statelessSession.getKnowledgeBase().addEventListener( (KieBaseEventListener) this );
} else if (session instanceof CommandBasedStatefulKnowledgeSession) {
StatefulKnowledgeSessionImpl statefulSession =
- ((StatefulKnowledgeSessionImpl)(( RegistryContext)((CommandBasedStatefulKnowledgeSession) session).getCommandService().getContext()).lookup( KieSession.class));
+ ((StatefulKnowledgeSessionImpl)(( RegistryContext)((CommandBasedStatefulKnowledgeSession) session).getRunner().createContext()).lookup( KieSession.class ));
isPhreak = statefulSession.getKnowledgeBase().getConfiguration().isPhreakEnabled();
InternalWorkingMemory eventManager = statefulSession;
eventManager.addEventListener( (RuleRuntimeEventListener) this );
diff --git a/drools-core/src/main/java/org/drools/core/base/WrappedStatefulKnowledgeSessionForRHS.java b/drools-core/src/main/java/org/drools/core/base/WrappedStatefulKnowledgeSessionForRHS.java
index bd1825472fa..6aca86f8fa0 100644
--- a/drools-core/src/main/java/org/drools/core/base/WrappedStatefulKnowledgeSessionForRHS.java
+++ b/drools-core/src/main/java/org/drools/core/base/WrappedStatefulKnowledgeSessionForRHS.java
@@ -58,7 +58,6 @@
import org.kie.api.runtime.rule.ViewChangedEventListener;
import org.kie.api.time.SessionClock;
import org.kie.internal.KnowledgeBase;
-import org.kie.internal.command.Context;
import org.kie.internal.event.rule.RuleEventListener;
import org.kie.internal.process.CorrelationKey;
import org.kie.internal.runtime.KnowledgeRuntime;
@@ -172,10 +171,6 @@ public T execute(Command command) {
return delegate.execute(command);
}
- public T execute(Context context, Command command) {
- return delegate.execute(context, command);
- }
-
public void initInitialFact(InternalKnowledgeBase kBase, MarshallerReaderContext context) {
delegate.initInitialFact(kBase, context);
}
diff --git a/drools-core/src/main/java/org/drools/core/command/ConversationContext.java b/drools-core/src/main/java/org/drools/core/command/ConversationContext.java
deleted file mode 100644
index a69286180cb..00000000000
--- a/drools-core/src/main/java/org/drools/core/command/ConversationContext.java
+++ /dev/null
@@ -1,24 +0,0 @@
-package org.drools.core.command;
-
-import org.drools.core.command.impl.ContextImpl;
-import org.kie.internal.command.Context;
-import org.kie.internal.command.ContextManager;
-
-public class ConversationContext extends ContextImpl {
-
- private long conversationId;
-
- public ConversationContext(long conversationId, ContextManager manager, Context delegate) {
- super(Long.toString(conversationId), manager, delegate);
- }
-
- public ConversationContext(long conversationId, ContextManager manager) {
- super(Long.toString(conversationId), manager);
- this.conversationId = conversationId;
-
- }
-
- public long getConversationId() {
- return conversationId;
- }
-}
diff --git a/drools-core/src/main/java/org/drools/core/command/ConversationContextManager.java b/drools-core/src/main/java/org/drools/core/command/ConversationContextManager.java
index 91e53a44f6e..2672441beb7 100644
--- a/drools-core/src/main/java/org/drools/core/command/ConversationContextManager.java
+++ b/drools-core/src/main/java/org/drools/core/command/ConversationContextManager.java
@@ -1,44 +1,43 @@
package org.drools.core.command;
-import org.drools.core.command.RequestContextImpl;
-import org.kie.internal.command.Context;
-
import org.drools.core.command.impl.ContextImpl;
+import org.kie.api.runtime.Context;
import java.util.HashMap;
import java.util.Map;
+import java.util.UUID;
public class ConversationContextManager {
- private Map conversationContexts;
+ private Map conversationContexts;
private long counter;
public ConversationContextManager() {
- conversationContexts = new HashMap();
+ conversationContexts = new HashMap();
}
public void startConversation(RequestContextImpl requestContext) {
- long conversationId = counter++;
- ConversationContext ctx = new ConversationContext(conversationId, null);
+ String conversationId = UUID.randomUUID().toString();
+ ContextImpl ctx = new ContextImpl( conversationId, null);
conversationContexts.put(conversationId, ctx);
requestContext.setConversationContext(ctx);
}
- public void joinConversation(RequestContextImpl requestContext, long conversationId) {
- ConversationContext ctx = (ConversationContext) conversationContexts.get(conversationId);
+ public void joinConversation(RequestContextImpl requestContext, String conversationId) {
+ Context ctx = conversationContexts.get( conversationId );
if ( ctx == null ) {
throw new RuntimeException("Conversation cannot be found");
}
requestContext.setConversationContext(ctx);
}
- public void leaveConversation(RequestContextImpl requestContext, long conversationId) {
+ public void leaveConversation(RequestContextImpl requestContext, String conversationId) {
throw new UnsupportedOperationException("Need to implement");
}
- public void endConversation(RequestContextImpl requestContext, long conversationId) {
+ public void endConversation(RequestContextImpl requestContext, String conversationId) {
conversationContexts.remove(conversationId);
requestContext.setConversationContext(null);
}
diff --git a/drools-core/src/main/java/org/drools/core/command/EndConversationCommand.java b/drools-core/src/main/java/org/drools/core/command/EndConversationCommand.java
index 9a81267b406..480f58bd90b 100644
--- a/drools-core/src/main/java/org/drools/core/command/EndConversationCommand.java
+++ b/drools-core/src/main/java/org/drools/core/command/EndConversationCommand.java
@@ -1,16 +1,16 @@
package org.drools.core.command;
import org.drools.core.command.impl.ExecutableCommand;
-import org.kie.internal.command.Context;
+import org.kie.api.runtime.Context;
public class EndConversationCommand implements ExecutableCommand {
- private long conversationId;
+ private String conversationId;
public EndConversationCommand() {
}
- public EndConversationCommand(long conversationId) {
+ public EndConversationCommand(String conversationId) {
this.conversationId = conversationId;
}
diff --git a/drools-core/src/main/java/org/drools/core/command/ExecuteCommand.java b/drools-core/src/main/java/org/drools/core/command/ExecuteCommand.java
index a05414ddf52..edad5044958 100644
--- a/drools-core/src/main/java/org/drools/core/command/ExecuteCommand.java
+++ b/drools-core/src/main/java/org/drools/core/command/ExecuteCommand.java
@@ -25,7 +25,7 @@
import org.kie.api.runtime.ExecutionResults;
import org.kie.api.runtime.KieSession;
import org.kie.api.runtime.rule.FactHandle;
-import org.kie.internal.command.Context;
+import org.kie.api.runtime.Context;
import java.util.HashMap;
@@ -62,7 +62,7 @@ public ExecutionResults execute(Context context) {
ExecutionResults kresults = null;
if( ksession instanceof StatefulKnowledgeSessionImpl ) {
- kresults = ((StatefulKnowledgeSessionImpl)ksession).execute(context, this.command );
+ kresults = ksession.execute(this.command );
}
else {
// Graceful failure
diff --git a/drools-core/src/main/java/org/drools/core/command/FinishedCommand.java b/drools-core/src/main/java/org/drools/core/command/FinishedCommand.java
index bb528877b69..b318a09027a 100644
--- a/drools-core/src/main/java/org/drools/core/command/FinishedCommand.java
+++ b/drools-core/src/main/java/org/drools/core/command/FinishedCommand.java
@@ -17,7 +17,7 @@
package org.drools.core.command;
import org.drools.core.command.impl.ExecutableCommand;
-import org.kie.internal.command.Context;
+import org.kie.api.runtime.Context;
public class FinishedCommand
implements
diff --git a/drools-core/src/main/java/org/drools/core/command/GetKieContainerCommand.java b/drools-core/src/main/java/org/drools/core/command/GetKieContainerCommand.java
index f9f3d72a06d..02645d0f960 100644
--- a/drools-core/src/main/java/org/drools/core/command/GetKieContainerCommand.java
+++ b/drools-core/src/main/java/org/drools/core/command/GetKieContainerCommand.java
@@ -21,7 +21,7 @@
import org.kie.api.KieServices;
import org.kie.api.builder.ReleaseId;
import org.kie.api.runtime.KieContainer;
-import org.kie.internal.command.Context;
+import org.kie.api.runtime.Context;
public class GetKieContainerCommand
implements
diff --git a/drools-core/src/main/java/org/drools/core/command/GetSessionClockCommand.java b/drools-core/src/main/java/org/drools/core/command/GetSessionClockCommand.java
index bc24b86a0fb..f0cd412b167 100644
--- a/drools-core/src/main/java/org/drools/core/command/GetSessionClockCommand.java
+++ b/drools-core/src/main/java/org/drools/core/command/GetSessionClockCommand.java
@@ -20,7 +20,7 @@
import org.drools.core.command.impl.RegistryContext;
import org.kie.api.runtime.KieSession;
import org.kie.api.time.SessionClock;
-import org.kie.internal.command.Context;
+import org.kie.api.runtime.Context;
public class GetSessionClockCommand
implements
diff --git a/drools-core/src/main/java/org/drools/core/command/GetVariableCommand.java b/drools-core/src/main/java/org/drools/core/command/GetVariableCommand.java
index fb82ad3a2d9..193f576b181 100644
--- a/drools-core/src/main/java/org/drools/core/command/GetVariableCommand.java
+++ b/drools-core/src/main/java/org/drools/core/command/GetVariableCommand.java
@@ -16,15 +16,16 @@
package org.drools.core.command;
+import org.drools.core.command.impl.ExecutableCommand;
+import org.drools.core.command.impl.RegistryContext;
+import org.kie.api.runtime.Context;
+
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlSchemaType;
-import org.drools.core.command.impl.ExecutableCommand;
-import org.kie.internal.command.Context;
-
@XmlRootElement(name="get-variable-command")
@XmlAccessorType(XmlAccessType.FIELD)
public class GetVariableCommand implements ExecutableCommand
* The first responsibility of this method is to make sure that the Command Scoped {@link EntityManager} (CSEM) joins
* the ongoing transaction.
diff --git a/drools-persistence-jpa/src/main/java/org/drools/persistence/TransactionSynchronizationContainer.java b/drools-persistence-jpa/src/main/java/org/drools/persistence/TransactionSynchronizationContainer.java
index c3f6671875b..a4f42761e00 100644
--- a/drools-persistence-jpa/src/main/java/org/drools/persistence/TransactionSynchronizationContainer.java
+++ b/drools-persistence-jpa/src/main/java/org/drools/persistence/TransactionSynchronizationContainer.java
@@ -15,13 +15,12 @@
package org.drools.persistence;
-import java.util.Iterator;
-import java.util.Set;
-import java.util.TreeSet;
-
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import java.util.Set;
+import java.util.TreeSet;
+
public class TransactionSynchronizationContainer implements TransactionSynchronization {
private static Logger logger = LoggerFactory.getLogger( TransactionSynchronizationContainer.class );
diff --git a/drools-persistence-jpa/src/main/java/org/drools/persistence/jpa/JDKCallableJobCommand.java b/drools-persistence-jpa/src/main/java/org/drools/persistence/jpa/JDKCallableJobCommand.java
index 266c7df122f..23b7958ecb5 100644
--- a/drools-persistence-jpa/src/main/java/org/drools/persistence/jpa/JDKCallableJobCommand.java
+++ b/drools-persistence-jpa/src/main/java/org/drools/persistence/jpa/JDKCallableJobCommand.java
@@ -16,7 +16,7 @@
package org.drools.persistence.jpa;
import org.drools.core.command.impl.ExecutableCommand;
-import org.kie.internal.command.Context;
+import org.kie.api.runtime.Context;
public class JDKCallableJobCommand
implements
diff --git a/drools-persistence-jpa/src/main/java/org/drools/persistence/jpa/JpaJDKTimerService.java b/drools-persistence-jpa/src/main/java/org/drools/persistence/jpa/JpaJDKTimerService.java
index 33b57cac06f..a8faab796eb 100644
--- a/drools-persistence-jpa/src/main/java/org/drools/persistence/jpa/JpaJDKTimerService.java
+++ b/drools-persistence-jpa/src/main/java/org/drools/persistence/jpa/JpaJDKTimerService.java
@@ -16,12 +16,7 @@
package org.drools.persistence.jpa;
-import java.util.Collection;
-import java.util.Map;
-import java.util.concurrent.Callable;
-import java.util.concurrent.ConcurrentHashMap;
-
-import org.drools.core.command.CommandService;
+import org.kie.api.runtime.ExecutableRunner;
import org.drools.core.command.impl.ExecutableCommand;
import org.drools.core.time.InternalSchedulerService;
import org.drools.core.time.Job;
@@ -32,10 +27,15 @@
import org.drools.core.time.impl.DefaultTimerJobInstance;
import org.drools.core.time.impl.JDKTimerService;
import org.drools.core.time.impl.TimerJobInstance;
-import org.kie.internal.command.Context;
+import org.kie.api.runtime.Context;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import java.util.Collection;
+import java.util.Map;
+import java.util.concurrent.Callable;
+import java.util.concurrent.ConcurrentHashMap;
+
/**
* A default Scheduler implementation that uses the
* JDK built-in ScheduledThreadPoolExecutor as the
@@ -45,12 +45,12 @@ public class JpaJDKTimerService extends JDKTimerService {
private static Logger logger = LoggerFactory.getLogger( JpaTimerJobInstance.class );
- private CommandService commandService;
+ private ExecutableRunner runner;
private Map timerInstances;
- public void setCommandService(CommandService commandService) {
- this.commandService = commandService;
+ public void setCommandService(ExecutableRunner runner ) {
+ this.runner = runner;
}
public JpaJDKTimerService() {
@@ -101,7 +101,7 @@ public JpaJDKCallableJob(Job job,
public Void call() throws Exception {
try {
JDKCallableJobCommand command = new JDKCallableJobCommand( this );
- commandService.execute( command );
+ runner.execute( command );
} catch(Exception e ) {
logger.error("Unable to execute job!", e);
throw e;
diff --git a/drools-persistence-jpa/src/main/java/org/drools/persistence/jpa/JpaTimeJobFactoryManager.java b/drools-persistence-jpa/src/main/java/org/drools/persistence/jpa/JpaTimeJobFactoryManager.java
index 9248dcf98dc..3b7d1e06510 100644
--- a/drools-persistence-jpa/src/main/java/org/drools/persistence/jpa/JpaTimeJobFactoryManager.java
+++ b/drools-persistence-jpa/src/main/java/org/drools/persistence/jpa/JpaTimeJobFactoryManager.java
@@ -15,7 +15,7 @@
package org.drools.persistence.jpa;
-import org.drools.core.command.CommandService;
+import org.kie.api.runtime.ExecutableRunner;
import org.drools.core.time.InternalSchedulerService;
import org.drools.core.time.Job;
import org.drools.core.time.JobContext;
@@ -30,14 +30,14 @@ public class JpaTimeJobFactoryManager
extends ThreadSafeTrackableTimeJobFactoryManager
implements CommandServiceTimerJobFactoryManager {
- private CommandService commandService;
+ private ExecutableRunner runner;
- public void setCommandService(CommandService commandService) {
- this.commandService = commandService;
+ public void setRunner(ExecutableRunner runner ) {
+ this.runner = runner;
}
- public CommandService getCommandService() {
- return commandService;
+ public ExecutableRunner getRunner() {
+ return runner;
}
public TimerJobInstance createTimerJobInstance(Job job,
diff --git a/drools-persistence-jpa/src/main/java/org/drools/persistence/jpa/JpaTimerJobInstance.java b/drools-persistence-jpa/src/main/java/org/drools/persistence/jpa/JpaTimerJobInstance.java
index ce8c252ac45..50c89f53066 100644
--- a/drools-persistence-jpa/src/main/java/org/drools/persistence/jpa/JpaTimerJobInstance.java
+++ b/drools-persistence-jpa/src/main/java/org/drools/persistence/jpa/JpaTimerJobInstance.java
@@ -15,7 +15,7 @@
package org.drools.persistence.jpa;
-import org.drools.core.command.CommandService;
+import org.kie.api.runtime.ExecutableRunner;
import org.drools.core.time.InternalSchedulerService;
import org.drools.core.time.Job;
import org.drools.core.time.JobContext;
@@ -46,8 +46,8 @@ public JpaTimerJobInstance(Job job,
public Void call() throws Exception {
try {
JDKCallableJobCommand command = new JDKCallableJobCommand( this );
- CommandService commandService = ( (CommandServiceTimerJobFactoryManager) ( (TimerService) scheduler ).getTimerJobFactoryManager() ).getCommandService();
- commandService.execute( command );
+ ExecutableRunner runner = ( (CommandServiceTimerJobFactoryManager) ( (TimerService) scheduler ).getTimerJobFactoryManager() ).getRunner();
+ runner.execute( command );
return null;
} catch( Exception e ) {
logger.error("Unable to execute timer job!", e);
diff --git a/drools-persistence-jpa/src/main/java/org/drools/persistence/jpa/KnowledgeStoreServiceImpl.java b/drools-persistence-jpa/src/main/java/org/drools/persistence/jpa/KnowledgeStoreServiceImpl.java
index d75e06146a5..6f86b9c77cc 100644
--- a/drools-persistence-jpa/src/main/java/org/drools/persistence/jpa/KnowledgeStoreServiceImpl.java
+++ b/drools-persistence-jpa/src/main/java/org/drools/persistence/jpa/KnowledgeStoreServiceImpl.java
@@ -15,22 +15,22 @@
*/
package org.drools.persistence.jpa;
+import org.kie.api.runtime.ExecutableRunner;
import org.drools.core.SessionConfiguration;
-import org.drools.core.command.CommandService;
import org.drools.core.command.EntryPointCreator;
import org.drools.core.command.impl.CommandBasedEntryPoint;
import org.drools.core.command.impl.CommandBasedStatefulKnowledgeSession;
-import org.drools.persistence.SingleSessionCommandService;
-import org.drools.persistence.jpa.processinstance.JPAWorkItemManagerFactory;
import org.drools.core.process.instance.WorkItemManagerFactory;
+import org.drools.persistence.PersistableRunner;
+import org.drools.persistence.jpa.processinstance.JPAWorkItemManagerFactory;
import org.kie.api.KieBase;
import org.kie.api.persistence.jpa.KieStoreServices;
import org.kie.api.runtime.CommandExecutor;
import org.kie.api.runtime.Environment;
import org.kie.api.runtime.KieSessionConfiguration;
+import org.kie.api.runtime.conf.TimerJobFactoryOption;
import org.kie.api.runtime.rule.EntryPoint;
import org.kie.internal.runtime.StatefulKnowledgeSession;
-import org.kie.api.runtime.conf.TimerJobFactoryOption;
import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
@@ -50,7 +50,7 @@ public KnowledgeStoreServiceImpl() {
}
protected void setDefaultImplementations() {
- setCommandServiceClass( SingleSessionCommandService.class );
+ setCommandServiceClass( PersistableRunner.class );
setProcessInstanceManagerFactoryClass( "org.jbpm.persistence.processinstance.JPAProcessInstanceManagerFactory" );
setWorkItemManagerFactoryClass( JPAWorkItemManagerFactory.class );
setProcessSignalManagerFactoryClass( "org.jbpm.persistence.processinstance.JPASignalManagerFactory" );
@@ -67,12 +67,12 @@ public StatefulKnowledgeSession newKieSession(KieBase kbase,
throw new IllegalArgumentException( "Environment cannot be null" );
}
- CommandService commandService = (CommandService) buildCommandService( kbase,
- mergeConfig( configuration ),
- environment );
- commandService.getContext().set(EntryPointCreator.class.getName(),
- new CommandBasedEntryPointCreator(commandService));
- return new CommandBasedStatefulKnowledgeSession( commandService );
+ ExecutableRunner runner = (ExecutableRunner) buildCommandService( kbase,
+ mergeConfig( configuration ),
+ environment );
+ runner.createContext().set( EntryPointCreator.class.getName(),
+ new CommandBasedEntryPointCreator(runner) );
+ return new CommandBasedStatefulKnowledgeSession( runner );
}
public StatefulKnowledgeSession loadKieSession(int id,
@@ -87,13 +87,13 @@ public StatefulKnowledgeSession loadKieSession(int id,
throw new IllegalArgumentException( "Environment cannot be null" );
}
- CommandService commandService = (CommandService) buildCommandService( new Long(id),
- kbase,
- mergeConfig( configuration ),
- environment );
- commandService.getContext().set(EntryPointCreator.class.getName(),
- new CommandBasedEntryPointCreator(commandService));
- return new CommandBasedStatefulKnowledgeSession( commandService );
+ ExecutableRunner runner = (ExecutableRunner) buildCommandService( new Long( id),
+ kbase,
+ mergeConfig( configuration ),
+ environment );
+ runner.createContext().set( EntryPointCreator.class.getName(),
+ new CommandBasedEntryPointCreator(runner) );
+ return new CommandBasedStatefulKnowledgeSession( runner );
}
public StatefulKnowledgeSession loadKieSession(Long id,
@@ -108,24 +108,24 @@ public StatefulKnowledgeSession loadKieSession(Long id,
throw new IllegalArgumentException( "Environment cannot be null" );
}
- CommandService commandService = (CommandService) buildCommandService( id,
- kbase,
- mergeConfig( configuration ),
- environment );
- commandService.getContext().set(EntryPointCreator.class.getName(),
- new CommandBasedEntryPointCreator(commandService));
- return new CommandBasedStatefulKnowledgeSession( commandService );
+ ExecutableRunner runner = (ExecutableRunner) buildCommandService( id,
+ kbase,
+ mergeConfig( configuration ),
+ environment );
+ runner.createContext().set( EntryPointCreator.class.getName(),
+ new CommandBasedEntryPointCreator(runner) );
+ return new CommandBasedStatefulKnowledgeSession( runner );
}
public static class CommandBasedEntryPointCreator implements EntryPointCreator {
- private final CommandService commandService;
+ private final ExecutableRunner runner;
- public CommandBasedEntryPointCreator(CommandService commandService) {
- this.commandService = commandService;
+ public CommandBasedEntryPointCreator(ExecutableRunner runner ) {
+ this.runner = runner;
}
public EntryPoint getEntryPoint(String entryPoint) {
- return new CommandBasedEntryPoint( commandService, entryPoint );
+ return new CommandBasedEntryPoint( runner, entryPoint );
}
}
@@ -194,7 +194,7 @@ private KieSessionConfiguration mergeConfig(KieSessionConfiguration configuratio
public long getStatefulKnowledgeSessionId(StatefulKnowledgeSession ksession) {
if ( ksession instanceof CommandBasedStatefulKnowledgeSession ) {
- SingleSessionCommandService commandService = (SingleSessionCommandService) ((CommandBasedStatefulKnowledgeSession) ksession).getCommandService();
+ PersistableRunner commandService = (PersistableRunner) ((CommandBasedStatefulKnowledgeSession) ksession).getRunner();
return commandService.getSessionId();
}
throw new IllegalArgumentException( "StatefulKnowledgeSession must be an a CommandBasedStatefulKnowledgeSession" );
diff --git a/drools-persistence-jpa/src/main/java/org/drools/persistence/jpa/OptimisticLockRetryInterceptor.java b/drools-persistence-jpa/src/main/java/org/drools/persistence/jpa/OptimisticLockRetryInterceptor.java
index 4d4d8040942..b56c899b243 100644
--- a/drools-persistence-jpa/src/main/java/org/drools/persistence/jpa/OptimisticLockRetryInterceptor.java
+++ b/drools-persistence-jpa/src/main/java/org/drools/persistence/jpa/OptimisticLockRetryInterceptor.java
@@ -16,15 +16,17 @@
package org.drools.persistence.jpa;
-import javax.persistence.OptimisticLockException;
-
import org.drools.core.command.impl.AbstractInterceptor;
-import org.kie.api.command.Command;
+import org.kie.api.runtime.Executable;
+import org.kie.api.runtime.RequestContext;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import javax.persistence.OptimisticLockException;
+import java.util.concurrent.atomic.AtomicInteger;
+
/**
- * Interceptor that is capable of retrying command execution. It is intended to retry only if right exception
+ * ExecutableInterceptor that is capable of retrying command execution. It is intended to retry only if right exception
* has been thrown. By default it will look for org.hibernate.StaleObjectStateException
and only
* then attempt to retry.
* Since this is Hibernate specific class another can be given as system property to override default. Name of the
@@ -51,6 +53,8 @@ public class OptimisticLockRetryInterceptor extends AbstractInterceptor {
protected Class> targetConstraintViolationExceptionClass;
+ private static final ThreadLocal invocationsCounter = new ThreadLocal<>();
+
public OptimisticLockRetryInterceptor() {
String clazz = System.getProperty("org.kie.optlock.exclass", "org.hibernate.StaleObjectStateException");
try {
@@ -68,7 +72,23 @@ public OptimisticLockRetryInterceptor() {
}
@Override
- public T execute(Command command) {
+ public final RequestContext execute( Executable executable, RequestContext ctx ) {
+ AtomicInteger counter = invocationsCounter.get();
+ if (counter == null) {
+ counter = new AtomicInteger( 0 );
+ invocationsCounter.set( counter );
+ }
+ counter.incrementAndGet();
+ try {
+ return internalExecute( executable, ctx );
+ } finally {
+ if (counter.decrementAndGet() == 0) {
+ invocationsCounter.remove();
+ }
+ }
+ }
+
+ protected RequestContext internalExecute( Executable executable, RequestContext ctx ) {
int attempt = 1;
long sleepTime = delay;
RuntimeException originException = null;
@@ -79,7 +99,8 @@ public T execute(Command command) {
}
try {
- return executeNext(command);
+ executeNext(executable, ctx);
+ return ctx;
} catch (RuntimeException ex) {
// in case there is another interceptor of this type in the stack don't handle it here
@@ -108,7 +129,6 @@ public T execute(Command command) {
}
logger.warn("Retry failed after {} attempts", attempt);
throw originException;
-
}
protected boolean isCausedByOptimisticLockingFailure(Throwable throwable) {
@@ -178,19 +198,7 @@ public void setTargetExceptionClass(Class> targetExceptionClass) {
}
protected boolean hasInterceptorInStack() {
- StackTraceElement[] elements = Thread.currentThread().getStackTrace();
- int counter = -1;
- for (StackTraceElement element : elements) {
- if (element.getClassName().equals(this.getClass().getName()) && element.getMethodName().equals("execute")) {
- counter++;
- }
- // avoid iterating entire stack if possible
- if (counter > 0) {
- return true;
- }
- }
-
- return false;
+ return invocationsCounter.get().get() > 1;
}
}
diff --git a/drools-persistence-jpa/src/main/java/org/drools/persistence/jta/TransactionLockInterceptor.java b/drools-persistence-jpa/src/main/java/org/drools/persistence/jta/TransactionLockInterceptor.java
index 16ca21a359d..c370f50d750 100644
--- a/drools-persistence-jpa/src/main/java/org/drools/persistence/jta/TransactionLockInterceptor.java
+++ b/drools-persistence-jpa/src/main/java/org/drools/persistence/jta/TransactionLockInterceptor.java
@@ -16,24 +16,24 @@
package org.drools.persistence.jta;
-import java.util.Set;
-import java.util.concurrent.CopyOnWriteArraySet;
-import java.util.concurrent.locks.ReentrantLock;
-
-import javax.transaction.Status;
-
import org.drools.core.command.impl.AbstractInterceptor;
import org.drools.persistence.OrderedTransactionSynchronization;
import org.drools.persistence.TransactionManager;
import org.drools.persistence.TransactionManagerHelper;
-import org.kie.api.command.Command;
import org.kie.api.runtime.Environment;
import org.kie.api.runtime.EnvironmentName;
+import org.kie.api.runtime.Executable;
+import org.kie.api.runtime.RequestContext;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import javax.transaction.Status;
+import java.util.Set;
+import java.util.concurrent.CopyOnWriteArraySet;
+import java.util.concurrent.locks.ReentrantLock;
+
/**
- * Interceptor that will lock underlying CommandService
until transaction completion.
+ * ExecutableInterceptor that will lock underlying Runner
until transaction completion.
* In case there is no transaction active lock is released directly.
*
* By default, interceptor is disabled and needs to be explicitly enabled in one of two ways:
@@ -68,9 +68,10 @@ public TransactionLockInterceptor(Environment environment, String releaseTxKey)
}
@Override
- public T execute(Command command) {
+ public RequestContext execute( Executable executable, RequestContext ctx ) {
if (!active) {
- return executeNext(command);
+ executeNext(executable, ctx);
+ return ctx;
}
// release before entering in case it failed previously to avoid deadlock
releaseAfterFailure();
@@ -83,7 +84,7 @@ public T execute(Command command) {
logger.debug("Lock taken by {}", Thread.currentThread().getName());
}
try {
- return executeNext(command);
+ executeNext(executable, ctx);
} finally {
if (locked) {
logger.debug("About to register lock release handler by {}", Thread.currentThread().getName());
@@ -91,6 +92,7 @@ public T execute(Command command) {
}
releaseAfterFailure();
}
+ return ctx;
}
protected void release(TransactionManager txm) {
diff --git a/drools-persistence-jpa/src/test/java/org/drools/persistence/jta/JtaTransactionManagerTest.java b/drools-persistence-jpa/src/test/java/org/drools/persistence/jta/JtaTransactionManagerTest.java
index 046d9bc3d9f..fbf77acda12 100644
--- a/drools-persistence-jpa/src/test/java/org/drools/persistence/jta/JtaTransactionManagerTest.java
+++ b/drools-persistence-jpa/src/test/java/org/drools/persistence/jta/JtaTransactionManagerTest.java
@@ -17,7 +17,7 @@
import bitronix.tm.internal.BitronixRollbackException;
import org.drools.core.command.impl.CommandBasedStatefulKnowledgeSession;
-import org.drools.persistence.SingleSessionCommandService;
+import org.drools.persistence.PersistableRunner;
import org.drools.persistence.TransactionManager;
import org.drools.persistence.jpa.JpaPersistenceContextManager;
import org.drools.persistence.util.DroolsPersistenceUtil;
@@ -259,7 +259,7 @@ public void testSingleSessionCommandServiceAndJtaTransactionManagerTogether() th
KnowledgeBase kbase = initializeKnowledgeBase(simpleRule);
StatefulKnowledgeSession commandKSession = JPAKnowledgeService.newStatefulKnowledgeSession( kbase, null, env );
commandKSession.getIdentifier(); // initialize CSEM
- SingleSessionCommandService commandService = (SingleSessionCommandService) ((CommandBasedStatefulKnowledgeSession) commandKSession).getCommandService();
+ PersistableRunner commandService = (PersistableRunner) ((CommandBasedStatefulKnowledgeSession) commandKSession).getRunner();
JpaPersistenceContextManager jpm = (JpaPersistenceContextManager) getValueOfField("jpm", commandService);
TransactionTestObject mainObject = new TransactionTestObject();
diff --git a/drools-persistence-jpa/src/test/java/org/drools/persistence/jta/TransactionTestCommand.java b/drools-persistence-jpa/src/test/java/org/drools/persistence/jta/TransactionTestCommand.java
index 220e667b139..f79d8f60ac1 100644
--- a/drools-persistence-jpa/src/test/java/org/drools/persistence/jta/TransactionTestCommand.java
+++ b/drools-persistence-jpa/src/test/java/org/drools/persistence/jta/TransactionTestCommand.java
@@ -25,7 +25,7 @@
import org.kie.api.runtime.KieSession;
import org.kie.internal.KnowledgeBase;
import org.kie.internal.KnowledgeBaseFactory;
-import org.kie.internal.command.Context;
+import org.kie.api.runtime.Context;
import org.kie.internal.persistence.jpa.JPAKnowledgeService;
import org.kie.internal.runtime.StatefulKnowledgeSession;
@@ -93,7 +93,7 @@ public Void execute(Context context) {
/**
* Here's what's going on:
- * If the SingleSessionCommandService (SSCS) & JtaTransactionManager (JTM) were _not_ aware of transactions,
+ * If the PersistableRunner (SSCS) & JtaTransactionManager (JTM) were _not_ aware of transactions,
* -> then inserting the mainObject _before_ having inserted the subObject
* would cause the operation/persist to fail and the transaction to fail.
* - This is because the mainObject contains a foreign key referring to the subObject.
diff --git a/drools-persistence-jpa/src/test/java/org/drools/persistence/kie/persistence/session/JpaPersistentStatefulSessionTest.java b/drools-persistence-jpa/src/test/java/org/drools/persistence/kie/persistence/session/JpaPersistentStatefulSessionTest.java
index 153430c7aba..b41b51f7dec 100644
--- a/drools-persistence-jpa/src/test/java/org/drools/persistence/kie/persistence/session/JpaPersistentStatefulSessionTest.java
+++ b/drools-persistence-jpa/src/test/java/org/drools/persistence/kie/persistence/session/JpaPersistentStatefulSessionTest.java
@@ -22,7 +22,7 @@
import org.drools.core.command.impl.LoggingInterceptor;
import org.drools.core.factmodel.traits.Traitable;
import org.drools.core.time.SessionPseudoClock;
-import org.drools.persistence.SingleSessionCommandService;
+import org.drools.persistence.PersistableRunner;
import org.drools.persistence.util.DroolsPersistenceUtil;
import org.junit.After;
import org.junit.Before;
@@ -308,8 +308,8 @@ public void testInterceptor() {
KieBase kbase = ks.newKieContainer(ks.getRepository().getDefaultReleaseId()).getKieBase();
KieSession ksession = ks.getStoreServices().newKieSession( kbase, null, env );
- SingleSessionCommandService sscs = (SingleSessionCommandService)
- ((CommandBasedStatefulKnowledgeSession) ksession).getCommandService();
+ PersistableRunner sscs = (PersistableRunner)
+ ((CommandBasedStatefulKnowledgeSession) ksession).getRunner();
sscs.addInterceptor(new LoggingInterceptor());
sscs.addInterceptor(new FireAllRulesInterceptor());
sscs.addInterceptor(new LoggingInterceptor());
diff --git a/drools-persistence-jpa/src/test/java/org/drools/persistence/session/AgendaRuleFlowGroupsTest.java b/drools-persistence-jpa/src/test/java/org/drools/persistence/session/AgendaRuleFlowGroupsTest.java
index 03d7e5ea672..05256331c52 100644
--- a/drools-persistence-jpa/src/test/java/org/drools/persistence/session/AgendaRuleFlowGroupsTest.java
+++ b/drools-persistence-jpa/src/test/java/org/drools/persistence/session/AgendaRuleFlowGroupsTest.java
@@ -37,7 +37,7 @@
import org.kie.internal.KnowledgeBaseFactory;
import org.kie.internal.builder.KnowledgeBuilder;
import org.kie.internal.builder.KnowledgeBuilderFactory;
-import org.kie.internal.command.Context;
+import org.kie.api.runtime.Context;
import org.kie.internal.persistence.jpa.JPAKnowledgeService;
import org.kie.internal.utils.KieHelper;
@@ -163,7 +163,7 @@ public void testAgendaGroupAndRuleFlowGroup() throws Exception {
private KieSession stripSession(KieSession ksession) {
if (ksession instanceof CommandBasedStatefulKnowledgeSession) {
return ((RegistryContext)((CommandBasedStatefulKnowledgeSession) ksession).
- getCommandService().getContext()).lookup( KieSession.class );
+ getRunner().createContext()).lookup( KieSession.class );
}
return ksession;
diff --git a/drools-persistence-jpa/src/test/java/org/drools/persistence/session/JpaOptLockPersistentStatefulSessionTest.java b/drools-persistence-jpa/src/test/java/org/drools/persistence/session/JpaOptLockPersistentStatefulSessionTest.java
index 34b2f77bc5a..f533341d8b5 100644
--- a/drools-persistence-jpa/src/test/java/org/drools/persistence/session/JpaOptLockPersistentStatefulSessionTest.java
+++ b/drools-persistence-jpa/src/test/java/org/drools/persistence/session/JpaOptLockPersistentStatefulSessionTest.java
@@ -16,7 +16,7 @@
package org.drools.persistence.session;
import org.drools.core.command.impl.CommandBasedStatefulKnowledgeSession;
-import org.drools.persistence.SingleSessionCommandService;
+import org.drools.persistence.PersistableRunner;
import org.drools.persistence.jpa.OptimisticLockRetryInterceptor;
import org.drools.persistence.util.DroolsPersistenceUtil;
import org.hibernate.StaleObjectStateException;
@@ -119,7 +119,7 @@ private class InsertAndFireThread extends Thread {
@Override
public void run() {
StatefulKnowledgeSession ksession2 = JPAKnowledgeService.loadStatefulKnowledgeSession(ksessionId, kbase, null, createEnvironment(context) );
- SingleSessionCommandService sscs = (SingleSessionCommandService)((CommandBasedStatefulKnowledgeSession) ksession2).getCommandService();
+ PersistableRunner sscs = (PersistableRunner)((CommandBasedStatefulKnowledgeSession) ksession2).getRunner();
OptimisticLockRetryInterceptor interceptor = new OptimisticLockRetryInterceptor();
// set higher delay so that the interceptor is not invoked multiple times on slow machines
interceptor.setDelay(500);
diff --git a/drools-persistence-jpa/src/test/java/org/drools/persistence/session/JpaPersistentStatefulSessionTest.java b/drools-persistence-jpa/src/test/java/org/drools/persistence/session/JpaPersistentStatefulSessionTest.java
index f81913ffc63..b30322e0f25 100644
--- a/drools-persistence-jpa/src/test/java/org/drools/persistence/session/JpaPersistentStatefulSessionTest.java
+++ b/drools-persistence-jpa/src/test/java/org/drools/persistence/session/JpaPersistentStatefulSessionTest.java
@@ -18,12 +18,11 @@
import org.drools.compiler.Address;
import org.drools.compiler.Person;
import org.drools.core.SessionConfiguration;
-import org.drools.core.command.CommandService;
-import org.drools.core.command.Interceptor;
import org.drools.core.command.impl.CommandBasedStatefulKnowledgeSession;
import org.drools.core.command.impl.FireAllRulesInterceptor;
import org.drools.core.command.impl.LoggingInterceptor;
-import org.drools.persistence.SingleSessionCommandService;
+import org.drools.core.runtime.ChainableRunner;
+import org.drools.persistence.PersistableRunner;
import org.drools.persistence.util.DroolsPersistenceUtil;
import org.junit.After;
import org.junit.Before;
@@ -58,13 +57,8 @@
import java.util.Properties;
import java.util.concurrent.atomic.AtomicInteger;
-import static org.drools.persistence.util.DroolsPersistenceUtil.DROOLS_PERSISTENCE_UNIT_NAME;
-import static org.drools.persistence.util.DroolsPersistenceUtil.OPTIMISTIC_LOCKING;
-import static org.drools.persistence.util.DroolsPersistenceUtil.PESSIMISTIC_LOCKING;
-import static org.drools.persistence.util.DroolsPersistenceUtil.createEnvironment;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertSame;
-import static org.junit.Assert.fail;
+import static org.drools.persistence.util.DroolsPersistenceUtil.*;
+import static org.junit.Assert.*;
@RunWith(Parameterized.class)
public class JpaPersistentStatefulSessionTest {
@@ -321,8 +315,8 @@ public void testInterceptor() {
kbase.addKnowledgePackages( kbuilder.getKnowledgePackages() );
StatefulKnowledgeSession ksession = JPAKnowledgeService.newStatefulKnowledgeSession( kbase, null, env );
- SingleSessionCommandService sscs = (SingleSessionCommandService)
- ((CommandBasedStatefulKnowledgeSession) ksession).getCommandService();
+ PersistableRunner sscs = (PersistableRunner)
+ ((CommandBasedStatefulKnowledgeSession) ksession).getRunner();
sscs.addInterceptor(new LoggingInterceptor());
sscs.addInterceptor(new FireAllRulesInterceptor());
sscs.addInterceptor(new LoggingInterceptor());
@@ -360,19 +354,19 @@ public void testInterceptorOnRollback() throws Exception{
kbase.addKnowledgePackages( kbuilder.getKnowledgePackages() );
StatefulKnowledgeSession ksession = JPAKnowledgeService.newStatefulKnowledgeSession( kbase, null, env );
- SingleSessionCommandService sscs = (SingleSessionCommandService)
- ((CommandBasedStatefulKnowledgeSession) ksession).getCommandService();
+ PersistableRunner sscs = (PersistableRunner)
+ ((CommandBasedStatefulKnowledgeSession) ksession).getRunner();
sscs.addInterceptor(new LoggingInterceptor());
sscs.addInterceptor(new FireAllRulesInterceptor());
sscs.addInterceptor(new LoggingInterceptor());
- CommandService internalCommandService = sscs.getCommandService();
+ ChainableRunner runner = sscs.getChainableRunner();
- assertEquals(LoggingInterceptor.class, internalCommandService.getClass());
- internalCommandService = ((Interceptor) internalCommandService).getNext();
- assertEquals(FireAllRulesInterceptor.class, internalCommandService.getClass());
- internalCommandService = ((Interceptor) internalCommandService).getNext();
- assertEquals(LoggingInterceptor.class, internalCommandService.getClass());
+ assertEquals(LoggingInterceptor.class, runner.getClass());
+ runner = (ChainableRunner)runner.getNext();
+ assertEquals(FireAllRulesInterceptor.class, runner.getClass());
+ runner = (ChainableRunner)runner.getNext();
+ assertEquals(LoggingInterceptor.class, runner.getClass());
UserTransaction ut = InitialContext.doLookup("java:comp/UserTransaction");
ut.begin();
@@ -383,13 +377,13 @@ public void testInterceptorOnRollback() throws Exception{
ksession.insert( 3 );
- internalCommandService = sscs.getCommandService();
+ runner = sscs.getChainableRunner();
- assertEquals(LoggingInterceptor.class, internalCommandService.getClass());
- internalCommandService = ((Interceptor) internalCommandService).getNext();
- assertEquals(FireAllRulesInterceptor.class, internalCommandService.getClass());
- internalCommandService = ((Interceptor) internalCommandService).getNext();
- assertEquals(LoggingInterceptor.class, internalCommandService.getClass());
+ assertEquals(LoggingInterceptor.class, runner.getClass());
+ runner = (ChainableRunner)runner.getNext();
+ assertEquals(FireAllRulesInterceptor.class, runner.getClass());
+ runner = (ChainableRunner)runner.getNext();
+ assertEquals(LoggingInterceptor.class, runner.getClass());
}
diff --git a/drools-persistence-jpa/src/test/java/org/drools/persistence/session/ReloadSessionTest.java b/drools-persistence-jpa/src/test/java/org/drools/persistence/session/ReloadSessionTest.java
index 8872b26f358..164752126dc 100644
--- a/drools-persistence-jpa/src/test/java/org/drools/persistence/session/ReloadSessionTest.java
+++ b/drools-persistence-jpa/src/test/java/org/drools/persistence/session/ReloadSessionTest.java
@@ -135,7 +135,7 @@ public void reloadKnowledgeSessionTest() {
commandKSession.insert( integerFact );
// At this point in the code, the fact has been persisted to the database
- // (within a transaction via the SingleSessionCommandService)
+ // (within a transaction via the PersistableRunner)
Collection factHandles = commandKSession.getFactHandles();
assertTrue("At least one fact should have been inserted by the ksession.insert() method above.", !factHandles.isEmpty());
FactHandle origFactHandle = factHandles.iterator().next();
diff --git a/drools-persistence-jpa/src/test/java/org/drools/persistence/session/RuleFlowGroupRollbackTest.java b/drools-persistence-jpa/src/test/java/org/drools/persistence/session/RuleFlowGroupRollbackTest.java
index 4e5af5217bb..c3214787c54 100644
--- a/drools-persistence-jpa/src/test/java/org/drools/persistence/session/RuleFlowGroupRollbackTest.java
+++ b/drools-persistence-jpa/src/test/java/org/drools/persistence/session/RuleFlowGroupRollbackTest.java
@@ -35,7 +35,7 @@
import org.kie.internal.KnowledgeBaseFactory;
import org.kie.internal.builder.KnowledgeBuilder;
import org.kie.internal.builder.KnowledgeBuilderFactory;
-import org.kie.internal.command.Context;
+import org.kie.api.runtime.Context;
import org.kie.internal.persistence.jpa.JPAKnowledgeService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
diff --git a/drools-reteoo/src/test/java/org/drools/reteoo/integrationtests/MultithreadTest.java b/drools-reteoo/src/test/java/org/drools/reteoo/integrationtests/MultithreadTest.java
index 43558df2eea..4339d0e2759 100644
--- a/drools-reteoo/src/test/java/org/drools/reteoo/integrationtests/MultithreadTest.java
+++ b/drools-reteoo/src/test/java/org/drools/reteoo/integrationtests/MultithreadTest.java
@@ -749,14 +749,14 @@ public Boolean call() throws Exception {
// }
// }
//
-// class Runner
+// class ExecutableRunner
// implements
// Runnable {
// private final long TIME_SPAN;
// private final StatelessSession session;
// private final AtomicInteger count;
//
-// public Runner(long BASE_TIME,
+// public ExecutableRunner(long BASE_TIME,
// StatelessSession session,
// final AtomicInteger count) {
// this.TIME_SPAN = BASE_TIME;
@@ -812,7 +812,7 @@ public Boolean call() throws Exception {
// for ( int i = 0; i < THREADS; i++ ) {
// RuleBase ruleBase = createRuleBase( pkgs );
// StatelessSession session = createSession( ruleBase );
-// new Thread( new Runner( BASE_TIME,
+// new Thread( new ExecutableRunner( BASE_TIME,
// session,
// count ) ).start();
// }
diff --git a/drools-templates/src/test/java/org/drools/template/parser/ExternalSheetListenerTest.java b/drools-templates/src/test/java/org/drools/template/parser/ExternalSheetListenerTest.java
index ffe5fbb7955..8a7c871ab21 100644
--- a/drools-templates/src/test/java/org/drools/template/parser/ExternalSheetListenerTest.java
+++ b/drools-templates/src/test/java/org/drools/template/parser/ExternalSheetListenerTest.java
@@ -150,7 +150,7 @@ public void destroy() {
public void submit( AtomicAction action ) { }
@Override
- public T getKieRuntime(Class cls) {
+ public T getKieRuntime( Class cls ) {
return null;
}