Skip to content

Commit

Permalink
[BZ-1142914] implement serialization of CompositeMaxDurationTrigger
Browse files Browse the repository at this point in the history
  • Loading branch information
mariofusco committed Sep 23, 2014
1 parent 19338a9 commit 2e01c4a
Show file tree
Hide file tree
Showing 6 changed files with 1,241 additions and 236 deletions.
Expand Up @@ -3983,6 +3983,44 @@ public void testDeserializationWithTrackableTimerJob() throws InterruptedExcepti

}

@Test
public void testDeserializationWithCompositeTrigger() throws InterruptedException {
String drl = "package org.drools.test;\n" +
"import org.drools.compiler.StockTick; \n" +
"global java.util.List list;\n" +
"\n" +
"declare StockTick\n" +
" @role( event )\n" +
" @expires( 1s )\n" +
"end\n" +
"\n" +
"rule \"One\"\n" +
"when\n" +
" $event : StockTick( )\n" +
" not StockTick( company == \"BBB\", this after[0,96h] $event )\n" +
" not StockTick( company == \"CCC\", this after[0,96h] $event )\n" +
"then\n" +
"end";

KieBaseConfiguration kbconf = KnowledgeBaseFactory.newKnowledgeBaseConfiguration();
kbconf.setOption( EventProcessingOption.STREAM );
kbconf.setOption( RuleEngineOption.PHREAK );

KieSessionConfiguration knowledgeSessionConfiguration = KnowledgeBaseFactory.newKnowledgeSessionConfiguration();
knowledgeSessionConfiguration.setOption( TimerJobFactoryOption.get( "trackable" ) );

KnowledgeBase kb = loadKnowledgeBaseFromString( kbconf, drl );
StatefulKnowledgeSession ks = kb.newStatefulKnowledgeSession( knowledgeSessionConfiguration, null );

ks.insert( new StockTick( 2, "AAA", 1.0, 0 ) );

try {
ks = SerializationHelper.getSerialisedStatefulKnowledgeSession( ks, true, false );
} catch ( Exception e ) {
e.printStackTrace();
fail( e.getMessage() );
}
}

@Test
public void testWindowExpireActionDeserialization() throws InterruptedException {
Expand Down
Expand Up @@ -16,20 +16,7 @@

package org.drools.core.marshalling.impl;

import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.HashMap;
import java.util.HashSet;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Queue;
import java.util.Set;
import java.util.concurrent.ConcurrentLinkedQueue;
import java.util.concurrent.TimeUnit;

import com.google.protobuf.ExtensionRegistry;
import org.drools.core.SessionConfiguration;
import org.drools.core.common.AbstractWorkingMemory;
import org.drools.core.common.ActivationsFilter;
Expand Down Expand Up @@ -60,7 +47,6 @@
import org.drools.core.phreak.RuleExecutor;
import org.drools.core.phreak.StackEntry;
import org.drools.core.process.instance.WorkItem;
import org.drools.core.reteoo.InitialFactImpl;
import org.drools.core.reteoo.LeftTuple;
import org.drools.core.reteoo.ObjectTypeConf;
import org.drools.core.reteoo.TerminalNode;
Expand All @@ -71,6 +57,7 @@
import org.drools.core.spi.GlobalResolver;
import org.drools.core.spi.PropagationContext;
import org.drools.core.time.Trigger;
import org.drools.core.time.impl.CompositeMaxDurationTrigger;
import org.drools.core.time.impl.CronTrigger;
import org.drools.core.time.impl.IntervalTrigger;
import org.drools.core.time.impl.PointInTimeTrigger;
Expand All @@ -80,7 +67,19 @@
import org.kie.api.runtime.EnvironmentName;
import org.kie.api.runtime.rule.EntryPoint;

import com.google.protobuf.ExtensionRegistry;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.HashMap;
import java.util.HashSet;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Queue;
import java.util.Set;
import java.util.concurrent.ConcurrentLinkedQueue;
import java.util.concurrent.TimeUnit;

/**
* An input marshaller that uses protobuf.
Expand Down Expand Up @@ -751,6 +750,20 @@ public static Trigger readTrigger(MarshallerReaderContext inCtx,
PointInTimeTrigger trigger = new PointInTimeTrigger( _trigger.getPit().getNextFireTime(), null, null );
return trigger;
}
case COMPOSITE_MAX_DURATION : {
ProtobufMessages.Trigger.CompositeMaxDurationTrigger _cmdTrigger = _trigger.getCmdt();
CompositeMaxDurationTrigger trigger = new CompositeMaxDurationTrigger();
if ( _cmdTrigger.hasMaxDurationTimestamp() ) {
trigger.setMaxDurationTimestamp( new Date( _cmdTrigger.getMaxDurationTimestamp() ) );
}
if ( _cmdTrigger.hasTimerCurrentDate() ) {
trigger.setTimerCurrentDate( new Date( _cmdTrigger.getTimerCurrentDate() ) );
}
if ( _cmdTrigger.hasTimerTrigger() ) {
trigger.setTimerTrigger( readTrigger( inCtx, _cmdTrigger.getTimerTrigger() ) );
}
return trigger;
}
}
throw new RuntimeException( "Unable to deserialize Trigger for type: " + _trigger.getType() );

Expand Down

0 comments on commit 2e01c4a

Please sign in to comment.