[jboss-svn-commits] JBL Code SVN: r23810 - in labs/jbossrules/trunk: drools-compiler/src/test/java/org/drools/integrationtests and 4 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Mon Nov 10 19:29:40 EST 2008
Author: tirelli
Date: 2008-11-10 19:29:40 -0500 (Mon, 10 Nov 2008)
New Revision: 23810
Modified:
labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/PackageBuilder.java
labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/CepEspTest.java
labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_CEP_SimpleEventAssertionWithDuration.drl
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ReteooFactHandleFactory.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/TypeDeclaration.java
labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/builder/BuildUtilsTest.java
Log:
Fixing event timestamp assignment
Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/PackageBuilder.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/PackageBuilder.java 2008-11-11 00:25:09 UTC (rev 23809)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/PackageBuilder.java 2008-11-11 00:29:40 UTC (rev 23810)
@@ -785,6 +785,11 @@
String timestamp = typeDescr.getMetaAttribute( TypeDeclaration.ATTR_TIMESTAMP );
if ( timestamp != null ) {
type.setTimestampAttribute( timestamp );
+ ClassDefinition cd = type.getTypeClassDef();
+ ClassFieldAccessorStore store = pkgRegistry.getPackage().getClassFieldAccessorStore();
+ InternalReadAccessor extractor = store.getReader( type.getTypeClass().getName(),
+ timestamp,
+ type.new TimestampAccessorSetter() );
}
String duration = typeDescr.getMetaAttribute( TypeDeclaration.ATTR_DURATION );
if ( duration != null ) {
@@ -793,8 +798,7 @@
ClassFieldAccessorStore store = pkgRegistry.getPackage().getClassFieldAccessorStore();
InternalReadAccessor extractor = store.getReader( type.getTypeClass().getName(),
duration,
- type );
- type.setReadAccessor( extractor );
+ type.new DurationAccessorSetter() );
}
pkgRegistry.getPackage().addTypeDeclaration( type );
Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/CepEspTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/CepEspTest.java 2008-11-11 00:25:09 UTC (rev 23809)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/CepEspTest.java 2008-11-11 00:29:40 UTC (rev 23810)
@@ -89,19 +89,19 @@
StockTick tick1 = new StockTick( 1,
"DROO",
50,
- System.currentTimeMillis() );
+ 10000 );
StockTick tick2 = new StockTick( 2,
"ACME",
10,
- System.currentTimeMillis() );
+ 10010 );
StockTick tick3 = new StockTick( 3,
"ACME",
10,
- System.currentTimeMillis() );
+ 10100 );
StockTick tick4 = new StockTick( 4,
"DROO",
50,
- System.currentTimeMillis() );
+ 11000 );
InternalFactHandle handle1 = (InternalFactHandle) session.insert( tick1 );
InternalFactHandle handle2 = (InternalFactHandle) session.insert( tick2 );
@@ -144,22 +144,22 @@
StockTick tick1 = new StockTick( 1,
"DROO",
50,
- System.currentTimeMillis(),
+ 10000,
5 );
StockTick tick2 = new StockTick( 2,
"ACME",
10,
- System.currentTimeMillis(),
+ 11000,
10 );
StockTick tick3 = new StockTick( 3,
"ACME",
10,
- System.currentTimeMillis(),
+ 12000,
8 );
StockTick tick4 = new StockTick( 4,
"DROO",
50,
- System.currentTimeMillis(),
+ 13000,
7 );
InternalFactHandle handle1 = (InternalFactHandle) wm.insert( tick1 );
@@ -182,6 +182,15 @@
EventFactHandle eh3 = (EventFactHandle) handle3;
EventFactHandle eh4 = (EventFactHandle) handle4;
+ assertEquals( tick1.getTime(),
+ eh1.getStartTimestamp() );
+ assertEquals( tick2.getTime(),
+ eh2.getStartTimestamp() );
+ assertEquals( tick3.getTime(),
+ eh3.getStartTimestamp() );
+ assertEquals( tick4.getTime(),
+ eh4.getStartTimestamp() );
+
assertEquals( tick1.getDuration(),
eh1.getDuration() );
assertEquals( tick2.getDuration(),
Modified: labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_CEP_SimpleEventAssertionWithDuration.drl
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_CEP_SimpleEventAssertionWithDuration.drl 2008-11-11 00:25:09 UTC (rev 23809)
+++ labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_CEP_SimpleEventAssertionWithDuration.drl 2008-11-11 00:29:40 UTC (rev 23810)
@@ -7,6 +7,7 @@
declare StockTick
@role( event )
@duration( duration )
+ @timestamp( time )
end
rule "Check event"
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ReteooFactHandleFactory.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ReteooFactHandleFactory.java 2008-11-11 00:25:09 UTC (rev 23809)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ReteooFactHandleFactory.java 2008-11-11 00:29:40 UTC (rev 23810)
@@ -16,6 +16,8 @@
* limitations under the License.
*/
+import java.sql.Date;
+
import org.drools.common.AbstractFactHandleFactory;
import org.drools.common.DefaultFactHandle;
import org.drools.common.EventFactHandle;
@@ -31,11 +33,13 @@
public ReteooFactHandleFactory() {
super();
}
-
- public ReteooFactHandleFactory(int id, long counter) {
- super( id, counter );
- }
+ public ReteooFactHandleFactory(int id,
+ long counter) {
+ super( id,
+ counter );
+ }
+
/* (non-Javadoc)
* @see org.drools.reteoo.FactHandleFactory#newFactHandle(long)
*/
@@ -46,7 +50,18 @@
final InternalWorkingMemory workingMemory) {
if ( conf != null && conf.isEvent() ) {
TypeDeclaration type = conf.getTypeDeclaration();
- long timestamp = workingMemory.getTimerService().getCurrentTime();
+ long timestamp;
+ if ( type.getTimestampExtractor() != null ) {
+ if ( Date.class.isAssignableFrom( type.getTimestampExtractor().getExtractToClass() ) ) {
+ timestamp = ((Date) type.getTimestampExtractor().getValue( workingMemory,
+ object )).getTime();
+ } else {
+ timestamp = type.getTimestampExtractor().getLongValue( workingMemory,
+ object );
+ }
+ } else {
+ timestamp = workingMemory.getTimerService().getCurrentTime();
+ }
long duration = 0;
if ( type.getDurationExtractor() != null ) {
duration = type.getDurationExtractor().getLongValue( workingMemory,
@@ -70,9 +85,11 @@
public FactHandleFactory newInstance() {
return new ReteooFactHandleFactory();
}
-
- public FactHandleFactory newInstance(int id, long counter) {
- return new ReteooFactHandleFactory(id, counter);
+
+ public FactHandleFactory newInstance(int id,
+ long counter) {
+ return new ReteooFactHandleFactory( id,
+ counter );
}
public Class getFactHandleType() {
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/TypeDeclaration.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/TypeDeclaration.java 2008-11-11 00:25:09 UTC (rev 23809)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/TypeDeclaration.java 2008-11-11 00:29:40 UTC (rev 23810)
@@ -22,6 +22,7 @@
import java.io.IOException;
import java.io.ObjectInput;
import java.io.ObjectOutput;
+import java.io.Serializable;
import org.drools.factmodel.ClassDefinition;
import org.drools.facttemplates.FactTemplate;
@@ -36,7 +37,6 @@
*/
public class TypeDeclaration
implements
- AcceptsReadAccessor,
Externalizable {
public static final String ATTR_CLASS = "class";
@@ -74,16 +74,17 @@
}
}
- private String typeName;
- private Role role;
- private Format format;
- private String timestampAttribute;
- private String durationAttribute;
+ private String typeName;
+ private Role role;
+ private Format format;
+ private String timestampAttribute;
+ private String durationAttribute;
private InternalReadAccessor durationExtractor;
- private transient Class< ? > typeClass;
- private FactTemplate typeTemplate;
- private ClassDefinition typeClassDef;
-
+ private InternalReadAccessor timestampExtractor;
+ private transient Class< ? > typeClass;
+ private FactTemplate typeTemplate;
+ private ClassDefinition typeClassDef;
+
public TypeDeclaration() {
}
@@ -108,6 +109,7 @@
this.typeTemplate = (FactTemplate) in.readObject();
this.typeClassDef = (ClassDefinition) in.readObject();
this.durationExtractor = (InternalReadAccessor) in.readObject();
+ this.timestampExtractor = (InternalReadAccessor) in.readObject();
}
public void writeExternal(ObjectOutput out) throws IOException {
@@ -120,11 +122,8 @@
out.writeObject( typeTemplate );
out.writeObject( typeClassDef );
out.writeObject( durationExtractor );
+ out.writeObject( timestampExtractor );
}
-
- public void setReadAccessor(InternalReadAccessor readAccessor) {
- this.durationExtractor = readAccessor;
- }
/**
* @return the type
@@ -201,7 +200,7 @@
*/
public void setTypeClass(Class< ? > typeClass) {
this.typeClass = typeClass;
- if( this.typeClassDef != null ) {
+ if ( this.typeClassDef != null ) {
this.typeClassDef.setDefinedClass( this.typeClass );
}
}
@@ -278,4 +277,25 @@
this.typeClassDef = typeClassDef;
}
+ public InternalReadAccessor getTimestampExtractor() {
+ return timestampExtractor;
+ }
+
+ public void setTimestampExtractor(InternalReadAccessor timestampExtractor) {
+ this.timestampExtractor = timestampExtractor;
+ }
+
+ public class DurationAccessorSetter implements AcceptsReadAccessor, Serializable {
+ private static final long serialVersionUID = 1429300982505284833L;
+ public void setReadAccessor(InternalReadAccessor readAccessor) {
+ setDurationExtractor( readAccessor );
+ }
+ }
+
+ public class TimestampAccessorSetter implements AcceptsReadAccessor, Serializable {
+ private static final long serialVersionUID = 8656678871125722903L;
+ public void setReadAccessor(InternalReadAccessor readAccessor) {
+ setTimestampExtractor( readAccessor );
+ }
+ }
}
Modified: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/builder/BuildUtilsTest.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/builder/BuildUtilsTest.java 2008-11-11 00:25:09 UTC (rev 23809)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/builder/BuildUtilsTest.java 2008-11-11 00:29:40 UTC (rev 23810)
@@ -34,7 +34,7 @@
import static org.drools.time.Interval.*;
/**
- * @author admin
+ * @author etirelli
*
*/
public class BuildUtilsTest extends TestCase {
More information about the jboss-svn-commits
mailing list