Impossible to post an asset when no asset are present in the project #184
This commit is contained in:
parent
cd28f9c53a
commit
d74a774ebb
4 changed files with 34 additions and 20 deletions
|
|
@ -15,6 +15,7 @@
|
|||
*/
|
||||
package org.chtijbug.drools.runtime.impl;
|
||||
|
||||
import com.rits.cloning.Cloner;
|
||||
import org.chtijbug.drools.entity.DroolsFactObject;
|
||||
import org.chtijbug.drools.entity.history.fact.DeletedFactHistoryEvent;
|
||||
import org.chtijbug.drools.entity.history.fact.FactHistoryEvent;
|
||||
|
|
@ -42,9 +43,11 @@ public class FactHandlerListener implements RuleRuntimeEventListener {
|
|||
|
||||
private static Logger logger = LoggerFactory.getLogger(FactHandlerListener.class);
|
||||
private final RuleBaseStatefulSession ruleBaseSession;
|
||||
private Cloner cloner;
|
||||
|
||||
public FactHandlerListener(RuleBaseStatefulSession ruleBaseSession) {
|
||||
public FactHandlerListener(RuleBaseStatefulSession ruleBaseSession, Cloner cloner) {
|
||||
this.ruleBaseSession = ruleBaseSession;
|
||||
this.cloner=cloner;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -54,9 +57,9 @@ public class FactHandlerListener implements RuleRuntimeEventListener {
|
|||
//____ Updating reference into the facts map from knowledge Session
|
||||
//((RuleTerminalNode)((RuleTerminalNodeLeftTuple)((org.drools.common.DefaultFactHandle)event.getFactHandle()).getFirstLeftTuple()).getSink()).getRule().getRuleFlowGroup()
|
||||
FactHandle f = event.getFactHandle();
|
||||
Object newObject = event.getObject();
|
||||
Object newObject = cloner.deepClone(event.getObject());
|
||||
DroolsFactObject ff = DroolsFactObjectFactory.createFactObject(newObject);
|
||||
ruleBaseSession.setData(f, newObject, ff);
|
||||
ruleBaseSession.setData(f, event.getObject(), ff);
|
||||
//____ Adding the Insert Event from the History Container
|
||||
InsertedFactHistoryEvent insertFactHistoryEvent = new InsertedFactHistoryEvent(this.ruleBaseSession.nextEventId(), ff, this.ruleBaseSession.getRuleBaseID(), this.ruleBaseSession.getSessionId());
|
||||
if (insertFactHistoryEvent.getRuleName() == null && event instanceof ObjectInsertedEventImpl) {
|
||||
|
|
@ -77,12 +80,11 @@ public class FactHandlerListener implements RuleRuntimeEventListener {
|
|||
try {
|
||||
//____ Updating FactHandle Object reference from the knwoledge session
|
||||
FactHandle f = event.getFactHandle();
|
||||
Object oldValue = event.getOldObject();
|
||||
Object newValue = event.getObject();
|
||||
Object newValue = cloner.deepClone(event.getObject());
|
||||
|
||||
DroolsFactObject factOldValue = this.ruleBaseSession.getLastFactObjectVersion(oldValue);
|
||||
DroolsFactObject factOldValue = this.ruleBaseSession.getLastFactObjectVersion(event.getOldObject());
|
||||
DroolsFactObject factNewValue = DroolsFactObjectFactory.createFactObject(newValue, factOldValue.getNextObjectVersion());
|
||||
ruleBaseSession.setData(f, newValue, factNewValue);
|
||||
ruleBaseSession.setData(f, event.getObject(), factNewValue);
|
||||
//____ Adding the Update Event from the History Container
|
||||
UpdatedFactHistoryEvent updatedFactHistoryEvent = new UpdatedFactHistoryEvent(this.ruleBaseSession.nextEventId(), factOldValue, factNewValue, this.ruleBaseSession.getRuleBaseID(), this.ruleBaseSession.getSessionId());
|
||||
if (updatedFactHistoryEvent.getRuleName() == null && event instanceof ObjectUpdatedEventImpl) {
|
||||
|
|
@ -101,9 +103,9 @@ public class FactHandlerListener implements RuleRuntimeEventListener {
|
|||
try {
|
||||
//____ Removing FactHandle from the KnowledgeBase
|
||||
FactHandle f = event.getFactHandle();
|
||||
Object newObject = event.getOldObject();
|
||||
DroolsFactObject deletedFact = this.ruleBaseSession.getLastFactObjectVersion(newObject);
|
||||
ruleBaseSession.unsetData(f, newObject);
|
||||
Object deletedObject = cloner.deepClone(event.getOldObject());
|
||||
DroolsFactObject deletedFact = this.ruleBaseSession.getLastFactObjectVersion(event.getOldObject());
|
||||
ruleBaseSession.unsetData(f, event.getOldObject());
|
||||
//____ Adding a Delete Event from the HistoryContainer
|
||||
|
||||
DeletedFactHistoryEvent deleteFactEvent = new DeletedFactHistoryEvent(this.ruleBaseSession.nextEventId(), deletedFact, this.ruleBaseSession.getRuleBaseID(), this.ruleBaseSession.getSessionId());
|
||||
|
|
|
|||
|
|
@ -15,6 +15,7 @@
|
|||
*/
|
||||
package org.chtijbug.drools.runtime.impl;
|
||||
|
||||
import com.rits.cloning.Cloner;
|
||||
import org.chtijbug.drools.entity.DroolsJbpmVariableObject;
|
||||
import org.chtijbug.drools.entity.DroolsNodeInstanceObject;
|
||||
import org.chtijbug.drools.entity.DroolsProcessInstanceObject;
|
||||
|
|
@ -37,8 +38,10 @@ public class ProcessHandlerListener implements ProcessEventListener {
|
|||
*/
|
||||
private final RuleBaseStatefulSession ruleBaseSession;
|
||||
|
||||
public ProcessHandlerListener(RuleBaseStatefulSession ruleBaseSession) {
|
||||
private Cloner cloner;
|
||||
public ProcessHandlerListener(RuleBaseStatefulSession ruleBaseSession, Cloner cloner) {
|
||||
this.ruleBaseSession = ruleBaseSession;
|
||||
this.cloner = cloner;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
|||
|
|
@ -87,15 +87,16 @@ public class RuleBaseStatefulSession implements RuleBaseSession {
|
|||
|
||||
private HistoryListener historyListener;
|
||||
private EventCounter eventCounter = EventCounter.newCounter();
|
||||
private Cloner cloner = new Cloner(new ObjenesisInstantiationStrategy());
|
||||
|
||||
public RuleBaseStatefulSession(Long ruleBaseID, Long sessionId, KieSession knowledgeSession, int maxNumberRuleToExecute, HistoryListener historyListener) throws DroolsChtijbugException {
|
||||
this.ruleBaseID = ruleBaseID;
|
||||
this.sessionId = sessionId;
|
||||
this.knowledgeSession = knowledgeSession;
|
||||
this.maxNumberRuleToExecute = maxNumberRuleToExecute;
|
||||
this.factListener = new FactHandlerListener(this);
|
||||
this.ruleHandlerListener = new RuleHandlerListener(this);
|
||||
this.processHandlerListener = new ProcessHandlerListener(this);
|
||||
this.factListener = new FactHandlerListener(this,cloner);
|
||||
this.ruleHandlerListener = new RuleHandlerListener(this,cloner);
|
||||
this.processHandlerListener = new ProcessHandlerListener(this,cloner);
|
||||
this.historyContainer = new HistoryContainer(sessionId, historyListener);
|
||||
this.listFactObjects = new HashMap<>();
|
||||
this.listFact = new HashMap<>();
|
||||
|
|
@ -389,7 +390,7 @@ public class RuleBaseStatefulSession implements RuleBaseSession {
|
|||
Thread currentThread = Thread.currentThread();
|
||||
ClassLoader old = currentThread.getContextClassLoader();
|
||||
currentThread.setContextClassLoader(inputObject.getClass().getClassLoader());
|
||||
Cloner cloner = new Cloner(new ObjenesisInstantiationStrategy());
|
||||
|
||||
inputObjectClone=cloner.deepClone(inputObject);
|
||||
currentThread.setContextClassLoader(old);
|
||||
inputDroolsObject = DroolsFactObjectFactory.createFactObject(inputObjectClone);
|
||||
|
|
@ -549,7 +550,6 @@ public class RuleBaseStatefulSession implements RuleBaseSession {
|
|||
Object inputObjectClone;
|
||||
if (inputObject != null) {
|
||||
this.insertByReflection(inputObject);
|
||||
Cloner cloner = new Cloner();
|
||||
inputObjectClone=cloner.deepClone(inputObject);
|
||||
inputDroolsObject = DroolsFactObjectFactory.createFactObject(inputObjectClone);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -15,6 +15,7 @@
|
|||
*/
|
||||
package org.chtijbug.drools.runtime.impl;
|
||||
|
||||
import com.rits.cloning.Cloner;
|
||||
import org.chtijbug.drools.entity.DroolsFactObject;
|
||||
import org.chtijbug.drools.entity.DroolsRuleFlowGroupObject;
|
||||
import org.chtijbug.drools.entity.DroolsRuleObject;
|
||||
|
|
@ -35,6 +36,7 @@ import org.slf4j.Logger;
|
|||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
//import org.drools.core.common.InternalFactHandle;
|
||||
|
|
@ -66,14 +68,17 @@ public class RuleHandlerListener extends DefaultAgendaEventListener {
|
|||
*/
|
||||
private int maxNumberRuleToExecute;
|
||||
|
||||
private Cloner cloner;
|
||||
|
||||
/**
|
||||
* IfMaxNumberRulewasReached
|
||||
*/
|
||||
private boolean maxNumerExecutedRulesReached = false;
|
||||
|
||||
public RuleHandlerListener(RuleBaseStatefulSession ruleBaseSession) {
|
||||
public RuleHandlerListener(RuleBaseStatefulSession ruleBaseSession, Cloner cloner) {
|
||||
this.ruleBaseSession = ruleBaseSession;
|
||||
this.maxNumberRuleToExecute = ruleBaseSession.getMaxNumberRuleToExecute();
|
||||
this.cloner=cloner;
|
||||
}
|
||||
|
||||
public boolean isMaxNumerExecutedRulesReached() {
|
||||
|
|
@ -96,14 +101,18 @@ public class RuleHandlerListener extends DefaultAgendaEventListener {
|
|||
if (h instanceof DefaultFactHandle) {
|
||||
InternalFactHandle defaultFactHandle = (InternalFactHandle) h;
|
||||
//System.out.println(defaultFactHandle.toString());
|
||||
Object object = defaultFactHandle.getObject();
|
||||
Object object = cloner.deepClone(defaultFactHandle.getObject());
|
||||
DroolsFactObject sourceFactObject = ruleBaseSession.getLastFactObjectVersionFromFactHandle(h);
|
||||
if (sourceFactObject==null){
|
||||
try {
|
||||
if (object instanceof List){
|
||||
List lst = (List)object;
|
||||
sourceFactObject = new DroolsFactObject(lst.toArray(), 1);
|
||||
}if (object instanceof InitialFactImpl){
|
||||
List clonedList=new ArrayList();
|
||||
for (Object l : lst){
|
||||
clonedList.add(cloner.deepClone(l));
|
||||
}
|
||||
sourceFactObject = new DroolsFactObject(clonedList.toArray(), 1);
|
||||
}else if (object instanceof InitialFactImpl){
|
||||
//InitialFactImpl initialFact = (InitialFactImpl)object;
|
||||
// Do Nothing for the time
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
editor.link_modal.header
Reference in a new issue