[jboss-svn-commits] JBL Code SVN: r19971 - in labs/jbossrules/trunk: drools-compiler/src/main/java/org/drools/rule/builder and 30 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Fri May 16 14:29:20 EDT 2008
Author: tirelli
Date: 2008-05-16 14:29:20 -0400 (Fri, 16 May 2008)
New Revision: 19971
Added:
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/BaseClassFieldReader.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/BaseClassFieldWriter.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/ClassFieldAccessor.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/ClassFieldAccessorCache.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/ClassFieldAccessorFactory.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/ClassFieldReader.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/ClassFieldWriter.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/FieldAccessor.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/extractors/ArrayElementReader.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/extractors/BaseBooleanClassFieldReader.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/extractors/BaseBooleanClassFieldWriter.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/extractors/BaseByteClassFieldReader.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/extractors/BaseByteClassFieldWriter.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/extractors/BaseCharClassFieldReader.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/extractors/BaseCharClassFieldWriter.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/extractors/BaseDoubleClassFieldReader.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/extractors/BaseDoubleClassFieldWriter.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/extractors/BaseFloatClassFieldReader.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/extractors/BaseFloatClassFieldWriter.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/extractors/BaseIntClassFieldReader.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/extractors/BaseIntClassFieldWriter.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/extractors/BaseLongClassFieldReader.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/extractors/BaseLongClassFieldWriter.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/extractors/BaseObjectClassFieldReader.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/extractors/BaseObjectClassFieldWriter.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/extractors/BaseShortClassFieldReader.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/extractors/BaseShortClassFieldWriter.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/extractors/MVELClassFieldReader.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/extractors/SelfReferenceClassFieldReader.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/InternalReadAccessor.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/ReadAccessor.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/WriteAccessor.java
labs/jbossrules/trunk/drools-core/src/test/java/org/drools/base/BaseClassFieldAccessorFactoryTest.java
labs/jbossrules/trunk/drools-core/src/test/java/org/drools/base/ClassFieldAccessorTest.java
Removed:
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/BaseClassFieldExtractor.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/ClassFieldExtractor.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/ClassFieldExtractorCache.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/ClassFieldExtractorFactory.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/extractors/ArrayExtractor.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/extractors/BaseBooleanClassFieldExtractor.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/extractors/BaseByteClassFieldExtractor.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/extractors/BaseCharClassFieldExtractor.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/extractors/BaseDoubleClassFieldExtractor.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/extractors/BaseFloatClassFieldExtractor.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/extractors/BaseIntClassFieldExtractor.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/extractors/BaseLongClassFieldExtractors.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/extractors/BaseObjectClassFieldExtractor.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/extractors/BaseShortClassFieldExtractor.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/extractors/MVELClassFieldExtractor.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/extractors/SelfReferenceClassFieldExtractor.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/factmodel/FieldAccessor.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/factmodel/FieldAccessorBuilder.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/Extractor.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/FieldExtractor.java
labs/jbossrules/trunk/drools-core/src/test/java/org/drools/base/BaseClassFieldExtractorFactoryTest.java
labs/jbossrules/trunk/drools-core/src/test/java/org/drools/base/ClassFieldExtractorTest.java
labs/jbossrules/trunk/drools-core/src/test/java/org/drools/factmodel/FieldAccessorBuilderTest.java
Modified:
labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/Dialect.java
labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/PackageBuilder.java
labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/PatternBuilder.java
labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/QueryBuilder.java
labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/JavaDialect.java
labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELDialect.java
labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/compiler/PackageBuilderConfigurationTest.java
labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/MiscTest.java
labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/rule/builder/dialect/java/AccumulateTemplateTest.java
labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/rule/builder/dialect/mvel/MVELEvalBuilderTest.java
labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/rule/builder/dialect/mvel/MVELPredicateBuilderTest.java
labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/rule/builder/dialect/mvel/MVELReturnValueBuilderTest.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/AfterEvaluatorDefinition.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/BeforeEvaluatorDefinition.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/CoincidesEvaluatorDefinition.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/ComparableEvaluatorsDefinition.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/DuringEvaluatorDefinition.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/EqualityEvaluatorsDefinition.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/FinishedByEvaluatorDefinition.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/FinishesEvaluatorDefinition.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/IncludesEvaluatorDefinition.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/MatchesEvaluatorsDefinition.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/MeetsEvaluatorDefinition.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/MetByEvaluatorDefinition.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/OverlappedByEvaluatorDefinition.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/OverlapsEvaluatorDefinition.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/SetEvaluatorsDefinition.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/SoundslikeEvaluatorsDefinition.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/StartedByEvaluatorDefinition.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/StartsEvaluatorDefinition.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/DefaultBetaConstraints.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/DroolsObjectInput.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/DroolsObjectInputStream.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/factmodel/ClassBuilder.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/factmodel/ClassDefinition.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/factmodel/FieldDefinition.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/facttemplates/FactTemplateFieldExtractor.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/CompositeObjectSinkAdapter.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ReteooFactHandleFactory.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/builder/ReteooRuleBuilder.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/AndCompositeRestriction.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/Declaration.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/LiteralConstraint.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/LiteralRestriction.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/MultiRestrictionFieldConstraint.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/OrCompositeRestriction.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/Pattern.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/PredicateConstraint.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/ReturnValueConstraint.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/ReturnValueRestriction.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/TypeDeclaration.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/VariableConstraint.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/VariableRestriction.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/Evaluator.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/GlobalExtractor.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/PatternExtractor.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/Restriction.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/util/AbstractHashTable.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/util/asm/ClassFieldInspector.java
labs/jbossrules/trunk/drools-core/src/test/java/org/drools/agent/RuleAgentTest.java
labs/jbossrules/trunk/drools-core/src/test/java/org/drools/base/EvaluatorFactoryTest.java
labs/jbossrules/trunk/drools-core/src/test/java/org/drools/base/TemporalEvaluatorFactoryTest.java
labs/jbossrules/trunk/drools-core/src/test/java/org/drools/base/extractors/BooleanClassFieldExtractorTest.java
labs/jbossrules/trunk/drools-core/src/test/java/org/drools/base/extractors/ByteClassFieldExtractorTest.java
labs/jbossrules/trunk/drools-core/src/test/java/org/drools/base/extractors/CharClassFieldExtractorTest.java
labs/jbossrules/trunk/drools-core/src/test/java/org/drools/base/extractors/DoubleClassFieldExtractorTest.java
labs/jbossrules/trunk/drools-core/src/test/java/org/drools/base/extractors/FloatClassFieldExtractorTest.java
labs/jbossrules/trunk/drools-core/src/test/java/org/drools/base/extractors/IntClassFieldExtractorTest.java
labs/jbossrules/trunk/drools-core/src/test/java/org/drools/base/extractors/LongClassFieldExtractorTest.java
labs/jbossrules/trunk/drools-core/src/test/java/org/drools/base/extractors/MVELClassFieldExtractorTest.java
labs/jbossrules/trunk/drools-core/src/test/java/org/drools/base/extractors/ObjectClassFieldExtractorTest.java
labs/jbossrules/trunk/drools-core/src/test/java/org/drools/base/extractors/ShortClassFieldExtractorTest.java
labs/jbossrules/trunk/drools-core/src/test/java/org/drools/common/BaseBetaConstraintsTest.java
labs/jbossrules/trunk/drools-core/src/test/java/org/drools/event/AgendaEventSupportTest.java
labs/jbossrules/trunk/drools-core/src/test/java/org/drools/event/RuleBaseEventListenerTest.java
labs/jbossrules/trunk/drools-core/src/test/java/org/drools/examples/manners/BaseMannersTest.java
labs/jbossrules/trunk/drools-core/src/test/java/org/drools/examples/manners/ReteooMannersTest.java
labs/jbossrules/trunk/drools-core/src/test/java/org/drools/factmodel/InstancesHashcodedTest.java
labs/jbossrules/trunk/drools-core/src/test/java/org/drools/facttemplates/FactTemplateFieldExtractorTest.java
labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/AlphaNodeTest.java
labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/CompositeObjectSinkAdapterTest.java
labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/FromNodeTest.java
labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/QueryTerminalNodeTest.java
labs/jbossrules/trunk/drools-core/src/test/java/org/drools/rule/DeclarationTest.java
labs/jbossrules/trunk/drools-core/src/test/java/org/drools/rule/FieldConstraintTest.java
labs/jbossrules/trunk/drools-core/src/test/java/org/drools/rule/PatternTest.java
labs/jbossrules/trunk/drools-core/src/test/java/org/drools/util/FieldIndexEntryTest.java
labs/jbossrules/trunk/drools-core/src/test/java/org/drools/util/RightTupleIndexHashTableTest.java
labs/jbossrules/trunk/drools-core/src/test/java/org/drools/util/asm/ClassFieldInspectorTest.java
Log:
Refactoring extrators into read accessors and unifying the write accessors framework
Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/Dialect.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/Dialect.java 2008-05-16 15:22:07 UTC (rev 19970)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/Dialect.java 2008-05-16 18:29:20 UTC (rev 19971)
@@ -4,7 +4,7 @@
import java.util.Map;
import java.util.Set;
-import org.drools.base.ClassFieldExtractorCache;
+import org.drools.base.ClassFieldAccessorCache;
import org.drools.base.TypeResolver;
import org.drools.lang.descr.BaseDescr;
import org.drools.lang.descr.FunctionDescr;
@@ -50,7 +50,7 @@
TypeResolver getTypeResolver();
- ClassFieldExtractorCache getClassFieldExtractorCache();
+ ClassFieldAccessorCache getClassFieldExtractorCache();
SalienceBuilder getSalienceBuilder();
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-05-16 15:22:07 UTC (rev 19970)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/PackageBuilder.java 2008-05-16 18:29:20 UTC (rev 19971)
@@ -25,7 +25,7 @@
import java.util.Map;
import java.util.Set;
-import org.drools.base.ClassFieldExtractorCache;
+import org.drools.base.ClassFieldAccessorCache;
import org.drools.base.ClassTypeResolver;
import org.drools.base.TypeResolver;
import org.drools.commons.jci.problems.CompilationProblem;
@@ -58,7 +58,7 @@
import org.drools.rule.TypeDeclaration;
import org.drools.rule.builder.RuleBuildContext;
import org.drools.rule.builder.RuleBuilder;
-import org.drools.spi.FieldExtractor;
+import org.drools.spi.InternalReadAccessor;
import org.drools.xml.XmlPackageReader;
import org.drools.xml.XmlProcessReader;
import org.xml.sax.SAXException;
@@ -84,7 +84,7 @@
private TypeResolver typeResolver;
- private ClassFieldExtractorCache classFieldExtractorCache;
+ private ClassFieldAccessorCache classFieldExtractorCache;
private RuleBuilder ruleBuilder;
@@ -143,7 +143,7 @@
this.configuration = configuration;
this.results = new ArrayList();
this.pkg = pkg;
- this.classFieldExtractorCache = ClassFieldExtractorCache.getInstance();
+ this.classFieldExtractorCache = ClassFieldAccessorCache.getInstance();
if ( this.pkg != null ) {
ClassLoader cl = this.pkg.getDialectDatas().getClassLoader();
@@ -473,7 +473,7 @@
String duration = typeDescr.getMetaAttribute( TypeDeclaration.ATTR_DURATION );
if ( duration != null ) {
type.setDurationAttribute( duration );
- FieldExtractor extractor = ClassFieldExtractorCache.getInstance().getExtractor( type.getTypeClass(),
+ InternalReadAccessor extractor = ClassFieldAccessorCache.getInstance().getReader( type.getTypeClass(),
duration,
this.configuration.getClassLoader() );
type.setDurationExtractor( extractor );
@@ -619,7 +619,7 @@
* @return
* the ClsasFieldExtractorCache
*/
- public ClassFieldExtractorCache getClassFieldExtractorCache() {
+ public ClassFieldAccessorCache getClassFieldExtractorCache() {
return this.classFieldExtractorCache;
}
Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/PatternBuilder.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/PatternBuilder.java 2008-05-16 15:22:07 UTC (rev 19970)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/PatternBuilder.java 2008-05-16 18:29:20 UTC (rev 19971)
@@ -73,8 +73,8 @@
import org.drools.rule.builder.dialect.mvel.MVELDialect;
import org.drools.spi.Constraint;
import org.drools.spi.Evaluator;
-import org.drools.spi.FieldExtractor;
import org.drools.spi.FieldValue;
+import org.drools.spi.InternalReadAccessor;
import org.drools.spi.ObjectType;
import org.drools.spi.Restriction;
import org.drools.spi.Constraint.ConstraintType;
@@ -296,7 +296,7 @@
}
// if it is not a complex expression, just build a simple field constraint
- final FieldExtractor extractor = getFieldExtractor( context,
+ final InternalReadAccessor extractor = getFieldExtractor( context,
fieldConstraintDescr,
pattern.getObjectType(),
fieldName,
@@ -431,7 +431,7 @@
final Pattern pattern,
final FieldConstraintDescr fieldConstraintDescr,
final RestrictionConnectiveDescr top,
- final FieldExtractor extractor) {
+ final InternalReadAccessor extractor) {
Restriction[] restrictions = new Restriction[top.getRestrictions().size()];
int index = 0;
@@ -499,7 +499,7 @@
return;
}
- final FieldExtractor extractor = getFieldExtractor( context,
+ final InternalReadAccessor extractor = getFieldExtractor( context,
fieldBindingDescr,
pattern.getObjectType(),
fieldBindingDescr.getFieldName(),
@@ -617,7 +617,7 @@
final FieldBindingDescr implicitBinding = new FieldBindingDescr( identifier,
identifier );
- final FieldExtractor extractor = getFieldExtractor( context,
+ final InternalReadAccessor extractor = getFieldExtractor( context,
implicitBinding,
pattern.getObjectType(),
implicitBinding.getFieldName(),
@@ -635,7 +635,7 @@
private Restriction buildRestriction(final RuleBuildContext context,
final Pattern pattern,
- final FieldExtractor extractor,
+ final InternalReadAccessor extractor,
final FieldConstraintDescr fieldConstraintDescr,
final RestrictionDescr restrictionDescr) {
Restriction restriction = null;
@@ -667,7 +667,7 @@
}
private VariableRestriction buildRestriction(final RuleBuildContext context,
- final FieldExtractor extractor,
+ final InternalReadAccessor extractor,
final FieldConstraintDescr fieldConstraintDescr,
final VariableRestrictionDescr variableRestrictionDescr) {
if ( variableRestrictionDescr.getIdentifier() == null || variableRestrictionDescr.getIdentifier().equals( "" ) ) {
@@ -713,7 +713,7 @@
}
private LiteralRestriction buildRestriction(final RuleBuildContext context,
- final FieldExtractor extractor,
+ final InternalReadAccessor extractor,
final FieldConstraintDescr fieldConstraintDescr,
final LiteralRestrictionDescr literalRestrictionDescr) {
FieldValue field = null;
@@ -747,7 +747,7 @@
}
private Restriction buildRestriction(final RuleBuildContext context,
- final FieldExtractor extractor,
+ final InternalReadAccessor extractor,
final FieldConstraintDescr fieldConstraintDescr,
final QualifiedIdentifierRestrictionDescr qiRestrictionDescr) {
FieldValue field = null;
@@ -839,7 +839,7 @@
private ReturnValueRestriction buildRestriction(final RuleBuildContext context,
final Pattern pattern,
- final FieldExtractor extractor,
+ final InternalReadAccessor extractor,
final FieldConstraintDescr fieldConstraintDescr,
final ReturnValueRestrictionDescr returnValueRestrictionDescr) {
Dialect.AnalysisResult analysis = context.getDialect().analyzeExpression( context,
@@ -895,12 +895,12 @@
return returnValueRestriction;
}
- private FieldExtractor getFieldExtractor(final RuleBuildContext context,
+ private InternalReadAccessor getFieldExtractor(final RuleBuildContext context,
final BaseDescr descr,
final ObjectType objectType,
final String fieldName,
final boolean reportError) {
- FieldExtractor extractor = null;
+ InternalReadAccessor extractor = null;
if ( ValueType.FACTTEMPLATE_TYPE.equals(objectType.getValueType()) ) {
//@todo use extractor cache
@@ -910,7 +910,7 @@
} else {
try {
ClassLoader classloader = context.getPkg().getDialectDatas().getClassLoader();
- extractor = context.getDialect().getClassFieldExtractorCache().getExtractor( ((ClassObjectType) objectType).getClassType(),
+ extractor = context.getDialect().getClassFieldExtractorCache().getReader( ((ClassObjectType) objectType).getClassType(),
fieldName,
classloader );
} catch ( final RuntimeDroolsException e ) {
Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/QueryBuilder.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/QueryBuilder.java 2008-05-16 15:22:07 UTC (rev 19970)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/QueryBuilder.java 2008-05-16 18:29:20 UTC (rev 19971)
@@ -6,14 +6,13 @@
import org.drools.base.FieldFactory;
import org.drools.base.ValueType;
import org.drools.base.evaluators.Operator;
-import org.drools.base.extractors.ArrayExtractor;
+import org.drools.base.extractors.ArrayElementReader;
import org.drools.compiler.DescrBuildError;
import org.drools.lang.descr.QueryDescr;
import org.drools.rule.LiteralConstraint;
import org.drools.rule.Pattern;
-import org.drools.spi.Extractor;
-import org.drools.spi.FieldExtractor;
import org.drools.spi.FieldValue;
+import org.drools.spi.InternalReadAccessor;
import org.drools.spi.ObjectType;
public class QueryBuilder {
@@ -25,7 +24,7 @@
objectType,
null );
ClassLoader classloader = context.getPkg().getDialectDatas().getClassLoader();
- final FieldExtractor extractor = context.getDialect().getClassFieldExtractorCache().getExtractor( DroolsQuery.class,
+ final InternalReadAccessor extractor = context.getDialect().getClassFieldExtractorCache().getReader( DroolsQuery.class,
"name",
classloader );
@@ -39,9 +38,9 @@
// adds appropriate constraint to the pattern
pattern.addConstraint( constraint );
- Extractor arrayExtractor = null;
+ InternalReadAccessor arrayExtractor = null;
try {
- arrayExtractor = context.getDialect().getClassFieldExtractorCache().getExtractor( ((ClassObjectType) objectType).getClassType(),
+ arrayExtractor = context.getDialect().getClassFieldExtractorCache().getReader( ((ClassObjectType) objectType).getClassType(),
"arguments",
classloader );
} catch ( final RuntimeDroolsException e ) {
@@ -57,7 +56,7 @@
try {
for ( i = 0; i < params.length; i++ ) {
pattern.addDeclaration( params[i],
- new ArrayExtractor( arrayExtractor,
+ new ArrayElementReader( arrayExtractor,
i,
context.getDialect().getTypeResolver().resolveType( types[i] ) ) );
}
Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/JavaDialect.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/JavaDialect.java 2008-05-16 15:22:07 UTC (rev 19970)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/JavaDialect.java 2008-05-16 18:29:20 UTC (rev 19971)
@@ -12,7 +12,7 @@
import java.util.Map;
import java.util.Set;
-import org.drools.base.ClassFieldExtractorCache;
+import org.drools.base.ClassFieldAccessorCache;
import org.drools.base.TypeResolver;
import org.drools.commons.jci.compilers.CompilationResult;
import org.drools.commons.jci.compilers.JavaCompiler;
@@ -120,7 +120,7 @@
private PackageBuilder packageBuilder;
private TypeResolver typeResolver;
- private ClassFieldExtractorCache classFieldExtractorCache;
+ private ClassFieldAccessorCache classFieldExtractorCache;
// a map of registered builders
private static Map builders;
@@ -293,7 +293,7 @@
*
* @return
*/
- public ClassFieldExtractorCache getClassFieldExtractorCache() {
+ public ClassFieldAccessorCache getClassFieldExtractorCache() {
return this.classFieldExtractorCache;
}
Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELDialect.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELDialect.java 2008-05-16 15:22:07 UTC (rev 19970)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELDialect.java 2008-05-16 18:29:20 UTC (rev 19971)
@@ -14,7 +14,7 @@
import java.util.Set;
import java.util.Map.Entry;
-import org.drools.base.ClassFieldExtractorCache;
+import org.drools.base.ClassFieldAccessorCache;
import org.drools.base.ModifyInterceptor;
import org.drools.base.TypeResolver;
import org.drools.base.mvel.MVELDebugHandler;
@@ -110,7 +110,7 @@
protected MVELDialectData data;
private MVELDialectConfiguration configuration;
private TypeResolver typeResolver;
- private ClassFieldExtractorCache classFieldExtractorCache;
+ private ClassFieldAccessorCache classFieldExtractorCache;
private MVELExprAnalyzer analyzer;
private Map imports;
@@ -134,7 +134,7 @@
data = (MVELDialectData) in.readObject();
configuration = (MVELDialectConfiguration) in.readObject();
typeResolver = (TypeResolver) in.readObject();
- classFieldExtractorCache = (ClassFieldExtractorCache) in.readObject();
+ classFieldExtractorCache = (ClassFieldAccessorCache) in.readObject();
analyzer = (MVELExprAnalyzer) in.readObject();
imports = (Map) in.readObject();
packageImports = (Map) in.readObject();
@@ -554,7 +554,7 @@
return this.builders;
}
- public ClassFieldExtractorCache getClassFieldExtractorCache() {
+ public ClassFieldAccessorCache getClassFieldExtractorCache() {
return this.classFieldExtractorCache;
}
Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/compiler/PackageBuilderConfigurationTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/compiler/PackageBuilderConfigurationTest.java 2008-05-16 15:22:07 UTC (rev 19970)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/compiler/PackageBuilderConfigurationTest.java 2008-05-16 18:29:20 UTC (rev 19971)
@@ -8,7 +8,7 @@
import junit.framework.TestCase;
-import org.drools.base.ClassFieldExtractorCache;
+import org.drools.base.ClassFieldAccessorCache;
import org.drools.base.TypeResolver;
import org.drools.lang.descr.AndDescr;
import org.drools.lang.descr.AttributeDescr;
@@ -355,7 +355,7 @@
return null;
}
- public ClassFieldExtractorCache getClassFieldExtractorCache() {
+ public ClassFieldAccessorCache getClassFieldExtractorCache() {
return null;
}
Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/MiscTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/MiscTest.java 2008-05-16 15:22:07 UTC (rev 19970)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/MiscTest.java 2008-05-16 18:29:20 UTC (rev 19971)
@@ -17,16 +17,12 @@
*/
import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.ObjectInput;
-import java.io.ObjectInputStream;
import java.io.ObjectOutput;
-import java.io.ObjectOutputStream;
import java.io.Reader;
import java.io.StringReader;
-import java.lang.reflect.Method;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.util.ArrayList;
@@ -83,7 +79,6 @@
import org.drools.StatelessSession;
import org.drools.TestParam;
import org.drools.WorkingMemory;
-import org.drools.util.DroolsStreamUtils;
import org.drools.Cheesery.Maturity;
import org.drools.audit.WorkingMemoryFileLogger;
import org.drools.audit.WorkingMemoryInMemoryLogger;
@@ -127,6 +122,7 @@
import org.drools.spi.Activation;
import org.drools.spi.ConsequenceExceptionHandler;
import org.drools.spi.GlobalResolver;
+import org.drools.util.DroolsStreamUtils;
import org.drools.xml.XmlDumper;
/** Run all the tests with the ReteOO engine implementation */
@@ -544,8 +540,6 @@
Package p = builder.getPackage();
assertEquals(2, p.getRules().length);
-
-
//to test it we will generate another class that looks just like it
ClassBuilder cb = new ClassBuilder();
ClassDefinition def = new ClassDefinition("org.drools.generatedbeans.Cheese");
Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/rule/builder/dialect/java/AccumulateTemplateTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/rule/builder/dialect/java/AccumulateTemplateTest.java 2008-05-16 15:22:07 UTC (rev 19970)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/rule/builder/dialect/java/AccumulateTemplateTest.java 2008-05-16 18:29:20 UTC (rev 19971)
@@ -9,7 +9,7 @@
import org.drools.Cheese;
import org.drools.Person;
-import org.drools.base.ClassFieldExtractorCache;
+import org.drools.base.ClassFieldAccessorCache;
import org.drools.base.ClassObjectType;
import org.drools.rule.Declaration;
import org.drools.spi.PatternExtractor;
@@ -23,11 +23,11 @@
public class AccumulateTemplateTest extends TestCase {
- private ClassFieldExtractorCache cache;
+ private ClassFieldAccessorCache cache;
protected void setUp() throws Exception {
super.setUp();
- cache = ClassFieldExtractorCache.getInstance();
+ cache = ClassFieldAccessorCache.getInstance();
}
protected void tearDown() throws Exception {
@@ -46,7 +46,7 @@
final Declaration[] inner = new Declaration[]{new Declaration( "cheese",
new PatternExtractor( new ClassObjectType( Cheese.class ) ),
null ), new Declaration( "price",
- cache.getExtractor( Cheese.class,
+ cache.getReader( Cheese.class,
"price",
getClass().getClassLoader() ),
null )};
@@ -119,18 +119,18 @@
final String[] declarationTypes = new String[]{"String", "int"};
final Declaration[] declarations = new Declaration[]{new Declaration( "name",
- cache.getExtractor( Person.class,
+ cache.getReader( Person.class,
"name",
getClass().getClassLoader() ),
null ), new Declaration( "age",
- cache.getExtractor( Person.class,
+ cache.getReader( Person.class,
"age",
getClass().getClassLoader() ),
null )};
final Declaration[] inner = new Declaration[]{new Declaration( "cheese",
new PatternExtractor( new ClassObjectType( Cheese.class ) ),
null ), new Declaration( "price",
- cache.getExtractor( Cheese.class,
+ cache.getReader( Cheese.class,
"price",
getClass().getClassLoader() ),
null )};
@@ -203,11 +203,11 @@
final String[] declarationTypes = new String[]{"String", "int"};
final Declaration[] declarations = new Declaration[]{new Declaration( "name",
- cache.getExtractor( Person.class,
+ cache.getReader( Person.class,
"name",
getClass().getClassLoader() ),
null ), new Declaration( "age",
- cache.getExtractor( Person.class,
+ cache.getReader( Person.class,
"age",
getClass().getClassLoader() ),
null )};
Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/rule/builder/dialect/mvel/MVELEvalBuilderTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/rule/builder/dialect/mvel/MVELEvalBuilderTest.java 2008-05-16 15:22:07 UTC (rev 19970)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/rule/builder/dialect/mvel/MVELEvalBuilderTest.java 2008-05-16 18:29:20 UTC (rev 19971)
@@ -9,7 +9,7 @@
import org.drools.RuleBase;
import org.drools.RuleBaseFactory;
import org.drools.WorkingMemory;
-import org.drools.base.ClassFieldExtractorCache;
+import org.drools.base.ClassFieldAccessorCache;
import org.drools.base.ClassObjectType;
import org.drools.common.InternalFactHandle;
import org.drools.compiler.PackageBuilder;
@@ -22,14 +22,14 @@
import org.drools.rule.EvalCondition;
import org.drools.rule.Package;
import org.drools.rule.Pattern;
-import org.drools.spi.FieldExtractor;
+import org.drools.spi.InternalReadAccessor;
public class MVELEvalBuilderTest extends TestCase {
- private ClassFieldExtractorCache cache;
+ private ClassFieldAccessorCache cache;
public void setUp() {
- cache = ClassFieldExtractorCache.getInstance();
+ cache = ClassFieldAccessorCache.getInstance();
}
public void testSimpleExpression() {
@@ -48,7 +48,7 @@
final InstrumentedDeclarationScopeResolver declarationResolver = new InstrumentedDeclarationScopeResolver();
- final FieldExtractor extractor = cache.getExtractor( Cheese.class,
+ final InternalReadAccessor extractor = cache.getReader( Cheese.class,
"price",
getClass().getClassLoader() );
Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/rule/builder/dialect/mvel/MVELPredicateBuilderTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/rule/builder/dialect/mvel/MVELPredicateBuilderTest.java 2008-05-16 15:22:07 UTC (rev 19970)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/rule/builder/dialect/mvel/MVELPredicateBuilderTest.java 2008-05-16 18:29:20 UTC (rev 19971)
@@ -10,7 +10,7 @@
import org.drools.Cheese;
import org.drools.RuleBase;
import org.drools.RuleBaseFactory;
-import org.drools.base.ClassFieldExtractorCache;
+import org.drools.base.ClassFieldAccessorCache;
import org.drools.base.ClassObjectType;
import org.drools.common.InternalFactHandle;
import org.drools.common.InternalWorkingMemory;
@@ -25,11 +25,11 @@
import org.drools.rule.Pattern;
import org.drools.rule.PredicateConstraint;
import org.drools.rule.PredicateConstraint.PredicateContextEntry;
-import org.drools.spi.FieldExtractor;
+import org.drools.spi.InternalReadAccessor;
public class MVELPredicateBuilderTest extends TestCase {
- private ClassFieldExtractorCache cache = ClassFieldExtractorCache.getInstance();
+ private ClassFieldAccessorCache cache = ClassFieldAccessorCache.getInstance();
public void setUp() {
}
@@ -49,7 +49,7 @@
mvelDialect );
final InstrumentedDeclarationScopeResolver declarationResolver = new InstrumentedDeclarationScopeResolver();
- final FieldExtractor extractor = cache.getExtractor( Cheese.class,
+ final InternalReadAccessor extractor = cache.getReader( Cheese.class,
"price",
getClass().getClassLoader() );
Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/rule/builder/dialect/mvel/MVELReturnValueBuilderTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/rule/builder/dialect/mvel/MVELReturnValueBuilderTest.java 2008-05-16 15:22:07 UTC (rev 19970)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/rule/builder/dialect/mvel/MVELReturnValueBuilderTest.java 2008-05-16 18:29:20 UTC (rev 19971)
@@ -10,7 +10,7 @@
import org.drools.Cheese;
import org.drools.RuleBase;
import org.drools.RuleBaseFactory;
-import org.drools.base.ClassFieldExtractorCache;
+import org.drools.base.ClassFieldAccessorCache;
import org.drools.base.ClassObjectType;
import org.drools.base.ValueType;
import org.drools.base.evaluators.Operator;
@@ -27,14 +27,14 @@
import org.drools.rule.Package;
import org.drools.rule.Pattern;
import org.drools.rule.ReturnValueRestriction;
-import org.drools.spi.FieldExtractor;
+import org.drools.spi.InternalReadAccessor;
public class MVELReturnValueBuilderTest extends TestCase {
- private ClassFieldExtractorCache cache;
+ private ClassFieldAccessorCache cache;
public void setUp() {
- cache = ClassFieldExtractorCache.getInstance();
+ cache = ClassFieldAccessorCache.getInstance();
}
public void testSimpleExpression() {
@@ -52,7 +52,7 @@
mvelDialect );
final InstrumentedDeclarationScopeResolver declarationResolver = new InstrumentedDeclarationScopeResolver();
- final FieldExtractor extractor = cache.getExtractor( Cheese.class,
+ final InternalReadAccessor extractor = cache.getReader( Cheese.class,
"price",
getClass().getClassLoader() );
Deleted: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/BaseClassFieldExtractor.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/BaseClassFieldExtractor.java 2008-05-16 15:22:07 UTC (rev 19970)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/BaseClassFieldExtractor.java 2008-05-16 18:29:20 UTC (rev 19971)
@@ -1,131 +0,0 @@
-package org.drools.base;
-
-/*
- * Copyright 2005 JBoss Inc
- *
- * 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.
- */
-
-import org.drools.RuntimeDroolsException;
-import org.drools.spi.FieldExtractor;
-import org.drools.util.ClassUtils;
-import org.drools.util.asm.ClassFieldInspector;
-
-import java.io.IOException;
-import java.io.ObjectInput;
-import java.io.ObjectOutput;
-
-/**
- * This is the supertype for the ASM generated classes for accessing a field.
- * @author Alexander Bagerman
- */
-abstract public class BaseClassFieldExtractor
- implements
- FieldExtractor {
- private int index;
-
- private Class fieldType;
-
- private ValueType valueType;
-
- public BaseClassFieldExtractor() {
-
- }
-
- /**
- * This constructor is not supposed to be used from outside the class hirarchy
- *
- * @param index
- * @param fieldType
- * @param valueType
- */
- protected BaseClassFieldExtractor(final int index,
- final Class fieldType,
- final ValueType valueType) {
- this.index = index;
- this.fieldType = fieldType;
- this.valueType = valueType;
- }
-
- /**
- * This is the constructor to be used
- *
- * @param clazz
- * @param fieldName
- */
- public BaseClassFieldExtractor(final Class clazz,
- final String fieldName) {
- try {
- final ClassFieldInspector inspector = new ClassFieldInspector( clazz );
- this.index = ((Integer) inspector.getFieldNames().get( fieldName )).intValue();
- this.fieldType = (Class) inspector.getFieldTypes().get( fieldName );
- this.valueType = ValueType.determineValueType( this.fieldType );
- } catch ( final Exception e ) {
- throw new RuntimeDroolsException( e );
- }
- }
-
- public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
- index = in.readInt();
- fieldType = (Class)in.readObject();
- valueType = (ValueType)in.readObject();
- if (valueType != null)
- valueType = ValueType.determineValueType(valueType.getClassType());
- }
-
- public void writeExternal(ObjectOutput out) throws IOException {
- out.writeInt(index);
- out.writeObject(fieldType);
- out.writeObject(valueType);
- }
-
- public int getIndex() {
- return this.index;
- }
-
- public Class getExtractToClass() {
- return this.fieldType;
- }
-
- public String getExtractToClassName() {
- return ClassUtils.canonicalName( this.fieldType );
- }
-
- public ValueType getValueType() {
- return this.valueType;
- }
-
- public boolean isGlobal() {
- return false;
- }
-
- public int hashCode() {
- final int PRIME = 31;
- int result = 1;
- result = PRIME * result + this.fieldType.hashCode();
- result = PRIME * result + this.index;
- result = PRIME * result + this.valueType.hashCode();
- return result;
- }
-
- public boolean equals(final Object object) {
- if ( this == object ) {
- return true;
- }
- if ( !(object instanceof BaseClassFieldExtractor) ) {
- return false;
- }
- final BaseClassFieldExtractor other = (BaseClassFieldExtractor) object;
- return this.fieldType == other.fieldType && this.index == other.index && this.valueType.equals( other.valueType );
- }
-}
\ No newline at end of file
Copied: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/BaseClassFieldReader.java (from rev 19963, labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/BaseClassFieldExtractor.java)
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/BaseClassFieldReader.java (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/BaseClassFieldReader.java 2008-05-16 18:29:20 UTC (rev 19971)
@@ -0,0 +1,187 @@
+package org.drools.base;
+
+/*
+ * Copyright 2005 JBoss Inc
+ *
+ * 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.
+ */
+
+import java.io.IOException;
+import java.io.ObjectInput;
+import java.io.ObjectOutput;
+
+import org.drools.RuntimeDroolsException;
+import org.drools.util.ClassUtils;
+import org.drools.util.asm.ClassFieldInspector;
+
+/**
+ * This is the supertype for the ASM generated classes for accessing a field.
+ * @author Alexander Bagerman
+ */
+abstract public class BaseClassFieldReader
+ implements
+ org.drools.spi.InternalReadAccessor {
+
+ private int index;
+
+ private Class< ? > fieldType;
+
+ private ValueType valueType;
+
+ public BaseClassFieldReader() {
+
+ }
+
+ /**
+ * This constructor is not supposed to be used from outside the class hirarchy
+ *
+ * @param index
+ * @param fieldType
+ * @param valueType
+ */
+ protected BaseClassFieldReader(final int index,
+ final Class fieldType,
+ final ValueType valueType) {
+ this.index = index;
+ this.fieldType = fieldType;
+ this.valueType = valueType;
+ }
+
+ /**
+ * This is the constructor to be used
+ *
+ * @param clazz
+ * @param fieldName
+ */
+ public BaseClassFieldReader(final Class clazz,
+ final String fieldName) {
+ try {
+ final ClassFieldInspector inspector = new ClassFieldInspector( clazz );
+ this.index = ((Integer) inspector.getFieldNames().get( fieldName )).intValue();
+ this.fieldType = (Class) inspector.getFieldTypes().get( fieldName );
+ this.valueType = ValueType.determineValueType( this.fieldType );
+ } catch ( final Exception e ) {
+ throw new RuntimeDroolsException( e );
+ }
+ }
+
+ public void readExternal(ObjectInput in) throws IOException,
+ ClassNotFoundException {
+ index = in.readInt();
+ fieldType = (Class) in.readObject();
+ valueType = (ValueType) in.readObject();
+ if ( valueType != null ) valueType = ValueType.determineValueType( valueType.getClassType() );
+ }
+
+ public void writeExternal(ObjectOutput out) throws IOException {
+ out.writeInt( index );
+ out.writeObject( fieldType );
+ out.writeObject( valueType );
+ }
+
+ public int getIndex() {
+ return this.index;
+ }
+
+ public Class getExtractToClass() {
+ return this.fieldType;
+ }
+
+ public String getExtractToClassName() {
+ return ClassUtils.canonicalName( this.fieldType );
+ }
+
+ public ValueType getValueType() {
+ return this.valueType;
+ }
+
+ public boolean isGlobal() {
+ return false;
+ }
+
+ public int hashCode() {
+ final int PRIME = 31;
+ int result = 1;
+ result = PRIME * result + this.fieldType.hashCode();
+ result = PRIME * result + this.index;
+ result = PRIME * result + this.valueType.hashCode();
+ return result;
+ }
+
+ public boolean equals(final Object object) {
+ if ( this == object ) {
+ return true;
+ }
+ if ( !(object instanceof BaseClassFieldReader) ) {
+ return false;
+ }
+ final BaseClassFieldReader other = (BaseClassFieldReader) object;
+ return this.fieldType == other.fieldType && this.index == other.index && this.valueType.equals( other.valueType );
+ }
+
+ public Object getValue(Object object) {
+ return getValue( null,
+ object );
+ }
+
+ public char getCharValue(Object object) {
+ return getCharValue( null,
+ object );
+ }
+
+ public int getIntValue(Object object) {
+ return getIntValue( null,
+ object );
+ }
+
+ public byte getByteValue(Object object) {
+ return getByteValue( null,
+ object );
+ }
+
+ public short getShortValue(Object object) {
+ return getShortValue( null,
+ object );
+ }
+
+ public long getLongValue(Object object) {
+ return getLongValue( null,
+ object );
+ }
+
+ public float getFloatValue(Object object) {
+ return getFloatValue( null,
+ object );
+ }
+
+ public double getDoubleValue(Object object) {
+ return getDoubleValue( null,
+ object );
+ }
+
+ public boolean getBooleanValue(Object object) {
+ return getBooleanValue( null,
+ object );
+ }
+
+ public boolean isNullValue(Object object) {
+ return isNullValue( null,
+ object );
+ }
+
+ public int getHashCode(Object object) {
+ return getHashCode( null,
+ object );
+ }
+
+}
\ No newline at end of file
Added: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/BaseClassFieldWriter.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/BaseClassFieldWriter.java (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/BaseClassFieldWriter.java 2008-05-16 18:29:20 UTC (rev 19971)
@@ -0,0 +1,122 @@
+package org.drools.base;
+
+/*
+ * Copyright 2008 JBoss Inc
+ *
+ * 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.
+ */
+
+import java.io.IOException;
+import java.io.ObjectInput;
+import java.io.ObjectOutput;
+
+import org.drools.RuntimeDroolsException;
+import org.drools.spi.WriteAccessor;
+import org.drools.util.asm.ClassFieldInspector;
+
+/**
+ * This is the supertype for the ASM generated classes for writing values into fields.
+ *
+ * @author Edson Tirelli
+ */
+abstract public class BaseClassFieldWriter
+ implements
+ WriteAccessor {
+ private int index;
+
+ private Class< ? > fieldType;
+
+ private ValueType valueType;
+
+ public BaseClassFieldWriter() {
+ }
+
+ /**
+ * This constructor is not supposed to be used from outside the class hirarchy
+ *
+ * @param index
+ * @param fieldType
+ * @param valueType
+ */
+ protected BaseClassFieldWriter(final int index,
+ final Class< ? > fieldType,
+ final ValueType valueType) {
+ this.index = index;
+ this.fieldType = fieldType;
+ this.valueType = valueType;
+ }
+
+ /**
+ * This is the constructor to be used
+ *
+ * @param clazz
+ * @param fieldName
+ */
+ public BaseClassFieldWriter(final Class< ? > clazz,
+ final String fieldName) {
+ try {
+ final ClassFieldInspector inspector = new ClassFieldInspector( clazz );
+ this.index = ((Integer) inspector.getFieldNames().get( fieldName )).intValue();
+ this.fieldType = (Class< ? >) inspector.getFieldTypes().get( fieldName );
+ this.valueType = ValueType.determineValueType( this.fieldType );
+ } catch ( final Exception e ) {
+ throw new RuntimeDroolsException( e );
+ }
+ }
+
+ public void readExternal(ObjectInput in) throws IOException,
+ ClassNotFoundException {
+ index = in.readInt();
+ fieldType = (Class< ? >) in.readObject();
+ valueType = (ValueType) in.readObject();
+ if ( valueType != null ) valueType = ValueType.determineValueType( valueType.getClassType() );
+ }
+
+ public void writeExternal(ObjectOutput out) throws IOException {
+ out.writeInt( index );
+ out.writeObject( fieldType );
+ out.writeObject( valueType );
+ }
+
+ public int getIndex() {
+ return this.index;
+ }
+
+ public Class< ? > getFieldType() {
+ return this.fieldType;
+ }
+
+ public ValueType getValueType() {
+ return this.valueType;
+ }
+
+ public int hashCode() {
+ final int PRIME = 31;
+ int result = 1;
+ result = PRIME * result + this.fieldType.hashCode();
+ result = PRIME * result + this.index;
+ result = PRIME * result + this.valueType.hashCode();
+ return result;
+ }
+
+ public boolean equals(final Object object) {
+ if ( this == object ) {
+ return true;
+ }
+ if ( !(object instanceof BaseClassFieldWriter) ) {
+ return false;
+ }
+ final BaseClassFieldWriter other = (BaseClassFieldWriter) object;
+ return this.fieldType == other.fieldType && this.index == other.index && this.valueType.equals( other.valueType );
+ }
+}
\ No newline at end of file
Added: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/ClassFieldAccessor.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/ClassFieldAccessor.java (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/ClassFieldAccessor.java 2008-05-16 18:29:20 UTC (rev 19971)
@@ -0,0 +1,419 @@
+package org.drools.base;
+
+/*
+ * Copyright 2005 JBoss Inc
+ *
+ * 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.
+ */
+
+import java.io.Externalizable;
+import java.io.IOException;
+import java.io.ObjectInput;
+import java.io.ObjectOutput;
+import java.lang.reflect.Method;
+
+import org.drools.common.InternalWorkingMemory;
+
+/**
+ * This is a wrapper for a ClassFieldExtractor that provides
+ * default values and a simpler interface for non-used parameters
+ * like the working memory, when the field extractor is used outside
+ * the working memory scope.
+ *
+ * @author Edson Tirelli
+ */
+public class ClassFieldAccessor
+ implements
+ FieldAccessor, Externalizable {
+
+ private static final long serialVersionUID = 400L;
+ private ClassFieldReader reader;
+ private ClassFieldWriter writer;
+
+ public ClassFieldAccessor() {
+ }
+
+ public ClassFieldAccessor(final ClassFieldReader reader, final ClassFieldWriter writer ) {
+ this.reader = reader;
+ this.writer = writer;
+ }
+
+ public void writeExternal(ObjectOutput out) throws IOException {
+ out.writeObject( reader );
+ out.writeObject( writer );
+ }
+
+ public void readExternal(final ObjectInput is) throws ClassNotFoundException,
+ IOException {
+ this.reader = (ClassFieldReader) is.readObject();
+ this.writer = (ClassFieldWriter) is.readObject();
+ }
+
+ public int getIndex() {
+ return this.reader.getIndex();
+ }
+
+ public String getFieldName() {
+ return this.reader.getFieldName();
+ }
+
+ public Object getValue(final Object object) {
+ return this.reader.getValue( null,
+ object );
+ }
+
+ public ValueType getValueType() {
+ return this.reader.getValueType();
+ }
+
+ public Class< ? > getExtractToClass() {
+ return this.reader.getExtractToClass();
+ }
+
+ public String getExtractToClassName() {
+ return this.reader.getExtractToClassName();
+ }
+
+ public String toString() {
+ return this.reader.toString();
+ }
+
+ public int hashCode() {
+ return this.reader.hashCode();
+ }
+
+ public boolean equals(final Object object) {
+ if ( this == object ) {
+ return true;
+ }
+
+ if ( object == null || !(object instanceof ClassFieldAccessor) ) {
+ return false;
+ }
+
+ final ClassFieldAccessor other = (ClassFieldAccessor) object;
+
+ return this.reader.equals( other.reader );
+ }
+
+ public boolean getBooleanValue(final Object object) {
+ return this.reader.getBooleanValue( null,
+ object );
+ }
+
+ public byte getByteValue(final Object object) {
+ return this.reader.getByteValue( null,
+ object );
+ }
+
+ public char getCharValue(final Object object) {
+ return this.reader.getCharValue( null,
+ object );
+ }
+
+ public double getDoubleValue(final Object object) {
+ return this.reader.getDoubleValue( null,
+ object );
+ }
+
+ public float getFloatValue(final Object object) {
+ return this.reader.getFloatValue( null,
+ object );
+ }
+
+ public int getIntValue(final Object object) {
+ return this.reader.getIntValue( null,
+ object );
+ }
+
+ public long getLongValue(final Object object) {
+ return this.reader.getLongValue( null,
+ object );
+ }
+
+ public short getShortValue(final Object object) {
+ return this.reader.getShortValue( null,
+ object );
+ }
+
+ public boolean isNullValue(final Object object) {
+ return this.reader.isNullValue( null,
+ object );
+ }
+
+ public Method getNativeReadMethod() {
+ return this.reader.getNativeReadMethod();
+ }
+
+ public int getHashCode(final Object object) {
+ return this.reader.getHashCode( null,
+ object );
+ }
+
+ /**
+ * @param workingMemory
+ * @param object
+ * @return
+ * @see org.drools.base.ClassFieldReader#getBooleanValue(org.drools.common.InternalWorkingMemory, java.lang.Object)
+ */
+ public boolean getBooleanValue(InternalWorkingMemory workingMemory,
+ Object object) {
+ return reader.getBooleanValue( workingMemory,
+ object );
+ }
+
+ /**
+ * @param workingMemory
+ * @param object
+ * @return
+ * @see org.drools.base.ClassFieldReader#getByteValue(org.drools.common.InternalWorkingMemory, java.lang.Object)
+ */
+ public byte getByteValue(InternalWorkingMemory workingMemory,
+ Object object) {
+ return reader.getByteValue( workingMemory,
+ object );
+ }
+
+ /**
+ * @param workingMemory
+ * @param object
+ * @return
+ * @see org.drools.base.ClassFieldReader#getCharValue(org.drools.common.InternalWorkingMemory, java.lang.Object)
+ */
+ public char getCharValue(InternalWorkingMemory workingMemory,
+ Object object) {
+ return reader.getCharValue( workingMemory,
+ object );
+ }
+
+ /**
+ * @param workingMemory
+ * @param object
+ * @return
+ * @see org.drools.base.ClassFieldReader#getDoubleValue(org.drools.common.InternalWorkingMemory, java.lang.Object)
+ */
+ public double getDoubleValue(InternalWorkingMemory workingMemory,
+ Object object) {
+ return reader.getDoubleValue( workingMemory,
+ object );
+ }
+
+ /**
+ * @param workingMemory
+ * @param object
+ * @return
+ * @see org.drools.base.ClassFieldReader#getFloatValue(org.drools.common.InternalWorkingMemory, java.lang.Object)
+ */
+ public float getFloatValue(InternalWorkingMemory workingMemory,
+ Object object) {
+ return reader.getFloatValue( workingMemory,
+ object );
+ }
+
+ /**
+ * @param workingMemory
+ * @param object
+ * @return
+ * @see org.drools.base.ClassFieldReader#getHashCode(org.drools.common.InternalWorkingMemory, java.lang.Object)
+ */
+ public int getHashCode(InternalWorkingMemory workingMemory,
+ Object object) {
+ return reader.getHashCode( workingMemory,
+ object );
+ }
+
+ /**
+ * @param workingMemory
+ * @param object
+ * @return
+ * @see org.drools.base.ClassFieldReader#getIntValue(org.drools.common.InternalWorkingMemory, java.lang.Object)
+ */
+ public int getIntValue(InternalWorkingMemory workingMemory,
+ Object object) {
+ return reader.getIntValue( workingMemory,
+ object );
+ }
+
+ /**
+ * @param workingMemory
+ * @param object
+ * @return
+ * @see org.drools.base.ClassFieldReader#getLongValue(org.drools.common.InternalWorkingMemory, java.lang.Object)
+ */
+ public long getLongValue(InternalWorkingMemory workingMemory,
+ Object object) {
+ return reader.getLongValue( workingMemory,
+ object );
+ }
+
+ /**
+ * @param workingMemory
+ * @param object
+ * @return
+ * @see org.drools.base.ClassFieldReader#getShortValue(org.drools.common.InternalWorkingMemory, java.lang.Object)
+ */
+ public short getShortValue(InternalWorkingMemory workingMemory,
+ Object object) {
+ return reader.getShortValue( workingMemory,
+ object );
+ }
+
+ /**
+ * @param workingMemory
+ * @param object
+ * @return
+ * @see org.drools.base.ClassFieldReader#getValue(org.drools.common.InternalWorkingMemory, java.lang.Object)
+ */
+ public Object getValue(InternalWorkingMemory workingMemory,
+ Object object) {
+ return reader.getValue( workingMemory,
+ object );
+ }
+
+ /**
+ * @return
+ * @see org.drools.base.ClassFieldReader#isGlobal()
+ */
+ public boolean isGlobal() {
+ return reader.isGlobal();
+ }
+
+ /**
+ * @param workingMemory
+ * @param object
+ * @return
+ * @see org.drools.base.ClassFieldReader#isNullValue(org.drools.common.InternalWorkingMemory, java.lang.Object)
+ */
+ public boolean isNullValue(InternalWorkingMemory workingMemory,
+ Object object) {
+ return reader.isNullValue( workingMemory,
+ object );
+ }
+
+ /**
+ * @return
+ * @see org.drools.base.ClassFieldWriter#getFieldType()
+ */
+ public Class< ? > getFieldType() {
+ return writer.getFieldType();
+ }
+
+ /**
+ * @return
+ * @see org.drools.base.ClassFieldWriter#getNativeWriteMethod()
+ */
+ public Method getNativeWriteMethod() {
+ return writer.getNativeWriteMethod();
+ }
+
+ /**
+ * @param bean
+ * @param value
+ * @see org.drools.base.ClassFieldWriter#setBooleanValue(java.lang.Object, boolean)
+ */
+ public void setBooleanValue(Object bean,
+ boolean value) {
+ writer.setBooleanValue( bean,
+ value );
+ }
+
+ /**
+ * @param bean
+ * @param value
+ * @see org.drools.base.ClassFieldWriter#setByteValue(java.lang.Object, byte)
+ */
+ public void setByteValue(Object bean,
+ byte value) {
+ writer.setByteValue( bean,
+ value );
+ }
+
+ /**
+ * @param bean
+ * @param value
+ * @see org.drools.base.ClassFieldWriter#setCharValue(java.lang.Object, char)
+ */
+ public void setCharValue(Object bean,
+ char value) {
+ writer.setCharValue( bean,
+ value );
+ }
+
+ /**
+ * @param bean
+ * @param value
+ * @see org.drools.base.ClassFieldWriter#setDoubleValue(java.lang.Object, double)
+ */
+ public void setDoubleValue(Object bean,
+ double value) {
+ writer.setDoubleValue( bean,
+ value );
+ }
+
+ /**
+ * @param bean
+ * @param value
+ * @see org.drools.base.ClassFieldWriter#setFloatValue(java.lang.Object, float)
+ */
+ public void setFloatValue(Object bean,
+ float value) {
+ writer.setFloatValue( bean,
+ value );
+ }
+
+ /**
+ * @param bean
+ * @param value
+ * @see org.drools.base.ClassFieldWriter#setIntValue(java.lang.Object, int)
+ */
+ public void setIntValue(Object bean,
+ int value) {
+ writer.setIntValue( bean,
+ value );
+ }
+
+ /**
+ * @param bean
+ * @param value
+ * @see org.drools.base.ClassFieldWriter#setLongValue(java.lang.Object, long)
+ */
+ public void setLongValue(Object bean,
+ long value) {
+ writer.setLongValue( bean,
+ value );
+ }
+
+ /**
+ * @param bean
+ * @param value
+ * @see org.drools.base.ClassFieldWriter#setShortValue(java.lang.Object, short)
+ */
+ public void setShortValue(Object bean,
+ short value) {
+ writer.setShortValue( bean,
+ value );
+ }
+
+ /**
+ * @param bean
+ * @param value
+ * @see org.drools.base.ClassFieldWriter#setValue(java.lang.Object, java.lang.Object)
+ */
+ public void setValue(Object bean,
+ Object value) {
+ writer.setValue( bean,
+ value );
+ }
+
+
+}
\ No newline at end of file
Copied: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/ClassFieldAccessorCache.java (from rev 19963, labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/ClassFieldExtractorCache.java)
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/ClassFieldAccessorCache.java (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/ClassFieldAccessorCache.java 2008-05-16 18:29:20 UTC (rev 19971)
@@ -0,0 +1,176 @@
+package org.drools.base;
+
+import java.io.Externalizable;
+import java.io.IOException;
+import java.io.ObjectInput;
+import java.io.ObjectOutput;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * As class field accessors have some cost to generate
+ * (inspecting the class, and generating classes via ASM)
+ * it makes sense to cache them.
+ * This is that cache.
+ *
+ * @author Michael Neale
+ *
+ */
+public class ClassFieldAccessorCache {
+
+ private Map<AccessorKey, ClassFieldReader> readerCache;
+ private Map<AccessorKey, ClassFieldWriter> writerCache;
+ private Map<AccessorKey, ClassFieldAccessor> accessorCache;
+ private ClassFieldAccessorFactory factory;
+
+ private ClassFieldAccessorCache() {
+ this.factory = new ClassFieldAccessorFactory();
+ }
+
+ public static ClassFieldAccessorCache getInstance() {
+ return new ClassFieldAccessorCache();
+ }
+
+ public synchronized ClassFieldReader getReader(final Class< ? > clazz,
+ final String fieldName,
+ ClassLoader classLoader) {
+ if ( readerCache == null ) {
+ readerCache = new HashMap<AccessorKey, ClassFieldReader>();
+ }
+
+ final AccessorKey key = new AccessorKey( clazz,
+ fieldName );
+
+ if ( readerCache.containsKey( key ) ) {
+ return readerCache.get( key );
+ } else {
+ final ClassFieldReader ex = new ClassFieldReader( clazz,
+ fieldName,
+ classLoader,
+ factory );
+ readerCache.put( key,
+ ex );
+ return ex;
+ }
+ }
+
+ public synchronized ClassFieldWriter getWriter(final Class< ? > clazz,
+ final String fieldName,
+ ClassLoader classLoader) {
+ if ( writerCache == null ) {
+ writerCache = new HashMap<AccessorKey, ClassFieldWriter>();
+ }
+
+ final AccessorKey key = new AccessorKey( clazz,
+ fieldName );
+
+ if ( writerCache.containsKey( key ) ) {
+ return writerCache.get( key );
+ } else {
+ final ClassFieldWriter writer = new ClassFieldWriter( clazz,
+ fieldName,
+ classLoader,
+ factory );
+ writerCache.put( key,
+ writer );
+ return writer;
+ }
+ }
+
+ public synchronized ClassFieldAccessor getAccessor(final Class< ? > clazz,
+ final String fieldName,
+ ClassLoader classLoader) {
+ if ( accessorCache == null ) {
+ accessorCache = new HashMap<AccessorKey, ClassFieldAccessor>();
+ }
+
+ final AccessorKey key = new AccessorKey( clazz,
+ fieldName );
+
+ if ( accessorCache.containsKey( key ) ) {
+ return accessorCache.get( key );
+ } else {
+ final ClassFieldReader reader = getReader( clazz,
+ fieldName,
+ classLoader );
+ final ClassFieldWriter writer = getWriter( clazz,
+ fieldName,
+ classLoader );
+ final ClassFieldAccessor accessor = new ClassFieldAccessor( reader,
+ writer );
+ accessorCache.put( key,
+ accessor );
+ return accessor;
+ }
+ }
+
+ private static class AccessorKey
+ implements
+ Externalizable {
+ private static final long serialVersionUID = 400;
+
+ private Class< ? > clazz;
+ private String fieldName;
+ private int hashCode;
+
+ public AccessorKey() {
+ }
+
+ public AccessorKey(Class< ? > clazz,
+ String fieldName) {
+ super();
+ this.clazz = clazz;
+ this.fieldName = fieldName;
+
+ final int PRIME = 31;
+ int result = 1;
+ result = PRIME * result + ((clazz == null) ? 0 : clazz.hashCode());
+ result = PRIME * result + ((fieldName == null) ? 0 : fieldName.hashCode());
+ this.hashCode = result;
+ }
+
+ public void readExternal(ObjectInput in) throws IOException,
+ ClassNotFoundException {
+ clazz = (Class< ? >) in.readObject();
+ fieldName = (String) in.readObject();
+ hashCode = in.readInt();
+ }
+
+ public void writeExternal(ObjectOutput out) throws IOException {
+ out.writeObject( clazz );
+ out.writeObject( fieldName );
+ out.writeInt( hashCode );
+ }
+
+ public Class< ? > getClazz() {
+ return clazz;
+ }
+
+ public String getFieldName() {
+ return fieldName;
+ }
+
+ public int hashCode() {
+ return hashCode;
+ }
+
+ public boolean equals(Object obj) {
+ if ( this == obj ) return true;
+ if ( obj == null ) return false;
+ if ( getClass() != obj.getClass() ) return false;
+ final AccessorKey other = (AccessorKey) obj;
+ if ( clazz == null ) {
+ if ( other.clazz != null ) return false;
+ } else if ( !clazz.equals( other.clazz ) ) return false;
+ if ( fieldName == null ) {
+ if ( other.fieldName != null ) return false;
+ } else if ( !fieldName.equals( other.fieldName ) ) return false;
+ return true;
+ }
+
+ public String toString() {
+ return this.clazz + "@" + Math.abs( System.identityHashCode( this.clazz ) ) + "(" + this.fieldName + ")";
+ }
+ }
+
+}
Copied: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/ClassFieldAccessorFactory.java (from rev 19963, labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/ClassFieldExtractorFactory.java)
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/ClassFieldAccessorFactory.java (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/ClassFieldAccessorFactory.java 2008-05-16 18:29:20 UTC (rev 19971)
@@ -0,0 +1,648 @@
+package org.drools.base;
+
+/*
+ * Copyright 2005 JBoss Inc
+ *
+ * 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.
+ */
+
+import java.lang.reflect.Method;
+import java.security.AccessController;
+import java.security.PrivilegedAction;
+import java.security.ProtectionDomain;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.drools.RuntimeDroolsException;
+import org.drools.asm.ClassWriter;
+import org.drools.asm.Label;
+import org.drools.asm.MethodVisitor;
+import org.drools.asm.Opcodes;
+import org.drools.asm.Type;
+import org.drools.base.extractors.BaseBooleanClassFieldReader;
+import org.drools.base.extractors.BaseBooleanClassFieldWriter;
+import org.drools.base.extractors.BaseByteClassFieldReader;
+import org.drools.base.extractors.BaseByteClassFieldWriter;
+import org.drools.base.extractors.BaseCharClassFieldReader;
+import org.drools.base.extractors.BaseCharClassFieldWriter;
+import org.drools.base.extractors.BaseDoubleClassFieldReader;
+import org.drools.base.extractors.BaseDoubleClassFieldWriter;
+import org.drools.base.extractors.BaseFloatClassFieldReader;
+import org.drools.base.extractors.BaseFloatClassFieldWriter;
+import org.drools.base.extractors.BaseIntClassFieldReader;
+import org.drools.base.extractors.BaseIntClassFieldWriter;
+import org.drools.base.extractors.BaseLongClassFieldReader;
+import org.drools.base.extractors.BaseLongClassFieldWriter;
+import org.drools.base.extractors.BaseObjectClassFieldReader;
+import org.drools.base.extractors.BaseObjectClassFieldWriter;
+import org.drools.base.extractors.BaseShortClassFieldReader;
+import org.drools.base.extractors.BaseShortClassFieldWriter;
+import org.drools.base.extractors.MVELClassFieldReader;
+import org.drools.base.extractors.SelfReferenceClassFieldReader;
+import org.drools.common.InternalWorkingMemory;
+import org.drools.util.asm.ClassFieldInspector;
+
+/**
+ * This generates subclasses of BaseClassFieldExtractor to provide field extractors.
+ * This should not be used directly, but via ClassFieldExtractor (which ensures that it is
+ * all nicely serializable).
+ *
+ * @author Alexander Bagerman
+ * @author Michael Neale
+ * @author Edson Tirelli
+ */
+
+public class ClassFieldAccessorFactory {
+
+ private static final String BASE_PACKAGE = "org/drools/base";
+
+ private static final String SELF_REFERENCE_FIELD = "this";
+
+ private static final ProtectionDomain PROTECTION_DOMAIN;
+
+ private final Map<Class< ? >, ClassFieldInspector> inspectors = new HashMap<Class< ? >, ClassFieldInspector>();
+
+ private ByteArrayClassLoader byteArrayClassLoader;
+
+ static {
+ PROTECTION_DOMAIN = AccessController.doPrivileged( new PrivilegedAction<ProtectionDomain>() {
+ public ProtectionDomain run() {
+ return ClassFieldAccessorFactory.class.getProtectionDomain();
+ }
+ } );
+ }
+
+ public BaseClassFieldReader getClassFieldReader(final Class< ? > clazz,
+ final String fieldName,
+ final ClassLoader classLoader) {
+ if ( byteArrayClassLoader == null || byteArrayClassLoader.getParent() != classLoader ) {
+ if ( classLoader == null ) {
+ throw new RuntimeDroolsException( "ClassFieldAccessorFactory cannot have a null parent ClassLoader" );
+ }
+ byteArrayClassLoader = new ByteArrayClassLoader( classLoader );
+ }
+ try {
+ // if it is a self reference
+ if ( SELF_REFERENCE_FIELD.equals( fieldName ) ) {
+ // then just create an instance of the special class field extractor
+ return new SelfReferenceClassFieldReader( clazz,
+ fieldName );
+ } else if ( fieldName.indexOf( '.' ) > -1 || fieldName.indexOf( '[' ) > -1 ) {
+ // we need MVEL extractor for expressions
+ return new MVELClassFieldReader( clazz,
+ fieldName,
+ classLoader );
+ } else {
+ // otherwise, bytecode generate a specific extractor
+ ClassFieldInspector inspector = inspectors.get( clazz );
+ if ( inspector == null ) {
+ inspector = new ClassFieldInspector( clazz );
+ inspectors.put( clazz,
+ inspector );
+ }
+ final Class< ? > fieldType = (Class< ? >) inspector.getFieldTypes().get( fieldName );
+ final Method getterMethod = (Method) inspector.getGetterMethods().get( fieldName );
+ if ( fieldType != null && getterMethod != null ) {
+ final String className = ClassFieldAccessorFactory.BASE_PACKAGE + "/" + Type.getInternalName( clazz ) + Math.abs( System.identityHashCode( clazz ) ) + "$" + getterMethod.getName();
+
+ // generating byte array to create target class
+ final byte[] bytes = dumpReader( clazz,
+ className,
+ getterMethod,
+ fieldType,
+ clazz.isInterface() );
+ // use bytes to get a class
+
+ final Class< ? > newClass = byteArrayClassLoader.defineClass( className.replace( '/',
+ '.' ),
+ bytes,
+ PROTECTION_DOMAIN );
+ // instantiating target class
+ final Integer index = (Integer) inspector.getFieldNames().get( fieldName );
+ final ValueType valueType = ValueType.determineValueType( fieldType );
+ final Object[] params = {index, fieldType, valueType};
+ return (BaseClassFieldReader) newClass.getConstructors()[0].newInstance( params );
+ } else {
+ throw new RuntimeDroolsException( "Field/method '" + fieldName + "' not found for class '" + clazz.getName() + "'" );
+ }
+ }
+ } catch ( final RuntimeDroolsException e ) {
+ throw e;
+ } catch ( final Exception e ) {
+ throw new RuntimeDroolsException( e );
+ }
+ }
+
+ public BaseClassFieldWriter getClassFieldWriter(final Class< ? > clazz,
+ final String fieldName,
+ final ClassLoader classLoader) {
+ if ( byteArrayClassLoader == null || byteArrayClassLoader.getParent() != classLoader ) {
+ if ( classLoader == null ) {
+ throw new RuntimeDroolsException( "ClassFieldAccessorFactory cannot have a null parent ClassLoader" );
+ }
+ byteArrayClassLoader = new ByteArrayClassLoader( classLoader );
+ }
+ try {
+ // otherwise, bytecode generate a specific extractor
+ ClassFieldInspector inspector = inspectors.get( clazz );
+ if ( inspector == null ) {
+ inspector = new ClassFieldInspector( clazz );
+ inspectors.put( clazz,
+ inspector );
+ }
+ final Method setterMethod = (Method) inspector.getSetterMethods().get( fieldName );
+ if ( setterMethod != null ) {
+ final Class< ? > fieldType = setterMethod.getParameterTypes()[0];
+ final String className = ClassFieldAccessorFactory.BASE_PACKAGE + "/" + Type.getInternalName( clazz ) + Math.abs( System.identityHashCode( clazz ) ) + "$" + setterMethod.getName();
+
+ // generating byte array to create target class
+ final byte[] bytes = dumpWriter( clazz,
+ className,
+ setterMethod,
+ fieldType,
+ clazz.isInterface() );
+ // use bytes to get a class
+
+ final Class< ? > newClass = byteArrayClassLoader.defineClass( className.replace( '/',
+ '.' ),
+ bytes,
+ PROTECTION_DOMAIN );
+ // instantiating target class
+ final Integer index = (Integer) inspector.getFieldNames().get( fieldName );
+ final ValueType valueType = ValueType.determineValueType( fieldType );
+ final Object[] params = {index, fieldType, valueType};
+ return (BaseClassFieldWriter) newClass.getConstructors()[0].newInstance( params );
+ } else {
+ throw new RuntimeDroolsException( "Field/method '" + fieldName + "' not found for class '" + clazz.getName() + "'" );
+ }
+ } catch ( final RuntimeDroolsException e ) {
+ throw e;
+ } catch ( final Exception e ) {
+ throw new RuntimeDroolsException( e );
+ }
+ }
+
+ private byte[] dumpReader(final Class< ? > originalClass,
+ final String className,
+ final Method getterMethod,
+ final Class< ? > fieldType,
+ final boolean isInterface) throws Exception {
+
+ final ClassWriter cw = new ClassWriter( true );
+
+ final Class< ? > superClass = getReaderSuperClassFor( fieldType );
+ buildClassHeader( superClass,
+ className,
+ cw );
+
+ // buildConstructor( superClass,
+ // className,
+ // cw );
+
+ build3ArgConstructor( superClass,
+ className,
+ cw );
+
+ buildGetMethod( originalClass,
+ className,
+ superClass,
+ getterMethod,
+ cw );
+
+ cw.visitEnd();
+
+ return cw.toByteArray();
+ }
+
+ private byte[] dumpWriter(final Class< ? > originalClass,
+ final String className,
+ final Method getterMethod,
+ final Class< ? > fieldType,
+ final boolean isInterface) throws Exception {
+
+ final ClassWriter cw = new ClassWriter( true );
+
+ final Class< ? > superClass = getWriterSuperClassFor( fieldType );
+ buildClassHeader( superClass,
+ className,
+ cw );
+
+ build3ArgConstructor( superClass,
+ className,
+ cw );
+
+ buildSetMethod( originalClass,
+ className,
+ superClass,
+ getterMethod,
+ fieldType,
+ cw );
+
+ cw.visitEnd();
+
+ return cw.toByteArray();
+ }
+
+ /**
+ * Builds the class header
+ *
+ * @param clazz The class to build the extractor for
+ * @param className The extractor class name
+ * @param cw
+ */
+ protected void buildClassHeader(final Class< ? > superClass,
+ final String className,
+ final ClassWriter cw) {
+ cw.visit( Opcodes.V1_5,
+ Opcodes.ACC_PUBLIC + Opcodes.ACC_SUPER,
+ className,
+ null,
+ Type.getInternalName( superClass ),
+ null );
+
+ cw.visitSource( null,
+ null );
+ }
+
+ /**
+ * Creates a constructor for the field extractor receiving
+ * the index, field type and value type
+ *
+ * @param originalClassName
+ * @param className
+ * @param cw
+ */
+ private void build3ArgConstructor(final Class< ? > superClazz,
+ final String className,
+ final ClassWriter cw) {
+ MethodVisitor mv;
+ {
+ mv = cw.visitMethod( Opcodes.ACC_PUBLIC,
+ "<init>",
+ Type.getMethodDescriptor( Type.VOID_TYPE,
+ new Type[]{Type.getType( int.class ), Type.getType( Class.class ), Type.getType( ValueType.class )} ),
+ null,
+ null );
+ mv.visitCode();
+ final Label l0 = new Label();
+ mv.visitLabel( l0 );
+ mv.visitVarInsn( Opcodes.ALOAD,
+ 0 );
+ mv.visitVarInsn( Opcodes.ILOAD,
+ 1 );
+ mv.visitVarInsn( Opcodes.ALOAD,
+ 2 );
+ mv.visitVarInsn( Opcodes.ALOAD,
+ 3 );
+ mv.visitMethodInsn( Opcodes.INVOKESPECIAL,
+ Type.getInternalName( superClazz ),
+ "<init>",
+ Type.getMethodDescriptor( Type.VOID_TYPE,
+ new Type[]{Type.getType( int.class ), Type.getType( Class.class ), Type.getType( ValueType.class )} ) );
+ final Label l1 = new Label();
+ mv.visitLabel( l1 );
+ mv.visitInsn( Opcodes.RETURN );
+ final Label l2 = new Label();
+ mv.visitLabel( l2 );
+ mv.visitLocalVariable( "this",
+ "L" + className + ";",
+ null,
+ l0,
+ l2,
+ 0 );
+ mv.visitLocalVariable( "index",
+ Type.getDescriptor( int.class ),
+ null,
+ l0,
+ l2,
+ 1 );
+ mv.visitLocalVariable( "fieldType",
+ Type.getDescriptor( Class.class ),
+ null,
+ l0,
+ l2,
+ 2 );
+ mv.visitLocalVariable( "valueType",
+ Type.getDescriptor( ValueType.class ),
+ null,
+ l0,
+ l2,
+ 3 );
+ mv.visitMaxs( 0,
+ 0 );
+ mv.visitEnd();
+ }
+ }
+
+ /**
+ * Creates the proxy reader method for the given method
+ *
+ * @param fieldName
+ * @param fieldFlag
+ * @param method
+ * @param cw
+ */
+ protected void buildGetMethod(final Class< ? > originalClass,
+ final String className,
+ final Class< ? > superClass,
+ final Method getterMethod,
+ final ClassWriter cw) {
+
+ final Class< ? > fieldType = getterMethod.getReturnType();
+ Method overridingMethod;
+ try {
+ overridingMethod = superClass.getMethod( getOverridingGetMethodName( fieldType ),
+ new Class[]{InternalWorkingMemory.class, Object.class} );
+ } catch ( final Exception e ) {
+ throw new RuntimeDroolsException( "This is a bug. Please report back to JBoss Rules team.",
+ e );
+ }
+ final MethodVisitor mv = cw.visitMethod( Opcodes.ACC_PUBLIC,
+ overridingMethod.getName(),
+ Type.getMethodDescriptor( overridingMethod ),
+ null,
+ null );
+
+ mv.visitCode();
+
+ final Label l0 = new Label();
+ mv.visitLabel( l0 );
+ mv.visitVarInsn( Opcodes.ALOAD,
+ 2 );
+ mv.visitTypeInsn( Opcodes.CHECKCAST,
+ Type.getInternalName( originalClass ) );
+
+ if ( originalClass.isInterface() ) {
+ mv.visitMethodInsn( Opcodes.INVOKEINTERFACE,
+ Type.getInternalName( originalClass ),
+ getterMethod.getName(),
+ Type.getMethodDescriptor( getterMethod ) );
+ } else {
+ mv.visitMethodInsn( Opcodes.INVOKEVIRTUAL,
+ Type.getInternalName( originalClass ),
+ getterMethod.getName(),
+ Type.getMethodDescriptor( getterMethod ) );
+ }
+ mv.visitInsn( Type.getType( fieldType ).getOpcode( Opcodes.IRETURN ) );
+ final Label l1 = new Label();
+ mv.visitLabel( l1 );
+ mv.visitLocalVariable( "this",
+ "L" + className + ";",
+ null,
+ l0,
+ l1,
+ 0 );
+ mv.visitLocalVariable( "workingMemory",
+ Type.getDescriptor( InternalWorkingMemory.class ),
+ null,
+ l0,
+ l1,
+ 1 );
+ mv.visitLocalVariable( "object",
+ Type.getDescriptor( Object.class ),
+ null,
+ l0,
+ l1,
+ 2 );
+ mv.visitMaxs( 0,
+ 0 );
+ mv.visitEnd();
+ }
+
+ /**
+ * Creates the set method for the given field definition
+ *
+ * @param cw
+ * @param classDef
+ * @param fieldDef
+ */
+ protected void buildSetMethod(final Class< ? > originalClass,
+ final String className,
+ final Class< ? > superClass,
+ final Method setterMethod,
+ final Class< ? > fieldType,
+ final ClassWriter cw) {
+ MethodVisitor mv;
+ // set method
+ {
+ Method overridingMethod;
+ try {
+ overridingMethod = superClass.getMethod( getOverridingSetMethodName( fieldType ),
+ new Class[]{Object.class, fieldType.isPrimitive() ? fieldType : Object.class } );
+ } catch ( final Exception e ) {
+ throw new RuntimeDroolsException( "This is a bug. Please report back to JBoss Rules team.",
+ e );
+ }
+
+ mv = cw.visitMethod( Opcodes.ACC_PUBLIC,
+ overridingMethod.getName(),
+ Type.getMethodDescriptor( overridingMethod ),
+ null,
+ null );
+
+ mv.visitCode();
+ final Label l0 = new Label();
+ mv.visitLabel( l0 );
+
+ mv.visitVarInsn( Opcodes.ALOAD,
+ 1 );
+ mv.visitTypeInsn( Opcodes.CHECKCAST,
+ Type.getInternalName( originalClass ) );
+
+ mv.visitVarInsn( Type.getType( fieldType ).getOpcode( Opcodes.ILOAD ),
+ 2 );
+
+ if ( !fieldType.isPrimitive() ) {
+ mv.visitTypeInsn( Opcodes.CHECKCAST,
+ Type.getInternalName( fieldType ) );
+ }
+
+ if ( originalClass.isInterface() ) {
+ mv.visitMethodInsn( Opcodes.INVOKEINTERFACE,
+ Type.getInternalName( originalClass ),
+ setterMethod.getName(),
+ Type.getMethodDescriptor( setterMethod ) );
+ } else {
+ mv.visitMethodInsn( Opcodes.INVOKEVIRTUAL,
+ Type.getInternalName( originalClass ),
+ setterMethod.getName(),
+ Type.getMethodDescriptor( setterMethod ) );
+ }
+
+ mv.visitInsn( Opcodes.RETURN );
+
+ final Label l1 = new Label();
+ mv.visitLabel( l1 );
+ mv.visitLocalVariable( "this",
+ "L" + className + ";",
+ null,
+ l0,
+ l1,
+ 0 );
+ mv.visitLocalVariable( "bean",
+ Type.getDescriptor( Object.class ),
+ null,
+ l0,
+ l1,
+ 1 );
+ mv.visitLocalVariable( "value",
+ Type.getDescriptor( fieldType ),
+ null,
+ l0,
+ l1,
+ 2 );
+ mv.visitMaxs( 0,
+ 0 );
+ mv.visitEnd();
+
+ }
+ }
+
+ private String getOverridingGetMethodName(final Class< ? > fieldType) {
+ String ret = null;
+ if ( fieldType.isPrimitive() ) {
+ if ( fieldType == char.class ) {
+ ret = "getCharValue";
+ } else if ( fieldType == byte.class ) {
+ ret = "getByteValue";
+ } else if ( fieldType == short.class ) {
+ ret = "getShortValue";
+ } else if ( fieldType == int.class ) {
+ ret = "getIntValue";
+ } else if ( fieldType == long.class ) {
+ ret = "getLongValue";
+ } else if ( fieldType == float.class ) {
+ ret = "getFloatValue";
+ } else if ( fieldType == double.class ) {
+ ret = "getDoubleValue";
+ } else if ( fieldType == boolean.class ) {
+ ret = "getBooleanValue";
+ }
+ } else {
+ ret = "getValue";
+ }
+ return ret;
+ }
+
+ private String getOverridingSetMethodName(final Class< ? > fieldType) {
+ String ret = null;
+ if ( fieldType.isPrimitive() ) {
+ if ( fieldType == char.class ) {
+ ret = "setCharValue";
+ } else if ( fieldType == byte.class ) {
+ ret = "setByteValue";
+ } else if ( fieldType == short.class ) {
+ ret = "setShortValue";
+ } else if ( fieldType == int.class ) {
+ ret = "setIntValue";
+ } else if ( fieldType == long.class ) {
+ ret = "setLongValue";
+ } else if ( fieldType == float.class ) {
+ ret = "setFloatValue";
+ } else if ( fieldType == double.class ) {
+ ret = "setDoubleValue";
+ } else if ( fieldType == boolean.class ) {
+ ret = "setBooleanValue";
+ }
+ } else {
+ ret = "setValue";
+ }
+ return ret;
+ }
+
+ /**
+ * Returns the appropriate Base class field extractor class
+ * for the given fieldType
+ *
+ * @param fieldType
+ * @return
+ */
+ private Class< ? > getReaderSuperClassFor(final Class< ? > fieldType) {
+ Class< ? > ret = null;
+ if ( fieldType.isPrimitive() ) {
+ if ( fieldType == char.class ) {
+ ret = BaseCharClassFieldReader.class;
+ } else if ( fieldType == byte.class ) {
+ ret = BaseByteClassFieldReader.class;
+ } else if ( fieldType == short.class ) {
+ ret = BaseShortClassFieldReader.class;
+ } else if ( fieldType == int.class ) {
+ ret = BaseIntClassFieldReader.class;
+ } else if ( fieldType == long.class ) {
+ ret = BaseLongClassFieldReader.class;
+ } else if ( fieldType == float.class ) {
+ ret = BaseFloatClassFieldReader.class;
+ } else if ( fieldType == double.class ) {
+ ret = BaseDoubleClassFieldReader.class;
+ } else if ( fieldType == boolean.class ) {
+ ret = BaseBooleanClassFieldReader.class;
+ }
+ } else {
+ ret = BaseObjectClassFieldReader.class;
+ }
+ return ret;
+ }
+
+ /**
+ * Returns the appropriate Base class field extractor class
+ * for the given fieldType
+ *
+ * @param fieldType
+ * @return
+ */
+ private Class< ? > getWriterSuperClassFor(final Class< ? > fieldType) {
+ Class< ? > ret = null;
+ if ( fieldType.isPrimitive() ) {
+ if ( fieldType == char.class ) {
+ ret = BaseCharClassFieldWriter.class;
+ } else if ( fieldType == byte.class ) {
+ ret = BaseByteClassFieldWriter.class;
+ } else if ( fieldType == short.class ) {
+ ret = BaseShortClassFieldWriter.class;
+ } else if ( fieldType == int.class ) {
+ ret = BaseIntClassFieldWriter.class;
+ } else if ( fieldType == long.class ) {
+ ret = BaseLongClassFieldWriter.class;
+ } else if ( fieldType == float.class ) {
+ ret = BaseFloatClassFieldWriter.class;
+ } else if ( fieldType == double.class ) {
+ ret = BaseDoubleClassFieldWriter.class;
+ } else if ( fieldType == boolean.class ) {
+ ret = BaseBooleanClassFieldWriter.class;
+ }
+ } else {
+ ret = BaseObjectClassFieldWriter.class;
+ }
+ return ret;
+ }
+
+ /**
+ * Simple classloader
+ * @author Michael Neale
+ */
+ static class ByteArrayClassLoader extends ClassLoader {
+ public ByteArrayClassLoader(final ClassLoader parent) {
+ super( parent );
+ }
+
+ public Class< ? > defineClass(final String name,
+ final byte[] bytes,
+ final ProtectionDomain domain) {
+ return defineClass( name,
+ bytes,
+ 0,
+ bytes.length,
+ domain );
+ }
+ }
+}
\ No newline at end of file
Deleted: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/ClassFieldExtractor.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/ClassFieldExtractor.java 2008-05-16 15:22:07 UTC (rev 19970)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/ClassFieldExtractor.java 2008-05-16 18:29:20 UTC (rev 19971)
@@ -1,238 +0,0 @@
-package org.drools.base;
-
-/*
- * Copyright 2005 JBoss Inc
- *
- * 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.
- */
-
-import java.io.IOException;
-import java.io.ObjectInputStream;
-import java.io.ObjectOutputStream;
-import java.io.ObjectInput;
-import java.io.ObjectOutput;
-import java.io.Externalizable;
-import java.lang.reflect.Method;
-
-import org.drools.RuntimeDroolsException;
-import org.drools.common.DroolsObjectInputStream;
-import org.drools.common.InternalWorkingMemory;
-import org.drools.common.DroolsObjectInput;
-import org.drools.spi.FieldExtractor;
-import org.drools.util.ClassUtils;
-
-/**
- * This provides access to fields, and what their numerical index/object type is.
- * This is basically a wrapper class around dynamically generated subclasses of
- * BaseClassFieldExtractor,
- * which allows serialization by regenerating the accessor classes
- * when needed.
- *
- * @author Michael Neale
- */
-public class ClassFieldExtractor
- implements
- FieldExtractor {
- /**
- *
- */
- private static final long serialVersionUID = 400L;
- private String fieldName;
- private Class clazz;
- private transient FieldExtractor extractor;
-
- public ClassFieldExtractor() {
-
- }
-
- public ClassFieldExtractor(final Class clazz,
- final String fieldName) {
- this( clazz,
- fieldName,
- clazz.getClassLoader() );
- }
-
- public ClassFieldExtractor(final Class clazz,
- final String fieldName,
- final ClassLoader classLoader) {
- this( clazz,
- fieldName,
- classLoader == null ? clazz.getClassLoader() : classLoader,
- new ClassFieldExtractorFactory() );
- }
-
- public ClassFieldExtractor(final Class clazz,
- final String fieldName,
- final ClassLoader classLoader,
- final ClassFieldExtractorFactory factory) {
- this.clazz = clazz;
- this.fieldName = fieldName;
- init( classLoader,
- factory );
- }
-
- public void writeExternal(ObjectOutput out) throws IOException {
- // Call even if there is no default serializable fields.
- out.writeObject(clazz);
- out.writeObject(fieldName);
- }
-
- public void readExternal(final ObjectInput is) throws ClassNotFoundException,
- IOException {
- clazz = (Class)is.readObject();
- fieldName = (String)is.readObject();
- if (is instanceof DroolsObjectInput) {
- DroolsObjectInput droolsInput = (DroolsObjectInput)is;
- extractor = droolsInput.getExtractorFactory().getExtractor( clazz,
- fieldName,
- droolsInput.getClassLoader() );
- }
- else
- extractor = ClassFieldExtractorCache.getInstance().getExtractor( clazz, fieldName,
- getClass().getClassLoader());
- }
-
-// private Object readResolve() {
-// // always return the value from the cache
-// return ClassFieldExtractorCache.getInstance().getExtractor( this.clazz,
-// this.fieldName,
-// this.clazz.getClassLoader() );
-// }
-
- private void init(final ClassLoader classLoader,
- final ClassFieldExtractorFactory factory) {
- try {
- this.extractor = factory.getClassFieldExtractor( this.clazz,
- this.fieldName,
- classLoader );
- } catch ( final Exception e ) {
- throw new RuntimeDroolsException( e );
- }
- }
-
- public int getIndex() {
- return this.extractor.getIndex();
- }
-
- public String getFieldName() {
- return this.fieldName;
- }
-
- public Object getValue(InternalWorkingMemory workingMemory,
- final Object object) {
- return this.extractor.getValue( workingMemory,
- object );
- }
-
- public ValueType getValueType() {
- return this.extractor.getValueType();
- }
-
- public Class getExtractToClass() {
- return this.extractor.getExtractToClass();
- }
-
- public String getExtractToClassName() {
- return ClassUtils.canonicalName( this.extractor.getExtractToClass() );
- }
-
- public String toString() {
- return "[ClassFieldExtractor class=" + this.clazz + " field=" + this.fieldName + "]";
- }
-
- public int hashCode() {
- return getValueType().hashCode() * 17 + getIndex();
- }
-
- public boolean equals(final Object object) {
- if ( this == object ) {
- return true;
- }
-
- if ( object == null || !(object instanceof ClassFieldExtractor) ) {
- return false;
- }
-
- final ClassFieldExtractor other = (ClassFieldExtractor) object;
-
- return this.extractor.getValueType() == other.getValueType() && this.extractor.getIndex() == other.getIndex();
- }
-
- public boolean getBooleanValue(InternalWorkingMemory workingMemory,
- final Object object) {
- return this.extractor.getBooleanValue( workingMemory,
- object );
- }
-
- public byte getByteValue(InternalWorkingMemory workingMemory,
- final Object object) {
- return this.extractor.getByteValue( workingMemory,
- object );
- }
-
- public char getCharValue(InternalWorkingMemory workingMemory,
- final Object object) {
- return this.extractor.getCharValue( workingMemory,
- object );
- }
-
- public double getDoubleValue(InternalWorkingMemory workingMemory,
- final Object object) {
- return this.extractor.getDoubleValue( workingMemory,
- object );
- }
-
- public float getFloatValue(InternalWorkingMemory workingMemory,
- final Object object) {
- return this.extractor.getFloatValue( workingMemory,
- object );
- }
-
- public int getIntValue(InternalWorkingMemory workingMemory,
- final Object object) {
- return this.extractor.getIntValue( workingMemory,
- object );
- }
-
- public long getLongValue(InternalWorkingMemory workingMemory,
- final Object object) {
- return this.extractor.getLongValue( workingMemory,
- object );
- }
-
- public short getShortValue(InternalWorkingMemory workingMemory,
- final Object object) {
- return this.extractor.getShortValue( workingMemory,
- object );
- }
-
- public boolean isNullValue(InternalWorkingMemory workingMemory,
- final Object object) {
- return this.extractor.isNullValue( workingMemory,
- object );
- }
-
- public Method getNativeReadMethod() {
- return this.extractor.getNativeReadMethod();
- }
-
- public int getHashCode(InternalWorkingMemory workingMemory,
- final Object object) {
- return this.extractor.getHashCode( workingMemory,
- object );
- }
-
- public boolean isGlobal() {
- return false;
- }
-}
\ No newline at end of file
Deleted: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/ClassFieldExtractorCache.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/ClassFieldExtractorCache.java 2008-05-16 15:22:07 UTC (rev 19970)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/ClassFieldExtractorCache.java 2008-05-16 18:29:20 UTC (rev 19971)
@@ -1,125 +0,0 @@
-package org.drools.base;
-
-import java.io.Externalizable;
-import java.io.ObjectInput;
-import java.io.IOException;
-import java.io.ObjectOutput;
-import java.util.HashMap;
-import java.util.Map;
-
-/**
- * As class field Extractors have some cost to generate
- * (inspecting the class, and generating classes via ASM)
- * it makes sense to cache them.
- * This is that cache.
- *
- * @author Michael Neale
- *
- */
-public class ClassFieldExtractorCache {
- private static final ClassFieldExtractorCache INSTANCE = new ClassFieldExtractorCache();
-
- private Map cache;
- private ClassFieldExtractorFactory factory;
-
- private ClassFieldExtractorCache() {
- this.factory = new ClassFieldExtractorFactory();
- }
-
- public static ClassFieldExtractorCache getInstance() {
- //return INSTANCE;
- return new ClassFieldExtractorCache();
- }
-
- public synchronized ClassFieldExtractor getExtractor(final Class clazz,
- final String fieldName,
- ClassLoader classLoader) {
- if ( cache == null ) {
- cache = new HashMap();
- }
-
- final ExtractorKey key = new ExtractorKey( clazz,
- fieldName );
-
- if ( cache.containsKey( key ) ) {
- return (ClassFieldExtractor) cache.get( key );
- } else {
- final ClassFieldExtractor ex = new ClassFieldExtractor( clazz,
- fieldName,
- classLoader,
- factory );
- cache.put( key,
- ex );
- return ex;
- }
- }
-
- private static class ExtractorKey
- implements
- Externalizable {
- private static final long serialVersionUID = 400;
-
- private Class clazz;
- private String fieldName;
- private int hashCode;
-
- public ExtractorKey() {
- }
-
- public ExtractorKey(Class clazz,
- String fieldName) {
- super();
- this.clazz = clazz;
- this.fieldName = fieldName;
-
- final int PRIME = 31;
- int result = 1;
- result = PRIME * result + ((clazz == null) ? 0 : clazz.hashCode());
- result = PRIME * result + ((fieldName == null) ? 0 : fieldName.hashCode());
- this.hashCode = result;
- }
-
- public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
- clazz = (Class)in.readObject();
- fieldName = (String)in.readObject();
- hashCode = in.readInt();
- }
-
- public void writeExternal(ObjectOutput out) throws IOException {
- out.writeObject(clazz);
- out.writeObject(fieldName);
- out.writeInt(hashCode);
- }
-
- public Class getClazz() {
- return clazz;
- }
-
- public String getFieldName() {
- return fieldName;
- }
-
- public int hashCode() {
- return hashCode;
- }
-
- public boolean equals(Object obj) {
- if ( this == obj ) return true;
- if ( obj == null ) return false;
- if ( getClass() != obj.getClass() ) return false;
- final ExtractorKey other = (ExtractorKey) obj;
- if ( clazz == null ) {
- if ( other.clazz != null ) return false;
- } else if ( !clazz.equals( other.clazz ) ) return false;
- if ( fieldName == null ) {
- if ( other.fieldName != null ) return false;
- } else if ( !fieldName.equals( other.fieldName ) ) return false;
- return true;
- }
-
- public String toString() {
- return this.clazz + "@" + Math.abs( System.identityHashCode( this.clazz ) ) + "(" + this.fieldName + ")";
- }
- }
-
-}
Deleted: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/ClassFieldExtractorFactory.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/ClassFieldExtractorFactory.java 2008-05-16 15:22:07 UTC (rev 19970)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/ClassFieldExtractorFactory.java 2008-05-16 18:29:20 UTC (rev 19971)
@@ -1,474 +0,0 @@
-package org.drools.base;
-
-/*
- * Copyright 2005 JBoss Inc
- *
- * 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.
- */
-
-import java.lang.reflect.Method;
-import java.security.AccessController;
-import java.security.PrivilegedAction;
-import java.security.ProtectionDomain;
-import java.util.HashMap;
-import java.util.Map;
-
-import org.drools.RuntimeDroolsException;
-import org.drools.asm.ClassWriter;
-import org.drools.asm.Label;
-import org.drools.asm.MethodVisitor;
-import org.drools.asm.Opcodes;
-import org.drools.asm.Type;
-import org.drools.base.extractors.BaseBooleanClassFieldExtractor;
-import org.drools.base.extractors.BaseByteClassFieldExtractor;
-import org.drools.base.extractors.BaseCharClassFieldExtractor;
-import org.drools.base.extractors.BaseDoubleClassFieldExtractor;
-import org.drools.base.extractors.BaseFloatClassFieldExtractor;
-import org.drools.base.extractors.BaseIntClassFieldExtractor;
-import org.drools.base.extractors.BaseLongClassFieldExtractors;
-import org.drools.base.extractors.BaseObjectClassFieldExtractor;
-import org.drools.base.extractors.BaseShortClassFieldExtractor;
-import org.drools.base.extractors.MVELClassFieldExtractor;
-import org.drools.base.extractors.SelfReferenceClassFieldExtractor;
-import org.drools.common.InternalWorkingMemory;
-import org.drools.util.asm.ClassFieldInspector;
-
-/**
- * This generates subclasses of BaseClassFieldExtractor to provide field extractors.
- * This should not be used directly, but via ClassFieldExtractor (which ensures that it is
- * all nicely serializable).
- *
- * @author Alexander Bagerman
- * @author Michael Neale
- */
-
-public class ClassFieldExtractorFactory {
-
- private static final String BASE_PACKAGE = "org/drools/base";
-
- private static final String SELF_REFERENCE_FIELD = "this";
-
- private static final ProtectionDomain PROTECTION_DOMAIN;
-
- private final Map inspectors = new HashMap();
-
- private ByteArrayClassLoader byteArrayClassLoader;
-
- static {
- PROTECTION_DOMAIN = (ProtectionDomain) AccessController.doPrivileged( new PrivilegedAction() {
- public Object run() {
- return ClassFieldExtractorFactory.class.getProtectionDomain();
- }
- } );
- }
-
- public BaseClassFieldExtractor getClassFieldExtractor(final Class clazz,
- final String fieldName,
- final ClassLoader classLoader) {
- if ( byteArrayClassLoader == null || byteArrayClassLoader.getParent() != classLoader ) {
- if ( classLoader == null ) {
- throw new RuntimeDroolsException( "ClassFieldExtractorFactory cannot have a null parent ClassLoader" );
- }
- byteArrayClassLoader = new ByteArrayClassLoader( classLoader );
- }
- try {
- // if it is a self reference
- if ( SELF_REFERENCE_FIELD.equals( fieldName ) ) {
- // then just create an instance of the special class field extractor
- return new SelfReferenceClassFieldExtractor( clazz,
- fieldName );
- } else if ( fieldName.indexOf( '.' ) > -1 || fieldName.indexOf( '[' ) > -1 ) {
- // we need MVEL extractor for expressions
- return new MVELClassFieldExtractor( clazz,
- fieldName,
- classLoader );
- } else {
- // otherwise, bytecode generate a specific extractor
- ClassFieldInspector inspector = (ClassFieldInspector) inspectors.get( clazz );
- if ( inspector == null ) {
- inspector = new ClassFieldInspector( clazz );
- inspectors.put( clazz,
- inspector );
- }
- final Class fieldType = (Class) inspector.getFieldTypes().get( fieldName );
- final Method getterMethod = (Method) inspector.getGetterMethods().get( fieldName );
- if ( fieldType != null && getterMethod != null ) {
- final String className = ClassFieldExtractorFactory.BASE_PACKAGE + "/" + Type.getInternalName( clazz ) + Math.abs( System.identityHashCode( clazz ) ) + "$" + getterMethod.getName();
-
- // generating byte array to create target class
- final byte[] bytes = dump( clazz,
- className,
- getterMethod,
- fieldType,
- clazz.isInterface() );
- // use bytes to get a class
-
- final Class newClass = byteArrayClassLoader.defineClass( className.replace( '/',
- '.' ),
- bytes,
- PROTECTION_DOMAIN );
- // instantiating target class
- final Integer index = (Integer) inspector.getFieldNames().get( fieldName );
- final ValueType valueType = ValueType.determineValueType( fieldType );
- final Object[] params = {index, fieldType, valueType};
- return (BaseClassFieldExtractor) newClass.getConstructors()[0].newInstance( params );
- } else {
- throw new RuntimeDroolsException( "Field/method '" + fieldName + "' not found for class '" + clazz.getName() + "'" );
- }
- }
- } catch ( final RuntimeDroolsException e ) {
- throw e;
- } catch ( final Exception e ) {
- throw new RuntimeDroolsException( e );
- }
- }
-
- private byte[] dump(final Class originalClass,
- final String className,
- final Method getterMethod,
- final Class fieldType,
- final boolean isInterface) throws Exception {
-
- final ClassWriter cw = new ClassWriter( true );
-
- final Class superClass = getSuperClassFor( fieldType );
- buildClassHeader( superClass,
- className,
- cw );
-
- // buildConstructor( superClass,
- // className,
- // cw );
-
- build3ArgConstructor( superClass,
- className,
- cw );
-
- buildGetMethod( originalClass,
- className,
- superClass,
- getterMethod,
- cw );
-
- cw.visitEnd();
-
- return cw.toByteArray();
- }
-
- /**
- * Builds the class header
- *
- * @param clazz The class to build the extractor for
- * @param className The extractor class name
- * @param cw
- */
- protected void buildClassHeader(final Class superClass,
- final String className,
- final ClassWriter cw) {
- cw.visit( Opcodes.V1_5,
- Opcodes.ACC_PUBLIC + Opcodes.ACC_SUPER,
- className,
- null,
- Type.getInternalName( superClass ),
- null );
-
- cw.visitSource( null,
- null );
- }
-
- // /**
- // * Creates a constructor for the field extractor receiving
- // * the class instance and field name
- // *
- // * @param originalClassName
- // * @param className
- // * @param cw
- // */
- // private static void buildConstructor(final Class superClazz,
- // final String className,
- // final ClassWriter cw) {
- // MethodVisitor mv;
- // {
- // mv = cw.visitMethod( Opcodes.ACC_PUBLIC,
- // "<init>",
- // Type.getMethodDescriptor( Type.VOID_TYPE,
- // new Type[]{Type.getType( Class.class ), Type.getType( String.class )} ),
- // null,
- // null );
- // mv.visitCode();
- // final Label l0 = new Label();
- // mv.visitLabel( l0 );
- // mv.visitVarInsn( Opcodes.ALOAD,
- // 0 );
- // mv.visitVarInsn( Opcodes.ALOAD,
- // 1 );
- // mv.visitVarInsn( Opcodes.ALOAD,
- // 2 );
- // mv.visitMethodInsn( Opcodes.INVOKESPECIAL,
- // Type.getInternalName( superClazz ),
- // "<init>",
- // Type.getMethodDescriptor( Type.VOID_TYPE,
- // new Type[]{Type.getType( Class.class ), Type.getType( String.class )} ) );
- // final Label l1 = new Label();
- // mv.visitLabel( l1 );
- // mv.visitInsn( Opcodes.RETURN );
- // final Label l2 = new Label();
- // mv.visitLabel( l2 );
- // mv.visitLocalVariable( "this",
- // "L" + className + ";",
- // null,
- // l0,
- // l2,
- // 0 );
- // mv.visitLocalVariable( "clazz",
- // Type.getDescriptor( Class.class ),
- // null,
- // l0,
- // l2,
- // 1 );
- // mv.visitLocalVariable( "fieldName",
- // Type.getDescriptor( String.class ),
- // null,
- // l0,
- // l2,
- // 2 );
- // mv.visitMaxs( 0,
- // 0 );
- // mv.visitEnd();
- // }
- // }
-
- /**
- * Creates a constructor for the field extractor receiving
- * the index, field type and value type
- *
- * @param originalClassName
- * @param className
- * @param cw
- */
- private void build3ArgConstructor(final Class superClazz,
- final String className,
- final ClassWriter cw) {
- MethodVisitor mv;
- {
- mv = cw.visitMethod( Opcodes.ACC_PUBLIC,
- "<init>",
- Type.getMethodDescriptor( Type.VOID_TYPE,
- new Type[]{Type.getType( int.class ), Type.getType( Class.class ), Type.getType( ValueType.class )} ),
- null,
- null );
- mv.visitCode();
- final Label l0 = new Label();
- mv.visitLabel( l0 );
- mv.visitVarInsn( Opcodes.ALOAD,
- 0 );
- mv.visitVarInsn( Opcodes.ILOAD,
- 1 );
- mv.visitVarInsn( Opcodes.ALOAD,
- 2 );
- mv.visitVarInsn( Opcodes.ALOAD,
- 3 );
- mv.visitMethodInsn( Opcodes.INVOKESPECIAL,
- Type.getInternalName( superClazz ),
- "<init>",
- Type.getMethodDescriptor( Type.VOID_TYPE,
- new Type[]{Type.getType( int.class ), Type.getType( Class.class ), Type.getType( ValueType.class )} ) );
- final Label l1 = new Label();
- mv.visitLabel( l1 );
- mv.visitInsn( Opcodes.RETURN );
- final Label l2 = new Label();
- mv.visitLabel( l2 );
- mv.visitLocalVariable( "this",
- "L" + className + ";",
- null,
- l0,
- l2,
- 0 );
- mv.visitLocalVariable( "index",
- Type.getDescriptor( int.class ),
- null,
- l0,
- l2,
- 1 );
- mv.visitLocalVariable( "fieldType",
- Type.getDescriptor( Class.class ),
- null,
- l0,
- l2,
- 2 );
- mv.visitLocalVariable( "valueType",
- Type.getDescriptor( ValueType.class ),
- null,
- l0,
- l2,
- 3 );
- mv.visitMaxs( 0,
- 0 );
- mv.visitEnd();
- }
- }
-
- /**
- * Creates the proxy reader method for the given method
- *
- * @param fieldName
- * @param fieldFlag
- * @param method
- * @param cw
- */
- protected void buildGetMethod(final Class originalClass,
- final String className,
- final Class superClass,
- final Method getterMethod,
- final ClassWriter cw) {
-
- final Class fieldType = getterMethod.getReturnType();
- Method overridingMethod;
- try {
- overridingMethod = superClass.getMethod( getOverridingMethodName( fieldType ),
- new Class[]{InternalWorkingMemory.class, Object.class} );
- } catch ( final Exception e ) {
- throw new RuntimeDroolsException( "This is a bug. Please report back to JBoss Rules team.",
- e );
- }
- final MethodVisitor mv = cw.visitMethod( Opcodes.ACC_PUBLIC,
- overridingMethod.getName(),
- Type.getMethodDescriptor( overridingMethod ),
- null,
- null );
-
- mv.visitCode();
-
- final Label l0 = new Label();
- mv.visitLabel( l0 );
- mv.visitVarInsn( Opcodes.ALOAD,
- 2 );
- mv.visitTypeInsn( Opcodes.CHECKCAST,
- Type.getInternalName( originalClass ) );
-
- if ( originalClass.isInterface() ) {
- mv.visitMethodInsn( Opcodes.INVOKEINTERFACE,
- Type.getInternalName( originalClass ),
- getterMethod.getName(),
- Type.getMethodDescriptor( getterMethod ) );
- } else {
- mv.visitMethodInsn( Opcodes.INVOKEVIRTUAL,
- Type.getInternalName( originalClass ),
- getterMethod.getName(),
- Type.getMethodDescriptor( getterMethod ) );
- }
- mv.visitInsn( Type.getType( fieldType ).getOpcode( Opcodes.IRETURN ) );
- final Label l1 = new Label();
- mv.visitLabel( l1 );
- mv.visitLocalVariable( "this",
- "L" + className + ";",
- null,
- l0,
- l1,
- 0 );
- mv.visitLocalVariable( "workingMemory",
- Type.getDescriptor( InternalWorkingMemory.class ),
- null,
- l0,
- l1,
- 1 );
- mv.visitLocalVariable( "object",
- Type.getDescriptor( Object.class ),
- null,
- l0,
- l1,
- 2 );
- mv.visitMaxs( 0,
- 0 );
- mv.visitEnd();
- }
-
- private String getOverridingMethodName(final Class fieldType) {
- String ret = null;
- if ( fieldType.isPrimitive() ) {
- if ( fieldType == char.class ) {
- ret = "getCharValue";
- } else if ( fieldType == byte.class ) {
- ret = "getByteValue";
- } else if ( fieldType == short.class ) {
- ret = "getShortValue";
- } else if ( fieldType == int.class ) {
- ret = "getIntValue";
- } else if ( fieldType == long.class ) {
- ret = "getLongValue";
- } else if ( fieldType == float.class ) {
- ret = "getFloatValue";
- } else if ( fieldType == double.class ) {
- ret = "getDoubleValue";
- } else if ( fieldType == boolean.class ) {
- ret = "getBooleanValue";
- }
- } else {
- ret = "getValue";
- }
- return ret;
- }
-
- /**
- * Returns the appropriate Base class field extractor class
- * for the given fieldType
- *
- * @param fieldType
- * @return
- */
- private Class getSuperClassFor(final Class fieldType) {
- Class ret = null;
- if ( fieldType.isPrimitive() ) {
- if ( fieldType == char.class ) {
- ret = BaseCharClassFieldExtractor.class;
- } else if ( fieldType == byte.class ) {
- ret = BaseByteClassFieldExtractor.class;
- } else if ( fieldType == short.class ) {
- ret = BaseShortClassFieldExtractor.class;
- } else if ( fieldType == int.class ) {
- ret = BaseIntClassFieldExtractor.class;
- } else if ( fieldType == long.class ) {
- ret = BaseLongClassFieldExtractors.class;
- } else if ( fieldType == float.class ) {
- ret = BaseFloatClassFieldExtractor.class;
- } else if ( fieldType == double.class ) {
- ret = BaseDoubleClassFieldExtractor.class;
- } else if ( fieldType == boolean.class ) {
- ret = BaseBooleanClassFieldExtractor.class;
- }
- } else {
- ret = BaseObjectClassFieldExtractor.class;
- }
- return ret;
- }
-
- /**
- * Simple classloader
- * @author Michael Neale
- */
- static class ByteArrayClassLoader extends ClassLoader {
- public ByteArrayClassLoader(final ClassLoader parent) {
- super( parent );
- }
-
- public Class defineClass(final String name,
- final byte[] bytes,
- final ProtectionDomain domain) {
- return defineClass( name,
- bytes,
- 0,
- bytes.length,
- domain );
- }
- }
-}
\ No newline at end of file
Copied: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/ClassFieldReader.java (from rev 19963, labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/ClassFieldExtractor.java)
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/ClassFieldReader.java (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/ClassFieldReader.java 2008-05-16 18:29:20 UTC (rev 19971)
@@ -0,0 +1,328 @@
+package org.drools.base;
+
+/*
+ * Copyright 2005 JBoss Inc
+ *
+ * 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.
+ */
+
+import java.io.IOException;
+import java.io.ObjectInput;
+import java.io.ObjectOutput;
+import java.lang.reflect.Method;
+
+import org.drools.RuntimeDroolsException;
+import org.drools.common.DroolsObjectInput;
+import org.drools.common.InternalWorkingMemory;
+import org.drools.spi.InternalReadAccessor;
+import org.drools.spi.ReadAccessor;
+import org.drools.util.ClassUtils;
+
+/**
+ * This provides access to fields, and what their numerical index/object type is.
+ * This is basically a wrapper class around dynamically generated subclasses of
+ * BaseClassFieldExtractor,
+ * which allows serialization by regenerating the accessor classes
+ * when needed.
+ *
+ * @author Michael Neale
+ */
+public class ClassFieldReader
+ implements
+ InternalReadAccessor {
+ /**
+ *
+ */
+ private static final long serialVersionUID = 400L;
+ private String fieldName;
+ private Class< ? > clazz;
+ private transient InternalReadAccessor reader;
+
+ public ClassFieldReader() {
+
+ }
+
+ public ClassFieldReader(final Class< ? > clazz,
+ final String fieldName) {
+ this( clazz,
+ fieldName,
+ clazz.getClassLoader() );
+ }
+
+ public ClassFieldReader(final Class< ? > clazz,
+ final String fieldName,
+ final ClassLoader classLoader) {
+ this( clazz,
+ fieldName,
+ classLoader == null ? clazz.getClassLoader() : classLoader,
+ new ClassFieldAccessorFactory() );
+ }
+
+ public ClassFieldReader(final Class< ? > clazz,
+ final String fieldName,
+ final ClassLoader classLoader,
+ final ClassFieldAccessorFactory factory) {
+ this.clazz = clazz;
+ this.fieldName = fieldName;
+ init( classLoader,
+ factory );
+ }
+
+ public void writeExternal(ObjectOutput out) throws IOException {
+ // Call even if there is no default serializable fields.
+ out.writeObject( clazz );
+ out.writeObject( fieldName );
+ }
+
+ public void readExternal(final ObjectInput is) throws ClassNotFoundException,
+ IOException {
+ clazz = (Class< ? >) is.readObject();
+ fieldName = (String) is.readObject();
+ if ( is instanceof DroolsObjectInput ) {
+ DroolsObjectInput droolsInput = (DroolsObjectInput) is;
+ reader = droolsInput.getExtractorFactory().getReader( clazz,
+ fieldName,
+ droolsInput.getClassLoader() );
+ } else reader = ClassFieldAccessorCache.getInstance().getReader( clazz,
+ fieldName,
+ getClass().getClassLoader() );
+ }
+
+ private void init(final ClassLoader classLoader,
+ final ClassFieldAccessorFactory factory) {
+ try {
+ this.reader = factory.getClassFieldReader( this.clazz,
+ this.fieldName,
+ classLoader );
+ } catch ( final Exception e ) {
+ throw new RuntimeDroolsException( e );
+ }
+ }
+
+ public int getIndex() {
+ return this.reader.getIndex();
+ }
+
+ public String getFieldName() {
+ return this.fieldName;
+ }
+
+ public Object getValue(InternalWorkingMemory workingMemory,
+ final Object object) {
+ return this.reader.getValue( workingMemory,
+ object );
+ }
+
+ public ValueType getValueType() {
+ return this.reader.getValueType();
+ }
+
+ public Class< ? > getExtractToClass() {
+ return this.reader.getExtractToClass();
+ }
+
+ public String getExtractToClassName() {
+ return ClassUtils.canonicalName( this.reader.getExtractToClass() );
+ }
+
+ public String toString() {
+ return "[ClassFieldExtractor class=" + this.clazz + " field=" + this.fieldName + "]";
+ }
+
+ public int hashCode() {
+ return getValueType().hashCode() * 17 + getIndex();
+ }
+
+ public boolean equals(final Object object) {
+ if ( this == object ) {
+ return true;
+ }
+
+ if ( object == null || !(object instanceof ClassFieldReader) ) {
+ return false;
+ }
+
+ final ClassFieldReader other = (ClassFieldReader) object;
+
+ return this.reader.getValueType() == other.getValueType() && this.reader.getIndex() == other.getIndex();
+ }
+
+ public boolean getBooleanValue(InternalWorkingMemory workingMemory,
+ final Object object) {
+ return this.reader.getBooleanValue( workingMemory,
+ object );
+ }
+
+ public byte getByteValue(InternalWorkingMemory workingMemory,
+ final Object object) {
+ return this.reader.getByteValue( workingMemory,
+ object );
+ }
+
+ public char getCharValue(InternalWorkingMemory workingMemory,
+ final Object object) {
+ return this.reader.getCharValue( workingMemory,
+ object );
+ }
+
+ public double getDoubleValue(InternalWorkingMemory workingMemory,
+ final Object object) {
+ return this.reader.getDoubleValue( workingMemory,
+ object );
+ }
+
+ public float getFloatValue(InternalWorkingMemory workingMemory,
+ final Object object) {
+ return this.reader.getFloatValue( workingMemory,
+ object );
+ }
+
+ public int getIntValue(InternalWorkingMemory workingMemory,
+ final Object object) {
+ return this.reader.getIntValue( workingMemory,
+ object );
+ }
+
+ public long getLongValue(InternalWorkingMemory workingMemory,
+ final Object object) {
+ return this.reader.getLongValue( workingMemory,
+ object );
+ }
+
+ public short getShortValue(InternalWorkingMemory workingMemory,
+ final Object object) {
+ return this.reader.getShortValue( workingMemory,
+ object );
+ }
+
+ public boolean isNullValue(InternalWorkingMemory workingMemory,
+ final Object object) {
+ return this.reader.isNullValue( workingMemory,
+ object );
+ }
+
+ public Method getNativeReadMethod() {
+ return this.reader.getNativeReadMethod();
+ }
+
+ public int getHashCode(InternalWorkingMemory workingMemory,
+ final Object object) {
+ return this.reader.getHashCode( workingMemory,
+ object );
+ }
+
+ public boolean isGlobal() {
+ return false;
+ }
+
+ /**
+ * @param object
+ * @return
+ * @see org.drools.spi.ReadAccessor#getBooleanValue(java.lang.Object)
+ */
+ public boolean getBooleanValue(Object object) {
+ return reader.getBooleanValue( object );
+ }
+
+ /**
+ * @param object
+ * @return
+ * @see org.drools.spi.ReadAccessor#getByteValue(java.lang.Object)
+ */
+ public byte getByteValue(Object object) {
+ return reader.getByteValue( object );
+ }
+
+ /**
+ * @param object
+ * @return
+ * @see org.drools.spi.ReadAccessor#getCharValue(java.lang.Object)
+ */
+ public char getCharValue(Object object) {
+ return reader.getCharValue( object );
+ }
+
+ /**
+ * @param object
+ * @return
+ * @see org.drools.spi.ReadAccessor#getDoubleValue(java.lang.Object)
+ */
+ public double getDoubleValue(Object object) {
+ return reader.getDoubleValue( object );
+ }
+
+ /**
+ * @param object
+ * @return
+ * @see org.drools.spi.ReadAccessor#getFloatValue(java.lang.Object)
+ */
+ public float getFloatValue(Object object) {
+ return reader.getFloatValue( object );
+ }
+
+ /**
+ * @param object
+ * @return
+ * @see org.drools.spi.ReadAccessor#getHashCode(java.lang.Object)
+ */
+ public int getHashCode(Object object) {
+ return reader.getHashCode( object );
+ }
+
+ /**
+ * @param object
+ * @return
+ * @see org.drools.spi.ReadAccessor#getIntValue(java.lang.Object)
+ */
+ public int getIntValue(Object object) {
+ return reader.getIntValue( object );
+ }
+
+ /**
+ * @param object
+ * @return
+ * @see org.drools.spi.ReadAccessor#getLongValue(java.lang.Object)
+ */
+ public long getLongValue(Object object) {
+ return reader.getLongValue( object );
+ }
+
+ /**
+ * @param object
+ * @return
+ * @see org.drools.spi.ReadAccessor#getShortValue(java.lang.Object)
+ */
+ public short getShortValue(Object object) {
+ return reader.getShortValue( object );
+ }
+
+ /**
+ * @param object
+ * @return
+ * @see org.drools.spi.ReadAccessor#getValue(java.lang.Object)
+ */
+ public Object getValue(Object object) {
+ return reader.getValue( object );
+ }
+
+ /**
+ * @param object
+ * @return
+ * @see org.drools.spi.ReadAccessor#isNullValue(java.lang.Object)
+ */
+ public boolean isNullValue(Object object) {
+ return reader.isNullValue( object );
+ }
+
+
+}
\ No newline at end of file
Added: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/ClassFieldWriter.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/ClassFieldWriter.java (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/ClassFieldWriter.java 2008-05-16 18:29:20 UTC (rev 19971)
@@ -0,0 +1,207 @@
+package org.drools.base;
+
+/*
+ * Copyright 2005 JBoss Inc
+ *
+ * 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.
+ */
+
+import java.io.IOException;
+import java.io.ObjectInput;
+import java.io.ObjectOutput;
+import java.lang.reflect.Method;
+
+import org.drools.RuntimeDroolsException;
+import org.drools.common.DroolsObjectInput;
+import org.drools.spi.WriteAccessor;
+
+/**
+ * This class implements the WriteAccessor interface
+ * allowing the application to write values into a field
+ * from a class
+ *
+ * @author Edson Tirelli
+ */
+public class ClassFieldWriter
+ implements
+ WriteAccessor {
+
+ private static final long serialVersionUID = 400L;
+ private String fieldName;
+ private Class< ? > clazz;
+ private transient WriteAccessor writer;
+
+ public ClassFieldWriter() {
+
+ }
+
+ public ClassFieldWriter(final Class< ? > clazz,
+ final String fieldName) {
+ this( clazz,
+ fieldName,
+ clazz.getClassLoader() );
+ }
+
+ public ClassFieldWriter(final Class< ? > clazz,
+ final String fieldName,
+ final ClassLoader classLoader) {
+ this( clazz,
+ fieldName,
+ classLoader,
+ new ClassFieldAccessorFactory() );
+ }
+
+ public ClassFieldWriter(final Class< ? > clazz,
+ final String fieldName,
+ final ClassLoader classLoader,
+ final ClassFieldAccessorFactory factory) {
+ this.clazz = clazz;
+ this.fieldName = fieldName;
+ init( findClassLoader( classLoader ),
+ factory );
+ }
+
+ /**
+ * @param classLoader
+ */
+ private ClassLoader findClassLoader(final ClassLoader classLoader) {
+ ClassLoader loader = classLoader;
+ if ( loader == null ) {
+ loader = Thread.currentThread().getContextClassLoader();
+ if ( loader == null ) {
+ loader = this.getClass().getClassLoader();
+ }
+ }
+ return loader;
+ }
+
+ public void writeExternal(ObjectOutput out) throws IOException {
+ // Call even if there is no default serializable fields.
+ out.writeObject( clazz );
+ out.writeObject( fieldName );
+ }
+
+ public void readExternal(final ObjectInput is) throws ClassNotFoundException,
+ IOException {
+ clazz = (Class< ? >) is.readObject();
+ fieldName = (String) is.readObject();
+ if ( is instanceof DroolsObjectInput ) {
+ DroolsObjectInput droolsInput = (DroolsObjectInput) is;
+ writer = droolsInput.getExtractorFactory().getWriter( clazz,
+ fieldName,
+ droolsInput.getClassLoader() );
+ } else writer = ClassFieldAccessorCache.getInstance().getWriter( clazz,
+ fieldName,
+ findClassLoader( null ) );
+ }
+
+ private void init(final ClassLoader classLoader,
+ final ClassFieldAccessorFactory factory) {
+ try {
+ this.writer = factory.getClassFieldWriter( this.clazz,
+ this.fieldName,
+ classLoader );
+ } catch ( final Exception e ) {
+ throw new RuntimeDroolsException( e );
+ }
+ }
+
+ public int getIndex() {
+ return this.writer.getIndex();
+ }
+
+ public String getFieldName() {
+ return this.fieldName;
+ }
+
+ public String toString() {
+ return "[ClassFieldWriter class=" + this.clazz + " field=" + this.fieldName + "]";
+ }
+
+ public int hashCode() {
+ return getValueType().hashCode() * 17 + getIndex();
+ }
+
+ public boolean equals(final Object object) {
+ if ( this == object ) {
+ return true;
+ }
+
+ if ( object == null || !(object instanceof ClassFieldWriter) ) {
+ return false;
+ }
+
+ final ClassFieldWriter other = (ClassFieldWriter) object;
+
+ return this.writer.getValueType() == other.getValueType() && this.writer.getIndex() == other.getIndex();
+ }
+
+ public Class< ? > getFieldType() {
+ return writer.getFieldType();
+ }
+
+ public Method getNativeWriteMethod() {
+ return writer.getNativeWriteMethod();
+ }
+
+ public ValueType getValueType() {
+ return writer.getValueType();
+ }
+
+ public void setBooleanValue(Object bean,
+ boolean value) {
+ writer.setBooleanValue( bean, value );
+ }
+
+ public void setByteValue(Object bean,
+ byte value) {
+ writer.setByteValue( bean, value );
+
+ }
+
+ public void setCharValue(Object bean,
+ char value) {
+ writer.setCharValue( bean, value );
+ }
+
+ public void setDoubleValue(Object bean,
+ double value) {
+ writer.setDoubleValue( bean, value );
+ }
+
+ public void setFloatValue(Object bean,
+ float value) {
+ writer.setFloatValue( bean, value );
+ }
+
+ public void setIntValue(Object bean,
+ int value) {
+ writer.setIntValue( bean, value );
+ }
+
+ public void setLongValue(Object bean,
+ long value) {
+ writer.setLongValue( bean, value );
+ }
+
+ public void setShortValue(Object bean,
+ short value) {
+ writer.setShortValue( bean, value );
+ }
+
+ public void setValue(Object bean,
+ Object value) {
+ writer.setValue( bean, value );
+ }
+
+}
\ No newline at end of file
Added: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/FieldAccessor.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/FieldAccessor.java (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/FieldAccessor.java 2008-05-16 18:29:20 UTC (rev 19971)
@@ -0,0 +1,30 @@
+/*
+ * Copyright 2008 JBoss Inc
+ *
+ * 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.base;
+
+import org.drools.spi.ReadAccessor;
+import org.drools.spi.WriteAccessor;
+
+
+/**
+ * An interface for Accessor classes that joins both reader and writer accessor methods
+ *
+ * @author etirelli
+ */
+public interface FieldAccessor extends ReadAccessor, WriteAccessor {
+
+}
Property changes on: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/FieldAccessor.java
___________________________________________________________________
Name: svn:executable
+ *
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/AfterEvaluatorDefinition.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/AfterEvaluatorDefinition.java 2008-05-16 15:22:07 UTC (rev 19970)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/AfterEvaluatorDefinition.java 2008-05-16 18:29:20 UTC (rev 19971)
@@ -17,12 +17,12 @@
*/
package org.drools.base.evaluators;
+import java.io.IOException;
+import java.io.ObjectInput;
+import java.io.ObjectOutput;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
-import java.io.ObjectInput;
-import java.io.IOException;
-import java.io.ObjectOutput;
import org.drools.RuntimeDroolsException;
import org.drools.base.BaseEvaluator;
@@ -33,8 +33,8 @@
import org.drools.rule.VariableRestriction.ObjectVariableContextEntry;
import org.drools.rule.VariableRestriction.VariableContextEntry;
import org.drools.spi.Evaluator;
-import org.drools.spi.Extractor;
import org.drools.spi.FieldValue;
+import org.drools.spi.InternalReadAccessor;
/**
* The implementation of the 'after' evaluator definition
@@ -175,7 +175,7 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor,
+ final InternalReadAccessor extractor,
final Object object1,
final FieldValue object2) {
throw new RuntimeDroolsException( "The 'after' operator can only be used to compare one event to another, and never to compare to literal constraints." );
@@ -204,9 +204,9 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor1,
+ final InternalReadAccessor extractor1,
final Object object1,
- final Extractor extractor2,
+ final InternalReadAccessor extractor2,
final Object object2) {
if ( extractor1.isNullValue( workingMemory,
object1 ) ) {
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/BeforeEvaluatorDefinition.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/BeforeEvaluatorDefinition.java 2008-05-16 15:22:07 UTC (rev 19970)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/BeforeEvaluatorDefinition.java 2008-05-16 18:29:20 UTC (rev 19971)
@@ -33,7 +33,7 @@
import org.drools.rule.VariableRestriction.ObjectVariableContextEntry;
import org.drools.rule.VariableRestriction.VariableContextEntry;
import org.drools.spi.Evaluator;
-import org.drools.spi.Extractor;
+import org.drools.spi.InternalReadAccessor;
import org.drools.spi.FieldValue;
/**
@@ -175,7 +175,7 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor,
+ final InternalReadAccessor extractor,
final Object object1,
final FieldValue object2) {
throw new RuntimeDroolsException( "The 'before' operator can only be used to compare one event to another, and never to compare to literal constraints." );
@@ -206,9 +206,9 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor1,
+ final InternalReadAccessor extractor1,
final Object object1,
- final Extractor extractor2,
+ final InternalReadAccessor extractor2,
final Object object2) {
if ( extractor1.isNullValue( workingMemory,
object1 ) ) {
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/CoincidesEvaluatorDefinition.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/CoincidesEvaluatorDefinition.java 2008-05-16 15:22:07 UTC (rev 19970)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/CoincidesEvaluatorDefinition.java 2008-05-16 18:29:20 UTC (rev 19971)
@@ -33,7 +33,7 @@
import org.drools.rule.VariableRestriction.ObjectVariableContextEntry;
import org.drools.rule.VariableRestriction.VariableContextEntry;
import org.drools.spi.Evaluator;
-import org.drools.spi.Extractor;
+import org.drools.spi.InternalReadAccessor;
import org.drools.spi.FieldValue;
/**
@@ -175,7 +175,7 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor,
+ final InternalReadAccessor extractor,
final Object object1,
final FieldValue object2) {
throw new RuntimeDroolsException( "The 'coincides' operator can only be used to compare one event to another, and never to compare to literal constraints." );
@@ -209,9 +209,9 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor1,
+ final InternalReadAccessor extractor1,
final Object object1,
- final Extractor extractor2,
+ final InternalReadAccessor extractor2,
final Object object2) {
if ( extractor1.isNullValue( workingMemory,
object1 ) ) {
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/ComparableEvaluatorsDefinition.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/ComparableEvaluatorsDefinition.java 2008-05-16 15:22:07 UTC (rev 19970)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/ComparableEvaluatorsDefinition.java 2008-05-16 18:29:20 UTC (rev 19971)
@@ -34,7 +34,7 @@
import org.drools.rule.VariableRestriction.ObjectVariableContextEntry;
import org.drools.rule.VariableRestriction.VariableContextEntry;
import org.drools.spi.Evaluator;
-import org.drools.spi.Extractor;
+import org.drools.spi.InternalReadAccessor;
import org.drools.spi.FieldValue;
import org.drools.util.DateUtils;
@@ -195,7 +195,7 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor,
+ final InternalReadAccessor extractor,
final Object object1, final FieldValue object2) {
if( extractor.isNullValue( workingMemory, object1 ) ) {
return false;
@@ -223,9 +223,9 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor1,
+ final InternalReadAccessor extractor1,
final Object object1,
- final Extractor extractor2, final Object object2) {
+ final InternalReadAccessor extractor2, final Object object2) {
if( extractor1.isNullValue( workingMemory, object1 ) ) {
return false;
}
@@ -251,7 +251,7 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor,
+ final InternalReadAccessor extractor,
final Object object1, final FieldValue object2) {
if( extractor.isNullValue( workingMemory, object1 ) ) {
return false;
@@ -279,9 +279,9 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor1,
+ final InternalReadAccessor extractor1,
final Object object1,
- final Extractor extractor2, final Object object2) {
+ final InternalReadAccessor extractor2, final Object object2) {
if( extractor1.isNullValue( workingMemory, object1 ) ) {
return false;
}
@@ -307,7 +307,7 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor,
+ final InternalReadAccessor extractor,
final Object object1, final FieldValue object2) {
if( extractor.isNullValue( workingMemory, object1 ) ) {
return false;
@@ -335,9 +335,9 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor1,
+ final InternalReadAccessor extractor1,
final Object object1,
- final Extractor extractor2, final Object object2) {
+ final InternalReadAccessor extractor2, final Object object2) {
if( extractor1.isNullValue( workingMemory, object1 ) ) {
return false;
}
@@ -363,7 +363,7 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor,
+ final InternalReadAccessor extractor,
final Object object1, final FieldValue object2) {
if( extractor.isNullValue( workingMemory, object1 ) ) {
return false;
@@ -391,9 +391,9 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor1,
+ final InternalReadAccessor extractor1,
final Object object1,
- final Extractor extractor2, final Object object2) {
+ final InternalReadAccessor extractor2, final Object object2) {
if( extractor1.isNullValue( workingMemory, object1 ) ) {
return false;
}
@@ -419,7 +419,7 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor,
+ final InternalReadAccessor extractor,
final Object object1, final FieldValue object2) {
if( extractor.isNullValue( workingMemory, object1 ) ) {
return false;
@@ -447,9 +447,9 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor1,
+ final InternalReadAccessor extractor1,
final Object object1,
- final Extractor extractor2, final Object object2) {
+ final InternalReadAccessor extractor2, final Object object2) {
if( extractor1.isNullValue( workingMemory, object1 ) ) {
return false;
}
@@ -475,7 +475,7 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor,
+ final InternalReadAccessor extractor,
final Object object1, final FieldValue object2) {
if( extractor.isNullValue( workingMemory, object1 ) ) {
return false;
@@ -503,9 +503,9 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor1,
+ final InternalReadAccessor extractor1,
final Object object1,
- final Extractor extractor2, final Object object2) {
+ final InternalReadAccessor extractor2, final Object object2) {
if( extractor1.isNullValue( workingMemory, object1 ) ) {
return false;
}
@@ -531,7 +531,7 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor,
+ final InternalReadAccessor extractor,
final Object object1, final FieldValue object2) {
if( extractor.isNullValue( workingMemory, object1 ) ) {
return false;
@@ -559,9 +559,9 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor1,
+ final InternalReadAccessor extractor1,
final Object object1,
- final Extractor extractor2, final Object object2) {
+ final InternalReadAccessor extractor2, final Object object2) {
if( extractor1.isNullValue( workingMemory, object1 ) ) {
return false;
}
@@ -587,7 +587,7 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor,
+ final InternalReadAccessor extractor,
final Object object1, final FieldValue object2) {
if( extractor.isNullValue( workingMemory, object1 ) ) {
return false;
@@ -615,9 +615,9 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor1,
+ final InternalReadAccessor extractor1,
final Object object1,
- final Extractor extractor2, final Object object2) {
+ final InternalReadAccessor extractor2, final Object object2) {
if( extractor1.isNullValue( workingMemory, object1 ) ) {
return false;
}
@@ -643,7 +643,7 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor,
+ final InternalReadAccessor extractor,
final Object object1, final FieldValue object2) {
if( extractor.isNullValue( workingMemory, object1 ) ) {
return false;
@@ -668,9 +668,9 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor1,
+ final InternalReadAccessor extractor1,
final Object object1,
- final Extractor extractor2, final Object object2) {
+ final InternalReadAccessor extractor2, final Object object2) {
if( extractor1.isNullValue( workingMemory, object1 ) ) {
return false;
}
@@ -695,7 +695,7 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor,
+ final InternalReadAccessor extractor,
final Object object1, final FieldValue object2) {
if( extractor.isNullValue( workingMemory, object1 ) ) {
return false;
@@ -720,9 +720,9 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor1,
+ final InternalReadAccessor extractor1,
final Object object1,
- final Extractor extractor2, final Object object2) {
+ final InternalReadAccessor extractor2, final Object object2) {
if( extractor1.isNullValue( workingMemory, object1 ) ) {
return false;
}
@@ -747,7 +747,7 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor,
+ final InternalReadAccessor extractor,
final Object object1, final FieldValue object2) {
if( extractor.isNullValue( workingMemory, object1 ) ) {
return false;
@@ -772,9 +772,9 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor1,
+ final InternalReadAccessor extractor1,
final Object object1,
- final Extractor extractor2, final Object object2) {
+ final InternalReadAccessor extractor2, final Object object2) {
if( extractor1.isNullValue( workingMemory, object1 ) ) {
return false;
}
@@ -799,7 +799,7 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor,
+ final InternalReadAccessor extractor,
final Object object1, final FieldValue object2) {
if( extractor.isNullValue( workingMemory, object1 ) ) {
return false;
@@ -824,9 +824,9 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor1,
+ final InternalReadAccessor extractor1,
final Object object1,
- final Extractor extractor2, final Object object2) {
+ final InternalReadAccessor extractor2, final Object object2) {
if( extractor1.isNullValue( workingMemory, object1 ) ) {
return false;
}
@@ -851,7 +851,7 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor,
+ final InternalReadAccessor extractor,
final Object object1, final FieldValue object2) {
if( extractor.isNullValue( workingMemory, object1 ) ) {
return false;
@@ -876,9 +876,9 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor1,
+ final InternalReadAccessor extractor1,
final Object object1,
- final Extractor extractor2, final Object object2) {
+ final InternalReadAccessor extractor2, final Object object2) {
if( extractor1.isNullValue( workingMemory, object1 ) ) {
return false;
}
@@ -903,7 +903,7 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor,
+ final InternalReadAccessor extractor,
final Object object1, final FieldValue object2) {
if( extractor.isNullValue( workingMemory, object1 ) ) {
return false;
@@ -928,9 +928,9 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor1,
+ final InternalReadAccessor extractor1,
final Object object1,
- final Extractor extractor2, final Object object2) {
+ final InternalReadAccessor extractor2, final Object object2) {
if( extractor1.isNullValue( workingMemory, object1 ) ) {
return false;
}
@@ -955,7 +955,7 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor,
+ final InternalReadAccessor extractor,
final Object object1, final FieldValue object2) {
if( extractor.isNullValue( workingMemory, object1 ) ) {
return false;
@@ -980,9 +980,9 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor1,
+ final InternalReadAccessor extractor1,
final Object object1,
- final Extractor extractor2, final Object object2) {
+ final InternalReadAccessor extractor2, final Object object2) {
if( extractor1.isNullValue( workingMemory, object1 ) ) {
return false;
}
@@ -1007,7 +1007,7 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor,
+ final InternalReadAccessor extractor,
final Object object1, final FieldValue object2) {
if( extractor.isNullValue( workingMemory, object1 ) ) {
return false;
@@ -1032,9 +1032,9 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor1,
+ final InternalReadAccessor extractor1,
final Object object1,
- final Extractor extractor2, final Object object2) {
+ final InternalReadAccessor extractor2, final Object object2) {
if( extractor1.isNullValue( workingMemory, object1 ) ) {
return false;
}
@@ -1059,7 +1059,7 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor,
+ final InternalReadAccessor extractor,
final Object object1, final FieldValue object2) {
if( extractor.isNullValue( workingMemory, object1 ) ) {
return false;
@@ -1090,9 +1090,9 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor1,
+ final InternalReadAccessor extractor1,
final Object object1,
- final Extractor extractor2, final Object object2) {
+ final InternalReadAccessor extractor2, final Object object2) {
if( extractor1.isNullValue( workingMemory, object1 ) ) {
return false;
}
@@ -1120,7 +1120,7 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor,
+ final InternalReadAccessor extractor,
final Object object1, final FieldValue object2) {
if( extractor.isNullValue( workingMemory, object1 ) ) {
return false;
@@ -1151,9 +1151,9 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor1,
+ final InternalReadAccessor extractor1,
final Object object1,
- final Extractor extractor2, final Object object2) {
+ final InternalReadAccessor extractor2, final Object object2) {
if( extractor1.isNullValue( workingMemory, object1 ) ) {
return false;
}
@@ -1181,7 +1181,7 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor,
+ final InternalReadAccessor extractor,
final Object object1, final FieldValue object2) {
if( extractor.isNullValue( workingMemory, object1 ) ) {
return false;
@@ -1212,9 +1212,9 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor1,
+ final InternalReadAccessor extractor1,
final Object object1,
- final Extractor extractor2, final Object object2) {
+ final InternalReadAccessor extractor2, final Object object2) {
if( extractor1.isNullValue( workingMemory, object1 ) ) {
return false;
}
@@ -1242,7 +1242,7 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor,
+ final InternalReadAccessor extractor,
final Object object1, final FieldValue object2) {
if( extractor.isNullValue( workingMemory, object1 ) ) {
return false;
@@ -1273,9 +1273,9 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor1,
+ final InternalReadAccessor extractor1,
final Object object1,
- final Extractor extractor2, final Object object2) {
+ final InternalReadAccessor extractor2, final Object object2) {
if( extractor1.isNullValue( workingMemory, object1 ) ) {
return false;
}
@@ -1303,7 +1303,7 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor,
+ final InternalReadAccessor extractor,
final Object object1, final FieldValue object2) {
if( extractor.isNullValue( workingMemory, object1 ) ) {
return false;
@@ -1331,9 +1331,9 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor1,
+ final InternalReadAccessor extractor1,
final Object object1,
- final Extractor extractor2, final Object object2) {
+ final InternalReadAccessor extractor2, final Object object2) {
if( extractor1.isNullValue( workingMemory, object1 ) ) {
return false;
}
@@ -1359,7 +1359,7 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor,
+ final InternalReadAccessor extractor,
final Object object1, final FieldValue object2) {
if( extractor.isNullValue( workingMemory, object1 ) ) {
return false;
@@ -1387,9 +1387,9 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor1,
+ final InternalReadAccessor extractor1,
final Object object1,
- final Extractor extractor2, final Object object2) {
+ final InternalReadAccessor extractor2, final Object object2) {
if( extractor1.isNullValue( workingMemory, object1 ) ) {
return false;
}
@@ -1415,7 +1415,7 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor,
+ final InternalReadAccessor extractor,
final Object object1, final FieldValue object2) {
if( extractor.isNullValue( workingMemory, object1 ) ) {
return false;
@@ -1443,9 +1443,9 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor1,
+ final InternalReadAccessor extractor1,
final Object object1,
- final Extractor extractor2, final Object object2) {
+ final InternalReadAccessor extractor2, final Object object2) {
if( extractor1.isNullValue( workingMemory, object1 ) ) {
return false;
}
@@ -1471,7 +1471,7 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor,
+ final InternalReadAccessor extractor,
final Object object1, final FieldValue object2) {
if( extractor.isNullValue( workingMemory, object1 ) ) {
return false;
@@ -1499,9 +1499,9 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor1,
+ final InternalReadAccessor extractor1,
final Object object1,
- final Extractor extractor2, final Object object2) {
+ final InternalReadAccessor extractor2, final Object object2) {
if( extractor1.isNullValue( workingMemory, object1 ) ) {
return false;
}
@@ -1527,7 +1527,7 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor,
+ final InternalReadAccessor extractor,
final Object object1, final FieldValue object2) {
if( extractor.isNullValue( workingMemory, object1 ) ) {
return false;
@@ -1555,9 +1555,9 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor1,
+ final InternalReadAccessor extractor1,
final Object object1,
- final Extractor extractor2, final Object object2) {
+ final InternalReadAccessor extractor2, final Object object2) {
if( extractor1.isNullValue( workingMemory, object1 ) ) {
return false;
}
@@ -1583,7 +1583,7 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor,
+ final InternalReadAccessor extractor,
final Object object1, final FieldValue object2) {
if( extractor.isNullValue( workingMemory, object1 ) ) {
return false;
@@ -1611,9 +1611,9 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor1,
+ final InternalReadAccessor extractor1,
final Object object1,
- final Extractor extractor2, final Object object2) {
+ final InternalReadAccessor extractor2, final Object object2) {
if( extractor1.isNullValue( workingMemory, object1 ) ) {
return false;
}
@@ -1639,7 +1639,7 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor,
+ final InternalReadAccessor extractor,
final Object object1, final FieldValue object2) {
if( extractor.isNullValue( workingMemory, object1 ) ) {
return false;
@@ -1667,9 +1667,9 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor1,
+ final InternalReadAccessor extractor1,
final Object object1,
- final Extractor extractor2, final Object object2) {
+ final InternalReadAccessor extractor2, final Object object2) {
if( extractor1.isNullValue( workingMemory, object1 ) ) {
return false;
}
@@ -1695,7 +1695,7 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor,
+ final InternalReadAccessor extractor,
final Object object1, final FieldValue object2) {
if( extractor.isNullValue( workingMemory, object1 ) ) {
return false;
@@ -1723,9 +1723,9 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor1,
+ final InternalReadAccessor extractor1,
final Object object1,
- final Extractor extractor2, final Object object2) {
+ final InternalReadAccessor extractor2, final Object object2) {
if( extractor1.isNullValue( workingMemory, object1 ) ) {
return false;
}
@@ -1751,7 +1751,7 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor,
+ final InternalReadAccessor extractor,
final Object object1, final FieldValue object2) {
if( extractor.isNullValue( workingMemory, object1 ) ) {
return false;
@@ -1776,9 +1776,9 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor1,
+ final InternalReadAccessor extractor1,
final Object object1,
- final Extractor extractor2, final Object object2) {
+ final InternalReadAccessor extractor2, final Object object2) {
if( extractor1.isNullValue( workingMemory, object1 ) ) {
return false;
}
@@ -1803,7 +1803,7 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor,
+ final InternalReadAccessor extractor,
final Object object1, final FieldValue object2) {
if( extractor.isNullValue( workingMemory, object1 ) ) {
return false;
@@ -1828,9 +1828,9 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor1,
+ final InternalReadAccessor extractor1,
final Object object1,
- final Extractor extractor2, final Object object2) {
+ final InternalReadAccessor extractor2, final Object object2) {
if( extractor1.isNullValue( workingMemory, object1 ) ) {
return false;
}
@@ -1855,7 +1855,7 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor,
+ final InternalReadAccessor extractor,
final Object object1, final FieldValue object2) {
if( extractor.isNullValue( workingMemory, object1 ) ) {
return false;
@@ -1880,9 +1880,9 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor1,
+ final InternalReadAccessor extractor1,
final Object object1,
- final Extractor extractor2, final Object object2) {
+ final InternalReadAccessor extractor2, final Object object2) {
if( extractor1.isNullValue( workingMemory, object1 ) ) {
return false;
}
@@ -1907,7 +1907,7 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor,
+ final InternalReadAccessor extractor,
final Object object1, final FieldValue object2) {
if( extractor.isNullValue( workingMemory, object1 ) ) {
return false;
@@ -1932,9 +1932,9 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor1,
+ final InternalReadAccessor extractor1,
final Object object1,
- final Extractor extractor2, final Object object2) {
+ final InternalReadAccessor extractor2, final Object object2) {
if( extractor1.isNullValue( workingMemory, object1 ) ) {
return false;
}
@@ -1959,7 +1959,7 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor,
+ final InternalReadAccessor extractor,
final Object object1, final FieldValue object2) {
if( extractor.isNullValue( workingMemory, object1 ) ) {
return false;
@@ -1984,9 +1984,9 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor1,
+ final InternalReadAccessor extractor1,
final Object object1,
- final Extractor extractor2, final Object object2) {
+ final InternalReadAccessor extractor2, final Object object2) {
if( extractor1.isNullValue( workingMemory, object1 ) ) {
return false;
}
@@ -2011,7 +2011,7 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor,
+ final InternalReadAccessor extractor,
final Object object1, final FieldValue object2) {
if( extractor.isNullValue( workingMemory, object1 ) ) {
return false;
@@ -2036,9 +2036,9 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor1,
+ final InternalReadAccessor extractor1,
final Object object1,
- final Extractor extractor2, final Object object2) {
+ final InternalReadAccessor extractor2, final Object object2) {
if( extractor1.isNullValue( workingMemory, object1 ) ) {
return false;
}
@@ -2063,7 +2063,7 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor,
+ final InternalReadAccessor extractor,
final Object object1, final FieldValue object2) {
if( extractor.isNullValue( workingMemory, object1 ) ) {
return false;
@@ -2088,9 +2088,9 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor1,
+ final InternalReadAccessor extractor1,
final Object object1,
- final Extractor extractor2, final Object object2) {
+ final InternalReadAccessor extractor2, final Object object2) {
if( extractor1.isNullValue( workingMemory, object1 ) ) {
return false;
}
@@ -2115,7 +2115,7 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor,
+ final InternalReadAccessor extractor,
final Object object1, final FieldValue object2) {
if( extractor.isNullValue( workingMemory, object1 ) ) {
return false;
@@ -2140,9 +2140,9 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor1,
+ final InternalReadAccessor extractor1,
final Object object1,
- final Extractor extractor2, final Object object2) {
+ final InternalReadAccessor extractor2, final Object object2) {
if( extractor1.isNullValue( workingMemory, object1 ) ) {
return false;
}
@@ -2166,7 +2166,7 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor,
+ final InternalReadAccessor extractor,
final Object object1, final FieldValue object2) {
if( extractor.isNullValue( workingMemory, object1 ) ) {
return false;
@@ -2194,9 +2194,9 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor1,
+ final InternalReadAccessor extractor1,
final Object object1,
- final Extractor extractor2, final Object object2) {
+ final InternalReadAccessor extractor2, final Object object2) {
if( extractor1.isNullValue( workingMemory, object1 ) ) {
return false;
}
@@ -2223,7 +2223,7 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor,
+ final InternalReadAccessor extractor,
final Object object1, final FieldValue object2) {
if( extractor.isNullValue( workingMemory, object1 ) ) {
return false;
@@ -2251,9 +2251,9 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor1,
+ final InternalReadAccessor extractor1,
final Object object1,
- final Extractor extractor2, final Object object2) {
+ final InternalReadAccessor extractor2, final Object object2) {
if( extractor1.isNullValue( workingMemory, object1 ) ) {
return false;
}
@@ -2280,7 +2280,7 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor,
+ final InternalReadAccessor extractor,
final Object object1, final FieldValue object2) {
if( extractor.isNullValue( workingMemory, object1 ) ) {
return false;
@@ -2308,9 +2308,9 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor1,
+ final InternalReadAccessor extractor1,
final Object object1,
- final Extractor extractor2, final Object object2) {
+ final InternalReadAccessor extractor2, final Object object2) {
if( extractor1.isNullValue( workingMemory, object1 ) ) {
return false;
}
@@ -2337,7 +2337,7 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor,
+ final InternalReadAccessor extractor,
final Object object1, final FieldValue object2) {
if( extractor.isNullValue( workingMemory, object1 ) ) {
return false;
@@ -2365,9 +2365,9 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor1,
+ final InternalReadAccessor extractor1,
final Object object1,
- final Extractor extractor2, final Object object2) {
+ final InternalReadAccessor extractor2, final Object object2) {
if( extractor1.isNullValue( workingMemory, object1 ) ) {
return false;
}
@@ -2393,7 +2393,7 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor,
+ final InternalReadAccessor extractor,
final Object object1, final FieldValue object2) {
if( extractor.isNullValue( workingMemory, object1 ) ) {
return false;
@@ -2418,9 +2418,9 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor1,
+ final InternalReadAccessor extractor1,
final Object object1,
- final Extractor extractor2, final Object object2) {
+ final InternalReadAccessor extractor2, final Object object2) {
if( extractor1.isNullValue( workingMemory, object1 ) ) {
return false;
}
@@ -2445,7 +2445,7 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor,
+ final InternalReadAccessor extractor,
final Object object1, final FieldValue object2) {
if( extractor.isNullValue( workingMemory, object1 ) ) {
return false;
@@ -2470,9 +2470,9 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor1,
+ final InternalReadAccessor extractor1,
final Object object1,
- final Extractor extractor2, final Object object2) {
+ final InternalReadAccessor extractor2, final Object object2) {
if( extractor1.isNullValue( workingMemory, object1 ) ) {
return false;
}
@@ -2497,7 +2497,7 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor,
+ final InternalReadAccessor extractor,
final Object object1, final FieldValue object2) {
if( extractor.isNullValue( workingMemory, object1 ) ) {
return false;
@@ -2522,9 +2522,9 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor1,
+ final InternalReadAccessor extractor1,
final Object object1,
- final Extractor extractor2, final Object object2) {
+ final InternalReadAccessor extractor2, final Object object2) {
if( extractor1.isNullValue( workingMemory, object1 ) ) {
return false;
}
@@ -2549,7 +2549,7 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor,
+ final InternalReadAccessor extractor,
final Object object1, final FieldValue object2) {
if( extractor.isNullValue( workingMemory, object1 ) ) {
return false;
@@ -2574,9 +2574,9 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor1,
+ final InternalReadAccessor extractor1,
final Object object1,
- final Extractor extractor2, final Object object2) {
+ final InternalReadAccessor extractor2, final Object object2) {
if( extractor1.isNullValue( workingMemory, object1 ) ) {
return false;
}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/DuringEvaluatorDefinition.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/DuringEvaluatorDefinition.java 2008-05-16 15:22:07 UTC (rev 19970)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/DuringEvaluatorDefinition.java 2008-05-16 18:29:20 UTC (rev 19971)
@@ -33,7 +33,7 @@
import org.drools.rule.VariableRestriction.ObjectVariableContextEntry;
import org.drools.rule.VariableRestriction.VariableContextEntry;
import org.drools.spi.Evaluator;
-import org.drools.spi.Extractor;
+import org.drools.spi.InternalReadAccessor;
import org.drools.spi.FieldValue;
/**
@@ -179,7 +179,7 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor,
+ final InternalReadAccessor extractor,
final Object object1,
final FieldValue object2) {
throw new RuntimeDroolsException( "The 'during' operator can only be used to compare one event to another, and never to compare to literal constraints." );
@@ -212,9 +212,9 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor1,
+ final InternalReadAccessor extractor1,
final Object object1,
- final Extractor extractor2,
+ final InternalReadAccessor extractor2,
final Object object2) {
if ( extractor1.isNullValue( workingMemory,
object1 ) ) {
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/EqualityEvaluatorsDefinition.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/EqualityEvaluatorsDefinition.java 2008-05-16 15:22:07 UTC (rev 19970)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/EqualityEvaluatorsDefinition.java 2008-05-16 18:29:20 UTC (rev 19971)
@@ -33,7 +33,7 @@
import org.drools.rule.VariableRestriction.ObjectVariableContextEntry;
import org.drools.rule.VariableRestriction.VariableContextEntry;
import org.drools.spi.Evaluator;
-import org.drools.spi.Extractor;
+import org.drools.spi.InternalReadAccessor;
import org.drools.spi.FieldValue;
import org.drools.util.DateUtils;
@@ -164,7 +164,7 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor,
+ final InternalReadAccessor extractor,
final Object object1,
final FieldValue object2) {
final Object value1 = extractor.getValue( workingMemory,
@@ -199,9 +199,9 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor1,
+ final InternalReadAccessor extractor1,
final Object object1,
- final Extractor extractor2,
+ final InternalReadAccessor extractor2,
final Object object2) {
final Object value1 = extractor1.getValue( workingMemory,
object1 );
@@ -232,7 +232,7 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor,
+ final InternalReadAccessor extractor,
final Object object1,
final FieldValue object2) {
final Object value1 = extractor.getValue( workingMemory,
@@ -267,9 +267,9 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor1,
+ final InternalReadAccessor extractor1,
final Object object1,
- final Extractor extractor2,
+ final InternalReadAccessor extractor2,
final Object object2) {
final Object value1 = extractor1.getValue( workingMemory,
object1 );
@@ -299,7 +299,7 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor,
+ final InternalReadAccessor extractor,
final Object object1, final FieldValue object2) {
final Object value1 = extractor.getValue( workingMemory, object1 );
final Object value2 = object2.getBigDecimalValue();
@@ -328,9 +328,9 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor1,
+ final InternalReadAccessor extractor1,
final Object object1,
- final Extractor extractor2, final Object object2) {
+ final InternalReadAccessor extractor2, final Object object2) {
final Object value1 = extractor1.getValue( workingMemory, object1 );
final Object value2 = extractor2.getValue( workingMemory, object2 );
if ( value1 == null ) {
@@ -358,7 +358,7 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor,
+ final InternalReadAccessor extractor,
final Object object1, final FieldValue object2) {
final Object value1 = extractor.getValue( workingMemory, object1 );
final Object value2 = object2.getBigDecimalValue();
@@ -387,9 +387,9 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor1,
+ final InternalReadAccessor extractor1,
final Object object1,
- final Extractor extractor2, final Object object2) {
+ final InternalReadAccessor extractor2, final Object object2) {
final Object value1 = extractor1.getValue( workingMemory, object1 );
final Object value2 = extractor2.getValue( workingMemory, object2 );
if ( value1 == null ) {
@@ -416,7 +416,7 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor,
+ final InternalReadAccessor extractor,
final Object object1, final FieldValue object2) {
final Object value1 = extractor.getValue( workingMemory, object1 );
final Object value2 = object2.getBigIntegerValue();
@@ -445,9 +445,9 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor1,
+ final InternalReadAccessor extractor1,
final Object object1,
- final Extractor extractor2, final Object object2) {
+ final InternalReadAccessor extractor2, final Object object2) {
final Object value1 = extractor1.getValue( workingMemory, object1 );
final Object value2 = extractor2.getValue( workingMemory, object2 );
if ( value1 == null ) {
@@ -474,7 +474,7 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor,
+ final InternalReadAccessor extractor,
final Object object1, final FieldValue object2) {
final Object value1 = extractor.getValue( workingMemory, object1 );
final Object value2 = object2.getBigDecimalValue();
@@ -503,9 +503,9 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor1,
+ final InternalReadAccessor extractor1,
final Object object1,
- final Extractor extractor2, final Object object2) {
+ final InternalReadAccessor extractor2, final Object object2) {
final Object value1 = extractor1.getValue( workingMemory, object1 );
final Object value2 = extractor2.getValue( workingMemory, object2 );
if ( value1 == null ) {
@@ -530,7 +530,7 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor,
+ final InternalReadAccessor extractor,
final Object object1, final FieldValue object2) {
if ( extractor.isNullValue( workingMemory, object1 ) ) {
return object2.isNull();
@@ -564,9 +564,9 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor1,
+ final InternalReadAccessor extractor1,
final Object object1,
- final Extractor extractor2, final Object object2) {
+ final InternalReadAccessor extractor2, final Object object2) {
if (extractor1.isNullValue( workingMemory, object1 )) {
return extractor2.isNullValue( workingMemory, object2 );
} else if (extractor2.isNullValue( workingMemory, object2 )) {
@@ -595,7 +595,7 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor,
+ final InternalReadAccessor extractor,
final Object object1, final FieldValue object2) {
if ( extractor.isNullValue( workingMemory, object1 ) ) {
return !object2.isNull();
@@ -628,9 +628,9 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor1,
+ final InternalReadAccessor extractor1,
final Object object1,
- final Extractor extractor2, final Object object2) {
+ final InternalReadAccessor extractor2, final Object object2) {
if (extractor1.isNullValue( workingMemory, object1 )) {
return !extractor2.isNullValue( workingMemory, object2 );
} else if (extractor2.isNullValue( workingMemory, object2 )) {
@@ -658,7 +658,7 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor,
+ final InternalReadAccessor extractor,
final Object object1, final FieldValue object2) {
if ( extractor.isNullValue( workingMemory, object1 ) ) {
return object2.isNull();
@@ -692,9 +692,9 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor1,
+ final InternalReadAccessor extractor1,
final Object object1,
- final Extractor extractor2, final Object object2) {
+ final InternalReadAccessor extractor2, final Object object2) {
if (extractor1.isNullValue( workingMemory, object1 )) {
return extractor2.isNullValue( workingMemory, object2 );
} else if (extractor2.isNullValue( workingMemory, object2 )) {
@@ -723,7 +723,7 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor,
+ final InternalReadAccessor extractor,
final Object object1, final FieldValue object2) {
if ( extractor.isNullValue( workingMemory, object1 ) ) {
return !object2.isNull();
@@ -757,9 +757,9 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor1,
+ final InternalReadAccessor extractor1,
final Object object1,
- final Extractor extractor2, final Object object2) {
+ final InternalReadAccessor extractor2, final Object object2) {
if (extractor1.isNullValue( workingMemory, object1 )) {
return !extractor2.isNullValue( workingMemory, object2 );
} else if (extractor2.isNullValue( workingMemory, object2 )) {
@@ -787,7 +787,7 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor,
+ final InternalReadAccessor extractor,
final Object object1, final FieldValue object2) {
if ( extractor.isNullValue( workingMemory, object1 ) ) {
return object2.isNull();
@@ -821,9 +821,9 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor1,
+ final InternalReadAccessor extractor1,
final Object object1,
- final Extractor extractor2, final Object object2) {
+ final InternalReadAccessor extractor2, final Object object2) {
if (extractor1.isNullValue( workingMemory, object1 )) {
return extractor2.isNullValue( workingMemory, object2 );
} else if (extractor2.isNullValue( workingMemory, object2 )) {
@@ -851,7 +851,7 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor,
+ final InternalReadAccessor extractor,
final Object object1, final FieldValue object2) {
if ( extractor.isNullValue( workingMemory, object1 ) ) {
return !object2.isNull();
@@ -885,9 +885,9 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor1,
+ final InternalReadAccessor extractor1,
final Object object1,
- final Extractor extractor2, final Object object2) {
+ final InternalReadAccessor extractor2, final Object object2) {
if (extractor1.isNullValue( workingMemory, object1 )) {
return !extractor2.isNullValue( workingMemory, object2 );
} else if (extractor2.isNullValue( workingMemory, object2 )) {
@@ -915,7 +915,7 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor,
+ final InternalReadAccessor extractor,
final Object object1, final FieldValue object2) {
final Date value1 = (Date) extractor.getValue( workingMemory, object1 );
final Object value2 = object2.getValue();
@@ -955,9 +955,9 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor1,
+ final InternalReadAccessor extractor1,
final Object object1,
- final Extractor extractor2, final Object object2) {
+ final InternalReadAccessor extractor2, final Object object2) {
final Date value1 = (Date) extractor1.getValue( workingMemory, object1 );
final Date value2 = (Date) extractor2.getValue( workingMemory, object2 );
if ( value1 == null ) {
@@ -988,7 +988,7 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor,
+ final InternalReadAccessor extractor,
final Object object1, final FieldValue object2) {
final Date value1 = (Date) extractor.getValue( workingMemory, object1 );
final Object value2 = object2.getValue();
@@ -1028,9 +1028,9 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor1,
+ final InternalReadAccessor extractor1,
final Object object1,
- final Extractor extractor2, final Object object2) {
+ final InternalReadAccessor extractor2, final Object object2) {
final Date value1 = (Date) extractor1.getValue( workingMemory, object1 );
final Date value2 = (Date) extractor2.getValue( workingMemory, object2 );
if ( value1 == null ) {
@@ -1060,7 +1060,7 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor,
+ final InternalReadAccessor extractor,
final Object object1, final FieldValue object2) {
if ( extractor.isNullValue( workingMemory, object1 ) ) {
return object2.isNull();
@@ -1095,9 +1095,9 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor1,
+ final InternalReadAccessor extractor1,
final Object object1,
- final Extractor extractor2, final Object object2) {
+ final InternalReadAccessor extractor2, final Object object2) {
if (extractor1.isNullValue( workingMemory, object1 )) {
return extractor2.isNullValue( workingMemory, object2 );
} else if (extractor2.isNullValue( workingMemory, object2 )) {
@@ -1126,7 +1126,7 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor,
+ final InternalReadAccessor extractor,
final Object object1, final FieldValue object2) {
if ( extractor.isNullValue( workingMemory, object1 ) ) {
return !object2.isNull();
@@ -1163,9 +1163,9 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor1,
+ final InternalReadAccessor extractor1,
final Object object1,
- final Extractor extractor2, final Object object2) {
+ final InternalReadAccessor extractor2, final Object object2) {
if (extractor1.isNullValue( workingMemory, object1 )) {
return !extractor2.isNullValue( workingMemory, object2 );
} else if (extractor2.isNullValue( workingMemory, object2 )) {
@@ -1194,7 +1194,7 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor,
+ final InternalReadAccessor extractor,
final Object object1, final FieldValue object2) {
final Object value1 = extractor.getValue( workingMemory, object1 );
final Object value2 = object2.getValue();
@@ -1223,9 +1223,9 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor1,
+ final InternalReadAccessor extractor1,
final Object object1,
- final Extractor extractor2, final Object object2) {
+ final InternalReadAccessor extractor2, final Object object2) {
final Object value1 = extractor1.getValue( workingMemory, object1 );
final Object value2 = extractor2.getValue( workingMemory, object2 );
if ( value1 == null ) {
@@ -1253,7 +1253,7 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor,
+ final InternalReadAccessor extractor,
final Object object1, final FieldValue object2) {
final Object value1 = extractor.getValue( workingMemory, object1 );
final Object value2 = object2.getValue();
@@ -1282,9 +1282,9 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor1,
+ final InternalReadAccessor extractor1,
final Object object1,
- final Extractor extractor2, final Object object2) {
+ final InternalReadAccessor extractor2, final Object object2) {
final Object value1 = extractor1.getValue( workingMemory, object1 );
final Object value2 = extractor2.getValue( workingMemory, object2 );
if ( value1 == null ) {
@@ -1309,7 +1309,7 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor,
+ final InternalReadAccessor extractor,
final Object object1, final FieldValue object2) {
if ( extractor.isNullValue( workingMemory, object1 ) ) {
return object2.isNull();
@@ -1346,9 +1346,9 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor1,
+ final InternalReadAccessor extractor1,
final Object object1,
- final Extractor extractor2, final Object object2) {
+ final InternalReadAccessor extractor2, final Object object2) {
if (extractor1.isNullValue( workingMemory, object1 )) {
return extractor2.isNullValue( workingMemory, object2 );
} else if (extractor2.isNullValue( workingMemory, object2 )) {
@@ -1377,7 +1377,7 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor,
+ final InternalReadAccessor extractor,
final Object object1, final FieldValue object2) {
if ( extractor.isNullValue( workingMemory, object1 ) ) {
return !object2.isNull();
@@ -1414,9 +1414,9 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor1,
+ final InternalReadAccessor extractor1,
final Object object1,
- final Extractor extractor2, final Object object2) {
+ final InternalReadAccessor extractor2, final Object object2) {
if (extractor1.isNullValue( workingMemory, object1 )) {
return !extractor2.isNullValue( workingMemory, object2 );
} else if (extractor2.isNullValue( workingMemory, object2 )) {
@@ -1445,7 +1445,7 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor,
+ final InternalReadAccessor extractor,
final Object object1, final FieldValue object2) {
if ( extractor.isNullValue( workingMemory, object1 ) ) {
return object2.isNull();
@@ -1479,9 +1479,9 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor1,
+ final InternalReadAccessor extractor1,
final Object object1,
- final Extractor extractor2, final Object object2) {
+ final InternalReadAccessor extractor2, final Object object2) {
if (extractor1.isNullValue( workingMemory, object1 )) {
return extractor2.isNullValue( workingMemory, object2 );
} else if (extractor2.isNullValue( workingMemory, object2 )) {
@@ -1510,7 +1510,7 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor,
+ final InternalReadAccessor extractor,
final Object object1, final FieldValue object2) {
if ( extractor.isNullValue( workingMemory, object1 ) ) {
return !object2.isNull();
@@ -1544,9 +1544,9 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor1,
+ final InternalReadAccessor extractor1,
final Object object1,
- final Extractor extractor2, final Object object2) {
+ final InternalReadAccessor extractor2, final Object object2) {
if (extractor1.isNullValue( workingMemory, object1 )) {
return !extractor2.isNullValue( workingMemory, object2 );
} else if (extractor2.isNullValue( workingMemory, object2 )) {
@@ -1574,7 +1574,7 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor,
+ final InternalReadAccessor extractor,
final Object object1, final FieldValue object2) {
if ( extractor.isNullValue( workingMemory, object1 ) ) {
return object2.isNull();
@@ -1608,9 +1608,9 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor1,
+ final InternalReadAccessor extractor1,
final Object object1,
- final Extractor extractor2, final Object object2) {
+ final InternalReadAccessor extractor2, final Object object2) {
if (extractor1.isNullValue( workingMemory, object1 )) {
return extractor2.isNullValue( workingMemory, object2 );
} else if (extractor2.isNullValue( workingMemory, object2 )) {
@@ -1638,7 +1638,7 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor,
+ final InternalReadAccessor extractor,
final Object object1, final FieldValue object2) {
if ( extractor.isNullValue( workingMemory, object1 ) ) {
return !object2.isNull();
@@ -1672,9 +1672,9 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor1,
+ final InternalReadAccessor extractor1,
final Object object1,
- final Extractor extractor2, final Object object2) {
+ final InternalReadAccessor extractor2, final Object object2) {
if (extractor1.isNullValue( workingMemory, object1 )) {
return !extractor2.isNullValue( workingMemory, object2 );
} else if (extractor2.isNullValue( workingMemory, object2 )) {
@@ -1703,7 +1703,7 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor,
+ final InternalReadAccessor extractor,
final Object object1, final FieldValue object2) {
final Object value1 = extractor.getValue( workingMemory, object1 );
final Object value2 = object2.getValue();
@@ -1741,9 +1741,9 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor1,
+ final InternalReadAccessor extractor1,
final Object object1,
- final Extractor extractor2, final Object object2) {
+ final InternalReadAccessor extractor2, final Object object2) {
final Object value1 = extractor1.getValue( workingMemory, object1 );
final Object value2 = extractor2.getValue( workingMemory, object2 );
if ( value1 == null ) {
@@ -1775,7 +1775,7 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor,
+ final InternalReadAccessor extractor,
final Object object1, final FieldValue object2) {
final Object value1 = extractor.getValue( workingMemory, object1 );
final Object value2 = object2.getValue();
@@ -1813,9 +1813,9 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor1,
+ final InternalReadAccessor extractor1,
final Object object1,
- final Extractor extractor2, final Object object2) {
+ final InternalReadAccessor extractor2, final Object object2) {
final Object value1 = extractor1.getValue( workingMemory, object1 );
final Object value2 = extractor2.getValue( workingMemory, object2 );
if ( value1 == null ) {
@@ -1845,7 +1845,7 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor,
+ final InternalReadAccessor extractor,
final Object object1, final FieldValue object2) {
if ( extractor.isNullValue( workingMemory, object1 ) ) {
return object2.isNull();
@@ -1879,9 +1879,9 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor1,
+ final InternalReadAccessor extractor1,
final Object object1,
- final Extractor extractor2, final Object object2) {
+ final InternalReadAccessor extractor2, final Object object2) {
if (extractor1.isNullValue( workingMemory, object1 )) {
return extractor2.isNullValue( workingMemory, object2 );
} else if (extractor2.isNullValue( workingMemory, object2 )) {
@@ -1909,7 +1909,7 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor,
+ final InternalReadAccessor extractor,
final Object object1, final FieldValue object2) {
if ( extractor.isNullValue( workingMemory, object1 ) ) {
return !object2.isNull();
@@ -1943,9 +1943,9 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor1,
+ final InternalReadAccessor extractor1,
final Object object1,
- final Extractor extractor2, final Object object2) {
+ final InternalReadAccessor extractor2, final Object object2) {
if (extractor1.isNullValue( workingMemory, object1 )) {
return !extractor2.isNullValue( workingMemory, object2 );
} else if (extractor2.isNullValue( workingMemory, object2 )) {
@@ -1973,7 +1973,7 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor,
+ final InternalReadAccessor extractor,
final Object object1, final FieldValue object2) {
final Object value1 = extractor.getValue( workingMemory, object1 );
final Object value2 = object2.getValue();
@@ -2002,9 +2002,9 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor1,
+ final InternalReadAccessor extractor1,
final Object object1,
- final Extractor extractor2, final Object object2) {
+ final InternalReadAccessor extractor2, final Object object2) {
final Object value1 = extractor1.getValue( workingMemory, object1 );
final Object value2 = extractor2.getValue( workingMemory, object2 );
if ( value1 == null ) {
@@ -2032,7 +2032,7 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor,
+ final InternalReadAccessor extractor,
final Object object1, final FieldValue object2) {
final Object value1 = extractor.getValue( workingMemory, object1 );
final Object value2 = object2.getValue();
@@ -2061,9 +2061,9 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor1,
+ final InternalReadAccessor extractor1,
final Object object1,
- final Extractor extractor2, final Object object2) {
+ final InternalReadAccessor extractor2, final Object object2) {
final Object value1 = extractor1.getValue( workingMemory, object1 );
final Object value2 = extractor2.getValue( workingMemory, object2 );
if ( value1 == null ) {
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/FinishedByEvaluatorDefinition.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/FinishedByEvaluatorDefinition.java 2008-05-16 15:22:07 UTC (rev 19970)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/FinishedByEvaluatorDefinition.java 2008-05-16 18:29:20 UTC (rev 19971)
@@ -33,7 +33,7 @@
import org.drools.rule.VariableRestriction.ObjectVariableContextEntry;
import org.drools.rule.VariableRestriction.VariableContextEntry;
import org.drools.spi.Evaluator;
-import org.drools.spi.Extractor;
+import org.drools.spi.InternalReadAccessor;
import org.drools.spi.FieldValue;
/**
@@ -177,7 +177,7 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor,
+ final InternalReadAccessor extractor,
final Object object1,
final FieldValue object2) {
throw new RuntimeDroolsException( "The 'finishedby' operator can only be used to compare one event to another, and never to compare to literal constraints." );
@@ -210,9 +210,9 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor1,
+ final InternalReadAccessor extractor1,
final Object object1,
- final Extractor extractor2,
+ final InternalReadAccessor extractor2,
final Object object2) {
if ( extractor1.isNullValue( workingMemory,
object1 ) ) {
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/FinishesEvaluatorDefinition.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/FinishesEvaluatorDefinition.java 2008-05-16 15:22:07 UTC (rev 19970)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/FinishesEvaluatorDefinition.java 2008-05-16 18:29:20 UTC (rev 19971)
@@ -33,7 +33,7 @@
import org.drools.rule.VariableRestriction.ObjectVariableContextEntry;
import org.drools.rule.VariableRestriction.VariableContextEntry;
import org.drools.spi.Evaluator;
-import org.drools.spi.Extractor;
+import org.drools.spi.InternalReadAccessor;
import org.drools.spi.FieldValue;
/**
@@ -179,7 +179,7 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor,
+ final InternalReadAccessor extractor,
final Object object1,
final FieldValue object2) {
throw new RuntimeDroolsException( "The 'finishes' operator can only be used to compare one event to another, and never to compare to literal constraints." );
@@ -212,9 +212,9 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor1,
+ final InternalReadAccessor extractor1,
final Object object1,
- final Extractor extractor2,
+ final InternalReadAccessor extractor2,
final Object object2) {
if ( extractor1.isNullValue( workingMemory,
object1 ) ) {
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/IncludesEvaluatorDefinition.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/IncludesEvaluatorDefinition.java 2008-05-16 15:22:07 UTC (rev 19970)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/IncludesEvaluatorDefinition.java 2008-05-16 18:29:20 UTC (rev 19971)
@@ -33,7 +33,7 @@
import org.drools.rule.VariableRestriction.ObjectVariableContextEntry;
import org.drools.rule.VariableRestriction.VariableContextEntry;
import org.drools.spi.Evaluator;
-import org.drools.spi.Extractor;
+import org.drools.spi.InternalReadAccessor;
import org.drools.spi.FieldValue;
/**
@@ -179,7 +179,7 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor,
+ final InternalReadAccessor extractor,
final Object object1,
final FieldValue object2) {
throw new RuntimeDroolsException( "The 'includes' operator can only be used to compare one event to another, and never to compare to literal constraints." );
@@ -212,9 +212,9 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor1,
+ final InternalReadAccessor extractor1,
final Object object1,
- final Extractor extractor2,
+ final InternalReadAccessor extractor2,
final Object object2) {
if ( extractor1.isNullValue( workingMemory,
object1 ) ) {
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/MatchesEvaluatorsDefinition.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/MatchesEvaluatorsDefinition.java 2008-05-16 15:22:07 UTC (rev 19970)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/MatchesEvaluatorsDefinition.java 2008-05-16 18:29:20 UTC (rev 19971)
@@ -23,7 +23,7 @@
import org.drools.rule.VariableRestriction.ObjectVariableContextEntry;
import org.drools.rule.VariableRestriction.VariableContextEntry;
import org.drools.spi.Evaluator;
-import org.drools.spi.Extractor;
+import org.drools.spi.InternalReadAccessor;
import org.drools.spi.FieldValue;
import java.io.ObjectInput;
@@ -121,7 +121,7 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor,
+ final InternalReadAccessor extractor,
final Object object1, final FieldValue object2) {
final String value1 = (String) extractor.getValue( workingMemory, object1 );
final String value2 = (String) object2.getValue();
@@ -150,9 +150,9 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor1,
+ final InternalReadAccessor extractor1,
final Object object1,
- final Extractor extractor2, final Object object2) {
+ final InternalReadAccessor extractor2, final Object object2) {
final Object value1 = extractor1.getValue( workingMemory, object1 );
final Object value2 = extractor2.getValue( workingMemory, object2 );
if ( value1 == null ) {
@@ -179,7 +179,7 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor,
+ final InternalReadAccessor extractor,
final Object object1, final FieldValue object2) {
final String value1 = (String) extractor.getValue( workingMemory, object1 );
final String value2 = (String) object2.getValue();
@@ -208,9 +208,9 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor1,
+ final InternalReadAccessor extractor1,
final Object object1,
- final Extractor extractor2, final Object object2) {
+ final InternalReadAccessor extractor2, final Object object2) {
final Object value1 = extractor1.getValue( workingMemory, object1 );
final Object value2 = extractor2.getValue( workingMemory, object2 );
if ( value1 == null ) {
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/MeetsEvaluatorDefinition.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/MeetsEvaluatorDefinition.java 2008-05-16 15:22:07 UTC (rev 19970)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/MeetsEvaluatorDefinition.java 2008-05-16 18:29:20 UTC (rev 19971)
@@ -33,7 +33,7 @@
import org.drools.rule.VariableRestriction.ObjectVariableContextEntry;
import org.drools.rule.VariableRestriction.VariableContextEntry;
import org.drools.spi.Evaluator;
-import org.drools.spi.Extractor;
+import org.drools.spi.InternalReadAccessor;
import org.drools.spi.FieldValue;
/**
@@ -172,7 +172,7 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor,
+ final InternalReadAccessor extractor,
final Object object1,
final FieldValue object2) {
throw new RuntimeDroolsException( "The 'meets' operator can only be used to compare one event to another, and never to compare to literal constraints." );
@@ -204,9 +204,9 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor1,
+ final InternalReadAccessor extractor1,
final Object object1,
- final Extractor extractor2,
+ final InternalReadAccessor extractor2,
final Object object2) {
if ( extractor1.isNullValue( workingMemory,
object1 ) ) {
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/MetByEvaluatorDefinition.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/MetByEvaluatorDefinition.java 2008-05-16 15:22:07 UTC (rev 19970)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/MetByEvaluatorDefinition.java 2008-05-16 18:29:20 UTC (rev 19971)
@@ -33,7 +33,7 @@
import org.drools.rule.VariableRestriction.ObjectVariableContextEntry;
import org.drools.rule.VariableRestriction.VariableContextEntry;
import org.drools.spi.Evaluator;
-import org.drools.spi.Extractor;
+import org.drools.spi.InternalReadAccessor;
import org.drools.spi.FieldValue;
/**
@@ -172,7 +172,7 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor,
+ final InternalReadAccessor extractor,
final Object object1,
final FieldValue object2) {
throw new RuntimeDroolsException( "The 'metby' operator can only be used to compare one event to another, and never to compare to literal constraints." );
@@ -204,9 +204,9 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor1,
+ final InternalReadAccessor extractor1,
final Object object1,
- final Extractor extractor2,
+ final InternalReadAccessor extractor2,
final Object object2) {
if ( extractor1.isNullValue( workingMemory,
object1 ) ) {
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/OverlappedByEvaluatorDefinition.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/OverlappedByEvaluatorDefinition.java 2008-05-16 15:22:07 UTC (rev 19970)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/OverlappedByEvaluatorDefinition.java 2008-05-16 18:29:20 UTC (rev 19971)
@@ -33,7 +33,7 @@
import org.drools.rule.VariableRestriction.ObjectVariableContextEntry;
import org.drools.rule.VariableRestriction.VariableContextEntry;
import org.drools.spi.Evaluator;
-import org.drools.spi.Extractor;
+import org.drools.spi.InternalReadAccessor;
import org.drools.spi.FieldValue;
/**
@@ -179,7 +179,7 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor,
+ final InternalReadAccessor extractor,
final Object object1,
final FieldValue object2) {
throw new RuntimeDroolsException( "The 'overlappedby' operator can only be used to compare one event to another, and never to compare to literal constraints." );
@@ -215,9 +215,9 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor1,
+ final InternalReadAccessor extractor1,
final Object object1,
- final Extractor extractor2,
+ final InternalReadAccessor extractor2,
final Object object2) {
if ( extractor1.isNullValue( workingMemory,
object1 ) ) {
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/OverlapsEvaluatorDefinition.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/OverlapsEvaluatorDefinition.java 2008-05-16 15:22:07 UTC (rev 19970)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/OverlapsEvaluatorDefinition.java 2008-05-16 18:29:20 UTC (rev 19971)
@@ -33,7 +33,7 @@
import org.drools.rule.VariableRestriction.ObjectVariableContextEntry;
import org.drools.rule.VariableRestriction.VariableContextEntry;
import org.drools.spi.Evaluator;
-import org.drools.spi.Extractor;
+import org.drools.spi.InternalReadAccessor;
import org.drools.spi.FieldValue;
/**
@@ -179,7 +179,7 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor,
+ final InternalReadAccessor extractor,
final Object object1,
final FieldValue object2) {
throw new RuntimeDroolsException( "The 'overlaps' operator can only be used to compare one event to another, and never to compare to literal constraints." );
@@ -216,9 +216,9 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor1,
+ final InternalReadAccessor extractor1,
final Object object1,
- final Extractor extractor2,
+ final InternalReadAccessor extractor2,
final Object object2) {
if ( extractor1.isNullValue( workingMemory,
object1 ) ) {
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/SetEvaluatorsDefinition.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/SetEvaluatorsDefinition.java 2008-05-16 15:22:07 UTC (rev 19970)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/SetEvaluatorsDefinition.java 2008-05-16 18:29:20 UTC (rev 19971)
@@ -29,7 +29,7 @@
import org.drools.rule.VariableRestriction.ObjectVariableContextEntry;
import org.drools.rule.VariableRestriction.VariableContextEntry;
import org.drools.spi.Evaluator;
-import org.drools.spi.Extractor;
+import org.drools.spi.InternalReadAccessor;
import org.drools.spi.FieldValue;
import org.drools.util.ShadowProxyUtils;
@@ -182,7 +182,7 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor,
+ final InternalReadAccessor extractor,
final Object object1,
final FieldValue object2) {
final Object value = object2.getValue();
@@ -216,9 +216,9 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor1,
+ final InternalReadAccessor extractor1,
final Object object1,
- final Extractor extractor2,
+ final InternalReadAccessor extractor2,
final Object object2) {
final Object value = extractor2.getValue( workingMemory,
object2 );
@@ -248,7 +248,7 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor,
+ final InternalReadAccessor extractor,
final Object object1,
final FieldValue object2) {
final Object value = object2.getValue();
@@ -282,9 +282,9 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor1,
+ final InternalReadAccessor extractor1,
final Object object1,
- final Extractor extractor2,
+ final InternalReadAccessor extractor2,
final Object object2) {
final Object value = extractor2.getValue( workingMemory,
object2 );
@@ -314,7 +314,7 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor,
+ final InternalReadAccessor extractor,
final Object object1,
final FieldValue object2) {
final Object[] array = (Object[]) object2.getValue();
@@ -348,9 +348,9 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor1,
+ final InternalReadAccessor extractor1,
final Object object1,
- final Extractor extractor2,
+ final InternalReadAccessor extractor2,
final Object object2) {
final Object[] array = (Object[]) extractor2.getValue( workingMemory,
object2 );
@@ -380,7 +380,7 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor,
+ final InternalReadAccessor extractor,
final Object object1,
final FieldValue object2) {
final Object[] array = (Object[]) object2.getValue();
@@ -414,9 +414,9 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor1,
+ final InternalReadAccessor extractor1,
final Object object1,
- final Extractor extractor2,
+ final InternalReadAccessor extractor2,
final Object object2) {
final Object[] array = (Object[]) extractor2.getValue( workingMemory,
object2 );
@@ -453,7 +453,7 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor,
+ final InternalReadAccessor extractor,
final Object object1,
final FieldValue object2) {
if ( object2.isNull() ) {
@@ -501,9 +501,9 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor1,
+ final InternalReadAccessor extractor1,
final Object object1,
- final Extractor extractor2,
+ final InternalReadAccessor extractor2,
final Object object2) {
final Object object = extractor2.getValue( workingMemory,
object2 );
@@ -539,7 +539,7 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor,
+ final InternalReadAccessor extractor,
final Object object1,
final FieldValue object2) {
if ( object2.isNull() ) {
@@ -587,9 +587,9 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor1,
+ final InternalReadAccessor extractor1,
final Object object1,
- final Extractor extractor2,
+ final InternalReadAccessor extractor2,
final Object object2) {
final Object object = extractor2.getValue( workingMemory,
object2 );
@@ -923,7 +923,7 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor,
+ final InternalReadAccessor extractor,
final Object object1,
final FieldValue object2) {
final Object value = object2.getValue();
@@ -954,9 +954,9 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor1,
+ final InternalReadAccessor extractor1,
final Object object1,
- final Extractor extractor2,
+ final InternalReadAccessor extractor2,
final Object object2) {
final Object value = extractor2.getValue( workingMemory,
object2 );
@@ -984,7 +984,7 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor,
+ final InternalReadAccessor extractor,
final Object object1,
final FieldValue object2) {
final Object value = object2.getValue();
@@ -1015,9 +1015,9 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor1,
+ final InternalReadAccessor extractor1,
final Object object1,
- final Extractor extractor2,
+ final InternalReadAccessor extractor2,
final Object object2) {
final Object value = extractor2.getValue( workingMemory,
object2 );
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/SoundslikeEvaluatorsDefinition.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/SoundslikeEvaluatorsDefinition.java 2008-05-16 15:22:07 UTC (rev 19970)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/SoundslikeEvaluatorsDefinition.java 2008-05-16 18:29:20 UTC (rev 19971)
@@ -23,7 +23,7 @@
import org.drools.rule.VariableRestriction.ObjectVariableContextEntry;
import org.drools.rule.VariableRestriction.VariableContextEntry;
import org.drools.spi.Evaluator;
-import org.drools.spi.Extractor;
+import org.drools.spi.InternalReadAccessor;
import org.drools.spi.FieldValue;
import org.mvel.Soundex;
@@ -119,7 +119,7 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor,
+ final InternalReadAccessor extractor,
final Object object1, final FieldValue object2) {
final String value1 = (String) extractor.getValue( workingMemory, object1 );
final String value2 = (String) object2.getValue();
@@ -149,9 +149,9 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor1,
+ final InternalReadAccessor extractor1,
final Object object1,
- final Extractor extractor2, final Object object2) {
+ final InternalReadAccessor extractor2, final Object object2) {
final Object value1 = extractor1.getValue( workingMemory, object1 );
final Object value2 = extractor2.getValue( workingMemory, object2 );
if ( value1 == null ) {
@@ -176,7 +176,7 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor,
+ final InternalReadAccessor extractor,
final Object object1, final FieldValue object2) {
final String value1 = (String) extractor.getValue( workingMemory, object1 );
final String value2 = (String) object2.getValue();
@@ -206,9 +206,9 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor1,
+ final InternalReadAccessor extractor1,
final Object object1,
- final Extractor extractor2, final Object object2) {
+ final InternalReadAccessor extractor2, final Object object2) {
final Object value1 = extractor1.getValue( workingMemory, object1 );
final Object value2 = extractor2.getValue( workingMemory, object2 );
if ( value1 == null ) {
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/StartedByEvaluatorDefinition.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/StartedByEvaluatorDefinition.java 2008-05-16 15:22:07 UTC (rev 19970)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/StartedByEvaluatorDefinition.java 2008-05-16 18:29:20 UTC (rev 19971)
@@ -33,7 +33,7 @@
import org.drools.rule.VariableRestriction.ObjectVariableContextEntry;
import org.drools.rule.VariableRestriction.VariableContextEntry;
import org.drools.spi.Evaluator;
-import org.drools.spi.Extractor;
+import org.drools.spi.InternalReadAccessor;
import org.drools.spi.FieldValue;
/**
@@ -177,7 +177,7 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor,
+ final InternalReadAccessor extractor,
final Object object1,
final FieldValue object2) {
throw new RuntimeDroolsException( "The 'startedby' operator can only be used to compare one event to another, and never to compare to literal constraints." );
@@ -210,9 +210,9 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor1,
+ final InternalReadAccessor extractor1,
final Object object1,
- final Extractor extractor2,
+ final InternalReadAccessor extractor2,
final Object object2) {
if ( extractor1.isNullValue( workingMemory,
object1 ) ) {
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/StartsEvaluatorDefinition.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/StartsEvaluatorDefinition.java 2008-05-16 15:22:07 UTC (rev 19970)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/StartsEvaluatorDefinition.java 2008-05-16 18:29:20 UTC (rev 19971)
@@ -33,7 +33,7 @@
import org.drools.rule.VariableRestriction.ObjectVariableContextEntry;
import org.drools.rule.VariableRestriction.VariableContextEntry;
import org.drools.spi.Evaluator;
-import org.drools.spi.Extractor;
+import org.drools.spi.InternalReadAccessor;
import org.drools.spi.FieldValue;
/**
@@ -177,7 +177,7 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor,
+ final InternalReadAccessor extractor,
final Object object1,
final FieldValue object2) {
throw new RuntimeDroolsException( "The 'starts' operator can only be used to compare one event to another, and never to compare to literal constraints." );
@@ -210,9 +210,9 @@
}
public boolean evaluate(InternalWorkingMemory workingMemory,
- final Extractor extractor1,
+ final InternalReadAccessor extractor1,
final Object object1,
- final Extractor extractor2,
+ final InternalReadAccessor extractor2,
final Object object2) {
if ( extractor1.isNullValue( workingMemory,
object1 ) ) {
Copied: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/extractors/ArrayElementReader.java (from rev 19963, labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/extractors/ArrayExtractor.java)
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/extractors/ArrayElementReader.java (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/extractors/ArrayElementReader.java 2008-05-16 18:29:20 UTC (rev 19971)
@@ -0,0 +1,184 @@
+package org.drools.base.extractors;
+
+import java.lang.reflect.Method;
+import java.io.IOException;
+import java.io.ObjectOutput;
+import java.io.ObjectInput;
+
+import org.drools.base.ValueType;
+import org.drools.common.InternalWorkingMemory;
+import org.drools.spi.InternalReadAccessor;
+import org.drools.util.ClassUtils;
+
+public class ArrayElementReader implements InternalReadAccessor {
+ private InternalReadAccessor arrayExtractor;
+ private int index;
+ private Class<?> type;
+
+ public ArrayElementReader() {
+
+ }
+
+ public ArrayElementReader(InternalReadAccessor arrayExtractor, int index, Class<?> type) {
+ this.arrayExtractor = arrayExtractor;
+ this.index = index;
+ this.type = type;
+ }
+
+ public Class<?> getExtractToClass() {
+ return type;
+ }
+
+ public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
+ arrayExtractor = (InternalReadAccessor)in.readObject();
+ index = in.readInt();
+ type = (Class<?>)in.readObject();
+ }
+
+ public void writeExternal(ObjectOutput out) throws IOException {
+ out.writeObject(arrayExtractor);
+ out.writeInt(index);
+ out.writeObject(type);
+ }
+
+ public String getExtractToClassName() {
+ return ClassUtils.canonicalName( type );
+ }
+
+ public boolean getBooleanValue(InternalWorkingMemory workingMemory, Object object) {
+ Object[] array = ( Object[] ) this.arrayExtractor.getValue( workingMemory, object );
+ return ( (Boolean)array[ this.index ]).booleanValue();
+ }
+ public byte getByteValue(InternalWorkingMemory workingMemory, Object object) {
+ Object[] array = ( Object[] ) this.arrayExtractor.getValue( workingMemory, object );
+ return ( (Number)array[ this.index ]).byteValue();
+ }
+ public char getCharValue(InternalWorkingMemory workingMemory, Object object) {
+ Object[] array = ( Object[] ) this.arrayExtractor.getValue( workingMemory, object );
+ return ( (Character)array[ this.index ]).charValue();
+ }
+ public double getDoubleValue(InternalWorkingMemory workingMemory, Object object) {
+ Object[] array = ( Object[] ) this.arrayExtractor.getValue( workingMemory, object );
+ return ( (Number)array[ this.index ]).doubleValue();
+ }
+
+ public float getFloatValue(InternalWorkingMemory workingMemory, Object object) {
+ Object[] array = ( Object[] ) this.arrayExtractor.getValue( workingMemory, object );
+ return ( (Number)array[ this.index ]).floatValue();
+ }
+
+ public int getIntValue(InternalWorkingMemory workingMemory, Object object) {
+ Object[] array = ( Object[] ) this.arrayExtractor.getValue( workingMemory, object );
+ return ( (Number)array[ this.index ]).intValue();
+ }
+ public long getLongValue(InternalWorkingMemory workingMemory, Object object) {
+ Object[] array = ( Object[] ) this.arrayExtractor.getValue( workingMemory, object );
+ return ( (Number) array[ this.index ]).longValue();
+ }
+ public Method getNativeReadMethod() {
+ throw new UnsupportedOperationException("cannot call a method on an array extractor" );
+ }
+ public short getShortValue(InternalWorkingMemory workingMemory, Object object) {
+ Object[] array = ( Object[] ) this.arrayExtractor.getValue( workingMemory, object );
+ return ( (Number)array[ this.index ]).shortValue();
+ }
+ public Object getValue(InternalWorkingMemory workingMemory, Object object) {
+ Object[] array = ( Object[] ) this.arrayExtractor.getValue( workingMemory, object );
+ return array[ this.index ];
+ }
+ public ValueType getValueType() {
+ return ValueType.OBJECT_TYPE;
+ }
+ public boolean isNullValue(InternalWorkingMemory workingMemory, Object object ) {
+ Object[] array = ( Object[] ) this.arrayExtractor.getValue( workingMemory, object );
+ return array[ this.index ] == null;
+ }
+
+ public int getHashCode(InternalWorkingMemory workingMemory, Object object) {
+ Object[] array = ( Object[] ) this.arrayExtractor.getValue( workingMemory, object );
+ return array[ this.index ].hashCode();
+ }
+
+ public int hashCode() {
+ final int PRIME = 31;
+ int result = 1;
+ result = PRIME * result + ((arrayExtractor == null) ? 0 : arrayExtractor.hashCode());
+ result = PRIME * result + index;
+ return result;
+ }
+
+ public boolean equals(Object obj) {
+ if ( this == obj ) return true;
+ if ( obj == null ) return false;
+ if ( getClass() != obj.getClass() ) return false;
+ final ArrayElementReader other = (ArrayElementReader) obj;
+ if ( arrayExtractor == null ) {
+ if ( other.arrayExtractor != null ) return false;
+ } else if ( !arrayExtractor.equals( other.arrayExtractor ) ) return false;
+ if ( index != other.index ) return false;
+ return true;
+ }
+
+ public boolean isGlobal() {
+ return false;
+ }
+
+ public boolean getBooleanValue(Object object) {
+ return getBooleanValue( null,
+ object );
+ }
+
+ public byte getByteValue(Object object) {
+ return getByteValue( null,
+ object );
+ }
+
+ public char getCharValue(Object object) {
+ return getCharValue( null,
+ object );
+ }
+
+ public double getDoubleValue(Object object) {
+ return getDoubleValue( null,
+ object );
+ }
+
+ public float getFloatValue(Object object) {
+ return getFloatValue( null,
+ object );
+ }
+
+ public int getHashCode(Object object) {
+ return getHashCode( null,
+ object );
+ }
+
+ public int getIndex() {
+ return -1;
+ }
+
+ public int getIntValue(Object object) {
+ return getIntValue( null,
+ object );
+ }
+
+ public long getLongValue(Object object) {
+ return getLongValue( null,
+ object );
+ }
+
+ public short getShortValue(Object object) {
+ return getShortValue( null,
+ object );
+ }
+
+ public Object getValue(Object object) {
+ return getValue( null,
+ object );
+ }
+
+ public boolean isNullValue(Object object) {
+ return isNullValue( null,
+ object );
+ }
+}
Deleted: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/extractors/ArrayExtractor.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/extractors/ArrayExtractor.java 2008-05-16 15:22:07 UTC (rev 19970)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/extractors/ArrayExtractor.java 2008-05-16 18:29:20 UTC (rev 19971)
@@ -1,125 +0,0 @@
-package org.drools.base.extractors;
-
-import java.lang.reflect.Method;
-import java.io.IOException;
-import java.io.ObjectOutput;
-import java.io.ObjectInput;
-
-import org.drools.base.ValueType;
-import org.drools.common.InternalWorkingMemory;
-import org.drools.spi.Extractor;
-import org.drools.util.ClassUtils;
-
-public class ArrayExtractor implements Extractor {
- private Extractor arrayExtractor;
- private int index;
- private Class type;
-
- public ArrayExtractor() {
-
- }
-
- public ArrayExtractor(Extractor arrayExtractor, int index, Class type) {
- this.arrayExtractor = arrayExtractor;
- this.index = index;
- this.type = type;
- }
-
- public Class getExtractToClass() {
- return type;
- }
-
- public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
- arrayExtractor = (Extractor)in.readObject();
- index = in.readInt();
- type = (Class)in.readObject();
- }
-
- public void writeExternal(ObjectOutput out) throws IOException {
- out.writeObject(arrayExtractor);
- out.writeInt(index);
- out.writeObject(type);
- }
-
- public String getExtractToClassName() {
- return ClassUtils.canonicalName( type );
- }
-
- public boolean getBooleanValue(InternalWorkingMemory workingMemory, Object object) {
- Object[] array = ( Object[] ) this.arrayExtractor.getValue( workingMemory, object );
- return ( (Boolean)array[ this.index ]).booleanValue();
- }
- public byte getByteValue(InternalWorkingMemory workingMemory, Object object) {
- Object[] array = ( Object[] ) this.arrayExtractor.getValue( workingMemory, object );
- return ( (Number)array[ this.index ]).byteValue();
- }
- public char getCharValue(InternalWorkingMemory workingMemory, Object object) {
- Object[] array = ( Object[] ) this.arrayExtractor.getValue( workingMemory, object );
- return ( (Character)array[ this.index ]).charValue();
- }
- public double getDoubleValue(InternalWorkingMemory workingMemory, Object object) {
- Object[] array = ( Object[] ) this.arrayExtractor.getValue( workingMemory, object );
- return ( (Number)array[ this.index ]).doubleValue();
- }
-
- public float getFloatValue(InternalWorkingMemory workingMemory, Object object) {
- Object[] array = ( Object[] ) this.arrayExtractor.getValue( workingMemory, object );
- return ( (Number)array[ this.index ]).floatValue();
- }
-
- public int getIntValue(InternalWorkingMemory workingMemory, Object object) {
- Object[] array = ( Object[] ) this.arrayExtractor.getValue( workingMemory, object );
- return ( (Number)array[ this.index ]).intValue();
- }
- public long getLongValue(InternalWorkingMemory workingMemory, Object object) {
- Object[] array = ( Object[] ) this.arrayExtractor.getValue( workingMemory, object );
- return ( (Number) array[ this.index ]).longValue();
- }
- public Method getNativeReadMethod() {
- throw new UnsupportedOperationException("cannot call a method on an array extractor" );
- }
- public short getShortValue(InternalWorkingMemory workingMemory, Object object) {
- Object[] array = ( Object[] ) this.arrayExtractor.getValue( workingMemory, object );
- return ( (Number)array[ this.index ]).shortValue();
- }
- public Object getValue(InternalWorkingMemory workingMemory, Object object) {
- Object[] array = ( Object[] ) this.arrayExtractor.getValue( workingMemory, object );
- return array[ this.index ];
- }
- public ValueType getValueType() {
- return ValueType.OBJECT_TYPE;
- }
- public boolean isNullValue(InternalWorkingMemory workingMemory, Object object ) {
- Object[] array = ( Object[] ) this.arrayExtractor.getValue( workingMemory, object );
- return array[ this.index ] == null;
- }
-
- public int getHashCode(InternalWorkingMemory workingMemory, Object object) {
- Object[] array = ( Object[] ) this.arrayExtractor.getValue( workingMemory, object );
- return array[ this.index ].hashCode();
- }
-
- public int hashCode() {
- final int PRIME = 31;
- int result = 1;
- result = PRIME * result + ((arrayExtractor == null) ? 0 : arrayExtractor.hashCode());
- result = PRIME * result + index;
- return result;
- }
-
- public boolean equals(Object obj) {
- if ( this == obj ) return true;
- if ( obj == null ) return false;
- if ( getClass() != obj.getClass() ) return false;
- final ArrayExtractor other = (ArrayExtractor) obj;
- if ( arrayExtractor == null ) {
- if ( other.arrayExtractor != null ) return false;
- } else if ( !arrayExtractor.equals( other.arrayExtractor ) ) return false;
- if ( index != other.index ) return false;
- return true;
- }
-
- public boolean isGlobal() {
- return false;
- }
-}
Deleted: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/extractors/BaseBooleanClassFieldExtractor.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/extractors/BaseBooleanClassFieldExtractor.java 2008-05-16 15:22:07 UTC (rev 19970)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/extractors/BaseBooleanClassFieldExtractor.java 2008-05-16 18:29:20 UTC (rev 19971)
@@ -1,109 +0,0 @@
-/*
- * Copyright 2005 JBoss Inc
- *
- * 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.base.extractors;
-
-import java.lang.reflect.Method;
-
-import org.drools.RuntimeDroolsException;
-import org.drools.base.BaseClassFieldExtractor;
-import org.drools.base.ValueType;
-import org.drools.common.InternalWorkingMemory;
-
-/**
- * A Base class for primitive boolean class field
- * extractors. This class centralizes type conversions.
- *
- * @author etirelli
- */
-public abstract class BaseBooleanClassFieldExtractor extends BaseClassFieldExtractor {
-
- private static final long serialVersionUID = 400L;
-
- public BaseBooleanClassFieldExtractor(final Class clazz,
- final String fieldName) {
- super( clazz,
- fieldName );
- }
-
- /**
- * This constructor is not supposed to be used from outside the class hirarchy
- *
- * @param index
- * @param fieldType
- * @param valueType
- */
- protected BaseBooleanClassFieldExtractor(final int index,
- final Class fieldType,
- final ValueType valueType) {
- super( index,
- fieldType,
- valueType );
- }
-
- public Object getValue(InternalWorkingMemory workingMemory, final Object object) {
- return getBooleanValue( workingMemory, object ) ? Boolean.TRUE : Boolean.FALSE;
- }
-
- public abstract boolean getBooleanValue(InternalWorkingMemory workingMemory, Object object);
-
- public byte getByteValue(InternalWorkingMemory workingMemory, final Object object) {
- throw new RuntimeDroolsException( "Conversion to byte not supported from boolean" );
- }
-
- public char getCharValue(InternalWorkingMemory workingMemory, final Object object) {
- throw new RuntimeDroolsException( "Conversion to char not supported from boolean" );
- }
-
- public double getDoubleValue(InternalWorkingMemory workingMemory, final Object object) {
- throw new RuntimeDroolsException( "Conversion to double not supported from boolean" );
- }
-
- public float getFloatValue(InternalWorkingMemory workingMemory, final Object object) {
- throw new RuntimeDroolsException( "Conversion to float not supported from boolean" );
- }
-
- public int getIntValue(InternalWorkingMemory workingMemory, final Object object) {
- throw new RuntimeDroolsException( "Conversion to int not supported from boolean" );
- }
-
- public long getLongValue(InternalWorkingMemory workingMemory, final Object object) {
- throw new RuntimeDroolsException( "Conversion to long not supported from boolean" );
- }
-
- public short getShortValue(InternalWorkingMemory workingMemory, final Object object) {
- throw new RuntimeDroolsException( "Conversion to short not supported from boolean" );
- }
-
- public boolean isNullValue(InternalWorkingMemory workingMemory, final Object object) {
- return false;
- }
-
- public Method getNativeReadMethod() {
- try {
- return this.getClass().getDeclaredMethod( "getBooleanValue",
- new Class[]{InternalWorkingMemory.class, Object.class} );
- } catch ( final Exception e ) {
- throw new RuntimeDroolsException( "This is a bug. Please report to development team: " + e.getMessage(),
- e );
- }
- }
-
- public int getHashCode(InternalWorkingMemory workingMemory, final Object object) {
- return getBooleanValue( workingMemory, object ) ? 1231 : 1237;
- }
-
-}
Copied: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/extractors/BaseBooleanClassFieldReader.java (from rev 19963, labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/extractors/BaseBooleanClassFieldExtractor.java)
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/extractors/BaseBooleanClassFieldReader.java (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/extractors/BaseBooleanClassFieldReader.java 2008-05-16 18:29:20 UTC (rev 19971)
@@ -0,0 +1,122 @@
+/*
+ * Copyright 2005 JBoss Inc
+ *
+ * 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.base.extractors;
+
+import java.lang.reflect.Method;
+
+import org.drools.RuntimeDroolsException;
+import org.drools.base.BaseClassFieldReader;
+import org.drools.base.ValueType;
+import org.drools.common.InternalWorkingMemory;
+
+/**
+ * A Base class for primitive boolean class field
+ * extractors. This class centralizes type conversions.
+ *
+ * @author etirelli
+ */
+public abstract class BaseBooleanClassFieldReader extends BaseClassFieldReader {
+
+ private static final long serialVersionUID = 400L;
+
+ public BaseBooleanClassFieldReader(final Class< ? > clazz,
+ final String fieldName) {
+ super( clazz,
+ fieldName );
+ }
+
+ /**
+ * This constructor is not supposed to be used from outside the class hirarchy
+ *
+ * @param index
+ * @param fieldType
+ * @param valueType
+ */
+ protected BaseBooleanClassFieldReader(final int index,
+ final Class< ? > fieldType,
+ final ValueType valueType) {
+ super( index,
+ fieldType,
+ valueType );
+ }
+
+ public Object getValue(InternalWorkingMemory workingMemory,
+ final Object object) {
+ return getBooleanValue( workingMemory,
+ object ) ? Boolean.TRUE : Boolean.FALSE;
+ }
+
+ public abstract boolean getBooleanValue(InternalWorkingMemory workingMemory,
+ Object object);
+
+ public byte getByteValue(InternalWorkingMemory workingMemory,
+ final Object object) {
+ throw new RuntimeDroolsException( "Conversion to byte not supported from boolean" );
+ }
+
+ public char getCharValue(InternalWorkingMemory workingMemory,
+ final Object object) {
+ throw new RuntimeDroolsException( "Conversion to char not supported from boolean" );
+ }
+
+ public double getDoubleValue(InternalWorkingMemory workingMemory,
+ final Object object) {
+ throw new RuntimeDroolsException( "Conversion to double not supported from boolean" );
+ }
+
+ public float getFloatValue(InternalWorkingMemory workingMemory,
+ final Object object) {
+ throw new RuntimeDroolsException( "Conversion to float not supported from boolean" );
+ }
+
+ public int getIntValue(InternalWorkingMemory workingMemory,
+ final Object object) {
+ throw new RuntimeDroolsException( "Conversion to int not supported from boolean" );
+ }
+
+ public long getLongValue(InternalWorkingMemory workingMemory,
+ final Object object) {
+ throw new RuntimeDroolsException( "Conversion to long not supported from boolean" );
+ }
+
+ public short getShortValue(InternalWorkingMemory workingMemory,
+ final Object object) {
+ throw new RuntimeDroolsException( "Conversion to short not supported from boolean" );
+ }
+
+ public boolean isNullValue(InternalWorkingMemory workingMemory,
+ final Object object) {
+ return false;
+ }
+
+ public Method getNativeReadMethod() {
+ try {
+ return this.getClass().getDeclaredMethod( "getBooleanValue",
+ new Class[]{InternalWorkingMemory.class, Object.class} );
+ } catch ( final Exception e ) {
+ throw new RuntimeDroolsException( "This is a bug. Please report to development team: " + e.getMessage(),
+ e );
+ }
+ }
+
+ public int getHashCode(InternalWorkingMemory workingMemory,
+ final Object object) {
+ return getBooleanValue( workingMemory,
+ object ) ? 1231 : 1237;
+ }
+
+}
Added: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/extractors/BaseBooleanClassFieldWriter.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/extractors/BaseBooleanClassFieldWriter.java (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/extractors/BaseBooleanClassFieldWriter.java 2008-05-16 18:29:20 UTC (rev 19971)
@@ -0,0 +1,110 @@
+/*
+ * Copyright 2008 JBoss Inc
+ *
+ * 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.base.extractors;
+
+import java.lang.reflect.Method;
+
+import org.drools.RuntimeDroolsException;
+import org.drools.base.BaseClassFieldWriter;
+import org.drools.base.ValueType;
+
+/**
+ * A Base class for primitive boolean class field
+ * write accessors. This class centralizes type conversions.
+ *
+ * @author etirelli
+ */
+public abstract class BaseBooleanClassFieldWriter extends BaseClassFieldWriter {
+
+ private static final long serialVersionUID = 400L;
+
+ public BaseBooleanClassFieldWriter(final Class< ? > clazz,
+ final String fieldName) {
+ super( clazz,
+ fieldName );
+ }
+
+ /**
+ * This constructor is not supposed to be used from outside the class hierarchy
+ *
+ * @param index
+ * @param fieldType
+ * @param valueType
+ */
+ protected BaseBooleanClassFieldWriter(final int index,
+ final Class< ? > fieldType,
+ final ValueType valueType) {
+ super( index,
+ fieldType,
+ valueType );
+ }
+
+ public void setValue(final Object bean,
+ final Object value) {
+ setBooleanValue( bean,
+ value == null ? false : ((Boolean) value).booleanValue() );
+ }
+
+ public abstract void setBooleanValue(final Object bean,
+ final boolean value);
+
+ public void setByteValue(final Object bean,
+ final byte value) {
+ throw new RuntimeDroolsException( "Conversion to boolean not supported from byte" );
+ }
+
+ public void setCharValue(final Object bean,
+ final char value) {
+ throw new RuntimeDroolsException( "Conversion to boolean not supported from char" );
+ }
+
+ public void setDoubleValue(final Object bean,
+ final double value) {
+ throw new RuntimeDroolsException( "Conversion to boolean not supported from double" );
+ }
+
+ public void setFloatValue(final Object bean,
+ final float value) {
+ throw new RuntimeDroolsException( "Conversion to boolean not supported from float" );
+ }
+
+ public void setIntValue(final Object bean,
+ final int value) {
+ throw new RuntimeDroolsException( "Conversion to boolean not supported from int" );
+ }
+
+ public void setLongValue(final Object bean,
+ final long value) {
+ throw new RuntimeDroolsException( "Conversion to boolean not supported from long" );
+ }
+
+ public void setShortValue(final Object bean,
+ final short value) {
+ throw new RuntimeDroolsException( "Conversion to boolean not supported from short" );
+ }
+
+ public Method getNativeWriteMethod() {
+ try {
+ return this.getClass().getDeclaredMethod( "setBooleanValue",
+ new Class[]{Object.class, boolean.class} );
+ } catch ( final Exception e ) {
+ throw new RuntimeDroolsException( "This is a bug. Please report to development team: " + e.getMessage(),
+ e );
+ }
+ }
+
+}
Deleted: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/extractors/BaseByteClassFieldExtractor.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/extractors/BaseByteClassFieldExtractor.java 2008-05-16 15:22:07 UTC (rev 19970)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/extractors/BaseByteClassFieldExtractor.java 2008-05-16 18:29:20 UTC (rev 19971)
@@ -1,108 +0,0 @@
-/*
- * Copyright 2005 JBoss Inc
- *
- * 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.base.extractors;
-
-import java.lang.reflect.Method;
-
-import org.drools.RuntimeDroolsException;
-import org.drools.base.BaseClassFieldExtractor;
-import org.drools.base.ValueType;
-import org.drools.common.InternalWorkingMemory;
-
-/**
- * A Base class for primitive byte class field
- * extractors. This class centralizes type conversions.
- *
- * @author etirelli
- */
-public abstract class BaseByteClassFieldExtractor extends BaseClassFieldExtractor {
-
- private static final long serialVersionUID = 400L;
-
- public BaseByteClassFieldExtractor(final Class clazz,
- final String fieldName) {
- super( clazz,
- fieldName );
- }
-
- /**
- * This constructor is not supposed to be used from outside the class hirarchy
- *
- * @param index
- * @param fieldType
- * @param valueType
- */
- protected BaseByteClassFieldExtractor(final int index,
- final Class fieldType,
- final ValueType valueType) {
- super( index,
- fieldType,
- valueType );
- }
-
- public Object getValue(InternalWorkingMemory workingMemory, final Object object) {
- return new Byte( getByteValue( workingMemory, object ) );
- }
-
- public boolean getBooleanValue(InternalWorkingMemory workingMemory, final Object object) {
- throw new RuntimeDroolsException( "Conversion to boolean not supported from byte" );
- }
-
- public abstract byte getByteValue(InternalWorkingMemory workingMemory, Object object);
-
- public char getCharValue(InternalWorkingMemory workingMemory, final Object object) {
- throw new RuntimeDroolsException( "Conversion to char not supported from byte" );
- }
-
- public double getDoubleValue(InternalWorkingMemory workingMemory, final Object object) {
- return getByteValue( workingMemory, object );
- }
-
- public float getFloatValue(InternalWorkingMemory workingMemory, final Object object) {
- return getByteValue( workingMemory, object );
- }
-
- public int getIntValue(InternalWorkingMemory workingMemory, final Object object) {
- return getByteValue( workingMemory, object );
- }
-
- public long getLongValue(InternalWorkingMemory workingMemory, final Object object) {
- return getByteValue( workingMemory, object );
- }
-
- public short getShortValue(InternalWorkingMemory workingMemory, final Object object) {
- return getByteValue( workingMemory, object );
- }
-
- public boolean isNullValue(InternalWorkingMemory workingMemory, final Object object) {
- return false;
- }
-
- public Method getNativeReadMethod() {
- try {
- return this.getClass().getDeclaredMethod( "getByteValue",
- new Class[]{InternalWorkingMemory.class, Object.class} );
- } catch ( final Exception e ) {
- throw new RuntimeDroolsException( "This is a bug. Please report to development team: " + e.getMessage(),
- e );
- }
- }
-
- public int getHashCode(InternalWorkingMemory workingMemory, final Object object) {
- return getByteValue( workingMemory, object );
- }
-}
Copied: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/extractors/BaseByteClassFieldReader.java (from rev 19963, labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/extractors/BaseByteClassFieldExtractor.java)
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/extractors/BaseByteClassFieldReader.java (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/extractors/BaseByteClassFieldReader.java 2008-05-16 18:29:20 UTC (rev 19971)
@@ -0,0 +1,108 @@
+/*
+ * Copyright 2005 JBoss Inc
+ *
+ * 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.base.extractors;
+
+import java.lang.reflect.Method;
+
+import org.drools.RuntimeDroolsException;
+import org.drools.base.BaseClassFieldReader;
+import org.drools.base.ValueType;
+import org.drools.common.InternalWorkingMemory;
+
+/**
+ * A Base class for primitive byte class field
+ * extractors. This class centralizes type conversions.
+ *
+ * @author etirelli
+ */
+public abstract class BaseByteClassFieldReader extends BaseClassFieldReader {
+
+ private static final long serialVersionUID = 400L;
+
+ public BaseByteClassFieldReader(final Class clazz,
+ final String fieldName) {
+ super( clazz,
+ fieldName );
+ }
+
+ /**
+ * This constructor is not supposed to be used from outside the class hirarchy
+ *
+ * @param index
+ * @param fieldType
+ * @param valueType
+ */
+ protected BaseByteClassFieldReader(final int index,
+ final Class fieldType,
+ final ValueType valueType) {
+ super( index,
+ fieldType,
+ valueType );
+ }
+
+ public Object getValue(InternalWorkingMemory workingMemory, final Object object) {
+ return new Byte( getByteValue( workingMemory, object ) );
+ }
+
+ public boolean getBooleanValue(InternalWorkingMemory workingMemory, final Object object) {
+ throw new RuntimeDroolsException( "Conversion to boolean not supported from byte" );
+ }
+
+ public abstract byte getByteValue(InternalWorkingMemory workingMemory, Object object);
+
+ public char getCharValue(InternalWorkingMemory workingMemory, final Object object) {
+ throw new RuntimeDroolsException( "Conversion to char not supported from byte" );
+ }
+
+ public double getDoubleValue(InternalWorkingMemory workingMemory, final Object object) {
+ return getByteValue( workingMemory, object );
+ }
+
+ public float getFloatValue(InternalWorkingMemory workingMemory, final Object object) {
+ return getByteValue( workingMemory, object );
+ }
+
+ public int getIntValue(InternalWorkingMemory workingMemory, final Object object) {
+ return getByteValue( workingMemory, object );
+ }
+
+ public long getLongValue(InternalWorkingMemory workingMemory, final Object object) {
+ return getByteValue( workingMemory, object );
+ }
+
+ public short getShortValue(InternalWorkingMemory workingMemory, final Object object) {
+ return getByteValue( workingMemory, object );
+ }
+
+ public boolean isNullValue(InternalWorkingMemory workingMemory, final Object object) {
+ return false;
+ }
+
+ public Method getNativeReadMethod() {
+ try {
+ return this.getClass().getDeclaredMethod( "getByteValue",
+ new Class[]{InternalWorkingMemory.class, Object.class} );
+ } catch ( final Exception e ) {
+ throw new RuntimeDroolsException( "This is a bug. Please report to development team: " + e.getMessage(),
+ e );
+ }
+ }
+
+ public int getHashCode(InternalWorkingMemory workingMemory, final Object object) {
+ return getByteValue( workingMemory, object );
+ }
+}
Added: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/extractors/BaseByteClassFieldWriter.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/extractors/BaseByteClassFieldWriter.java (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/extractors/BaseByteClassFieldWriter.java 2008-05-16 18:29:20 UTC (rev 19971)
@@ -0,0 +1,115 @@
+/*
+ * Copyright 2005 JBoss Inc
+ *
+ * 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.base.extractors;
+
+import java.lang.reflect.Method;
+
+import org.drools.RuntimeDroolsException;
+import org.drools.base.BaseClassFieldWriter;
+import org.drools.base.ValueType;
+
+/**
+ * A Base class for primitive byte class field
+ * writer. This class centralizes type conversions.
+ *
+ * @author etirelli
+ */
+public abstract class BaseByteClassFieldWriter extends BaseClassFieldWriter {
+
+ private static final long serialVersionUID = 400L;
+
+ public BaseByteClassFieldWriter(final Class< ? > clazz,
+ final String fieldName) {
+ super( clazz,
+ fieldName );
+ }
+
+ /**
+ * This constructor is not supposed to be used from outside the class hierarchy
+ *
+ * @param index
+ * @param fieldType
+ * @param valueType
+ */
+ protected BaseByteClassFieldWriter(final int index,
+ final Class< ? > fieldType,
+ final ValueType valueType) {
+ super( index,
+ fieldType,
+ valueType );
+ }
+
+ public void setValue(final Object bean,
+ final Object value) {
+ setByteValue( bean,
+ value == null ? 0 : ((Number) value).byteValue() );
+ }
+
+ public void setBooleanValue(final Object bean,
+ final boolean value) {
+ throw new RuntimeDroolsException( "Conversion to byte not supported from boolean" );
+ }
+
+ public abstract void setByteValue(final Object bean,
+ final byte value);
+
+ public void setCharValue(final Object bean,
+ final char value) {
+ throw new RuntimeDroolsException( "Conversion to byte not supported from char" );
+ }
+
+ public void setDoubleValue(final Object bean,
+ final double value) {
+ setByteValue( bean,
+ (byte) value );
+ }
+
+ public void setFloatValue(final Object bean,
+ final float value) {
+ setByteValue( bean,
+ (byte) value );
+ }
+
+ public void setIntValue(final Object bean,
+ final int value) {
+ setByteValue( bean,
+ (byte) value );
+ }
+
+ public void setLongValue(final Object bean,
+ final long value) {
+ setByteValue( bean,
+ (byte) value );
+ }
+
+ public void setShortValue(final Object bean,
+ final short value) {
+ setByteValue( bean,
+ (byte) value );
+ }
+
+ public Method getNativeWriteMethod() {
+ try {
+ return this.getClass().getDeclaredMethod( "setByteValue",
+ new Class[]{Object.class, byte.class} );
+ } catch ( final Exception e ) {
+ throw new RuntimeDroolsException( "This is a bug. Please report to development team: " + e.getMessage(),
+ e );
+ }
+ }
+
+}
Deleted: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/extractors/BaseCharClassFieldExtractor.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/extractors/BaseCharClassFieldExtractor.java 2008-05-16 15:22:07 UTC (rev 19970)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/extractors/BaseCharClassFieldExtractor.java 2008-05-16 18:29:20 UTC (rev 19971)
@@ -1,86 +0,0 @@
-package org.drools.base.extractors;
-
-import java.lang.reflect.Method;
-
-import org.drools.RuntimeDroolsException;
-import org.drools.base.BaseClassFieldExtractor;
-import org.drools.base.ValueType;
-import org.drools.common.InternalWorkingMemory;
-
-public abstract class BaseCharClassFieldExtractor extends BaseClassFieldExtractor {
-
- private static final long serialVersionUID = 400L;
-
- public BaseCharClassFieldExtractor(final Class clazz,
- final String fieldName) {
- super( clazz,
- fieldName );
- }
-
- /**
- * This constructor is not supposed to be used from outside the class hirarchy
- *
- * @param index
- * @param fieldType
- * @param valueType
- */
- protected BaseCharClassFieldExtractor(final int index,
- final Class fieldType,
- final ValueType valueType) {
- super( index,
- fieldType,
- valueType );
- }
-
- public Object getValue(InternalWorkingMemory workingMemory, final Object object) {
- return new Character( getCharValue( workingMemory, object ) );
- }
-
- public boolean getBooleanValue(InternalWorkingMemory workingMemory, final Object object) {
- throw new RuntimeDroolsException( "Conversion to boolean not supported from char" );
- }
-
- public byte getByteValue(InternalWorkingMemory workingMemory, final Object object) {
- return (byte) getCharValue( workingMemory, object );
- }
-
- public abstract char getCharValue(InternalWorkingMemory workingMemory, Object object);
-
- public double getDoubleValue(InternalWorkingMemory workingMemory, final Object object) {
- return getCharValue( workingMemory, object );
- }
-
- public float getFloatValue(InternalWorkingMemory workingMemory, final Object object) {
- return getCharValue( workingMemory, object );
- }
-
- public int getIntValue(InternalWorkingMemory workingMemory, final Object object) {
- return getCharValue( workingMemory, object );
- }
-
- public long getLongValue(InternalWorkingMemory workingMemory, final Object object) {
- return getCharValue( workingMemory, object );
- }
-
- public short getShortValue(InternalWorkingMemory workingMemory, final Object object) {
- return (short) getCharValue( workingMemory, object );
- }
-
- public boolean isNullValue(InternalWorkingMemory workingMemory, final Object object) {
- return false;
- }
-
- public Method getNativeReadMethod() {
- try {
- return this.getClass().getDeclaredMethod( "getCharValue",
- new Class[]{InternalWorkingMemory.class, Object.class} );
- } catch ( final Exception e ) {
- throw new RuntimeDroolsException( "This is a bug. Please report to development team: " + e.getMessage(),
- e );
- }
- }
-
- public int getHashCode(InternalWorkingMemory workingMemory, final Object object) {
- return getCharValue( workingMemory, object );
- }
-}
Copied: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/extractors/BaseCharClassFieldReader.java (from rev 19963, labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/extractors/BaseCharClassFieldExtractor.java)
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/extractors/BaseCharClassFieldReader.java (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/extractors/BaseCharClassFieldReader.java 2008-05-16 18:29:20 UTC (rev 19971)
@@ -0,0 +1,86 @@
+package org.drools.base.extractors;
+
+import java.lang.reflect.Method;
+
+import org.drools.RuntimeDroolsException;
+import org.drools.base.BaseClassFieldReader;
+import org.drools.base.ValueType;
+import org.drools.common.InternalWorkingMemory;
+
+public abstract class BaseCharClassFieldReader extends BaseClassFieldReader {
+
+ private static final long serialVersionUID = 400L;
+
+ public BaseCharClassFieldReader(final Class clazz,
+ final String fieldName) {
+ super( clazz,
+ fieldName );
+ }
+
+ /**
+ * This constructor is not supposed to be used from outside the class hirarchy
+ *
+ * @param index
+ * @param fieldType
+ * @param valueType
+ */
+ protected BaseCharClassFieldReader(final int index,
+ final Class fieldType,
+ final ValueType valueType) {
+ super( index,
+ fieldType,
+ valueType );
+ }
+
+ public Object getValue(InternalWorkingMemory workingMemory, final Object object) {
+ return new Character( getCharValue( workingMemory, object ) );
+ }
+
+ public boolean getBooleanValue(InternalWorkingMemory workingMemory, final Object object) {
+ throw new RuntimeDroolsException( "Conversion to boolean not supported from char" );
+ }
+
+ public byte getByteValue(InternalWorkingMemory workingMemory, final Object object) {
+ return (byte) getCharValue( workingMemory, object );
+ }
+
+ public abstract char getCharValue(InternalWorkingMemory workingMemory, Object object);
+
+ public double getDoubleValue(InternalWorkingMemory workingMemory, final Object object) {
+ return getCharValue( workingMemory, object );
+ }
+
+ public float getFloatValue(InternalWorkingMemory workingMemory, final Object object) {
+ return getCharValue( workingMemory, object );
+ }
+
+ public int getIntValue(InternalWorkingMemory workingMemory, final Object object) {
+ return getCharValue( workingMemory, object );
+ }
+
+ public long getLongValue(InternalWorkingMemory workingMemory, final Object object) {
+ return getCharValue( workingMemory, object );
+ }
+
+ public short getShortValue(InternalWorkingMemory workingMemory, final Object object) {
+ return (short) getCharValue( workingMemory, object );
+ }
+
+ public boolean isNullValue(InternalWorkingMemory workingMemory, final Object object) {
+ return false;
+ }
+
+ public Method getNativeReadMethod() {
+ try {
+ return this.getClass().getDeclaredMethod( "getCharValue",
+ new Class[]{InternalWorkingMemory.class, Object.class} );
+ } catch ( final Exception e ) {
+ throw new RuntimeDroolsException( "This is a bug. Please report to development team: " + e.getMessage(),
+ e );
+ }
+ }
+
+ public int getHashCode(InternalWorkingMemory workingMemory, final Object object) {
+ return getCharValue( workingMemory, object );
+ }
+}
Added: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/extractors/BaseCharClassFieldWriter.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/extractors/BaseCharClassFieldWriter.java (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/extractors/BaseCharClassFieldWriter.java 2008-05-16 18:29:20 UTC (rev 19971)
@@ -0,0 +1,93 @@
+package org.drools.base.extractors;
+
+import java.lang.reflect.Method;
+
+import org.drools.RuntimeDroolsException;
+import org.drools.base.BaseClassFieldWriter;
+import org.drools.base.ValueType;
+
+public abstract class BaseCharClassFieldWriter extends BaseClassFieldWriter {
+
+ private static final long serialVersionUID = 400L;
+
+ public BaseCharClassFieldWriter(final Class< ? > clazz,
+ final String fieldName) {
+ super( clazz,
+ fieldName );
+ }
+
+ /**
+ * This constructor is not supposed to be used from outside the class hierarchy
+ *
+ * @param index
+ * @param fieldType
+ * @param valueType
+ */
+ protected BaseCharClassFieldWriter(final int index,
+ final Class< ? > fieldType,
+ final ValueType valueType) {
+ super( index,
+ fieldType,
+ valueType );
+ }
+
+ public void setValue(final Object bean,
+ final Object value) {
+ setCharValue( bean,
+ value == null ? '\0' : ((Character) value).charValue() );
+ }
+
+ public void setBooleanValue(final Object bean,
+ final boolean value) {
+ throw new RuntimeDroolsException( "Conversion to char not supported from boolean" );
+ }
+
+ public void setByteValue(final Object bean,
+ final byte value) {
+ setCharValue( bean,
+ (char) value );
+ }
+
+ public abstract void setCharValue(final Object object,
+ final char value);
+
+ public void setDoubleValue(final Object bean,
+ final double value) {
+ setCharValue( bean,
+ (char) value );
+ }
+
+ public void setFloatValue(final Object bean,
+ final float value) {
+ setCharValue( bean,
+ (char) value );
+ }
+
+ public void setIntValue(final Object bean,
+ final int value) {
+ setCharValue( bean,
+ (char) value );
+ }
+
+ public void setLongValue(final Object bean,
+ final long value) {
+ setCharValue( bean,
+ (char) value );
+ }
+
+ public void setShortValue(final Object bean,
+ final short value) {
+ setCharValue( bean,
+ (char) value );
+ }
+
+ public Method getNativeWriteMethod() {
+ try {
+ return this.getClass().getDeclaredMethod( "setCharValue",
+ new Class[]{Object.class, char.class} );
+ } catch ( final Exception e ) {
+ throw new RuntimeDroolsException( "This is a bug. Please report to development team: " + e.getMessage(),
+ e );
+ }
+ }
+}
Deleted: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/extractors/BaseDoubleClassFieldExtractor.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/extractors/BaseDoubleClassFieldExtractor.java 2008-05-16 15:22:07 UTC (rev 19970)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/extractors/BaseDoubleClassFieldExtractor.java 2008-05-16 18:29:20 UTC (rev 19971)
@@ -1,89 +0,0 @@
-package org.drools.base.extractors;
-
-import java.lang.reflect.Method;
-
-import org.drools.RuntimeDroolsException;
-import org.drools.base.BaseClassFieldExtractor;
-import org.drools.base.ValueType;
-import org.drools.common.InternalWorkingMemory;
-
-public abstract class BaseDoubleClassFieldExtractor extends BaseClassFieldExtractor {
-
- private static final long serialVersionUID = 400L;
-
- public BaseDoubleClassFieldExtractor(final Class clazz,
- final String fieldName) {
- super( clazz,
- fieldName );
- }
-
- /**
- * This constructor is not supposed to be used from outside the class hirarchy
- *
- * @param index
- * @param fieldType
- * @param valueType
- */
- protected BaseDoubleClassFieldExtractor(final int index,
- final Class fieldType,
- final ValueType valueType) {
- super( index,
- fieldType,
- valueType );
- }
-
- public Object getValue(InternalWorkingMemory workingMemory, final Object object) {
- return new Double( getDoubleValue( workingMemory, object ) );
- }
-
- public boolean getBooleanValue(InternalWorkingMemory workingMemory, final Object object) {
- throw new RuntimeDroolsException( "Conversion to boolean not supported from double" );
- }
-
- public byte getByteValue(InternalWorkingMemory workingMemory, final Object object) {
- return (byte) getDoubleValue( workingMemory, object );
-
- }
-
- public char getCharValue(InternalWorkingMemory workingMemory, final Object object) {
- throw new RuntimeDroolsException( "Conversion to char not supported from double" );
- }
-
- public abstract double getDoubleValue(InternalWorkingMemory workingMemory, Object object);
-
- public float getFloatValue(InternalWorkingMemory workingMemory, final Object object) {
- return (float) getDoubleValue( workingMemory, object );
- }
-
- public int getIntValue(InternalWorkingMemory workingMemory, final Object object) {
- return (int) getDoubleValue( workingMemory, object );
- }
-
- public long getLongValue(InternalWorkingMemory workingMemory, final Object object) {
- return (long) getDoubleValue( workingMemory, object );
- }
-
- public short getShortValue(InternalWorkingMemory workingMemory, final Object object) {
- return (short) getDoubleValue( workingMemory, object );
- }
-
- public boolean isNullValue(InternalWorkingMemory workingMemory, final Object object) {
- return false;
- }
-
- public Method getNativeReadMethod() {
- try {
- return this.getClass().getDeclaredMethod( "getDoubleValue",
- new Class[]{InternalWorkingMemory.class, Object.class} );
- } catch ( final Exception e ) {
- throw new RuntimeDroolsException( "This is a bug. Please report to development team: " + e.getMessage(),
- e );
- }
- }
-
- public int getHashCode(InternalWorkingMemory workingMemory, final Object object) {
- final long temp = Double.doubleToLongBits( getDoubleValue( workingMemory, object ) );
- return (int) (temp ^ (temp >>> 32));
- }
-
-}
Copied: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/extractors/BaseDoubleClassFieldReader.java (from rev 19963, labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/extractors/BaseDoubleClassFieldExtractor.java)
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/extractors/BaseDoubleClassFieldReader.java (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/extractors/BaseDoubleClassFieldReader.java 2008-05-16 18:29:20 UTC (rev 19971)
@@ -0,0 +1,89 @@
+package org.drools.base.extractors;
+
+import java.lang.reflect.Method;
+
+import org.drools.RuntimeDroolsException;
+import org.drools.base.BaseClassFieldReader;
+import org.drools.base.ValueType;
+import org.drools.common.InternalWorkingMemory;
+
+public abstract class BaseDoubleClassFieldReader extends BaseClassFieldReader {
+
+ private static final long serialVersionUID = 400L;
+
+ public BaseDoubleClassFieldReader(final Class clazz,
+ final String fieldName) {
+ super( clazz,
+ fieldName );
+ }
+
+ /**
+ * This constructor is not supposed to be used from outside the class hirarchy
+ *
+ * @param index
+ * @param fieldType
+ * @param valueType
+ */
+ protected BaseDoubleClassFieldReader(final int index,
+ final Class fieldType,
+ final ValueType valueType) {
+ super( index,
+ fieldType,
+ valueType );
+ }
+
+ public Object getValue(InternalWorkingMemory workingMemory, final Object object) {
+ return new Double( getDoubleValue( workingMemory, object ) );
+ }
+
+ public boolean getBooleanValue(InternalWorkingMemory workingMemory, final Object object) {
+ throw new RuntimeDroolsException( "Conversion to boolean not supported from double" );
+ }
+
+ public byte getByteValue(InternalWorkingMemory workingMemory, final Object object) {
+ return (byte) getDoubleValue( workingMemory, object );
+
+ }
+
+ public char getCharValue(InternalWorkingMemory workingMemory, final Object object) {
+ throw new RuntimeDroolsException( "Conversion to char not supported from double" );
+ }
+
+ public abstract double getDoubleValue(InternalWorkingMemory workingMemory, Object object);
+
+ public float getFloatValue(InternalWorkingMemory workingMemory, final Object object) {
+ return (float) getDoubleValue( workingMemory, object );
+ }
+
+ public int getIntValue(InternalWorkingMemory workingMemory, final Object object) {
+ return (int) getDoubleValue( workingMemory, object );
+ }
+
+ public long getLongValue(InternalWorkingMemory workingMemory, final Object object) {
+ return (long) getDoubleValue( workingMemory, object );
+ }
+
+ public short getShortValue(InternalWorkingMemory workingMemory, final Object object) {
+ return (short) getDoubleValue( workingMemory, object );
+ }
+
+ public boolean isNullValue(InternalWorkingMemory workingMemory, final Object object) {
+ return false;
+ }
+
+ public Method getNativeReadMethod() {
+ try {
+ return this.getClass().getDeclaredMethod( "getDoubleValue",
+ new Class[]{InternalWorkingMemory.class, Object.class} );
+ } catch ( final Exception e ) {
+ throw new RuntimeDroolsException( "This is a bug. Please report to development team: " + e.getMessage(),
+ e );
+ }
+ }
+
+ public int getHashCode(InternalWorkingMemory workingMemory, final Object object) {
+ final long temp = Double.doubleToLongBits( getDoubleValue( workingMemory, object ) );
+ return (int) (temp ^ (temp >>> 32));
+ }
+
+}
Added: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/extractors/BaseDoubleClassFieldWriter.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/extractors/BaseDoubleClassFieldWriter.java (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/extractors/BaseDoubleClassFieldWriter.java 2008-05-16 18:29:20 UTC (rev 19971)
@@ -0,0 +1,94 @@
+package org.drools.base.extractors;
+
+import java.lang.reflect.Method;
+
+import org.drools.RuntimeDroolsException;
+import org.drools.base.BaseClassFieldWriter;
+import org.drools.base.ValueType;
+
+public abstract class BaseDoubleClassFieldWriter extends BaseClassFieldWriter {
+
+ private static final long serialVersionUID = 400L;
+
+ public BaseDoubleClassFieldWriter(final Class< ? > clazz,
+ final String fieldName) {
+ super( clazz,
+ fieldName );
+ }
+
+ /**
+ * This constructor is not supposed to be used from outside the class hierarchy
+ *
+ * @param index
+ * @param fieldType
+ * @param valueType
+ */
+ protected BaseDoubleClassFieldWriter(final int index,
+ final Class< ? > fieldType,
+ final ValueType valueType) {
+ super( index,
+ fieldType,
+ valueType );
+ }
+
+ public void setValue(final Object bean,
+ final Object value) {
+ setDoubleValue( bean,
+ value == null ? 0 : ((Number) value).doubleValue() );
+ }
+
+ public void setBooleanValue(final Object bean,
+ final boolean value) {
+ throw new RuntimeDroolsException( "Conversion to double not supported from boolean" );
+ }
+
+ public void setByteValue(final Object bean,
+ final byte value) {
+ setDoubleValue( bean,
+ (double) value );
+
+ }
+
+ public void setCharValue(final Object bean,
+ final char value) {
+ throw new RuntimeDroolsException( "Conversion to double not supported from char" );
+ }
+
+ public abstract void setDoubleValue(final Object object,
+ final double value);
+
+ public void setFloatValue(final Object bean,
+ final float value) {
+ setDoubleValue( bean,
+ (double) value );
+ }
+
+ public void setIntValue(final Object bean,
+ final int value) {
+ setDoubleValue( bean,
+ (double) value );
+ }
+
+ public void setLongValue(final Object bean,
+ final long value) {
+ setDoubleValue( bean,
+ (double) value );
+ }
+
+ public void setShortValue(final Object bean,
+ final short value) {
+ setDoubleValue( bean,
+ (double) value );
+ }
+
+ public Method getNativeWriteMethod() {
+ try {
+ return this.getClass().getDeclaredMethod( "setDoubleValue",
+ new Class[]{Object.class, double.class} );
+ } catch ( final Exception e ) {
+ throw new RuntimeDroolsException( "This is a bug. Please report to development team: " + e.getMessage(),
+ e );
+ }
+ }
+
+}
Deleted: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/extractors/BaseFloatClassFieldExtractor.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/extractors/BaseFloatClassFieldExtractor.java 2008-05-16 15:22:07 UTC (rev 19970)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/extractors/BaseFloatClassFieldExtractor.java 2008-05-16 18:29:20 UTC (rev 19971)
@@ -1,88 +0,0 @@
-package org.drools.base.extractors;
-
-import java.lang.reflect.Method;
-
-import org.drools.RuntimeDroolsException;
-import org.drools.base.BaseClassFieldExtractor;
-import org.drools.base.ValueType;
-import org.drools.common.InternalWorkingMemory;
-
-public abstract class BaseFloatClassFieldExtractor extends BaseClassFieldExtractor {
-
- private static final long serialVersionUID = 400L;
-
- public BaseFloatClassFieldExtractor(final Class clazz,
- final String fieldName) {
- super( clazz,
- fieldName );
- }
-
- /**
- * This constructor is not supposed to be used from outside the class hirarchy
- *
- * @param index
- * @param fieldType
- * @param valueType
- */
- protected BaseFloatClassFieldExtractor(final int index,
- final Class fieldType,
- final ValueType valueType) {
- super( index,
- fieldType,
- valueType );
- }
-
- public Object getValue(InternalWorkingMemory workingMemory, final Object object) {
- return new Float( getFloatValue( workingMemory, object ) );
- }
-
- public boolean getBooleanValue(InternalWorkingMemory workingMemory, final Object object) {
- throw new RuntimeDroolsException( "Conversion to boolean not supported from float" );
- }
-
- public byte getByteValue(InternalWorkingMemory workingMemory, final Object object) {
- return (byte) getFloatValue( workingMemory, object );
-
- }
-
- public char getCharValue(InternalWorkingMemory workingMemory, final Object object) {
- throw new RuntimeDroolsException( "Conversion to char not supported from float" );
- }
-
- public double getDoubleValue(InternalWorkingMemory workingMemory, final Object object) {
- return getFloatValue( workingMemory, object );
- }
-
- public abstract float getFloatValue(InternalWorkingMemory workingMemory, Object object);
-
- public int getIntValue(InternalWorkingMemory workingMemory, final Object object) {
- return (int) getFloatValue( workingMemory, object );
- }
-
- public long getLongValue(InternalWorkingMemory workingMemory, final Object object) {
- return (long) getFloatValue( workingMemory, object );
- }
-
- public short getShortValue(InternalWorkingMemory workingMemory, final Object object) {
- return (short) getFloatValue( workingMemory, object );
- }
-
- public boolean isNullValue(InternalWorkingMemory workingMemory, final Object object) {
- return false;
- }
-
- public Method getNativeReadMethod() {
- try {
- return this.getClass().getDeclaredMethod( "getFloatValue",
- new Class[]{InternalWorkingMemory.class, Object.class} );
- } catch ( final Exception e ) {
- throw new RuntimeDroolsException( "This is a bug. Please report to development team: " + e.getMessage(),
- e );
- }
- }
-
- public int getHashCode(InternalWorkingMemory workingMemory, final Object object) {
- return Float.floatToIntBits( getFloatValue( workingMemory, object ) );
- }
-
-}
Copied: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/extractors/BaseFloatClassFieldReader.java (from rev 19963, labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/extractors/BaseFloatClassFieldExtractor.java)
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/extractors/BaseFloatClassFieldReader.java (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/extractors/BaseFloatClassFieldReader.java 2008-05-16 18:29:20 UTC (rev 19971)
@@ -0,0 +1,88 @@
+package org.drools.base.extractors;
+
+import java.lang.reflect.Method;
+
+import org.drools.RuntimeDroolsException;
+import org.drools.base.BaseClassFieldReader;
+import org.drools.base.ValueType;
+import org.drools.common.InternalWorkingMemory;
+
+public abstract class BaseFloatClassFieldReader extends BaseClassFieldReader {
+
+ private static final long serialVersionUID = 400L;
+
+ public BaseFloatClassFieldReader(final Class clazz,
+ final String fieldName) {
+ super( clazz,
+ fieldName );
+ }
+
+ /**
+ * This constructor is not supposed to be used from outside the class hirarchy
+ *
+ * @param index
+ * @param fieldType
+ * @param valueType
+ */
+ protected BaseFloatClassFieldReader(final int index,
+ final Class fieldType,
+ final ValueType valueType) {
+ super( index,
+ fieldType,
+ valueType );
+ }
+
+ public Object getValue(InternalWorkingMemory workingMemory, final Object object) {
+ return new Float( getFloatValue( workingMemory, object ) );
+ }
+
+ public boolean getBooleanValue(InternalWorkingMemory workingMemory, final Object object) {
+ throw new RuntimeDroolsException( "Conversion to boolean not supported from float" );
+ }
+
+ public byte getByteValue(InternalWorkingMemory workingMemory, final Object object) {
+ return (byte) getFloatValue( workingMemory, object );
+
+ }
+
+ public char getCharValue(InternalWorkingMemory workingMemory, final Object object) {
+ throw new RuntimeDroolsException( "Conversion to char not supported from float" );
+ }
+
+ public double getDoubleValue(InternalWorkingMemory workingMemory, final Object object) {
+ return getFloatValue( workingMemory, object );
+ }
+
+ public abstract float getFloatValue(InternalWorkingMemory workingMemory, Object object);
+
+ public int getIntValue(InternalWorkingMemory workingMemory, final Object object) {
+ return (int) getFloatValue( workingMemory, object );
+ }
+
+ public long getLongValue(InternalWorkingMemory workingMemory, final Object object) {
+ return (long) getFloatValue( workingMemory, object );
+ }
+
+ public short getShortValue(InternalWorkingMemory workingMemory, final Object object) {
+ return (short) getFloatValue( workingMemory, object );
+ }
+
+ public boolean isNullValue(InternalWorkingMemory workingMemory, final Object object) {
+ return false;
+ }
+
+ public Method getNativeReadMethod() {
+ try {
+ return this.getClass().getDeclaredMethod( "getFloatValue",
+ new Class[]{InternalWorkingMemory.class, Object.class} );
+ } catch ( final Exception e ) {
+ throw new RuntimeDroolsException( "This is a bug. Please report to development team: " + e.getMessage(),
+ e );
+ }
+ }
+
+ public int getHashCode(InternalWorkingMemory workingMemory, final Object object) {
+ return Float.floatToIntBits( getFloatValue( workingMemory, object ) );
+ }
+
+}
Added: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/extractors/BaseFloatClassFieldWriter.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/extractors/BaseFloatClassFieldWriter.java (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/extractors/BaseFloatClassFieldWriter.java 2008-05-16 18:29:20 UTC (rev 19971)
@@ -0,0 +1,93 @@
+package org.drools.base.extractors;
+
+import java.lang.reflect.Method;
+
+import org.drools.RuntimeDroolsException;
+import org.drools.base.BaseClassFieldWriter;
+import org.drools.base.ValueType;
+
+public abstract class BaseFloatClassFieldWriter extends BaseClassFieldWriter {
+
+ private static final long serialVersionUID = 400L;
+
+ public BaseFloatClassFieldWriter(final Class< ? > clazz,
+ final String fieldName) {
+ super( clazz,
+ fieldName );
+ }
+
+ /**
+ * This constructor is not supposed to be used from outside the class hirarchy
+ *
+ * @param index
+ * @param fieldType
+ * @param valueType
+ */
+ protected BaseFloatClassFieldWriter(final int index,
+ final Class< ? > fieldType,
+ final ValueType valueType) {
+ super( index,
+ fieldType,
+ valueType );
+ }
+
+ public void setValue(final Object bean,
+ final Object value) {
+ setFloatValue( bean,
+ value == null ? 0 : ((Number) value).floatValue() );
+ }
+
+ public void setBooleanValue(final Object bean,
+ final boolean value) {
+ throw new RuntimeDroolsException( "Conversion to float not supported from boolean" );
+ }
+
+ public void setByteValue(final Object bean,
+ final byte value) {
+ setFloatValue( bean,
+ (float) value );
+ }
+
+ public void setCharValue(final Object bean,
+ final char value) {
+ throw new RuntimeDroolsException( "Conversion to float not supported from char" );
+ }
+
+ public void setDoubleValue(final Object bean,
+ final double value) {
+ setFloatValue( bean,
+ (float) value );
+ }
+
+ public abstract void setFloatValue(final Object object,
+ final float value);
+
+ public void setIntValue(final Object bean,
+ final int value) {
+ setFloatValue( bean,
+ (float) value );
+ }
+
+ public void setLongValue(final Object bean,
+ final long value) {
+ setFloatValue( bean,
+ (float) value );
+ }
+
+ public void setShortValue(final Object bean,
+ final short value) {
+ setFloatValue( bean,
+ (float) value );
+ }
+
+ public Method getNativeWriteMethod() {
+ try {
+ return this.getClass().getDeclaredMethod( "setFloatValue",
+ new Class[]{Object.class, float.class} );
+ } catch ( final Exception e ) {
+ throw new RuntimeDroolsException( "This is a bug. Please report to development team: " + e.getMessage(),
+ e );
+ }
+ }
+
+}
Deleted: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/extractors/BaseIntClassFieldExtractor.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/extractors/BaseIntClassFieldExtractor.java 2008-05-16 15:22:07 UTC (rev 19970)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/extractors/BaseIntClassFieldExtractor.java 2008-05-16 18:29:20 UTC (rev 19971)
@@ -1,87 +0,0 @@
-package org.drools.base.extractors;
-
-import java.lang.reflect.Method;
-
-import org.drools.RuntimeDroolsException;
-import org.drools.base.BaseClassFieldExtractor;
-import org.drools.base.ValueType;
-import org.drools.common.InternalWorkingMemory;
-
-public abstract class BaseIntClassFieldExtractor extends BaseClassFieldExtractor {
-
- private static final long serialVersionUID = 400L;
-
- public BaseIntClassFieldExtractor(final Class clazz,
- final String fieldName) {
- super( clazz,
- fieldName );
- }
-
- /**
- * This constructor is not supposed to be used from outside the class hirarchy
- *
- * @param index
- * @param fieldType
- * @param valueType
- */
- protected BaseIntClassFieldExtractor(final int index,
- final Class fieldType,
- final ValueType valueType) {
- super( index,
- fieldType,
- valueType );
- }
-
- public Object getValue(InternalWorkingMemory workingMemory, final Object object) {
- return new Integer( getIntValue( workingMemory, object ) );
- }
-
- public boolean getBooleanValue(InternalWorkingMemory workingMemory, final Object object) {
- throw new RuntimeDroolsException( "Conversion to boolean not supported from int" );
- }
-
- public byte getByteValue(InternalWorkingMemory workingMemory, final Object object) {
- return (byte) getIntValue( workingMemory, object );
-
- }
-
- public char getCharValue(InternalWorkingMemory workingMemory, final Object object) {
- throw new RuntimeDroolsException( "Conversion to char not supported from int" );
- }
-
- public double getDoubleValue(InternalWorkingMemory workingMemory, final Object object) {
- return getIntValue( workingMemory, object );
- }
-
- public float getFloatValue(InternalWorkingMemory workingMemory, final Object object) {
- return getIntValue( workingMemory, object );
- }
-
- public abstract int getIntValue(InternalWorkingMemory workingMemory, Object object);
-
- public long getLongValue(InternalWorkingMemory workingMemory, final Object object) {
- return getIntValue( workingMemory, object );
- }
-
- public short getShortValue(InternalWorkingMemory workingMemory, final Object object) {
- return (short) getIntValue( workingMemory, object );
- }
-
- public boolean isNullValue(InternalWorkingMemory workingMemory, final Object object) {
- return false;
- }
-
- public Method getNativeReadMethod() {
- try {
- return this.getClass().getDeclaredMethod( "getIntValue",
- new Class[]{InternalWorkingMemory.class, Object.class} );
- } catch ( final Exception e ) {
- throw new RuntimeDroolsException( "This is a bug. Please report to development team: " + e.getMessage(),
- e );
- }
- }
-
- public int getHashCode(InternalWorkingMemory workingMemory, final Object object) {
- return getIntValue( workingMemory, object );
- }
-}
Copied: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/extractors/BaseIntClassFieldReader.java (from rev 19963, labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/extractors/BaseIntClassFieldExtractor.java)
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/extractors/BaseIntClassFieldReader.java (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/extractors/BaseIntClassFieldReader.java 2008-05-16 18:29:20 UTC (rev 19971)
@@ -0,0 +1,87 @@
+package org.drools.base.extractors;
+
+import java.lang.reflect.Method;
+
+import org.drools.RuntimeDroolsException;
+import org.drools.base.BaseClassFieldReader;
+import org.drools.base.ValueType;
+import org.drools.common.InternalWorkingMemory;
+
+public abstract class BaseIntClassFieldReader extends BaseClassFieldReader {
+
+ private static final long serialVersionUID = 400L;
+
+ public BaseIntClassFieldReader(final Class clazz,
+ final String fieldName) {
+ super( clazz,
+ fieldName );
+ }
+
+ /**
+ * This constructor is not supposed to be used from outside the class hirarchy
+ *
+ * @param index
+ * @param fieldType
+ * @param valueType
+ */
+ protected BaseIntClassFieldReader(final int index,
+ final Class fieldType,
+ final ValueType valueType) {
+ super( index,
+ fieldType,
+ valueType );
+ }
+
+ public Object getValue(InternalWorkingMemory workingMemory, final Object object) {
+ return new Integer( getIntValue( workingMemory, object ) );
+ }
+
+ public boolean getBooleanValue(InternalWorkingMemory workingMemory, final Object object) {
+ throw new RuntimeDroolsException( "Conversion to boolean not supported from int" );
+ }
+
+ public byte getByteValue(InternalWorkingMemory workingMemory, final Object object) {
+ return (byte) getIntValue( workingMemory, object );
+
+ }
+
+ public char getCharValue(InternalWorkingMemory workingMemory, final Object object) {
+ throw new RuntimeDroolsException( "Conversion to char not supported from int" );
+ }
+
+ public double getDoubleValue(InternalWorkingMemory workingMemory, final Object object) {
+ return getIntValue( workingMemory, object );
+ }
+
+ public float getFloatValue(InternalWorkingMemory workingMemory, final Object object) {
+ return getIntValue( workingMemory, object );
+ }
+
+ public abstract int getIntValue(InternalWorkingMemory workingMemory, Object object);
+
+ public long getLongValue(InternalWorkingMemory workingMemory, final Object object) {
+ return getIntValue( workingMemory, object );
+ }
+
+ public short getShortValue(InternalWorkingMemory workingMemory, final Object object) {
+ return (short) getIntValue( workingMemory, object );
+ }
+
+ public boolean isNullValue(InternalWorkingMemory workingMemory, final Object object) {
+ return false;
+ }
+
+ public Method getNativeReadMethod() {
+ try {
+ return this.getClass().getDeclaredMethod( "getIntValue",
+ new Class[]{InternalWorkingMemory.class, Object.class} );
+ } catch ( final Exception e ) {
+ throw new RuntimeDroolsException( "This is a bug. Please report to development team: " + e.getMessage(),
+ e );
+ }
+ }
+
+ public int getHashCode(InternalWorkingMemory workingMemory, final Object object) {
+ return getIntValue( workingMemory, object );
+ }
+}
Added: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/extractors/BaseIntClassFieldWriter.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/extractors/BaseIntClassFieldWriter.java (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/extractors/BaseIntClassFieldWriter.java 2008-05-16 18:29:20 UTC (rev 19971)
@@ -0,0 +1,94 @@
+package org.drools.base.extractors;
+
+import java.lang.reflect.Method;
+
+import org.drools.RuntimeDroolsException;
+import org.drools.base.BaseClassFieldWriter;
+import org.drools.base.ValueType;
+
+public abstract class BaseIntClassFieldWriter extends BaseClassFieldWriter {
+
+ private static final long serialVersionUID = 400L;
+
+ public BaseIntClassFieldWriter(final Class< ? > clazz,
+ final String fieldName) {
+ super( clazz,
+ fieldName );
+ }
+
+ /**
+ * This constructor is not supposed to be used from outside the class hirarchy
+ *
+ * @param index
+ * @param fieldType
+ * @param valueType
+ */
+ protected BaseIntClassFieldWriter(final int index,
+ final Class< ? > fieldType,
+ final ValueType valueType) {
+ super( index,
+ fieldType,
+ valueType );
+ }
+
+ public void setValue(final Object bean,
+ final Object value) {
+ setIntValue( bean,
+ value == null ? 0 : ((Number) value).intValue() );
+ }
+
+ public void setBooleanValue(final Object bean,
+ final boolean value) {
+ throw new RuntimeDroolsException( "Conversion to int not supported from boolean" );
+ }
+
+ public void setByteValue(final Object bean,
+ final byte value) {
+ setIntValue( bean,
+ (int) value );
+
+ }
+
+ public void setCharValue(final Object bean,
+ final char value) {
+ throw new RuntimeDroolsException( "Conversion to int not supported from char" );
+ }
+
+ public void setDoubleValue(final Object bean,
+ final double value) {
+ setIntValue( bean,
+ (int) value );
+ }
+
+ public void setFloatValue(final Object bean,
+ final float value) {
+ setIntValue( bean,
+ (int) value );
+ }
+
+ public abstract void setIntValue(final Object object,
+ final int value);
+
+ public void setLongValue(final Object bean,
+ final long value) {
+ setIntValue( bean,
+ (int) value );
+ }
+
+ public void setShortValue(final Object bean,
+ final short value) {
+ setIntValue( bean,
+ (int) value );
+ }
+
+ public Method getNativeWriteMethod() {
+ try {
+ return this.getClass().getDeclaredMethod( "setIntValue",
+ new Class[]{Object.class, int.class} );
+ } catch ( final Exception e ) {
+ throw new RuntimeDroolsException( "This is a bug. Please report to development team: " + e.getMessage(),
+ e );
+ }
+ }
+
+}
Deleted: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/extractors/BaseLongClassFieldExtractors.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/extractors/BaseLongClassFieldExtractors.java 2008-05-16 15:22:07 UTC (rev 19970)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/extractors/BaseLongClassFieldExtractors.java 2008-05-16 18:29:20 UTC (rev 19971)
@@ -1,89 +0,0 @@
-package org.drools.base.extractors;
-
-import java.lang.reflect.Method;
-
-import org.drools.RuntimeDroolsException;
-import org.drools.base.BaseClassFieldExtractor;
-import org.drools.base.ValueType;
-import org.drools.common.InternalWorkingMemory;
-
-public abstract class BaseLongClassFieldExtractors extends BaseClassFieldExtractor {
-
- private static final long serialVersionUID = 400L;
-
- public BaseLongClassFieldExtractors(final Class clazz,
- final String fieldName) {
- super( clazz,
- fieldName );
- }
-
- /**
- * This constructor is not supposed to be used from outside the class hirarchy
- *
- * @param index
- * @param fieldType
- * @param valueType
- */
- protected BaseLongClassFieldExtractors(final int index,
- final Class fieldType,
- final ValueType valueType) {
- super( index,
- fieldType,
- valueType );
- }
-
- public Object getValue(InternalWorkingMemory workingMemory, final Object object) {
- return new Long( getLongValue( workingMemory, object ) );
- }
-
- public boolean getBooleanValue(InternalWorkingMemory workingMemory, final Object object) {
- throw new RuntimeDroolsException( "Conversion to boolean not supported from long" );
- }
-
- public byte getByteValue(InternalWorkingMemory workingMemory, final Object object) {
- return (byte) getLongValue( workingMemory, object );
-
- }
-
- public char getCharValue(InternalWorkingMemory workingMemory, final Object object) {
- throw new RuntimeDroolsException( "Conversion to char not supported from long" );
- }
-
- public double getDoubleValue(InternalWorkingMemory workingMemory, final Object object) {
- return getLongValue( workingMemory, object );
- }
-
- public float getFloatValue(InternalWorkingMemory workingMemory, final Object object) {
- return getLongValue( workingMemory, object );
- }
-
- public int getIntValue(InternalWorkingMemory workingMemory, final Object object) {
- return (int) getLongValue( workingMemory, object );
- }
-
- public abstract long getLongValue(InternalWorkingMemory workingMemory, Object object);
-
- public short getShortValue(InternalWorkingMemory workingMemory, final Object object) {
- return (short) getLongValue( workingMemory, object );
- }
-
- public boolean isNullValue(InternalWorkingMemory workingMemory, final Object object) {
- return false;
- }
-
- public Method getNativeReadMethod() {
- try {
- return this.getClass().getDeclaredMethod( "getLongValue",
- new Class[]{InternalWorkingMemory.class, Object.class} );
- } catch ( final Exception e ) {
- throw new RuntimeDroolsException( "This is a bug. Please report to development team: " + e.getMessage(),
- e );
- }
- }
-
- public int getHashCode(InternalWorkingMemory workingMemory, final Object object) {
- final long temp = getLongValue( workingMemory, object );
- return (int) (temp ^ (temp >>> 32));
- }
-
-}
Copied: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/extractors/BaseLongClassFieldReader.java (from rev 19963, labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/extractors/BaseLongClassFieldExtractors.java)
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/extractors/BaseLongClassFieldReader.java (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/extractors/BaseLongClassFieldReader.java 2008-05-16 18:29:20 UTC (rev 19971)
@@ -0,0 +1,89 @@
+package org.drools.base.extractors;
+
+import java.lang.reflect.Method;
+
+import org.drools.RuntimeDroolsException;
+import org.drools.base.BaseClassFieldReader;
+import org.drools.base.ValueType;
+import org.drools.common.InternalWorkingMemory;
+
+public abstract class BaseLongClassFieldReader extends BaseClassFieldReader {
+
+ private static final long serialVersionUID = 400L;
+
+ public BaseLongClassFieldReader(final Class clazz,
+ final String fieldName) {
+ super( clazz,
+ fieldName );
+ }
+
+ /**
+ * This constructor is not supposed to be used from outside the class hirarchy
+ *
+ * @param index
+ * @param fieldType
+ * @param valueType
+ */
+ protected BaseLongClassFieldReader(final int index,
+ final Class fieldType,
+ final ValueType valueType) {
+ super( index,
+ fieldType,
+ valueType );
+ }
+
+ public Object getValue(InternalWorkingMemory workingMemory, final Object object) {
+ return new Long( getLongValue( workingMemory, object ) );
+ }
+
+ public boolean getBooleanValue(InternalWorkingMemory workingMemory, final Object object) {
+ throw new RuntimeDroolsException( "Conversion to boolean not supported from long" );
+ }
+
+ public byte getByteValue(InternalWorkingMemory workingMemory, final Object object) {
+ return (byte) getLongValue( workingMemory, object );
+
+ }
+
+ public char getCharValue(InternalWorkingMemory workingMemory, final Object object) {
+ throw new RuntimeDroolsException( "Conversion to char not supported from long" );
+ }
+
+ public double getDoubleValue(InternalWorkingMemory workingMemory, final Object object) {
+ return getLongValue( workingMemory, object );
+ }
+
+ public float getFloatValue(InternalWorkingMemory workingMemory, final Object object) {
+ return getLongValue( workingMemory, object );
+ }
+
+ public int getIntValue(InternalWorkingMemory workingMemory, final Object object) {
+ return (int) getLongValue( workingMemory, object );
+ }
+
+ public abstract long getLongValue(InternalWorkingMemory workingMemory, Object object);
+
+ public short getShortValue(InternalWorkingMemory workingMemory, final Object object) {
+ return (short) getLongValue( workingMemory, object );
+ }
+
+ public boolean isNullValue(InternalWorkingMemory workingMemory, final Object object) {
+ return false;
+ }
+
+ public Method getNativeReadMethod() {
+ try {
+ return this.getClass().getDeclaredMethod( "getLongValue",
+ new Class[]{InternalWorkingMemory.class, Object.class} );
+ } catch ( final Exception e ) {
+ throw new RuntimeDroolsException( "This is a bug. Please report to development team: " + e.getMessage(),
+ e );
+ }
+ }
+
+ public int getHashCode(InternalWorkingMemory workingMemory, final Object object) {
+ final long temp = getLongValue( workingMemory, object );
+ return (int) (temp ^ (temp >>> 32));
+ }
+
+}
Added: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/extractors/BaseLongClassFieldWriter.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/extractors/BaseLongClassFieldWriter.java (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/extractors/BaseLongClassFieldWriter.java 2008-05-16 18:29:20 UTC (rev 19971)
@@ -0,0 +1,94 @@
+package org.drools.base.extractors;
+
+import java.lang.reflect.Method;
+
+import org.drools.RuntimeDroolsException;
+import org.drools.base.BaseClassFieldWriter;
+import org.drools.base.ValueType;
+
+public abstract class BaseLongClassFieldWriter extends BaseClassFieldWriter {
+
+ private static final long serialVersionUID = 400L;
+
+ public BaseLongClassFieldWriter(final Class< ? > clazz,
+ final String fieldName) {
+ super( clazz,
+ fieldName );
+ }
+
+ /**
+ * This constructor is not supposed to be used from outside the class hirarchy
+ *
+ * @param index
+ * @param fieldType
+ * @param valueType
+ */
+ protected BaseLongClassFieldWriter(final int index,
+ final Class< ? > fieldType,
+ final ValueType valueType) {
+ super( index,
+ fieldType,
+ valueType );
+ }
+
+ public void setValue(final Object bean,
+ final Object value) {
+ setLongValue( bean,
+ value == null ? 0 : ((Number) value).longValue() );
+ }
+
+ public void setBooleanValue(final Object bean,
+ final boolean value) {
+ throw new RuntimeDroolsException( "Conversion to long not supported from boolean" );
+ }
+
+ public void setByteValue(final Object bean,
+ final byte value) {
+ setLongValue( bean,
+ (long) value );
+
+ }
+
+ public void setCharValue(final Object bean,
+ final char value) {
+ throw new RuntimeDroolsException( "Conversion to long not supported from char" );
+ }
+
+ public void setDoubleValue(final Object bean,
+ final double value) {
+ setLongValue( bean,
+ (long) value );
+ }
+
+ public void setFloatValue(final Object bean,
+ final float value) {
+ setLongValue( bean,
+ (long) value );
+ }
+
+ public void setIntValue(final Object bean,
+ final int value) {
+ setLongValue( bean,
+ (long) value );
+ }
+
+ public abstract void setLongValue(final Object object,
+ final long value);
+
+ public void setShortValue(final Object bean,
+ final short value) {
+ setLongValue( bean,
+ (long) value );
+ }
+
+ public Method getNativeWriteMethod() {
+ try {
+ return this.getClass().getDeclaredMethod( "setLongValue",
+ new Class[]{Object.class, long.class} );
+ } catch ( final Exception e ) {
+ throw new RuntimeDroolsException( "This is a bug. Please report to development team: " + e.getMessage(),
+ e );
+ }
+ }
+
+}
Deleted: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/extractors/BaseObjectClassFieldExtractor.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/extractors/BaseObjectClassFieldExtractor.java 2008-05-16 15:22:07 UTC (rev 19970)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/extractors/BaseObjectClassFieldExtractor.java 2008-05-16 18:29:20 UTC (rev 19971)
@@ -1,147 +0,0 @@
-package org.drools.base.extractors;
-
-import java.lang.reflect.Method;
-
-import org.drools.RuntimeDroolsException;
-import org.drools.base.BaseClassFieldExtractor;
-import org.drools.base.ValueType;
-import org.drools.common.InternalWorkingMemory;
-
-public abstract class BaseObjectClassFieldExtractor extends BaseClassFieldExtractor {
-
- private static final long serialVersionUID = 400L;
-
- public BaseObjectClassFieldExtractor() {
-
- }
-
- protected BaseObjectClassFieldExtractor(final int index,
- final Class fieldType,
- final ValueType valueType) {
- super( index,
- fieldType,
- valueType );
- }
-
- public BaseObjectClassFieldExtractor(final Class clazz,
- final String fieldName) {
- super( clazz,
- fieldName );
- }
-
- public abstract Object getValue(InternalWorkingMemory workingMemory, Object object);
-
- public boolean getBooleanValue(InternalWorkingMemory workingMemory, final Object object) {
- // this can be improved by generating specific
- // bytecode generation in the subclass, avoiding the if instanceof
- final Object value = getValue( workingMemory, object );
-
- if ( value instanceof Boolean ) {
- return ((Boolean) value).booleanValue();
- }
- throw new RuntimeDroolsException( "Conversion to boolean not supported from " + value.getClass().getName() );
- }
-
- public byte getByteValue(InternalWorkingMemory workingMemory, final Object object) {
- // this can be improved by generating specific
- // bytecode generation in the subclass, avoiding the if instanceof
- final Object value = getValue( workingMemory, object );
-
- if ( value instanceof Number ) {
- return ((Number) value).byteValue();
- }
- throw new RuntimeDroolsException( "Conversion to byte not supported from " + value.getClass().getName() );
- }
-
- public char getCharValue(InternalWorkingMemory workingMemory, final Object object) {
- // this can be improved by generating specific
- // bytecode generation in the subclass, avoiding the if instanceof
- final Object value = getValue( workingMemory, object );
-
- if ( value instanceof Character ) {
- return ((Character) value).charValue();
- } else if( value instanceof String && ((String)value).length() == 1 ) {
- return ((String)value).charAt( 0 );
- }
- throw new RuntimeDroolsException( "Conversion to char not supported from " + value.getClass().getName() );
- }
-
- public double getDoubleValue(InternalWorkingMemory workingMemory, final Object object) {
- // this can be improved by generating specific
- // bytecode generation in the subclass, avoiding the if instanceof
- final Object value = getValue( workingMemory, object );
-
- if ( value instanceof Number ) {
- return ((Number) value).doubleValue();
- }
- throw new RuntimeDroolsException( "Conversion to double not supported from " + value.getClass().getName() );
- }
-
- public float getFloatValue(InternalWorkingMemory workingMemory, final Object object) {
- // this can be improved by generating specific
- // bytecode generation in the subclass, avoiding the if instanceof
- final Object value = getValue( workingMemory, object );
-
- if ( value instanceof Number ) {
- return ((Number) value).floatValue();
- }
- throw new RuntimeDroolsException( "Conversion to float not supported from " + value.getClass().getName() );
- }
-
- public int getIntValue(InternalWorkingMemory workingMemory, final Object object) {
- // this can be improved by generating specific
- // bytecode generation in the subclass, avoiding the if instanceof
- final Object value = getValue( workingMemory, object );
-
- if ( value instanceof Number ) {
- return ((Number) value).intValue();
- }
- throw new RuntimeDroolsException( "Conversion to int not supported from " + value.getClass().getName() );
- }
-
- public long getLongValue(InternalWorkingMemory workingMemory, final Object object) {
- // this can be improved by generating specific
- // bytecode generation in the subclass, avoiding the if instanceof
- final Object value = getValue( workingMemory, object );
-
- if ( value instanceof Number ) {
- return ((Number) value).longValue();
- }
- throw new RuntimeDroolsException( "Conversion to long not supported from " + value.getClass().getName() );
- }
-
- public short getShortValue(InternalWorkingMemory workingMemory, final Object object) {
- // this can be improved by generating specific
- // bytecode generation in the subclass, avoiding the if instanceof
- final Object value = getValue( workingMemory, object );
-
- if ( value instanceof Number ) {
- return ((Number) value).shortValue();
- }
- throw new RuntimeDroolsException( "Conversion to short not supported from " + value.getClass().getName() );
- }
-
- public boolean isNullValue(InternalWorkingMemory workingMemory, final Object object) {
- if (object == null) {
- return true;
- } else {
- return getValue( workingMemory, object ) == null;
- }
- }
-
- public Method getNativeReadMethod() {
- try {
- return this.getClass().getDeclaredMethod( "getValue",
- new Class[]{InternalWorkingMemory.class, Object.class} );
- } catch ( final Exception e ) {
- throw new RuntimeDroolsException( "This is a bug. Please report to development team: " + e.getMessage(),
- e );
- }
- }
-
- public int getHashCode(InternalWorkingMemory workingMemory, final Object object) {
- final Object value = getValue( workingMemory, object );
- return (value != null) ? value.hashCode() : 0;
- }
-
-}
Copied: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/extractors/BaseObjectClassFieldReader.java (from rev 19963, labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/extractors/BaseObjectClassFieldExtractor.java)
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/extractors/BaseObjectClassFieldReader.java (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/extractors/BaseObjectClassFieldReader.java 2008-05-16 18:29:20 UTC (rev 19971)
@@ -0,0 +1,147 @@
+package org.drools.base.extractors;
+
+import java.lang.reflect.Method;
+
+import org.drools.RuntimeDroolsException;
+import org.drools.base.BaseClassFieldReader;
+import org.drools.base.ValueType;
+import org.drools.common.InternalWorkingMemory;
+
+public abstract class BaseObjectClassFieldReader extends BaseClassFieldReader {
+
+ private static final long serialVersionUID = 400L;
+
+ public BaseObjectClassFieldReader() {
+
+ }
+
+ protected BaseObjectClassFieldReader(final int index,
+ final Class fieldType,
+ final ValueType valueType) {
+ super( index,
+ fieldType,
+ valueType );
+ }
+
+ public BaseObjectClassFieldReader(final Class clazz,
+ final String fieldName) {
+ super( clazz,
+ fieldName );
+ }
+
+ public abstract Object getValue(InternalWorkingMemory workingMemory, Object object);
+
+ public boolean getBooleanValue(InternalWorkingMemory workingMemory, final Object object) {
+ // this can be improved by generating specific
+ // bytecode generation in the subclass, avoiding the if instanceof
+ final Object value = getValue( workingMemory, object );
+
+ if ( value instanceof Boolean ) {
+ return ((Boolean) value).booleanValue();
+ }
+ throw new RuntimeDroolsException( "Conversion to boolean not supported from " + value.getClass().getName() );
+ }
+
+ public byte getByteValue(InternalWorkingMemory workingMemory, final Object object) {
+ // this can be improved by generating specific
+ // bytecode generation in the subclass, avoiding the if instanceof
+ final Object value = getValue( workingMemory, object );
+
+ if ( value instanceof Number ) {
+ return ((Number) value).byteValue();
+ }
+ throw new RuntimeDroolsException( "Conversion to byte not supported from " + value.getClass().getName() );
+ }
+
+ public char getCharValue(InternalWorkingMemory workingMemory, final Object object) {
+ // this can be improved by generating specific
+ // bytecode generation in the subclass, avoiding the if instanceof
+ final Object value = getValue( workingMemory, object );
+
+ if ( value instanceof Character ) {
+ return ((Character) value).charValue();
+ } else if( value instanceof String && ((String)value).length() == 1 ) {
+ return ((String)value).charAt( 0 );
+ }
+ throw new RuntimeDroolsException( "Conversion to char not supported from " + value.getClass().getName() );
+ }
+
+ public double getDoubleValue(InternalWorkingMemory workingMemory, final Object object) {
+ // this can be improved by generating specific
+ // bytecode generation in the subclass, avoiding the if instanceof
+ final Object value = getValue( workingMemory, object );
+
+ if ( value instanceof Number ) {
+ return ((Number) value).doubleValue();
+ }
+ throw new RuntimeDroolsException( "Conversion to double not supported from " + value.getClass().getName() );
+ }
+
+ public float getFloatValue(InternalWorkingMemory workingMemory, final Object object) {
+ // this can be improved by generating specific
+ // bytecode generation in the subclass, avoiding the if instanceof
+ final Object value = getValue( workingMemory, object );
+
+ if ( value instanceof Number ) {
+ return ((Number) value).floatValue();
+ }
+ throw new RuntimeDroolsException( "Conversion to float not supported from " + value.getClass().getName() );
+ }
+
+ public int getIntValue(InternalWorkingMemory workingMemory, final Object object) {
+ // this can be improved by generating specific
+ // bytecode generation in the subclass, avoiding the if instanceof
+ final Object value = getValue( workingMemory, object );
+
+ if ( value instanceof Number ) {
+ return ((Number) value).intValue();
+ }
+ throw new RuntimeDroolsException( "Conversion to int not supported from " + value.getClass().getName() );
+ }
+
+ public long getLongValue(InternalWorkingMemory workingMemory, final Object object) {
+ // this can be improved by generating specific
+ // bytecode generation in the subclass, avoiding the if instanceof
+ final Object value = getValue( workingMemory, object );
+
+ if ( value instanceof Number ) {
+ return ((Number) value).longValue();
+ }
+ throw new RuntimeDroolsException( "Conversion to long not supported from " + value.getClass().getName() );
+ }
+
+ public short getShortValue(InternalWorkingMemory workingMemory, final Object object) {
+ // this can be improved by generating specific
+ // bytecode generation in the subclass, avoiding the if instanceof
+ final Object value = getValue( workingMemory, object );
+
+ if ( value instanceof Number ) {
+ return ((Number) value).shortValue();
+ }
+ throw new RuntimeDroolsException( "Conversion to short not supported from " + value.getClass().getName() );
+ }
+
+ public boolean isNullValue(InternalWorkingMemory workingMemory, final Object object) {
+ if (object == null) {
+ return true;
+ } else {
+ return getValue( workingMemory, object ) == null;
+ }
+ }
+
+ public Method getNativeReadMethod() {
+ try {
+ return this.getClass().getDeclaredMethod( "getValue",
+ new Class[]{InternalWorkingMemory.class, Object.class} );
+ } catch ( final Exception e ) {
+ throw new RuntimeDroolsException( "This is a bug. Please report to development team: " + e.getMessage(),
+ e );
+ }
+ }
+
+ public int getHashCode(InternalWorkingMemory workingMemory, final Object object) {
+ final Object value = getValue( workingMemory, object );
+ return (value != null) ? value.hashCode() : 0;
+ }
+
+}
Added: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/extractors/BaseObjectClassFieldWriter.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/extractors/BaseObjectClassFieldWriter.java (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/extractors/BaseObjectClassFieldWriter.java 2008-05-16 18:29:20 UTC (rev 19971)
@@ -0,0 +1,92 @@
+package org.drools.base.extractors;
+
+import java.lang.reflect.Method;
+
+import org.drools.RuntimeDroolsException;
+import org.drools.base.BaseClassFieldWriter;
+import org.drools.base.ValueType;
+
+public abstract class BaseObjectClassFieldWriter extends BaseClassFieldWriter {
+
+ private static final long serialVersionUID = 400L;
+
+ public BaseObjectClassFieldWriter() {
+
+ }
+
+ protected BaseObjectClassFieldWriter(final int index,
+ final Class< ? > fieldType,
+ final ValueType valueType) {
+ super( index,
+ fieldType,
+ valueType );
+ }
+
+ public BaseObjectClassFieldWriter(final Class< ? > clazz,
+ final String fieldName) {
+ super( clazz,
+ fieldName );
+ }
+
+ public abstract void setValue(final Object bean,
+ final Object value);
+
+ public void setBooleanValue(final Object bean,
+ final boolean value) {
+ setValue( bean,
+ value ? Boolean.TRUE : Boolean.FALSE );
+ }
+
+ public void setByteValue(final Object bean,
+ final byte value) {
+ setValue( bean,
+ new Byte( value ) );
+ }
+
+ public void setCharValue(final Object bean,
+ final char value) {
+ setValue( bean,
+ new Character( value ) );
+ }
+
+ public void setDoubleValue(final Object bean,
+ final double value) {
+ setValue( bean,
+ new Double( value ) );
+ }
+
+ public void setFloatValue(final Object bean,
+ final float value) {
+ setValue( bean,
+ new Float( value ) );
+ }
+
+ public void setIntValue(final Object bean,
+ final int value) {
+ setValue( bean,
+ new Integer( value ) );
+ }
+
+ public void setLongValue(final Object bean,
+ final long value) {
+ setValue( bean,
+ new Long( value ) );
+ }
+
+ public void setShortValue(final Object bean,
+ final short value) {
+ setValue( bean,
+ new Short( value ) );
+ }
+
+ public Method getNativeWriteMethod() {
+ try {
+ return this.getClass().getDeclaredMethod( "setValue",
+ new Class[]{Object.class, Object.class} );
+ } catch ( final Exception e ) {
+ throw new RuntimeDroolsException( "This is a bug. Please report to development team: " + e.getMessage(),
+ e );
+ }
+ }
+
+}
Deleted: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/extractors/BaseShortClassFieldExtractor.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/extractors/BaseShortClassFieldExtractor.java 2008-05-16 15:22:07 UTC (rev 19970)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/extractors/BaseShortClassFieldExtractor.java 2008-05-16 18:29:20 UTC (rev 19971)
@@ -1,87 +0,0 @@
-package org.drools.base.extractors;
-
-import java.lang.reflect.Method;
-
-import org.drools.RuntimeDroolsException;
-import org.drools.base.BaseClassFieldExtractor;
-import org.drools.base.ValueType;
-import org.drools.common.InternalWorkingMemory;
-
-public abstract class BaseShortClassFieldExtractor extends BaseClassFieldExtractor {
-
- private static final long serialVersionUID = 400L;
-
- public BaseShortClassFieldExtractor(final Class clazz,
- final String fieldName) {
- super( clazz,
- fieldName );
- }
-
- /**
- * This constructor is not supposed to be used from outside the class hirarchy
- *
- * @param index
- * @param fieldType
- * @param valueType
- */
- protected BaseShortClassFieldExtractor(final int index,
- final Class fieldType,
- final ValueType valueType) {
- super( index,
- fieldType,
- valueType );
- }
-
- public Object getValue(InternalWorkingMemory workingMemory, final Object object) {
- return new Short( getShortValue( workingMemory, object ) );
- }
-
- public boolean getBooleanValue(InternalWorkingMemory workingMemory, final Object object) {
- throw new RuntimeDroolsException( "Conversion to boolean not supported from short" );
- }
-
- public byte getByteValue(InternalWorkingMemory workingMemory, final Object object) {
- return (byte) getShortValue( workingMemory, object );
-
- }
-
- public char getCharValue(InternalWorkingMemory workingMemory, final Object object) {
- throw new RuntimeDroolsException( "Conversion to char not supported from short" );
- }
-
- public double getDoubleValue(InternalWorkingMemory workingMemory, final Object object) {
- return getShortValue( workingMemory, object );
- }
-
- public float getFloatValue(InternalWorkingMemory workingMemory, final Object object) {
- return getShortValue( workingMemory, object );
- }
-
- public int getIntValue(InternalWorkingMemory workingMemory, final Object object) {
- return getShortValue( workingMemory, object );
- }
-
- public long getLongValue(InternalWorkingMemory workingMemory, final Object object) {
- return getShortValue( workingMemory, object );
- }
-
- public abstract short getShortValue(InternalWorkingMemory workingMemory, Object object);
-
- public boolean isNullValue(InternalWorkingMemory workingMemory, final Object object) {
- return false;
- }
-
- public Method getNativeReadMethod() {
- try {
- return this.getClass().getDeclaredMethod( "getShortValue",
- new Class[]{InternalWorkingMemory.class, Object.class} );
- } catch ( final Exception e ) {
- throw new RuntimeDroolsException( "This is a bug. Please report to development team: " + e.getMessage(),
- e );
- }
- }
-
- public int getHashCode(InternalWorkingMemory workingMemory, final Object object) {
- return getShortValue( workingMemory, object );
- }
-}
Copied: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/extractors/BaseShortClassFieldReader.java (from rev 19963, labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/extractors/BaseShortClassFieldExtractor.java)
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/extractors/BaseShortClassFieldReader.java (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/extractors/BaseShortClassFieldReader.java 2008-05-16 18:29:20 UTC (rev 19971)
@@ -0,0 +1,87 @@
+package org.drools.base.extractors;
+
+import java.lang.reflect.Method;
+
+import org.drools.RuntimeDroolsException;
+import org.drools.base.BaseClassFieldReader;
+import org.drools.base.ValueType;
+import org.drools.common.InternalWorkingMemory;
+
+public abstract class BaseShortClassFieldReader extends BaseClassFieldReader {
+
+ private static final long serialVersionUID = 400L;
+
+ public BaseShortClassFieldReader(final Class clazz,
+ final String fieldName) {
+ super( clazz,
+ fieldName );
+ }
+
+ /**
+ * This constructor is not supposed to be used from outside the class hirarchy
+ *
+ * @param index
+ * @param fieldType
+ * @param valueType
+ */
+ protected BaseShortClassFieldReader(final int index,
+ final Class fieldType,
+ final ValueType valueType) {
+ super( index,
+ fieldType,
+ valueType );
+ }
+
+ public Object getValue(InternalWorkingMemory workingMemory, final Object object) {
+ return new Short( getShortValue( workingMemory, object ) );
+ }
+
+ public boolean getBooleanValue(InternalWorkingMemory workingMemory, final Object object) {
+ throw new RuntimeDroolsException( "Conversion to boolean not supported from short" );
+ }
+
+ public byte getByteValue(InternalWorkingMemory workingMemory, final Object object) {
+ return (byte) getShortValue( workingMemory, object );
+
+ }
+
+ public char getCharValue(InternalWorkingMemory workingMemory, final Object object) {
+ throw new RuntimeDroolsException( "Conversion to char not supported from short" );
+ }
+
+ public double getDoubleValue(InternalWorkingMemory workingMemory, final Object object) {
+ return getShortValue( workingMemory, object );
+ }
+
+ public float getFloatValue(InternalWorkingMemory workingMemory, final Object object) {
+ return getShortValue( workingMemory, object );
+ }
+
+ public int getIntValue(InternalWorkingMemory workingMemory, final Object object) {
+ return getShortValue( workingMemory, object );
+ }
+
+ public long getLongValue(InternalWorkingMemory workingMemory, final Object object) {
+ return getShortValue( workingMemory, object );
+ }
+
+ public abstract short getShortValue(InternalWorkingMemory workingMemory, Object object);
+
+ public boolean isNullValue(InternalWorkingMemory workingMemory, final Object object) {
+ return false;
+ }
+
+ public Method getNativeReadMethod() {
+ try {
+ return this.getClass().getDeclaredMethod( "getShortValue",
+ new Class[]{InternalWorkingMemory.class, Object.class} );
+ } catch ( final Exception e ) {
+ throw new RuntimeDroolsException( "This is a bug. Please report to development team: " + e.getMessage(),
+ e );
+ }
+ }
+
+ public int getHashCode(InternalWorkingMemory workingMemory, final Object object) {
+ return getShortValue( workingMemory, object );
+ }
+}
Added: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/extractors/BaseShortClassFieldWriter.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/extractors/BaseShortClassFieldWriter.java (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/extractors/BaseShortClassFieldWriter.java 2008-05-16 18:29:20 UTC (rev 19971)
@@ -0,0 +1,94 @@
+package org.drools.base.extractors;
+
+import java.lang.reflect.Method;
+
+import org.drools.RuntimeDroolsException;
+import org.drools.base.BaseClassFieldWriter;
+import org.drools.base.ValueType;
+
+public abstract class BaseShortClassFieldWriter extends BaseClassFieldWriter {
+
+ private static final long serialVersionUID = 400L;
+
+ public BaseShortClassFieldWriter(final Class< ? > clazz,
+ final String fieldName) {
+ super( clazz,
+ fieldName );
+ }
+
+ /**
+ * This constructor is not supposed to be used from outside the class hierarchy
+ *
+ * @param index
+ * @param fieldType
+ * @param valueType
+ */
+ protected BaseShortClassFieldWriter(final int index,
+ final Class< ? > fieldType,
+ final ValueType valueType) {
+ super( index,
+ fieldType,
+ valueType );
+ }
+
+ public void setValue(final Object bean,
+ final Object value) {
+ setShortValue( bean,
+ value == null ? 0 : ((Number) value).shortValue() );
+ }
+
+ public void setBooleanValue(final Object bean,
+ final boolean value) {
+ throw new RuntimeDroolsException( "Conversion to short not supported from boolean" );
+ }
+
+ public void setByteValue(final Object bean,
+ final byte value) {
+ setShortValue( bean,
+ (short) value );
+
+ }
+
+ public void setCharValue(final Object bean,
+ final char value) {
+ throw new RuntimeDroolsException( "Conversion to short not supported from char" );
+ }
+
+ public void setDoubleValue(final Object bean,
+ final double value) {
+ setShortValue( bean,
+ (short) value );
+ }
+
+ public void setFloatValue(final Object bean,
+ final float value) {
+ setShortValue( bean,
+ (short) value );
+ }
+
+ public void setIntValue(final Object bean,
+ final int value) {
+ setShortValue( bean,
+ (short) value );
+ }
+
+ public void setLongValue(final Object bean,
+ final long value) {
+ setShortValue( bean,
+ (short) value );
+ }
+
+ public abstract void setShortValue(final Object object,
+ final short value);
+
+ public Method getNativeWriteMethod() {
+ try {
+ return this.getClass().getDeclaredMethod( "setShortValue",
+ new Class[]{Object.class, short.class} );
+ } catch ( final Exception e ) {
+ throw new RuntimeDroolsException( "This is a bug. Please report to development team: " + e.getMessage(),
+ e );
+ }
+ }
+
+}
Deleted: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/extractors/MVELClassFieldExtractor.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/extractors/MVELClassFieldExtractor.java 2008-05-16 15:22:07 UTC (rev 19970)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/extractors/MVELClassFieldExtractor.java 2008-05-16 18:29:20 UTC (rev 19971)
@@ -1,99 +0,0 @@
-/*
- * Copyright 2006 JBoss Inc
- *
- * 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.
- *
- * Created on Jun 12, 2007
- */
-package org.drools.base.extractors;
-
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.Map;
-import java.util.Set;
-import java.io.ObjectInput;
-import java.io.IOException;
-import java.io.ObjectOutput;
-
-import org.drools.base.ClassFieldExtractorCache;
-import org.drools.base.ValueType;
-import org.drools.common.InternalWorkingMemory;
-import org.drools.spi.Extractor;
-import org.drools.spi.FieldExtractor;
-import org.mvel.compiler.CompiledExpression;
-import org.mvel.compiler.ExpressionCompiler;
-import org.mvel.MVEL;
-
-/**
- * A class field extractor that uses MVEL engine to extract the actual value for a given
- * expression. We use MVEL to resolve nested accessor expressions.
- *
- * @author etirelli
- */
-public class MVELClassFieldExtractor extends BaseObjectClassFieldExtractor {
-
- private static final long serialVersionUID = 400L;
-
- private CompiledExpression mvelExpression = null;
- private Map extractors = null;
-
- public MVELClassFieldExtractor() {
- }
- public MVELClassFieldExtractor(Class clazz,
- String fieldName,
- ClassLoader classLoader) {
- super( -1, // index
- Object.class, // fieldType
- ValueType.determineValueType( Object.class ) ); // value type
- this.extractors = new HashMap();
-
- ExpressionCompiler compiler = new ExpressionCompiler( fieldName );
- this.mvelExpression = compiler.compile();
-
- Set inputs = compiler.getParserContextState().getInputs().keySet();
- for( Iterator it = inputs.iterator(); it.hasNext(); ) {
- String basefield = (String) it.next();
-
- Extractor extr = ClassFieldExtractorCache.getInstance().getExtractor( clazz, basefield, classLoader );
- this.extractors.put( basefield, extr );
- }
- }
-
- public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
- super.readExternal(in);
- mvelExpression = (CompiledExpression)in.readObject();
- extractors = (Map)in.readObject();
- }
-
- public void writeExternal(ObjectOutput out) throws IOException {
- super.writeExternal(out);
- out.writeObject(mvelExpression);
- out.writeObject(extractors);
- }
-
- /* (non-Javadoc)
- * @see org.drools.base.extractors.BaseObjectClassFieldExtractor#getValue(java.lang.Object)
- */
- public Object getValue(InternalWorkingMemory workingMemory, Object object) {
- Map variables = new HashMap();
- for( Iterator it = this.extractors.entrySet().iterator(); it.hasNext(); ) {
- Map.Entry entry = (Map.Entry) it.next();
- String var = (String) entry.getKey();
- FieldExtractor extr = (FieldExtractor) entry.getValue();
-
- variables.put( var, extr.getValue( workingMemory, object ));
- }
- return MVEL.executeExpression( mvelExpression, variables );
- }
-
-}
Copied: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/extractors/MVELClassFieldReader.java (from rev 19963, labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/extractors/MVELClassFieldExtractor.java)
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/extractors/MVELClassFieldReader.java (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/extractors/MVELClassFieldReader.java 2008-05-16 18:29:20 UTC (rev 19971)
@@ -0,0 +1,98 @@
+/*
+ * Copyright 2006 JBoss Inc
+ *
+ * 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.
+ *
+ * Created on Jun 12, 2007
+ */
+package org.drools.base.extractors;
+
+import java.io.IOException;
+import java.io.ObjectInput;
+import java.io.ObjectOutput;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
+import java.util.Set;
+
+import org.drools.base.ClassFieldAccessorCache;
+import org.drools.base.ValueType;
+import org.drools.common.InternalWorkingMemory;
+import org.drools.spi.InternalReadAccessor;
+import org.mvel.MVEL;
+import org.mvel.compiler.CompiledExpression;
+import org.mvel.compiler.ExpressionCompiler;
+
+/**
+ * A class field extractor that uses MVEL engine to extract the actual value for a given
+ * expression. We use MVEL to resolve nested accessor expressions.
+ *
+ * @author etirelli
+ */
+public class MVELClassFieldReader extends BaseObjectClassFieldReader {
+
+ private static final long serialVersionUID = 400L;
+
+ private CompiledExpression mvelExpression = null;
+ private Map extractors = null;
+
+ public MVELClassFieldReader() {
+ }
+ public MVELClassFieldReader(Class clazz,
+ String fieldName,
+ ClassLoader classLoader) {
+ super( -1, // index
+ Object.class, // fieldType
+ ValueType.determineValueType( Object.class ) ); // value type
+ this.extractors = new HashMap();
+
+ ExpressionCompiler compiler = new ExpressionCompiler( fieldName );
+ this.mvelExpression = compiler.compile();
+
+ Set inputs = compiler.getParserContextState().getInputs().keySet();
+ for( Iterator it = inputs.iterator(); it.hasNext(); ) {
+ String basefield = (String) it.next();
+
+ InternalReadAccessor extr = ClassFieldAccessorCache.getInstance().getReader( clazz, basefield, classLoader );
+ this.extractors.put( basefield, extr );
+ }
+ }
+
+ public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
+ super.readExternal(in);
+ mvelExpression = (CompiledExpression)in.readObject();
+ extractors = (Map)in.readObject();
+ }
+
+ public void writeExternal(ObjectOutput out) throws IOException {
+ super.writeExternal(out);
+ out.writeObject(mvelExpression);
+ out.writeObject(extractors);
+ }
+
+ /* (non-Javadoc)
+ * @see org.drools.base.extractors.BaseObjectClassFieldExtractor#getValue(java.lang.Object)
+ */
+ public Object getValue(InternalWorkingMemory workingMemory, Object object) {
+ Map variables = new HashMap();
+ for( Iterator it = this.extractors.entrySet().iterator(); it.hasNext(); ) {
+ Map.Entry entry = (Map.Entry) it.next();
+ String var = (String) entry.getKey();
+ InternalReadAccessor extr = (InternalReadAccessor) entry.getValue();
+
+ variables.put( var, extr.getValue( workingMemory, object ));
+ }
+ return MVEL.executeExpression( mvelExpression, variables );
+ }
+
+}
Deleted: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/extractors/SelfReferenceClassFieldExtractor.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/extractors/SelfReferenceClassFieldExtractor.java 2008-05-16 15:22:07 UTC (rev 19970)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/extractors/SelfReferenceClassFieldExtractor.java 2008-05-16 18:29:20 UTC (rev 19971)
@@ -1,46 +0,0 @@
-/*
- * Copyright 2006 JBoss Inc
- *
- * 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.base.extractors;
-
-import org.drools.base.ValueType;
-import org.drools.common.InternalWorkingMemory;
-
-/**
- * A special field extractor for the self reference "this".
- *
- * @author etirelli
- */
-public class SelfReferenceClassFieldExtractor extends BaseObjectClassFieldExtractor {
-
- private static final long serialVersionUID = 400L;
-
- public SelfReferenceClassFieldExtractor(final Class clazz,
- final String fieldName) {
- super( -1, // index
- clazz, // fieldType
- ValueType.determineValueType( clazz ) ); // value type
- }
-
- public Object getValue(InternalWorkingMemory workingMemory, final Object object) {
- //return (object instanceof ShadowProxy) ? ((ShadowProxy) object).getShadowedObject() : object;
- return object;
- }
-
- public boolean isNullValue(InternalWorkingMemory workingMemory, final Object object) {
- return getValue( workingMemory, object ) == null;
- }
-}
Copied: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/extractors/SelfReferenceClassFieldReader.java (from rev 19963, labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/extractors/SelfReferenceClassFieldExtractor.java)
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/extractors/SelfReferenceClassFieldReader.java (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/extractors/SelfReferenceClassFieldReader.java 2008-05-16 18:29:20 UTC (rev 19971)
@@ -0,0 +1,46 @@
+/*
+ * Copyright 2006 JBoss Inc
+ *
+ * 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.base.extractors;
+
+import org.drools.base.ValueType;
+import org.drools.common.InternalWorkingMemory;
+
+/**
+ * A special field extractor for the self reference "this".
+ *
+ * @author etirelli
+ */
+public class SelfReferenceClassFieldReader extends BaseObjectClassFieldReader {
+
+ private static final long serialVersionUID = 400L;
+
+ public SelfReferenceClassFieldReader(final Class clazz,
+ final String fieldName) {
+ super( -1, // index
+ clazz, // fieldType
+ ValueType.determineValueType( clazz ) ); // value type
+ }
+
+ public Object getValue(InternalWorkingMemory workingMemory, final Object object) {
+ //return (object instanceof ShadowProxy) ? ((ShadowProxy) object).getShadowedObject() : object;
+ return object;
+ }
+
+ public boolean isNullValue(InternalWorkingMemory workingMemory, final Object object) {
+ return getValue( workingMemory, object ) == null;
+ }
+}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/DefaultBetaConstraints.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/DefaultBetaConstraints.java 2008-05-16 15:22:07 UTC (rev 19970)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/DefaultBetaConstraints.java 2008-05-16 18:29:20 UTC (rev 19971)
@@ -16,30 +16,30 @@
* limitations under the License.
*/
+import java.io.IOException;
+import java.io.ObjectInput;
+import java.io.ObjectOutput;
+import java.util.ArrayList;
+import java.util.List;
+
import org.drools.RuleBaseConfiguration;
import org.drools.base.evaluators.Operator;
import org.drools.reteoo.BetaMemory;
-import org.drools.reteoo.RightTupleMemory;
import org.drools.reteoo.LeftTuple;
import org.drools.reteoo.LeftTupleMemory;
+import org.drools.reteoo.RightTupleMemory;
import org.drools.rule.ContextEntry;
import org.drools.rule.VariableConstraint;
import org.drools.spi.BetaNodeFieldConstraint;
import org.drools.spi.Constraint;
-import org.drools.util.AbstractHashTable.FieldIndex;
+import org.drools.util.LeftTupleIndexHashTable;
+import org.drools.util.LeftTupleList;
+import org.drools.util.LinkedList;
+import org.drools.util.LinkedListEntry;
import org.drools.util.RightTupleIndexHashTable;
import org.drools.util.RightTupleList;
-import org.drools.util.LinkedList;
-import org.drools.util.LinkedListEntry;
-import org.drools.util.LeftTupleList;
-import org.drools.util.LeftTupleIndexHashTable;
+import org.drools.util.AbstractHashTable.FieldIndex;
-import java.io.IOException;
-import java.io.ObjectInput;
-import java.io.ObjectOutput;
-import java.util.ArrayList;
-import java.util.List;
-
public class DefaultBetaConstraints
implements
BetaConstraints {
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/DroolsObjectInput.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/DroolsObjectInput.java 2008-05-16 15:22:07 UTC (rev 19970)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/DroolsObjectInput.java 2008-05-16 18:29:20 UTC (rev 19971)
@@ -2,7 +2,7 @@
import org.drools.rule.*;
import org.drools.rule.Package;
-import org.drools.base.ClassFieldExtractorCache;
+import org.drools.base.ClassFieldAccessorCache;
import java.io.ObjectInput;
@@ -21,6 +21,6 @@
void setPackage(Package pkg);
DialectDatas getDialectDatas();
void setDialectDatas(DialectDatas dialectDatas);
- ClassFieldExtractorCache getExtractorFactory();
- void setExtractorFactory(ClassFieldExtractorCache extractorFactory);
+ ClassFieldAccessorCache getExtractorFactory();
+ void setExtractorFactory(ClassFieldAccessorCache extractorFactory);
}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/DroolsObjectInputStream.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/DroolsObjectInputStream.java 2008-05-16 15:22:07 UTC (rev 19970)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/DroolsObjectInputStream.java 2008-05-16 18:29:20 UTC (rev 19971)
@@ -22,7 +22,7 @@
import java.util.Set;
import java.util.concurrent.atomic.AtomicReferenceArray;
-import org.drools.base.ClassFieldExtractorCache;
+import org.drools.base.ClassFieldAccessorCache;
import org.drools.rule.DialectDatas;
import org.drools.rule.Package;
@@ -59,7 +59,7 @@
private InternalWorkingMemory workingMemory;
private Package pkg;
private DialectDatas dialectDatas;
- private ClassFieldExtractorCache extractorFactory;
+ private ClassFieldAccessorCache extractorFactory;
/**
* Created this inner class to handle un-Externalizable objects just in case.
@@ -109,11 +109,11 @@
DroolsObjectInputStream.this.setDialectDatas(dialectDatas);
}
- public ClassFieldExtractorCache getExtractorFactory() {
+ public ClassFieldAccessorCache getExtractorFactory() {
return DroolsObjectInputStream.this.getExtractorFactory();
}
- public void setExtractorFactory(ClassFieldExtractorCache extractorFactory) {
+ public void setExtractorFactory(ClassFieldAccessorCache extractorFactory) {
DroolsObjectInputStream.this.setExtractorFactory(extractorFactory);
}
@@ -138,7 +138,7 @@
public DroolsObjectInputStream(InputStream inputStream, ClassLoader classLoader) throws IOException {
dataInput = new DroolsInternalInputStream(inputStream, classLoader);
- extractorFactory = ClassFieldExtractorCache.getInstance();
+ extractorFactory = ClassFieldAccessorCache.getInstance();
readStreamHeader();
}
@@ -178,11 +178,11 @@
this.dialectDatas = dialectDatas;
}
- public ClassFieldExtractorCache getExtractorFactory() {
+ public ClassFieldAccessorCache getExtractorFactory() {
return extractorFactory;
}
- public void setExtractorFactory(ClassFieldExtractorCache extractorFactory) {
+ public void setExtractorFactory(ClassFieldAccessorCache extractorFactory) {
this.extractorFactory = extractorFactory;
}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/factmodel/ClassBuilder.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/factmodel/ClassBuilder.java 2008-05-16 15:22:07 UTC (rev 19970)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/factmodel/ClassBuilder.java 2008-05-16 18:29:20 UTC (rev 19971)
@@ -1,5 +1,20 @@
package org.drools.factmodel;
+/*
+ * Copyright 2008 JBoss Inc
+ *
+ * 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.
+ */
import java.beans.IntrospectionException;
import java.io.IOException;
@@ -13,23 +28,23 @@
import org.drools.asm.Type;
/**
- * <p><b>Title:</b> ClassBuilder</p>
- * <p><b>Description:</b> A builder to dinamically build simple Value Object classes</p>
- * <p><b>Copyright:</b> Copyright (c) 2005</p>
- * <p><b>Company:</b> Auster Solutions</p>
- *
+ * A builder to dynamically build simple Javabean(TM) classes
+ *
* @author etirelli
- * @version $Id: ClassBuilder.java 241 2006-05-11 19:48:25Z framos $
*/
public class ClassBuilder {
private boolean debug = false;
public ClassBuilder() {
- this.debug = "false".equalsIgnoreCase( System.getProperty( "br.com.auster.common.asm.debug" ) );
+ this( "true".equalsIgnoreCase( System.getProperty( "org.drools.classbuilder.debug" ) ) );
}
+ public ClassBuilder(final boolean debug) {
+ this.debug = debug;
+ }
+
/**
- * Dinamically builds, defines and loads a class based on the given class definition
+ * Dynamically builds, defines and loads a class based on the given class definition
*
* @param classDef the class definition object structure
*
@@ -46,18 +61,18 @@
* @throws NoSuchFieldException
* @throws InstantiationException
*/
- public Class buildAndLoadClass(ClassDefinition classDef) throws IOException,
- IntrospectionException,
- SecurityException,
- IllegalArgumentException,
- ClassNotFoundException,
- NoSuchMethodException,
- IllegalAccessException,
- InvocationTargetException,
- InstantiationException,
- NoSuchFieldException {
+ public Class< ? > buildAndLoadClass(ClassDefinition classDef) throws IOException,
+ IntrospectionException,
+ SecurityException,
+ IllegalArgumentException,
+ ClassNotFoundException,
+ NoSuchMethodException,
+ IllegalAccessException,
+ InvocationTargetException,
+ InstantiationException,
+ NoSuchFieldException {
try {
- Class clazz = Class.forName( classDef.getClassName() );
+ Class< ? > clazz = Class.forName( classDef.getClassName() );
classDef.setDefinedClass( clazz );
@@ -67,8 +82,8 @@
// class not loaded, so create and load it
byte[] serializedClazz = this.buildClass( classDef );
- Class clazz = this.loadClass( classDef.getClassName(),
- serializedClazz );
+ Class< ? > clazz = this.loadClass( classDef.getClassName(),
+ serializedClazz );
classDef.setDefinedClass( clazz );
return clazz;
@@ -76,7 +91,7 @@
}
/**
- * Dinamically builds, defines and loads a class based on the given class definition
+ * Dynamically builds, defines and loads a class based on the given class definition
*
* @param classDef the class definition object structure
*
@@ -142,7 +157,6 @@
return cw.toByteArray();
}
-
/**
* Defines the class header for the given class definition
*
@@ -724,17 +738,17 @@
}
}
- private Class loadClass(String classname,
- byte[] b) throws ClassNotFoundException,
- SecurityException,
- NoSuchMethodException,
- IllegalArgumentException,
- IllegalAccessException,
- InvocationTargetException {
+ private Class< ? > loadClass(String classname,
+ byte[] b) throws ClassNotFoundException,
+ SecurityException,
+ NoSuchMethodException,
+ IllegalArgumentException,
+ IllegalAccessException,
+ InvocationTargetException {
//override classDefine (as it is protected) and define the class.
- Class clazz = null;
+ Class< ? > clazz = null;
ClassLoader loader = ClassBuilder.class.getClassLoader();
- Class cls = Class.forName( "java.lang.ClassLoader" );
+ Class< ? > cls = Class.forName( "java.lang.ClassLoader" );
java.lang.reflect.Method method = cls.getDeclaredMethod( "defineClass",
new Class[]{String.class, byte[].class, int.class, int.class} );
@@ -742,14 +756,12 @@
method.setAccessible( true );
try {
Object[] args = new Object[]{classname, b, new Integer( 0 ), new Integer( b.length )};
- clazz = (Class) method.invoke( loader,
- args );
+ clazz = (Class< ? >) method.invoke( loader,
+ args );
} finally {
method.setAccessible( false );
}
return clazz;
}
-
-
}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/factmodel/ClassDefinition.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/factmodel/ClassDefinition.java 2008-05-16 15:22:07 UTC (rev 19970)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/factmodel/ClassDefinition.java 2008-05-16 18:29:20 UTC (rev 19971)
@@ -1,5 +1,20 @@
package org.drools.factmodel;
+/*
+ * Copyright 2008 JBoss Inc
+ *
+ * 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.
+ */
import java.beans.IntrospectionException;
import java.io.IOException;
@@ -9,20 +24,21 @@
import java.util.LinkedHashMap;
import java.util.Map;
+import org.drools.base.ClassFieldAccessor;
+import org.drools.base.ClassFieldAccessorCache;
+import org.drools.base.ClassFieldReader;
+import org.drools.base.ClassFieldWriter;
+
/**
- * <p><b>Title:</b> ClassDefinition</p>
- * <p><b>Description:</b> Declares a class to be dinamically created</p>
- * <p><b>Copyright:</b> Copyright (c) 2004-2006</p>
- * <p><b>Company:</b> Auster Solutions</p>
+ * Declares a class to be dynamically created
*
* @author etirelli
- * @version $Id: ClassDefinition.java 216 2006-03-24 19:16:31Z etirelli $
*/
public class ClassDefinition {
private String className;
private String superClass;
private String[] interfaces;
- private Class definedClass;
+ private Class< ? > definedClass;
private Map<String, FieldDefinition> fields = new LinkedHashMap<String, FieldDefinition>();
@@ -86,7 +102,7 @@
/**
* @return Returns the className.
*/
- public final Class getDefinedClass() {
+ public final Class< ? > getDefinedClass() {
return definedClass;
}
@@ -103,16 +119,16 @@
* @throws IllegalArgumentException
* @throws SecurityException
*/
- final void setDefinedClass(final Class definedClass) throws IntrospectionException,
- SecurityException,
- IllegalArgumentException,
- InstantiationException,
- IllegalAccessException,
- IOException,
- ClassNotFoundException,
- NoSuchMethodException,
- InvocationTargetException,
- NoSuchFieldException {
+ final void setDefinedClass(final Class< ? > definedClass) throws IntrospectionException,
+ SecurityException,
+ IllegalArgumentException,
+ InstantiationException,
+ IllegalAccessException,
+ IOException,
+ ClassNotFoundException,
+ NoSuchMethodException,
+ InvocationTargetException,
+ NoSuchFieldException {
this.definedClass = definedClass;
@@ -171,11 +187,12 @@
NoSuchMethodException,
InvocationTargetException,
NoSuchFieldException {
- FieldAccessorBuilder builder = new FieldAccessorBuilder();
+ ClassFieldAccessorCache cache = ClassFieldAccessorCache.getInstance();
for ( FieldDefinition attrDef : this.fields.values() ) {
- FieldAccessor accessor = (FieldAccessor) builder.buildAndLoadFieldAccessor( this.getDefinedClass(),
- attrDef.getName() ).newInstance();
+ ClassFieldReader reader = cache.getReader( this.getDefinedClass(), attrDef.getName(), this.getClass().getClassLoader() );
+ ClassFieldWriter writer = cache.getWriter( this.getDefinedClass(), attrDef.getName(), this.getClass().getClassLoader() );
+ ClassFieldAccessor accessor = new ClassFieldAccessor( reader, writer );
attrDef.setFieldAccessor( accessor );
}
}
Deleted: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/factmodel/FieldAccessor.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/factmodel/FieldAccessor.java 2008-05-16 15:22:07 UTC (rev 19970)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/factmodel/FieldAccessor.java 2008-05-16 18:29:20 UTC (rev 19971)
@@ -1,19 +0,0 @@
-package org.drools.factmodel;
-
-
-/**
- * <p><b>Title:</b> FieldAccessor</p>
- * <p><b>Description:</b> An interface for dynamic generated FieldAccessor classes </p>
- * <p><b>Copyright:</b> Copyright (c) 2004-2006</p>
- * <p><b>Company:</b> Auster Solutions</p>
- *
- * @author etirelli
- * @version $Id: FieldAccessor.java 203 2006-03-20 21:44:48Z etirelli $
- */
-public interface FieldAccessor {
-
- public void setValue(Object instance, Object value);
-
- public Object getValue(Object instance);
-
-}
Deleted: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/factmodel/FieldAccessorBuilder.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/factmodel/FieldAccessorBuilder.java 2008-05-16 15:22:07 UTC (rev 19970)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/factmodel/FieldAccessorBuilder.java 2008-05-16 18:29:20 UTC (rev 19971)
@@ -1,410 +0,0 @@
-package org.drools.factmodel;
-
-
-import java.beans.IntrospectionException;
-import java.beans.Introspector;
-import java.beans.PropertyDescriptor;
-import java.io.IOException;
-import java.lang.reflect.Field;
-import java.lang.reflect.InvocationTargetException;
-import java.util.HashMap;
-import java.util.Map;
-
-import org.drools.asm.ClassWriter;
-import org.drools.asm.Label;
-import org.drools.asm.MethodVisitor;
-import org.drools.asm.Opcodes;
-import org.drools.asm.Type;
-
-/**
- * <p><b>Title:</b> FieldAccessorBuilder</p>
- * <p><b>Description:</b> A builder for FieldAccessor instances</p>
- * <p><b>Copyright:</b> Copyright (c) 2004-2006</p>
- * <p><b>Company:</b> Auster Solutions</p>
- *
- * @author etirelli
- * @version $Id: FieldAccessorBuilder.java 241 2006-05-11 19:48:25Z framos $
- */
-public class FieldAccessorBuilder {
- private Map typeMap = null;
-
- public FieldAccessorBuilder() {
- typeMap = new HashMap();
- typeMap.put( Boolean.TYPE,
- Boolean.class );
- typeMap.put( Byte.TYPE,
- Byte.class );
- typeMap.put( Character.TYPE,
- Character.class );
- typeMap.put( Double.TYPE,
- Double.class );
- typeMap.put( Float.TYPE,
- Float.class );
- typeMap.put( Integer.TYPE,
- Integer.class );
- typeMap.put( Long.TYPE,
- Long.class );
- typeMap.put( Short.TYPE,
- Short.class );
- typeMap.put( Void.TYPE,
- Void.class );
- }
-
- public Class buildAndLoadFieldAccessor(Class clazz,
- String fieldName) throws SecurityException,
- IllegalArgumentException,
- IOException,
- IntrospectionException,
- ClassNotFoundException,
- NoSuchMethodException,
- IllegalAccessException,
- InvocationTargetException,
- NoSuchFieldException {
-
- ClassDefinition accClass = new ClassDefinition( clazz.getName() + fieldName.substring( 0,
- 1 ).toUpperCase() + fieldName.substring( 1 ) + "FA" );
- try {
- return Class.forName( accClass.getClassName() );
- } catch ( ClassNotFoundException e ) {
- byte[] serializedClazz = this.buildFieldAccessor( clazz,
- fieldName );
- Class newClazz = this.loadClass( accClass.getClassName(),
- serializedClazz );
- return newClazz;
- }
- }
-
- /**
- * Dinamically builds, defines and loads a field accessor class for the given field
- *
- * @param class the class to build the field accessor for
- * @param fieldName the name of the field to build the field accessor for
- *
- * @return the Class instance for the given class definition
- *
- * @throws IOException
- * @throws IntrospectionException
- * @throws InvocationTargetException
- * @throws IllegalAccessException
- * @throws NoSuchMethodException
- * @throws ClassNotFoundException
- * @throws IllegalArgumentException
- * @throws SecurityException
- * @throws NoSuchFieldException
- */
- public byte[] buildFieldAccessor(Class clazz,
- String fieldName) throws IOException,
- IntrospectionException,
- SecurityException,
- IllegalArgumentException,
- ClassNotFoundException,
- NoSuchMethodException,
- IllegalAccessException,
- InvocationTargetException,
- NoSuchFieldException {
-
- ClassDefinition accClass = new ClassDefinition( clazz.getName() + fieldName.substring( 0,
- 1 ).toUpperCase() + fieldName.substring( 1 ) + "FA" );
- accClass.setInterfaces( new String[]{FieldAccessor.class.getName()} );
- accClass.setSuperClass( Object.class.getName() );
-
- PropertyDescriptor field = getPropertyDescriptor( clazz,
- fieldName );
-
- ClassWriter cw = new ClassWriter( true );
-
- this.buildClassHeader( cw,
- accClass );
-
- // Building default constructor
- this.buildDefaultConstructor( cw );
-
- // Building methods
- this.buildGetMethod( cw,
- accClass,
- clazz,
- field );
- this.buildSetMethod( cw,
- accClass,
- clazz,
- field );
-
- cw.visitEnd();
-
- return cw.toByteArray();
- }
-
- /**
- * @param clazz
- * @param fieldName
- * @param field
- * @return
- * @throws IntrospectionException
- * @throws NoSuchFieldException
- */
- private PropertyDescriptor getPropertyDescriptor(Class clazz,
- String fieldName) throws IntrospectionException,
- NoSuchFieldException {
- PropertyDescriptor field = null;
- PropertyDescriptor[] propDescr = Introspector.getBeanInfo( clazz ).getPropertyDescriptors();
- for ( int i = 0; i < propDescr.length; i++ ) {
- if ( fieldName.equals( propDescr[i].getName() ) ) {
- field = propDescr[i];
- break;
- }
- }
- if ( field == null ) {
- throw new NoSuchFieldException( "Field [" + fieldName + "] not found in class [" + clazz.getName() + "]" );
- }
- return field;
- }
-
- /**
- * Defines the class header for the given class definition
- *
- * @param cw
- * @param dimDef
- */
- private void buildClassHeader(ClassWriter cw,
- ClassDefinition classDef) {
- // Building class header
- cw.visit( Opcodes.V1_4,
- Opcodes.ACC_PUBLIC + Opcodes.ACC_SUPER,
- classDef.getClassNameAsInternal(),
- null,
- classDef.getSuperClassAsInternal(),
- classDef.getInterfacesAsInternal() );
-
- cw.visitSource( classDef.getClassName() + ".java",
- null );
- }
-
- /**
- * Creates the get method for the given field definition
- *
- * @param cw
- * @param classDef
- * @param fieldDef
- */
- private void buildGetMethod(ClassWriter cw,
- ClassDefinition classDef,
- Class clazz,
- PropertyDescriptor field) {
- MethodVisitor mv;
- // Get method
- {
- mv = cw.visitMethod( Opcodes.ACC_PUBLIC,
- "getValue",
- Type.getMethodDescriptor( Type.getType( Object.class ),
- new Type[]{Type.getType( Object.class )} ),
- null,
- null );
- mv.visitCode();
- if ( field.getPropertyType().isPrimitive() ) {
- mv.visitTypeInsn( Opcodes.NEW,
- Type.getInternalName( (Class) typeMap.get( field.getPropertyType() ) ) );
- mv.visitInsn( Opcodes.DUP );
- }
- mv.visitVarInsn( Opcodes.ALOAD,
- 1 );
- mv.visitTypeInsn( Opcodes.CHECKCAST,
- Type.getInternalName( clazz ) );
- mv.visitMethodInsn( Opcodes.INVOKEVIRTUAL,
- Type.getInternalName( clazz ),
- field.getReadMethod().getName(),
- Type.getMethodDescriptor( Type.getType( field.getPropertyType() ),
- new Type[]{} ) );
-
- if ( field.getPropertyType().isPrimitive() ) {
- mv.visitMethodInsn( Opcodes.INVOKESPECIAL,
- Type.getInternalName( (Class) typeMap.get( field.getPropertyType() ) ),
- "<init>",
- Type.getMethodDescriptor( Type.VOID_TYPE,
- new Type[]{Type.getType( field.getPropertyType() )} ) );
- }
- mv.visitInsn( Opcodes.ARETURN );
- mv.visitMaxs( 0,
- 0 ); // automatically calculated
- mv.visitEnd();
- }
- }
-
- /**
- * Creates the set method for the given field definition
- *
- * @param cw
- * @param classDef
- * @param fieldDef
- */
- private void buildSetMethod(ClassWriter cw,
- ClassDefinition classDef,
- Class clazz,
- PropertyDescriptor field) {
- MethodVisitor mv;
- // set method
- {
- mv = cw.visitMethod( Opcodes.ACC_PUBLIC,
- "setValue",
- Type.getMethodDescriptor( Type.VOID_TYPE,
- new Type[]{Type.getType( Object.class ), Type.getType( Object.class )} ),
- null,
- null );
-
- mv.visitCode();
-
- if ( field.getPropertyType().isPrimitive() ) {
- // value != null ?
- mv.visitVarInsn( Opcodes.ALOAD,
- 2 );
-
- Label ifnull = new Label();
- mv.visitJumpInsn( Opcodes.IFNULL,
- ifnull );
-
- // ((PrimitiveWrapper)value).xxxValue() :
- mv.visitVarInsn( Opcodes.ALOAD,
- 2 );
- mv.visitTypeInsn( Opcodes.CHECKCAST,
- Type.getInternalName( (Class) typeMap.get( field.getPropertyType() ) ) );
- mv.visitMethodInsn( Opcodes.INVOKEVIRTUAL,
- Type.getInternalName( (Class) typeMap.get( field.getPropertyType() ) ),
- field.getPropertyType().getName() + "Value",
- Type.getMethodDescriptor( Type.getType( field.getPropertyType() ),
- new Type[]{} ) );
-
- Label afterif = new Label();
- mv.visitJumpInsn( Opcodes.GOTO,
- afterif );
-
- // 0
- mv.visitLabel( ifnull );
- if ( field.getPropertyType().isAssignableFrom( long.class ) ) {
- mv.visitInsn( Opcodes.LCONST_0 );
- } else if ( field.getPropertyType().isAssignableFrom( double.class ) ) {
- mv.visitInsn( Opcodes.DCONST_0 );
- } else if ( field.getPropertyType().isAssignableFrom( float.class ) ) {
- mv.visitInsn( Opcodes.FCONST_0 );
- } else {
- mv.visitInsn( Opcodes.ICONST_0 );
- }
-
- // localVar = pop()
- mv.visitLabel( afterif );
- mv.visitVarInsn( Type.getType( field.getPropertyType() ).getOpcode( Opcodes.ISTORE ),
- 3 );
- } else {
- // localVar = (xxxClass) value
- mv.visitVarInsn( Opcodes.ALOAD,
- 2 );
- mv.visitTypeInsn( Opcodes.CHECKCAST,
- Type.getInternalName( field.getPropertyType() ) );
- mv.visitVarInsn( Opcodes.ASTORE,
- 3 );
- }
-
- mv.visitVarInsn( Opcodes.ALOAD,
- 1 );
- mv.visitTypeInsn( Opcodes.CHECKCAST,
- Type.getInternalName( clazz ) );
- mv.visitVarInsn( Type.getType( field.getPropertyType() ).getOpcode( Opcodes.ILOAD ),
- 3 );
-
- mv.visitMethodInsn( Opcodes.INVOKEVIRTUAL,
- Type.getInternalName( clazz ),
- field.getWriteMethod().getName(),
- Type.getMethodDescriptor( Type.VOID_TYPE,
- new Type[]{Type.getType( field.getPropertyType() )} ) );
-
- mv.visitInsn( Opcodes.RETURN );
- mv.visitMaxs( 0,
- 0 ); // auto calculated
- mv.visitEnd();
- }
- }
-
- /**
- * Creates a default constructor for the class
- *
- * @param cw
- */
- private void buildDefaultConstructor(ClassWriter cw) {
- MethodVisitor mv;
- // Building default constructor
- {
- mv = cw.visitMethod( Opcodes.ACC_PUBLIC,
- "<init>",
- Type.getMethodDescriptor( Type.VOID_TYPE,
- new Type[]{} ),
- null,
- null );
- mv.visitCode();
- mv.visitVarInsn( Opcodes.ALOAD,
- 0 );
- mv.visitMethodInsn( Opcodes.INVOKESPECIAL,
- Type.getInternalName( Object.class ),
- "<init>",
- Type.getMethodDescriptor( Type.VOID_TYPE,
- new Type[]{} ) );
- mv.visitInsn( Opcodes.RETURN );
- mv.visitMaxs( 0,
- 0 );
- mv.visitEnd();
- }
- }
-
- private Class loadClass(String classname,
- byte[] b) throws ClassNotFoundException,
- SecurityException,
- NoSuchMethodException,
- IllegalArgumentException,
- IllegalAccessException,
- InvocationTargetException {
- //override classDefine (as it is protected) and define the class.
- Class clazz = null;
- ClassLoader loader = ClassBuilder.class.getClassLoader();
- Class cls = Class.forName( "java.lang.ClassLoader" );
- java.lang.reflect.Method method = cls.getDeclaredMethod( "defineClass",
- new Class[]{String.class, byte[].class, int.class, int.class} );
-
- // protected method invocaton
- method.setAccessible( true );
- try {
- Object[] args = new Object[]{classname, b, new Integer( 0 ), new Integer( b.length )};
- clazz = (Class) method.invoke( loader,
- args );
- } finally {
- method.setAccessible( false );
- }
- return clazz;
- }
-
- /**
- * Creates the String name for the get method for a field with the given name and type
- * @param name
- * @param type
- * @return
- */
- public String getReadMethod(Field field) {
- String prefix = null;
- if ( Boolean.TYPE.equals( field.getType() ) ) {
- prefix = "is";
- } else {
- prefix = "get";
- }
- return prefix + field.getName().substring( 0,
- 1 ).toUpperCase() + field.getName().substring( 1 );
- }
-
- /**
- * Creates the String name for the set method for a field with the given name and type
- *
- * @param name
- * @param type
- * @return
- */
- public String getWriteMethod(Field field) {
- return "set" + field.getName().substring( 0,
- 1 ).toUpperCase() + field.getName().substring( 1 );
- }
-
-}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/factmodel/FieldDefinition.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/factmodel/FieldDefinition.java 2008-05-16 15:22:07 UTC (rev 19970)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/factmodel/FieldDefinition.java 2008-05-16 18:29:20 UTC (rev 19971)
@@ -1,27 +1,40 @@
package org.drools.factmodel;
+/*
+ * Copyright 2008 JBoss Inc
+ *
+ * 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.
+ */
import java.lang.reflect.InvocationTargetException;
+import org.drools.base.ClassFieldAccessor;
+
/**
- * <p><b>Title:</b> FieldDefinition</p>
- * <p><b>Description:</b> Declares a field to be dynamically generated</p>
- * <p><b>Copyright:</b> Copyright (c) 2004-2006</p>
- * <p><b>Company:</b> Auster Solutions</p>
+ * Declares a field to be dynamically generated.
*
* @author etirelli
- * @version $Id: FieldDefinition.java 205 2006-03-21 18:27:52Z etirelli $
*/
public class FieldDefinition {
private String name = null;
private String type = null;
private boolean key = false;
-
+
private String internalType = null;
private String boxTypeName = null;
private boolean primitive = false;
private String unboxMethod = null;
- private FieldAccessor accessor = null;
+ private ClassFieldAccessor accessor = null;
/**
* Default constructor
@@ -31,7 +44,9 @@
*/
public FieldDefinition(String name,
String type) {
- this(name, type, false);
+ this( name,
+ type,
+ false );
}
/**
@@ -41,11 +56,11 @@
* @param type the fully qualified fields type
*/
public FieldDefinition(String name,
- String type,
+ String type,
boolean key) {
this.name = name;
this.type = type;
- this.key = key;
+ this.key = key;
this.setInternals();
}
@@ -154,16 +169,16 @@
}
/**
- * @return Returns the field accessor
+ * @return Returns the field extractor
*/
- FieldAccessor getFieldAccessor() {
+ public ClassFieldAccessor getFieldAccessor() {
return this.accessor;
}
/**
* @param property The property descriptor to set.
*/
- void setFieldAccessor(FieldAccessor accessor) {
+ public void setFieldAccessor(ClassFieldAccessor accessor) {
this.accessor = accessor;
}
@@ -189,10 +204,8 @@
Object value) throws IllegalArgumentException,
IllegalAccessException,
InvocationTargetException {
- if(this.accessor == null) {
- System.out.println("ACCESSOR NULL");
- }
- this.accessor.setValue( bean, value );
+ this.accessor.setValue( bean,
+ value );
}
/**
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/facttemplates/FactTemplateFieldExtractor.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/facttemplates/FactTemplateFieldExtractor.java 2008-05-16 15:22:07 UTC (rev 19970)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/facttemplates/FactTemplateFieldExtractor.java 2008-05-16 18:29:20 UTC (rev 19971)
@@ -1,19 +1,18 @@
package org.drools.facttemplates;
+import java.io.IOException;
+import java.io.ObjectInput;
+import java.io.ObjectOutput;
import java.lang.reflect.Method;
-import java.io.ObjectOutput;
-import java.io.ObjectInput;
-import java.io.IOException;
import org.drools.RuntimeDroolsException;
import org.drools.base.ValueType;
import org.drools.common.InternalWorkingMemory;
-import org.drools.spi.FieldExtractor;
import org.drools.util.ClassUtils;
public class FactTemplateFieldExtractor
implements
- FieldExtractor {
+ org.drools.spi.InternalReadAccessor {
private static final long serialVersionUID = 400L;
private FactTemplate factTemplate;
@@ -29,21 +28,23 @@
this.fieldIndex = fieldIndex;
}
- public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
- factTemplate = (FactTemplate)in.readObject();
- fieldIndex = in.readInt();
+ public void readExternal(ObjectInput in) throws IOException,
+ ClassNotFoundException {
+ factTemplate = (FactTemplate) in.readObject();
+ fieldIndex = in.readInt();
}
public void writeExternal(ObjectOutput out) throws IOException {
- out.writeObject(factTemplate);
- out.writeInt(fieldIndex);
+ out.writeObject( factTemplate );
+ out.writeInt( fieldIndex );
}
public ValueType getValueType() {
return this.factTemplate.getFieldTemplate( this.fieldIndex ).getValueType();
}
- public Object getValue(InternalWorkingMemory workingMemory, final Object object) {
+ public Object getValue(InternalWorkingMemory workingMemory,
+ final Object object) {
return ((Fact) object).getFieldValue( this.fieldIndex );
}
@@ -59,35 +60,43 @@
return ClassUtils.canonicalName( getExtractToClass() );
}
- public boolean getBooleanValue(InternalWorkingMemory workingMemory, final Object object) {
+ public boolean getBooleanValue(InternalWorkingMemory workingMemory,
+ final Object object) {
return ((Boolean) ((Fact) object).getFieldValue( this.fieldIndex )).booleanValue();
}
- public byte getByteValue(InternalWorkingMemory workingMemory, final Object object) {
+ public byte getByteValue(InternalWorkingMemory workingMemory,
+ final Object object) {
return ((Number) ((Fact) object).getFieldValue( this.fieldIndex )).byteValue();
}
- public char getCharValue(InternalWorkingMemory workingMemory, final Object object) {
+ public char getCharValue(InternalWorkingMemory workingMemory,
+ final Object object) {
return ((Character) ((Fact) object).getFieldValue( this.fieldIndex )).charValue();
}
- public double getDoubleValue(InternalWorkingMemory workingMemory, final Object object) {
+ public double getDoubleValue(InternalWorkingMemory workingMemory,
+ final Object object) {
return ((Number) ((Fact) object).getFieldValue( this.fieldIndex )).doubleValue();
}
- public float getFloatValue(InternalWorkingMemory workingMemory, final Object object) {
+ public float getFloatValue(InternalWorkingMemory workingMemory,
+ final Object object) {
return ((Number) ((Fact) object).getFieldValue( this.fieldIndex )).floatValue();
}
- public int getIntValue(InternalWorkingMemory workingMemory, final Object object) {
+ public int getIntValue(InternalWorkingMemory workingMemory,
+ final Object object) {
return ((Number) ((Fact) object).getFieldValue( this.fieldIndex )).intValue();
}
- public long getLongValue(InternalWorkingMemory workingMemory, final Object object) {
+ public long getLongValue(InternalWorkingMemory workingMemory,
+ final Object object) {
return ((Number) ((Fact) object).getFieldValue( this.fieldIndex )).longValue();
}
- public short getShortValue(InternalWorkingMemory workingMemory, final Object object) {
+ public short getShortValue(InternalWorkingMemory workingMemory,
+ final Object object) {
return ((Number) ((Fact) object).getFieldValue( this.fieldIndex )).shortValue();
}
@@ -101,8 +110,10 @@
}
}
- public int getHashCode(InternalWorkingMemory workingMemory, final Object object) {
- return getValue( workingMemory, object ).hashCode();
+ public int getHashCode(InternalWorkingMemory workingMemory,
+ final Object object) {
+ return getValue( workingMemory,
+ object ).hashCode();
}
public boolean isGlobal() {
@@ -113,4 +124,59 @@
Object object) {
return ((Fact) object).getFieldValue( this.fieldIndex ) == null;
}
+
+ public boolean getBooleanValue(Object object) {
+ return getBooleanValue( null,
+ object );
+ }
+
+ public byte getByteValue(Object object) {
+ return getByteValue( null,
+ object );
+ }
+
+ public char getCharValue(Object object) {
+ return getCharValue( null,
+ object );
+ }
+
+ public double getDoubleValue(Object object) {
+ return getDoubleValue( null,
+ object );
+ }
+
+ public float getFloatValue(Object object) {
+ return getFloatValue( null,
+ object );
+ }
+
+ public int getHashCode(Object object) {
+ return getHashCode( null,
+ object );
+ }
+
+ public int getIntValue(Object object) {
+ return getIntValue( null,
+ object );
+ }
+
+ public long getLongValue(Object object) {
+ return getLongValue( null,
+ object );
+ }
+
+ public short getShortValue(Object object) {
+ return getShortValue( null,
+ object );
+ }
+
+ public Object getValue(Object object) {
+ return getValue( null,
+ object );
+ }
+
+ public boolean isNullValue(Object object) {
+ return isNullValue( null,
+ object );
+ }
}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/CompositeObjectSinkAdapter.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/CompositeObjectSinkAdapter.java 2008-05-16 15:22:07 UTC (rev 19970)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/CompositeObjectSinkAdapter.java 2008-05-16 18:29:20 UTC (rev 19971)
@@ -1,24 +1,24 @@
package org.drools.reteoo;
-import java.util.ArrayList;
-import java.util.List;
+import java.io.Externalizable;
import java.io.IOException;
import java.io.ObjectInput;
import java.io.ObjectOutput;
-import java.io.Externalizable;
+import java.util.ArrayList;
+import java.util.List;
import org.drools.base.ValueType;
import org.drools.base.evaluators.Operator;
+import org.drools.common.BaseNode;
import org.drools.common.InternalFactHandle;
import org.drools.common.InternalWorkingMemory;
-import org.drools.common.BaseNode;
import org.drools.rule.LiteralConstraint;
import org.drools.spi.AlphaNodeFieldConstraint;
import org.drools.spi.Evaluator;
-import org.drools.spi.Extractor;
-import org.drools.spi.FieldExtractor;
import org.drools.spi.FieldValue;
+import org.drools.spi.InternalReadAccessor;
import org.drools.spi.PropagationContext;
+import org.drools.spi.ReadAccessor;
import org.drools.util.Iterator;
import org.drools.util.LinkedList;
import org.drools.util.LinkedListNode;
@@ -251,7 +251,7 @@
* @return
*/
private FieldIndex registerFieldIndex(final int index,
- final FieldExtractor fieldExtractor) {
+ final InternalReadAccessor fieldExtractor) {
FieldIndex fieldIndex = null;
// is linkedlist null, if so create and add
@@ -322,7 +322,7 @@
}
// this field is hashed so set the existing hashKey and see if there is a sink for it
final int index = fieldIndex.getIndex();
- final FieldExtractor extractor = fieldIndex.getFieldExtactor();
+ final ReadAccessor extractor = fieldIndex.getFieldExtactor();
HashKey hashKey = new HashKey( index,
object,
fieldIndex.getFieldExtractor() );
@@ -443,7 +443,7 @@
public HashKey(final int index,
final FieldValue value,
- final Extractor extractor) {
+ final InternalReadAccessor extractor) {
this.setValue( index,
extractor,
value );
@@ -451,7 +451,7 @@
public HashKey(final int index,
final Object value,
- final Extractor extractor) {
+ final InternalReadAccessor extractor) {
this.setValue( index,
value,
extractor );
@@ -486,7 +486,7 @@
public void setValue(final int index,
final Object value,
- final Extractor extractor) {
+ final InternalReadAccessor extractor) {
this.index = index;
final ValueType vtype = extractor.getValueType();
@@ -534,7 +534,7 @@
}
public void setValue(final int index,
- final Extractor extractor,
+ final InternalReadAccessor extractor,
final FieldValue value) {
this.index = index;
@@ -702,7 +702,7 @@
LinkedListNode {
private static final long serialVersionUID = 400L;
private int index;
- private FieldExtractor fieldExtactor;
+ private InternalReadAccessor fieldExtactor;
private int count;
@@ -716,7 +716,7 @@
}
public FieldIndex(final int index,
- final FieldExtractor fieldExtractor) {
+ final InternalReadAccessor fieldExtractor) {
this.index = index;
this.fieldExtactor = fieldExtractor;
}
@@ -724,7 +724,7 @@
public void readExternal(ObjectInput in) throws IOException,
ClassNotFoundException {
index = in.readInt();
- fieldExtactor = (FieldExtractor) in.readObject();
+ fieldExtactor = (InternalReadAccessor) in.readObject();
count = in.readInt();
hashed = in.readBoolean();
previous = (LinkedListNode) in.readObject();
@@ -740,7 +740,7 @@
out.writeObject( next );
}
- public FieldExtractor getFieldExtractor() {
+ public InternalReadAccessor getFieldExtractor() {
return this.fieldExtactor;
}
@@ -752,7 +752,7 @@
return this.count;
}
- public FieldExtractor getFieldExtactor() {
+ public ReadAccessor getFieldExtactor() {
return this.fieldExtactor;
}
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-05-16 15:22:07 UTC (rev 19970)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ReteooFactHandleFactory.java 2008-05-16 18:29:20 UTC (rev 19971)
@@ -58,14 +58,15 @@
TypeDeclaration type = conf.getTypeDeclaration();
long timestamp = ((TemporalSession) workingMemory).getSessionClock().getCurrentTime();
long duration = 0;
- if( type.getDurationExtractor() != null ) {
- duration = type.getDurationExtractor().getLongValue( workingMemory, object );
+ if ( type.getDurationExtractor() != null ) {
+ duration = type.getDurationExtractor().getLongValue( workingMemory,
+ object );
}
return new EventFactHandle( id,
object,
recency,
timestamp,
- duration );
+ duration );
} else {
return new DefaultFactHandle( id,
object,
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/builder/ReteooRuleBuilder.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/builder/ReteooRuleBuilder.java 2008-05-16 15:22:07 UTC (rev 19970)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/builder/ReteooRuleBuilder.java 2008-05-16 18:29:20 UTC (rev 19971)
@@ -22,7 +22,7 @@
import org.drools.InitialFact;
import org.drools.RuleIntegrationException;
-import org.drools.base.ClassFieldExtractor;
+import org.drools.base.ClassFieldReader;
import org.drools.base.ClassObjectType;
import org.drools.base.DroolsQuery;
import org.drools.base.FieldFactory;
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/AndCompositeRestriction.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/AndCompositeRestriction.java 2008-05-16 15:22:07 UTC (rev 19970)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/AndCompositeRestriction.java 2008-05-16 18:29:20 UTC (rev 19971)
@@ -3,7 +3,7 @@
import org.drools.common.InternalFactHandle;
import org.drools.common.InternalWorkingMemory;
import org.drools.reteoo.LeftTuple;
-import org.drools.spi.Extractor;
+import org.drools.spi.InternalReadAccessor;
import org.drools.spi.Restriction;
public class AndCompositeRestriction extends AbstractCompositeRestriction {
@@ -17,7 +17,7 @@
super( restriction );
}
- public boolean isAllowed(final Extractor extractor,
+ public boolean isAllowed(final InternalReadAccessor extractor,
final InternalFactHandle handle,
final InternalWorkingMemory workingMemory,
final ContextEntry context ) {
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/Declaration.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/Declaration.java 2008-05-16 15:22:07 UTC (rev 19970)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/Declaration.java 2008-05-16 18:29:20 UTC (rev 19971)
@@ -53,7 +53,7 @@
import org.drools.base.ShadowProxy;
import org.drools.base.ValueType;
import org.drools.common.InternalWorkingMemory;
-import org.drools.spi.Extractor;
+import org.drools.spi.InternalReadAccessor;
/*
* Copyright 2005 JBoss Inc
@@ -93,7 +93,7 @@
/** The identifier for the variable. */
private String identifier;
- private Extractor extractor;
+ private InternalReadAccessor extractor;
private Pattern pattern;
@@ -117,7 +117,7 @@
* The index within a rule.
*/
public Declaration(final String identifier,
- final Extractor extractor,
+ final InternalReadAccessor extractor,
final Pattern pattern) {
this( identifier,
extractor,
@@ -139,7 +139,7 @@
* of a collect CE
*/
public Declaration(final String identifier,
- final Extractor extractor,
+ final InternalReadAccessor extractor,
final Pattern pattern,
final boolean internalFact) {
this.identifier = identifier;
@@ -150,7 +150,7 @@
public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
identifier = (String)in.readObject();
- extractor = (Extractor)in.readObject();
+ extractor = (InternalReadAccessor)in.readObject();
pattern = (Pattern)in.readObject();
internalFact = in.readBoolean();
}
@@ -209,7 +209,7 @@
*
* @return
*/
- public Extractor getExtractor() {
+ public InternalReadAccessor getExtractor() {
return this.extractor;
}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/LiteralConstraint.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/LiteralConstraint.java 2008-05-16 15:22:07 UTC (rev 19970)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/LiteralConstraint.java 2008-05-16 18:29:20 UTC (rev 19971)
@@ -16,33 +16,33 @@
* limitations under the License.
*/
+import java.io.Externalizable;
+import java.io.IOException;
+import java.io.ObjectInput;
+import java.io.ObjectOutput;
+
import org.drools.common.InternalFactHandle;
import org.drools.common.InternalWorkingMemory;
import org.drools.spi.AlphaNodeFieldConstraint;
import org.drools.spi.Constraint;
import org.drools.spi.Evaluator;
-import org.drools.spi.FieldExtractor;
import org.drools.spi.FieldValue;
+import org.drools.spi.InternalReadAccessor;
-import java.io.Externalizable;
-import java.io.ObjectOutput;
-import java.io.ObjectInput;
-import java.io.IOException;
-
public class LiteralConstraint
implements
AlphaNodeFieldConstraint, Externalizable {
private static final long serialVersionUID = 400L;
- private FieldExtractor extractor;
+ private InternalReadAccessor extractor;
private LiteralRestriction restriction;
public LiteralConstraint() {
this(null, null);
}
- public LiteralConstraint(final FieldExtractor extractor,
+ public LiteralConstraint(final InternalReadAccessor extractor,
final Evaluator evaluator,
final FieldValue field) {
this.extractor = extractor;
@@ -51,14 +51,14 @@
extractor );
}
- public LiteralConstraint(final FieldExtractor extractor,
+ public LiteralConstraint(final InternalReadAccessor extractor,
final LiteralRestriction restriction) {
this.extractor = extractor;
this.restriction = restriction;
}
public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
- extractor = (FieldExtractor)in.readObject();
+ extractor = (InternalReadAccessor)in.readObject();
restriction = (LiteralRestriction)in.readObject();
}
@@ -75,7 +75,7 @@
return this.restriction.getField();
}
- public FieldExtractor getFieldExtractor() {
+ public InternalReadAccessor getFieldExtractor() {
return this.extractor;
}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/LiteralRestriction.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/LiteralRestriction.java 2008-05-16 15:22:07 UTC (rev 19970)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/LiteralRestriction.java 2008-05-16 18:29:20 UTC (rev 19971)
@@ -16,20 +16,19 @@
* limitations under the License.
*/
+import java.io.Externalizable;
+import java.io.IOException;
+import java.io.ObjectInput;
+import java.io.ObjectOutput;
+
import org.drools.common.InternalFactHandle;
import org.drools.common.InternalWorkingMemory;
import org.drools.reteoo.LeftTuple;
import org.drools.spi.Evaluator;
-import org.drools.spi.Extractor;
-import org.drools.spi.FieldExtractor;
import org.drools.spi.FieldValue;
+import org.drools.spi.InternalReadAccessor;
import org.drools.spi.Restriction;
-import java.io.Externalizable;
-import java.io.IOException;
-import java.io.ObjectOutput;
-import java.io.ObjectInput;
-
public class LiteralRestriction
implements
Restriction, Externalizable {
@@ -40,7 +39,7 @@
private Evaluator evaluator;
- private FieldExtractor extractor;
+ private InternalReadAccessor extractor;
private static final Declaration[] requiredDeclarations = new Declaration[0];
@@ -50,7 +49,7 @@
public LiteralRestriction(final FieldValue field,
final Evaluator evaluator,
- final FieldExtractor fieldExtractor) {
+ final InternalReadAccessor fieldExtractor) {
this.field = field;
this.evaluator = evaluator;
this.extractor = fieldExtractor;
@@ -59,7 +58,7 @@
public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
field = (FieldValue)in.readObject();
evaluator = (Evaluator)in.readObject();
- extractor = (FieldExtractor)in.readObject();
+ extractor = (InternalReadAccessor)in.readObject();
}
public void writeExternal(ObjectOutput out) throws IOException {
@@ -75,7 +74,7 @@
return this.field;
}
- public boolean isAllowed(final Extractor extractor,
+ public boolean isAllowed(final InternalReadAccessor extractor,
final InternalFactHandle handle,
final InternalWorkingMemory workingMemoiry,
final ContextEntry context ) {
@@ -153,19 +152,19 @@
ContextEntry {
private static final long serialVersionUID = 2621864784428098347L;
- public FieldExtractor extractor;
+ public InternalReadAccessor extractor;
public Object object;
public ContextEntry next;
public LiteralContextEntry() {
}
- public LiteralContextEntry(final FieldExtractor extractor) {
+ public LiteralContextEntry(final InternalReadAccessor extractor) {
this.extractor = extractor;
}
public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
- extractor = (FieldExtractor)in.readObject();
+ extractor = (InternalReadAccessor)in.readObject();
object = in.readObject();
next = (ContextEntry)in.readObject();
}
@@ -176,7 +175,7 @@
out.writeObject(next);
}
- public FieldExtractor getFieldExtractor() {
+ public InternalReadAccessor getFieldExtractor() {
return this.extractor;
}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/MultiRestrictionFieldConstraint.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/MultiRestrictionFieldConstraint.java 2008-05-16 15:22:07 UTC (rev 19970)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/MultiRestrictionFieldConstraint.java 2008-05-16 18:29:20 UTC (rev 19971)
@@ -1,45 +1,48 @@
package org.drools.rule;
+import java.io.IOException;
+import java.io.ObjectInput;
+import java.io.ObjectOutput;
+
import org.drools.common.InternalFactHandle;
import org.drools.common.InternalWorkingMemory;
import org.drools.reteoo.LeftTuple;
-import org.drools.spi.FieldExtractor;
+import org.drools.spi.InternalReadAccessor;
+import org.drools.spi.ReadAccessor;
import org.drools.spi.Restriction;
-import java.io.ObjectOutput;
-import java.io.ObjectInput;
-import java.io.IOException;
-
public class MultiRestrictionFieldConstraint extends MutableTypeConstraint {
private static final long serialVersionUID = 400L;
- private FieldExtractor extractor;
+ private InternalReadAccessor extractor;
- private Restriction restrictions;
+ private Restriction restrictions;
public MultiRestrictionFieldConstraint() {
}
- public MultiRestrictionFieldConstraint(final FieldExtractor extractor,
+ public MultiRestrictionFieldConstraint(final InternalReadAccessor extractor,
final Restriction restrictions) {
this.extractor = extractor;
this.restrictions = restrictions;
}
- public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
- super.readExternal(in);
- extractor = (FieldExtractor)in.readObject();
- restrictions = (Restriction)in.readObject();
+ public void readExternal(ObjectInput in) throws IOException,
+ ClassNotFoundException {
+ super.readExternal( in );
+ extractor = (InternalReadAccessor) in.readObject();
+ restrictions = (Restriction) in.readObject();
}
public void writeExternal(ObjectOutput out) throws IOException {
- super.writeExternal(out);
- out.writeObject(extractor);
- out.writeObject(restrictions);
+ super.writeExternal( out );
+ out.writeObject( extractor );
+ out.writeObject( restrictions );
}
- public FieldExtractor getFieldExtractor() {
+
+ public ReadAccessor getFieldExtractor() {
return this.extractor;
}
@@ -79,7 +82,7 @@
public boolean isAllowed(final InternalFactHandle handle,
final InternalWorkingMemory workingMemory,
- final ContextEntry context ) {
+ final ContextEntry context) {
return this.restrictions.isAllowed( this.extractor,
handle,
workingMemory,
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/OrCompositeRestriction.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/OrCompositeRestriction.java 2008-05-16 15:22:07 UTC (rev 19970)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/OrCompositeRestriction.java 2008-05-16 18:29:20 UTC (rev 19971)
@@ -3,7 +3,7 @@
import org.drools.common.InternalFactHandle;
import org.drools.common.InternalWorkingMemory;
import org.drools.reteoo.LeftTuple;
-import org.drools.spi.Extractor;
+import org.drools.spi.InternalReadAccessor;
import org.drools.spi.Restriction;
public class OrCompositeRestriction extends AbstractCompositeRestriction {
@@ -17,7 +17,7 @@
super( restriction );
}
- public boolean isAllowed(final Extractor extractor,
+ public boolean isAllowed(final InternalReadAccessor extractor,
final InternalFactHandle handle,
final InternalWorkingMemory workingMemory,
final ContextEntry context ) {
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/Pattern.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/Pattern.java 2008-05-16 15:22:07 UTC (rev 19970)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/Pattern.java 2008-05-16 18:29:20 UTC (rev 19971)
@@ -28,7 +28,7 @@
import java.io.IOException;
import org.drools.spi.Constraint;
-import org.drools.spi.Extractor;
+import org.drools.spi.InternalReadAccessor;
import org.drools.spi.ObjectType;
import org.drools.spi.PatternExtractor;
import org.drools.spi.Constraint.ConstraintType;
@@ -201,7 +201,7 @@
}
public Declaration addDeclaration(final String identifier,
- final Extractor extractor) {
+ final InternalReadAccessor extractor) {
if ( this.constraints == Collections.EMPTY_LIST ) {
this.constraints = new ArrayList( 1 );
}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/PredicateConstraint.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/PredicateConstraint.java 2008-05-16 15:22:07 UTC (rev 19970)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/PredicateConstraint.java 2008-05-16 18:29:20 UTC (rev 19971)
@@ -26,7 +26,7 @@
import org.drools.common.InternalFactHandle;
import org.drools.common.InternalWorkingMemory;
import org.drools.reteoo.LeftTuple;
-import org.drools.spi.Extractor;
+import org.drools.spi.InternalReadAccessor;
import org.drools.spi.PredicateExpression;
import org.drools.spi.Restriction;
@@ -253,7 +253,7 @@
}
}
- public boolean isAllowed(Extractor extractor,
+ public boolean isAllowed(InternalReadAccessor extractor,
InternalFactHandle handle,
InternalWorkingMemory workingMemory,
ContextEntry context ) {
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/ReturnValueConstraint.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/ReturnValueConstraint.java 2008-05-16 15:22:07 UTC (rev 19970)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/ReturnValueConstraint.java 2008-05-16 18:29:20 UTC (rev 19971)
@@ -16,46 +16,51 @@
* limitations under the License.
*/
+import java.io.Externalizable;
+import java.io.IOException;
+import java.io.ObjectInput;
+import java.io.ObjectOutput;
+
import org.drools.RuntimeDroolsException;
import org.drools.common.InternalFactHandle;
import org.drools.common.InternalWorkingMemory;
import org.drools.reteoo.LeftTuple;
import org.drools.rule.ReturnValueRestriction.ReturnValueContextEntry;
import org.drools.spi.Evaluator;
-import org.drools.spi.FieldExtractor;
+import org.drools.spi.InternalReadAccessor;
import org.drools.spi.ReturnValueExpression;
-import java.io.Externalizable;
-import java.io.ObjectOutput;
-import java.io.IOException;
-import java.io.ObjectInput;
+public class ReturnValueConstraint extends MutableTypeConstraint
+ implements
+ Externalizable {
-public class ReturnValueConstraint extends MutableTypeConstraint implements Externalizable {
+ private static final long serialVersionUID = 400L;
- private static final long serialVersionUID = 400L;
-
- private FieldExtractor fieldExtractor;
+ private InternalReadAccessor fieldExtractor;
private ReturnValueRestriction restriction;
public ReturnValueConstraint() {
- this(null, null);
+ this( null,
+ null );
}
- public ReturnValueConstraint(final FieldExtractor fieldExtractor,
+
+ public ReturnValueConstraint(final InternalReadAccessor fieldExtractor,
final ReturnValueRestriction restriction) {
this.fieldExtractor = fieldExtractor;
this.restriction = restriction;
}
- public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
- super.readExternal(in);
- fieldExtractor = (FieldExtractor)in.readObject();
- restriction = (ReturnValueRestriction)in.readObject();
+ public void readExternal(ObjectInput in) throws IOException,
+ ClassNotFoundException {
+ super.readExternal( in );
+ fieldExtractor = (InternalReadAccessor) in.readObject();
+ restriction = (ReturnValueRestriction) in.readObject();
}
public void writeExternal(ObjectOutput out) throws IOException {
- super.writeExternal(out);
- out.writeObject(fieldExtractor);
- out.writeObject(restriction);
+ super.writeExternal( out );
+ out.writeObject( fieldExtractor );
+ out.writeObject( restriction );
}
public Declaration[] getRequiredDeclarations() {
@@ -112,7 +117,7 @@
public boolean isAllowed(final InternalFactHandle handle,
final InternalWorkingMemory workingMemory,
- final ContextEntry context ) {
+ final ContextEntry context) {
try {
return this.restriction.isAllowed( this.fieldExtractor,
handle,
@@ -156,7 +161,8 @@
}
public Object clone() {
- return new ReturnValueConstraint( this.fieldExtractor, (ReturnValueRestriction) this.restriction.clone() );
+ return new ReturnValueConstraint( this.fieldExtractor,
+ (ReturnValueRestriction) this.restriction.clone() );
}
}
\ No newline at end of file
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/ReturnValueRestriction.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/ReturnValueRestriction.java 2008-05-16 15:22:07 UTC (rev 19970)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/ReturnValueRestriction.java 2008-05-16 18:29:20 UTC (rev 19971)
@@ -28,8 +28,8 @@
import org.drools.common.InternalWorkingMemory;
import org.drools.reteoo.LeftTuple;
import org.drools.spi.Evaluator;
-import org.drools.spi.Extractor;
-import org.drools.spi.FieldExtractor;
+import org.drools.spi.InternalReadAccessor;
+import org.drools.spi.ReadAccessor;
import org.drools.spi.Restriction;
import org.drools.spi.ReturnValueExpression;
import org.drools.spi.Tuple;
@@ -52,7 +52,7 @@
private Evaluator evaluator;
- private FieldExtractor extractor;
+ private ReadAccessor extractor;
private static final Declaration[] noRequiredDeclarations = new Declaration[]{};
@@ -62,7 +62,7 @@
}
- public ReturnValueRestriction(final FieldExtractor fieldExtractor,
+ public ReturnValueRestriction(final ReadAccessor fieldExtractor,
final Declaration[] previousDeclarations,
final Declaration[] localDeclarations,
final String[] requiredGlobals,
@@ -75,7 +75,7 @@
evaluator );
}
- public ReturnValueRestriction(final FieldExtractor fieldExtractor,
+ public ReturnValueRestriction(final ReadAccessor fieldExtractor,
final ReturnValueExpression returnValueExpression,
final Declaration[] previousDeclarations,
final Declaration[] localDeclarations,
@@ -123,7 +123,7 @@
previousDeclarations = (Declaration[])in.readObject();
localDeclarations = ( Declaration[])in.readObject();
evaluator = (Evaluator)in.readObject();
- extractor = (FieldExtractor)in.readObject();
+ extractor = (ReadAccessor)in.readObject();
}
public void writeExternal(ObjectOutput out) throws IOException {
@@ -182,7 +182,7 @@
return this.evaluator;
}
- public boolean isAllowed(final Extractor extractor,
+ public boolean isAllowed(final InternalReadAccessor extractor,
final InternalFactHandle handle,
final Tuple tuple,
final WorkingMemory workingMemory,
@@ -202,7 +202,7 @@
}
}
- public boolean isAllowed(final Extractor extractor,
+ public boolean isAllowed(final InternalReadAccessor extractor,
final InternalFactHandle handle,
final InternalWorkingMemory workingMemoiry,
final ContextEntry context) {
@@ -315,7 +315,7 @@
private static final long serialVersionUID = 400L;
- public FieldExtractor fieldExtractor;
+ public ReadAccessor fieldExtractor;
public InternalFactHandle handle;
public LeftTuple leftTuple;
public InternalWorkingMemory workingMemory;
@@ -329,7 +329,7 @@
public ReturnValueContextEntry() {
}
- public ReturnValueContextEntry(final FieldExtractor fieldExtractor,
+ public ReturnValueContextEntry(final ReadAccessor fieldExtractor,
final Declaration[] previousDeclarations,
final Declaration[] localDeclarations) {
this.fieldExtractor = fieldExtractor;
@@ -338,7 +338,7 @@
}
public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
- fieldExtractor = (FieldExtractor)in.readObject();
+ fieldExtractor = (ReadAccessor)in.readObject();
handle = (InternalFactHandle)in.readObject();
leftTuple = (LeftTuple)in.readObject();
workingMemory = (InternalWorkingMemory)in.readObject();
@@ -382,7 +382,7 @@
/* (non-Javadoc)
* @see org.drools.rule.ReturnValueContextEntry#getFieldExtractor()
*/
- public FieldExtractor getFieldExtractor() {
+ public ReadAccessor getFieldExtractor() {
return this.fieldExtractor;
}
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-05-16 15:22:07 UTC (rev 19970)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/TypeDeclaration.java 2008-05-16 18:29:20 UTC (rev 19971)
@@ -25,7 +25,7 @@
import org.drools.common.DroolsObjectInputStream;
import org.drools.facttemplates.FactTemplate;
-import org.drools.spi.FieldExtractor;
+import org.drools.spi.InternalReadAccessor;
/**
* The type declaration class stores all type's metadata
@@ -36,17 +36,17 @@
public class TypeDeclaration
implements
Externalizable {
-
- public static final String ATTR_CLASS = "class";
- public static final String ATTR_TEMPLATE = "template";
- public static final String ATTR_DURATION = "duration";
+
+ public static final String ATTR_CLASS = "class";
+ public static final String ATTR_TEMPLATE = "template";
+ public static final String ATTR_DURATION = "duration";
public static final String ATTR_TIMESTAMP = "timestamp";
-
+
public static enum Role {
FACT, EVENT;
public static final String ID = "role";
-
+
public static Role parseRole(String role) {
if ( "event".equalsIgnoreCase( role ) ) {
return EVENT;
@@ -61,7 +61,7 @@
POJO, TEMPLATE;
public static final String ID = "format";
-
+
public static Format parseFormat(String format) {
if ( "pojo".equalsIgnoreCase( format ) ) {
return POJO;
@@ -72,14 +72,14 @@
}
}
- private String typeName;
- private Role role;
- private Format format;
- private String timestampAttribute;
- private String durationAttribute;
- private transient FieldExtractor durationExtractor;
- private Class< ? > typeClass;
- private FactTemplate typeTemplate;
+ private String typeName;
+ private Role role;
+ private Format format;
+ private String timestampAttribute;
+ private String durationAttribute;
+ private transient InternalReadAccessor durationExtractor;
+ private Class< ? > typeClass;
+ private FactTemplate typeTemplate;
public TypeDeclaration() {
}
@@ -107,9 +107,9 @@
if ( this.durationAttribute != null ) {
// generate the extractor
DroolsObjectInputStream dois = (DroolsObjectInputStream) in;
- this.durationExtractor = dois.getExtractorFactory().getExtractor( this.typeClass,
- this.durationAttribute,
- dois.getClassLoader() );
+ this.durationExtractor = dois.getExtractorFactory().getReader( this.typeClass,
+ this.durationAttribute,
+ dois.getClassLoader() );
}
}
@@ -250,11 +250,11 @@
return a == b || a != null && a.equals( b );
}
- public FieldExtractor getDurationExtractor() {
+ public InternalReadAccessor getDurationExtractor() {
return durationExtractor;
}
- public void setDurationExtractor(FieldExtractor durationExtractor) {
+ public void setDurationExtractor(InternalReadAccessor durationExtractor) {
this.durationExtractor = durationExtractor;
}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/VariableConstraint.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/VariableConstraint.java 2008-05-16 15:22:07 UTC (rev 19970)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/VariableConstraint.java 2008-05-16 18:29:20 UTC (rev 19971)
@@ -16,28 +16,30 @@
* limitations under the License.
*/
+import java.io.Externalizable;
+import java.io.IOException;
+import java.io.ObjectInput;
+import java.io.ObjectOutput;
+
import org.drools.common.InternalFactHandle;
import org.drools.common.InternalWorkingMemory;
import org.drools.reteoo.LeftTuple;
import org.drools.spi.Evaluator;
-import org.drools.spi.FieldExtractor;
+import org.drools.spi.InternalReadAccessor;
-import java.io.IOException;
-import java.io.ObjectInput;
-import java.io.ObjectOutput;
-import java.io.Externalizable;
+public class VariableConstraint extends MutableTypeConstraint
+ implements
+ Externalizable {
-public class VariableConstraint extends MutableTypeConstraint implements Externalizable {
+ private static final long serialVersionUID = 400L;
- private static final long serialVersionUID = 400L;
+ private InternalReadAccessor fieldExtractor;
+ private VariableRestriction restriction;
- private FieldExtractor fieldExtractor;
- private VariableRestriction restriction;
-
public VariableConstraint() {
}
- public VariableConstraint(final FieldExtractor fieldExtractor,
+ public VariableConstraint(final InternalReadAccessor fieldExtractor,
final Declaration declaration,
final Evaluator evaluator) {
this.fieldExtractor = fieldExtractor;
@@ -46,23 +48,25 @@
evaluator );
}
- public VariableConstraint(final FieldExtractor fieldExtractor,
+ public VariableConstraint(final InternalReadAccessor fieldExtractor,
final VariableRestriction restriction) {
this.fieldExtractor = fieldExtractor;
this.restriction = restriction;
}
- public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
- super.readExternal(in);
- fieldExtractor = (FieldExtractor)in.readObject();
- restriction = (VariableRestriction)in.readObject();
+ public void readExternal(ObjectInput in) throws IOException,
+ ClassNotFoundException {
+ super.readExternal( in );
+ fieldExtractor = (InternalReadAccessor) in.readObject();
+ restriction = (VariableRestriction) in.readObject();
}
public void writeExternal(ObjectOutput out) throws IOException {
- super.writeExternal(out);
- out.writeObject(fieldExtractor);
- out.writeObject(restriction);
+ super.writeExternal( out );
+ out.writeObject( fieldExtractor );
+ out.writeObject( restriction );
}
+
public Declaration[] getRequiredDeclarations() {
return this.restriction.getRequiredDeclarations();
}
@@ -73,7 +77,7 @@
newDecl );
}
- public FieldExtractor getFieldExtractor() {
+ public InternalReadAccessor getFieldExtractor() {
return this.fieldExtractor;
}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/VariableRestriction.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/VariableRestriction.java 2008-05-16 15:22:07 UTC (rev 19970)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/VariableRestriction.java 2008-05-16 18:29:20 UTC (rev 19971)
@@ -16,19 +16,18 @@
* limitations under the License.
*/
-import java.util.Arrays;
-import java.io.Externalizable;
-import java.io.ObjectOutput;
import java.io.IOException;
import java.io.ObjectInput;
+import java.io.ObjectOutput;
+import java.util.Arrays;
import org.drools.base.ValueType;
import org.drools.common.InternalFactHandle;
import org.drools.common.InternalWorkingMemory;
import org.drools.reteoo.LeftTuple;
import org.drools.spi.Evaluator;
-import org.drools.spi.Extractor;
-import org.drools.spi.FieldExtractor;
+import org.drools.spi.InternalReadAccessor;
+import org.drools.spi.ReadAccessor;
import org.drools.spi.Restriction;
public class VariableRestriction
@@ -43,12 +42,12 @@
private Evaluator evaluator;
- private FieldExtractor extractor;
+ private InternalReadAccessor extractor;
public VariableRestriction() {
}
- public VariableRestriction(final FieldExtractor fieldExtractor,
+ public VariableRestriction(final InternalReadAccessor fieldExtractor,
final Declaration declaration,
final Evaluator evaluator) {
this.declaration = declaration;
@@ -68,7 +67,7 @@
declaration = (Declaration) in.readObject();
requiredDeclarations = (Declaration[]) in.readObject();
evaluator = (Evaluator) in.readObject();
- extractor = (FieldExtractor) in.readObject();
+ extractor = (InternalReadAccessor) in.readObject();
}
public Declaration[] getRequiredDeclarations() {
@@ -87,7 +86,7 @@
return this.evaluator;
}
- public boolean isAllowed(final Extractor extractor,
+ public boolean isAllowed(final InternalReadAccessor extractor,
final InternalFactHandle handle,
final InternalWorkingMemory workingMemory,
final ContextEntry context ) {
@@ -144,7 +143,7 @@
}
private final VariableContextEntry createContextEntry(final Evaluator eval,
- final FieldExtractor fieldExtractor) {
+ final InternalReadAccessor fieldExtractor) {
ValueType coerced = eval.getCoercedValueType();
if ( coerced.isBoolean() ) {
@@ -184,7 +183,7 @@
public static abstract class VariableContextEntry
implements
ContextEntry {
- public FieldExtractor extractor;
+ public InternalReadAccessor extractor;
public Evaluator evaluator;
public Object object;
public Declaration declaration;
@@ -197,7 +196,7 @@
public VariableContextEntry() {
}
- public VariableContextEntry(final FieldExtractor extractor,
+ public VariableContextEntry(final InternalReadAccessor extractor,
final Declaration declaration,
final Evaluator evaluator) {
this.extractor = extractor;
@@ -207,7 +206,7 @@
public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
workingMemory = (InternalWorkingMemory)in.readObject();
- extractor = (FieldExtractor)in.readObject();
+ extractor = (InternalReadAccessor)in.readObject();
evaluator = (Evaluator)in.readObject();
object = in.readObject();
declaration = (Declaration)in.readObject();
@@ -237,7 +236,7 @@
this.entry = entry;
}
- public FieldExtractor getFieldExtractor() {
+ public ReadAccessor getFieldExtractor() {
return this.extractor;
}
@@ -279,7 +278,7 @@
public ObjectVariableContextEntry() {
}
- public ObjectVariableContextEntry(final FieldExtractor extractor,
+ public ObjectVariableContextEntry(final InternalReadAccessor extractor,
final Declaration declaration,
final Evaluator evaluator) {
super( extractor,
@@ -340,7 +339,7 @@
public LongVariableContextEntry() {
}
- public LongVariableContextEntry(final FieldExtractor extractor,
+ public LongVariableContextEntry(final InternalReadAccessor extractor,
final Declaration declaration,
final Evaluator evaluator) {
super( extractor,
@@ -401,7 +400,7 @@
public CharVariableContextEntry() {
}
- public CharVariableContextEntry(final FieldExtractor extractor,
+ public CharVariableContextEntry(final InternalReadAccessor extractor,
final Declaration declaration,
final Evaluator evaluator) {
super( extractor,
@@ -462,7 +461,7 @@
public DoubleVariableContextEntry() {
}
- public DoubleVariableContextEntry(final FieldExtractor extractor,
+ public DoubleVariableContextEntry(final InternalReadAccessor extractor,
final Declaration declaration,
final Evaluator evaluator) {
super( extractor,
@@ -522,7 +521,7 @@
public BooleanVariableContextEntry() {
}
- public BooleanVariableContextEntry(final FieldExtractor extractor,
+ public BooleanVariableContextEntry(final InternalReadAccessor extractor,
final Declaration declaration,
final Evaluator evaluator) {
super( extractor,
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/Evaluator.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/Evaluator.java 2008-05-16 15:22:07 UTC (rev 19970)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/Evaluator.java 2008-05-16 18:29:20 UTC (rev 19971)
@@ -83,14 +83,14 @@
* @return Returns true if evaluation is successfull. false otherwise.
*/
public boolean evaluate(InternalWorkingMemory workingMemory,
- Extractor extractor,
+ InternalReadAccessor extractor,
Object object1,
FieldValue value);
public boolean evaluate(InternalWorkingMemory workingMemory,
- Extractor leftExtractor,
+ InternalReadAccessor leftExtractor,
Object left,
- Extractor rightExtractor,
+ InternalReadAccessor rightExtractor,
Object right);
public boolean evaluateCachedLeft(InternalWorkingMemory workingMemory,
Deleted: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/Extractor.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/Extractor.java 2008-05-16 15:22:07 UTC (rev 19970)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/Extractor.java 2008-05-16 18:29:20 UTC (rev 19971)
@@ -1,61 +0,0 @@
-package org.drools.spi;
-
-/*
- * Copyright 2005 JBoss Inc
- *
- * 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.
- */
-
-import java.io.Externalizable;
-import java.lang.reflect.Method;
-
-import org.drools.base.ValueType;
-import org.drools.common.InternalWorkingMemory;
-
-public interface Extractor
- extends
- Externalizable {
-
- public Object getValue(InternalWorkingMemory workingMemory, Object object);
-
- public char getCharValue(InternalWorkingMemory workingMemory, Object object);
-
- public int getIntValue(InternalWorkingMemory workingMemory, Object object);
-
- public byte getByteValue(InternalWorkingMemory workingMemory, Object object);
-
- public short getShortValue(InternalWorkingMemory workingMemory, Object object);
-
- public long getLongValue(InternalWorkingMemory workingMemory, Object object);
-
- public float getFloatValue(InternalWorkingMemory workingMemory, Object object);
-
- public double getDoubleValue(InternalWorkingMemory workingMemory, Object object);
-
- public boolean getBooleanValue(InternalWorkingMemory workingMemory, Object object);
-
- public boolean isNullValue(InternalWorkingMemory workingMemory, Object object);
-
- public boolean isGlobal();
-
- public ValueType getValueType();
-
- public Class getExtractToClass();
-
- public String getExtractToClassName();
-
- public Method getNativeReadMethod();
-
- public int getHashCode(InternalWorkingMemory workingMemory, Object object);
-
-}
\ No newline at end of file
Deleted: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/FieldExtractor.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/FieldExtractor.java 2008-05-16 15:22:07 UTC (rev 19970)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/FieldExtractor.java 2008-05-16 18:29:20 UTC (rev 19971)
@@ -1,24 +0,0 @@
-package org.drools.spi;
-
-/*
- * Copyright 2005 JBoss Inc
- *
- * 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.
- */
-
-public interface FieldExtractor
- extends
- Extractor {
- public int getIndex();
-
-}
\ No newline at end of file
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/GlobalExtractor.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/GlobalExtractor.java 2008-05-16 15:22:07 UTC (rev 19970)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/GlobalExtractor.java 2008-05-16 18:29:20 UTC (rev 19971)
@@ -16,11 +16,11 @@
package org.drools.spi;
+import java.io.IOException;
+import java.io.ObjectInput;
+import java.io.ObjectOutput;
import java.lang.reflect.Method;
import java.util.Map;
-import java.io.ObjectOutput;
-import java.io.IOException;
-import java.io.ObjectInput;
import org.drools.RuntimeDroolsException;
import org.drools.base.ClassObjectType;
@@ -35,7 +35,7 @@
*/
public class GlobalExtractor
implements
- Extractor {
+ InternalReadAccessor {
private static final long serialVersionUID = 400L;
private String key;
@@ -175,4 +175,40 @@
public boolean isGlobal() {
return true;
}
+ public boolean getBooleanValue(Object object) {
+ throw new RuntimeDroolsException("Can't extract a value from a global without a working memory reference");
+ }
+ public byte getByteValue(Object object) {
+ throw new RuntimeDroolsException("Can't extract a value from a global without a working memory reference");
+ }
+ public char getCharValue(Object object) {
+ throw new RuntimeDroolsException("Can't extract a value from a global without a working memory reference");
+ }
+ public double getDoubleValue(Object object) {
+ throw new RuntimeDroolsException("Can't extract a value from a global without a working memory reference");
+ }
+ public float getFloatValue(Object object) {
+ throw new RuntimeDroolsException("Can't extract a value from a global without a working memory reference");
+ }
+ public int getHashCode(Object object) {
+ throw new RuntimeDroolsException("Can't extract a value from a global without a working memory reference");
+ }
+ public int getIndex() {
+ throw new RuntimeDroolsException("Can't extract a value from a global without a working memory reference");
+ }
+ public int getIntValue(Object object) {
+ throw new RuntimeDroolsException("Can't extract a value from a global without a working memory reference");
+ }
+ public long getLongValue(Object object) {
+ throw new RuntimeDroolsException("Can't extract a value from a global without a working memory reference");
+ }
+ public short getShortValue(Object object) {
+ throw new RuntimeDroolsException("Can't extract a value from a global without a working memory reference");
+ }
+ public Object getValue(Object object) {
+ throw new RuntimeDroolsException("Can't extract a value from a global without a working memory reference");
+ }
+ public boolean isNullValue(Object object) {
+ throw new RuntimeDroolsException("Can't extract a value from a global without a working memory reference");
+ }
}
Copied: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/InternalReadAccessor.java (from rev 19963, labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/Extractor.java)
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/InternalReadAccessor.java (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/InternalReadAccessor.java 2008-05-16 18:29:20 UTC (rev 19971)
@@ -0,0 +1,49 @@
+package org.drools.spi;
+
+/*
+ * Copyright 2005 JBoss Inc
+ *
+ * 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.
+ */
+
+import org.drools.common.InternalWorkingMemory;
+
+public interface InternalReadAccessor
+ extends
+ ReadAccessor {
+
+ public Object getValue(InternalWorkingMemory workingMemory, Object object);
+
+ public char getCharValue(InternalWorkingMemory workingMemory, Object object);
+
+ public int getIntValue(InternalWorkingMemory workingMemory, Object object);
+
+ public byte getByteValue(InternalWorkingMemory workingMemory, Object object);
+
+ public short getShortValue(InternalWorkingMemory workingMemory, Object object);
+
+ public long getLongValue(InternalWorkingMemory workingMemory, Object object);
+
+ public float getFloatValue(InternalWorkingMemory workingMemory, Object object);
+
+ public double getDoubleValue(InternalWorkingMemory workingMemory, Object object);
+
+ public boolean getBooleanValue(InternalWorkingMemory workingMemory, Object object);
+
+ public boolean isNullValue(InternalWorkingMemory workingMemory, Object object);
+
+ public int getHashCode(InternalWorkingMemory workingMemory, Object object);
+
+ public boolean isGlobal();
+
+}
\ No newline at end of file
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/PatternExtractor.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/PatternExtractor.java 2008-05-16 15:22:07 UTC (rev 19970)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/PatternExtractor.java 2008-05-16 18:29:20 UTC (rev 19971)
@@ -1,12 +1,10 @@
package org.drools.spi;
-import java.lang.reflect.Method;
-import java.util.Collection;
-import java.util.Iterator;
import java.io.Externalizable;
import java.io.IOException;
import java.io.ObjectInput;
import java.io.ObjectOutput;
+import java.lang.reflect.Method;
import org.drools.RuntimeDroolsException;
import org.drools.base.ClassObjectType;
@@ -34,7 +32,8 @@
public class PatternExtractor
implements
- Extractor, Externalizable {
+ InternalReadAccessor,
+ Externalizable {
/**
*
@@ -43,21 +42,24 @@
private ObjectType objectType;
public PatternExtractor() {
- this(null);
+ this( null );
}
+
public PatternExtractor(final ObjectType objectType) {
this.objectType = objectType;
}
- public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
- objectType = (ObjectType)in.readObject();
+ public void readExternal(ObjectInput in) throws IOException,
+ ClassNotFoundException {
+ objectType = (ObjectType) in.readObject();
}
public void writeExternal(ObjectOutput out) throws IOException {
- out.writeObject(objectType);
+ out.writeObject( objectType );
}
- public Object getValue(InternalWorkingMemory workingMemory, final Object object) {
+ public Object getValue(InternalWorkingMemory workingMemory,
+ final Object object) {
// need to use instanceof because an object may be created in nodes like accumulate and from
// where no shadow is applied
return (object instanceof ShadowProxy) ? ((ShadowProxy) object).getShadowedObject() : object;
@@ -67,7 +69,7 @@
return this.objectType;
}
- public Class getExtractToClass() {
+ public Class<?> getExtractToClass() {
// @todo : this is a bit nasty, but does the trick
if ( this.objectType instanceof ClassObjectType ) {
return ((ClassObjectType) this.objectType).getClassType();
@@ -77,7 +79,7 @@
}
public String getExtractToClassName() {
- Class clazz = null;
+ Class<?> clazz = null;
// @todo : this is a bit nasty, but does the trick
if ( this.objectType instanceof ClassObjectType ) {
clazz = ((ClassObjectType) this.objectType).getClassType();
@@ -91,56 +93,64 @@
return this.objectType.getValueType();
}
- public boolean getBooleanValue(InternalWorkingMemory workingMemory, final Object object) {
+ public boolean getBooleanValue(InternalWorkingMemory workingMemory,
+ final Object object) {
if ( this.objectType.getValueType().isBoolean() ) {
return ((Boolean) object).booleanValue();
}
throw new RuntimeDroolsException( "Conversion to boolean not supported for type: " + object.getClass() );
}
- public byte getByteValue(InternalWorkingMemory workingMemory, final Object object) {
+ public byte getByteValue(InternalWorkingMemory workingMemory,
+ final Object object) {
if ( this.objectType.getValueType().isNumber() ) {
return ((Number) object).byteValue();
}
throw new RuntimeDroolsException( "Conversion to byte not supported for type: " + object.getClass() );
}
- public char getCharValue(InternalWorkingMemory workingMemory, final Object object) {
+ public char getCharValue(InternalWorkingMemory workingMemory,
+ final Object object) {
if ( this.objectType.getValueType().isChar() ) {
return ((Character) object).charValue();
}
throw new RuntimeDroolsException( "Conversion to char not supported for type: " + object.getClass() );
}
- public double getDoubleValue(InternalWorkingMemory workingMemory, final Object object) {
+ public double getDoubleValue(InternalWorkingMemory workingMemory,
+ final Object object) {
if ( this.objectType.getValueType().isNumber() ) {
return ((Number) object).doubleValue();
}
throw new RuntimeDroolsException( "Conversion to double not supported for type: " + object.getClass() );
}
- public float getFloatValue(InternalWorkingMemory workingMemory, final Object object) {
+ public float getFloatValue(InternalWorkingMemory workingMemory,
+ final Object object) {
if ( this.objectType.getValueType().isNumber() ) {
return ((Number) object).floatValue();
}
throw new RuntimeDroolsException( "Conversion to float not supported for type: " + object.getClass() );
}
- public int getIntValue(InternalWorkingMemory workingMemory, final Object object) {
+ public int getIntValue(InternalWorkingMemory workingMemory,
+ final Object object) {
if ( this.objectType.getValueType().isNumber() ) {
return ((Number) object).intValue();
}
throw new RuntimeDroolsException( "Conversion to int not supported for type: " + object.getClass() );
}
- public long getLongValue(InternalWorkingMemory workingMemory, final Object object) {
+ public long getLongValue(InternalWorkingMemory workingMemory,
+ final Object object) {
if ( this.objectType.getValueType().isNumber() ) {
return ((Number) object).longValue();
}
throw new RuntimeDroolsException( "Conversion to long not supported for type: " + object.getClass() );
}
- public short getShortValue(InternalWorkingMemory workingMemory, final Object object) {
+ public short getShortValue(InternalWorkingMemory workingMemory,
+ final Object object) {
if ( this.objectType.getValueType().isNumber() ) {
return ((Number) object).shortValue();
}
@@ -157,12 +167,16 @@
}
}
- public boolean isNullValue(InternalWorkingMemory workingMemory, final Object object ) {
- return getValue( workingMemory, object ) == null;
+ public boolean isNullValue(InternalWorkingMemory workingMemory,
+ final Object object) {
+ return getValue( workingMemory,
+ object ) == null;
}
- public int getHashCode(InternalWorkingMemory workingMemory, final Object object) {
- return getValue( workingMemory, object ).hashCode();
+ public int getHashCode(InternalWorkingMemory workingMemory,
+ final Object object) {
+ return getValue( workingMemory,
+ object ).hashCode();
}
public int hashCode() {
@@ -183,4 +197,63 @@
public boolean isGlobal() {
return false;
}
+
+ public boolean getBooleanValue(Object object) {
+ return getBooleanValue( null,
+ object );
+ }
+
+ public byte getByteValue(Object object) {
+ return getByteValue( null,
+ object );
+ }
+
+ public char getCharValue(Object object) {
+ return getCharValue( null,
+ object );
+ }
+
+ public double getDoubleValue(Object object) {
+ return getDoubleValue( null,
+ object );
+ }
+
+ public float getFloatValue(Object object) {
+ return getFloatValue( null,
+ object );
+ }
+
+ public int getHashCode(Object object) {
+ return getHashCode( null,
+ object );
+ }
+
+ public int getIndex() {
+ return -1;
+ }
+
+ public int getIntValue(Object object) {
+ return getIntValue( null,
+ object );
+ }
+
+ public long getLongValue(Object object) {
+ return getLongValue( null,
+ object );
+ }
+
+ public short getShortValue(Object object) {
+ return getShortValue( null,
+ object );
+ }
+
+ public Object getValue(Object object) {
+ return getValue( null,
+ object );
+ }
+
+ public boolean isNullValue(Object object) {
+ return isNullValue( null,
+ object );
+ }
}
Copied: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/ReadAccessor.java (from rev 19963, labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/FieldExtractor.java)
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/ReadAccessor.java (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/ReadAccessor.java 2008-05-16 18:29:20 UTC (rev 19971)
@@ -0,0 +1,63 @@
+package org.drools.spi;
+
+import java.io.Externalizable;
+import java.lang.reflect.Method;
+
+import org.drools.base.ValueType;
+
+/*
+ * Copyright 2005 JBoss Inc
+ *
+ * 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.
+ */
+
+/**
+ * A public interface for Read accessors
+ */
+public interface ReadAccessor
+ extends
+ Externalizable {
+
+ public Object getValue(Object object);
+
+ public char getCharValue(Object object);
+
+ public int getIntValue(Object object);
+
+ public byte getByteValue(Object object);
+
+ public short getShortValue(Object object);
+
+ public long getLongValue(Object object);
+
+ public float getFloatValue(Object object);
+
+ public double getDoubleValue(Object object);
+
+ public boolean getBooleanValue(Object object);
+
+ public boolean isNullValue(Object object);
+
+ public ValueType getValueType();
+
+ public Class< ? > getExtractToClass();
+
+ public String getExtractToClassName();
+
+ public Method getNativeReadMethod();
+
+ public int getHashCode(Object object);
+
+ public int getIndex();
+
+}
\ No newline at end of file
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/Restriction.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/Restriction.java 2008-05-16 15:22:07 UTC (rev 19970)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/Restriction.java 2008-05-16 18:29:20 UTC (rev 19971)
@@ -15,7 +15,7 @@
Cloneable {
Declaration[] getRequiredDeclarations();
- public boolean isAllowed(Extractor extractor,
+ public boolean isAllowed(InternalReadAccessor extractor,
InternalFactHandle handle,
InternalWorkingMemory workingMemory,
ContextEntry context );
Added: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/WriteAccessor.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/WriteAccessor.java (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/WriteAccessor.java 2008-05-16 18:29:20 UTC (rev 19971)
@@ -0,0 +1,59 @@
+package org.drools.spi;
+
+/*
+ * Copyright 2008 JBoss Inc
+ *
+ * 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.
+ */
+
+import java.io.Externalizable;
+import java.lang.reflect.Method;
+
+import org.drools.base.ValueType;
+
+/**
+ * An interface for a class that is able to write values into a class
+ * field
+ *
+ * @author etirelli
+ */
+public interface WriteAccessor
+ extends
+ Externalizable {
+
+ public int getIndex();
+
+ public void setValue( Object bean, Object value );
+
+ public void setCharValue( Object bean, char value );
+
+ public void setIntValue( Object bean, int value );
+
+ public void setByteValue( Object bean, byte value );
+
+ public void setShortValue( Object bean, short value );
+
+ public void setLongValue( Object bean, long value );
+
+ public void setFloatValue( Object bean, float value );
+
+ public void setDoubleValue( Object bean, double value );
+
+ public void setBooleanValue( Object bean, boolean value );
+
+ public ValueType getValueType();
+
+ public Class< ? > getFieldType();
+
+ public Method getNativeWriteMethod();
+}
\ No newline at end of file
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/util/AbstractHashTable.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/util/AbstractHashTable.java 2008-05-16 15:22:07 UTC (rev 19970)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/util/AbstractHashTable.java 2008-05-16 18:29:20 UTC (rev 19971)
@@ -4,15 +4,15 @@
package org.drools.util;
import java.io.Externalizable;
-import java.io.ObjectOutput;
import java.io.IOException;
import java.io.ObjectInput;
+import java.io.ObjectOutput;
-import org.drools.common.InternalFactHandle;
import org.drools.reteoo.LeftTuple;
import org.drools.rule.Declaration;
import org.drools.spi.Evaluator;
-import org.drools.spi.FieldExtractor;
+import org.drools.spi.InternalReadAccessor;
+import org.drools.spi.ReadAccessor;
public abstract class AbstractHashTable
implements
@@ -43,7 +43,8 @@
}
public AbstractHashTable(final Entry[] table) {
- this( 0.75f, table);
+ this( 0.75f,
+ table );
}
public AbstractHashTable(final float loadFactor,
@@ -54,22 +55,23 @@
this.comparator = EqualityEquals.getInstance();
}
- public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
- size = in.readInt();
- threshold = in.readInt();
- loadFactor = in.readFloat();
- comparator = (ObjectComparator)in.readObject();
- table = (Entry[])in.readObject();
- iterator = (HashTableIterator)in.readObject();
+ public void readExternal(ObjectInput in) throws IOException,
+ ClassNotFoundException {
+ size = in.readInt();
+ threshold = in.readInt();
+ loadFactor = in.readFloat();
+ comparator = (ObjectComparator) in.readObject();
+ table = (Entry[]) in.readObject();
+ iterator = (HashTableIterator) in.readObject();
}
public void writeExternal(ObjectOutput out) throws IOException {
- out.writeInt(size);
- out.writeInt(threshold);
- out.writeFloat(loadFactor);
- out.writeObject(comparator);
- out.writeObject(table);
- out.writeObject(iterator);
+ out.writeInt( size );
+ out.writeInt( threshold );
+ out.writeFloat( loadFactor );
+ out.writeObject( comparator );
+ out.writeObject( table );
+ out.writeObject( iterator );
}
public Iterator iterator() {
@@ -250,7 +252,8 @@
*/
public static class HashTableIterator
implements
- Iterator, Externalizable {
+ Iterator,
+ Externalizable {
private static final long serialVersionUID = 400L;
@@ -267,27 +270,28 @@
this.hashTable = hashTable;
}
- public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
- hashTable = (AbstractHashTable)in.readObject();
- table = (Entry[])in.readObject();
- row = in.readInt();
- length = in.readInt();
- entry = (Entry)in.readObject();
+ public void readExternal(ObjectInput in) throws IOException,
+ ClassNotFoundException {
+ hashTable = (AbstractHashTable) in.readObject();
+ table = (Entry[]) in.readObject();
+ row = in.readInt();
+ length = in.readInt();
+ entry = (Entry) in.readObject();
}
public void writeExternal(ObjectOutput out) throws IOException {
- out.writeObject(hashTable);
- out.writeObject(table);
- out.writeInt(row);
- out.writeInt(length);
- out.writeObject(entry);
+ out.writeObject( hashTable );
+ out.writeObject( table );
+ out.writeInt( row );
+ out.writeInt( length );
+ out.writeObject( entry );
}
/* (non-Javadoc)
* @see org.drools.util.Iterator#next()
*/
public Object next() {
- if ( this.entry != null ) {
+ if ( this.entry != null ) {
this.entry = this.entry.getNext();
}
@@ -303,51 +307,51 @@
return this.entry;
}
-// /* (non-Javadoc)
-// * @see org.drools.util.Iterator#next()
-// */
-// public Object next() {
-// if ( this.entry == null ) {
-// // keep skipping rows until we come to the end, or find one that is populated
-// while ( this.entry == null ) {
-// this.row++;
-// if ( this.row == this.length ) {
-// return null;
-// }
-// this.entry = this.table[this.row];
-// }
-// } else {
-// this.entry = this.entry.getNext();
-// if ( this.entry == null ) {
-// this.entry = (Entry) next();
-// }
-// }
-//
-// return this.entry;
-// }
+ // /* (non-Javadoc)
+ // * @see org.drools.util.Iterator#next()
+ // */
+ // public Object next() {
+ // if ( this.entry == null ) {
+ // // keep skipping rows until we come to the end, or find one that is populated
+ // while ( this.entry == null ) {
+ // this.row++;
+ // if ( this.row == this.length ) {
+ // return null;
+ // }
+ // this.entry = this.table[this.row];
+ // }
+ // } else {
+ // this.entry = this.entry.getNext();
+ // if ( this.entry == null ) {
+ // this.entry = (Entry) next();
+ // }
+ // }
+ //
+ // return this.entry;
+ // }
-// /* (non-Javadoc)
-// * @see org.drools.util.Iterator#next()
-// */
-// public Object next() {
-// if ( this.entry == null ) {
-// // keep skipping rows until we come to the end, or find one that is populated
-// while ( this.entry == null ) {
-// this.row++;
-// if ( this.row == this.length ) {
-// return null;
-// }
-// this.entry = this.table[this.row];
-// }
-// } else {
-// this.entry = this.entry.getNext();
-// if ( this.entry == null ) {
-// this.entry = (Entry) next();
-// }
-// }
-//
-// return this.entry;
-// }
+ // /* (non-Javadoc)
+ // * @see org.drools.util.Iterator#next()
+ // */
+ // public Object next() {
+ // if ( this.entry == null ) {
+ // // keep skipping rows until we come to the end, or find one that is populated
+ // while ( this.entry == null ) {
+ // this.row++;
+ // if ( this.row == this.length ) {
+ // return null;
+ // }
+ // this.entry = this.table[this.row];
+ // }
+ // } else {
+ // this.entry = this.entry.getNext();
+ // if ( this.entry == null ) {
+ // this.entry = (Entry) next();
+ // }
+ // }
+ //
+ // return this.entry;
+ // }
/* (non-Javadoc)
* @see org.drools.util.Iterator#reset()
@@ -367,7 +371,8 @@
private static final long serialVersionUID = 400L;
public static ObjectComparator INSTANCE = new InstanceEquals();
- public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
+ public void readExternal(ObjectInput in) throws IOException,
+ ClassNotFoundException {
}
public void writeExternal(ObjectOutput out) throws IOException {
@@ -406,7 +411,8 @@
private static final long serialVersionUID = 400L;
public static ObjectComparator INSTANCE = new EqualityEquals();
- public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
+ public void readExternal(ObjectInput in) throws IOException,
+ ClassNotFoundException {
}
public void writeExternal(ObjectOutput out) throws IOException {
@@ -441,19 +447,21 @@
}
}
- public static class FieldIndex implements Externalizable {
+ public static class FieldIndex
+ implements
+ Externalizable {
private static final long serialVersionUID = 1020010166351582645L;
- FieldExtractor extractor;
- Declaration declaration;
- public Evaluator evaluator;
+ InternalReadAccessor extractor;
+ Declaration declaration;
+ public Evaluator evaluator;
public FieldIndex() {
}
- public FieldIndex(final FieldExtractor extractor,
+ public FieldIndex(final InternalReadAccessor extractor,
final Declaration declaration,
final Evaluator evaluator) {
super();
@@ -462,22 +470,24 @@
this.evaluator = evaluator;
}
- public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
- extractor = (FieldExtractor)in.readObject();
- declaration = (Declaration)in.readObject();
- evaluator = (Evaluator)in.readObject();
+ public void readExternal(ObjectInput in) throws IOException,
+ ClassNotFoundException {
+ extractor = (InternalReadAccessor) in.readObject();
+ declaration = (Declaration) in.readObject();
+ evaluator = (Evaluator) in.readObject();
}
public void writeExternal(ObjectOutput out) throws IOException {
- out.writeObject(extractor);
- out.writeObject(declaration);
- out.writeObject(evaluator);
+ out.writeObject( extractor );
+ out.writeObject( declaration );
+ out.writeObject( evaluator );
}
+
public Declaration getDeclaration() {
return this.declaration;
}
- public FieldExtractor getExtractor() {
+ public ReadAccessor getExtractor() {
return this.extractor;
}
@@ -486,7 +496,9 @@
}
}
- public static interface Index extends Externalizable {
+ public static interface Index
+ extends
+ Externalizable {
public FieldIndex getFieldIndex(int index);
public int hashCodeOf(LeftTuple tuple);
@@ -507,13 +519,13 @@
implements
Index {
- private static final long serialVersionUID = -1022777958435032326L;
+ private static final long serialVersionUID = -1022777958435032326L;
- private FieldExtractor extractor;
- private Declaration declaration;
- private Evaluator evaluator;
+ private InternalReadAccessor extractor;
+ private Declaration declaration;
+ private Evaluator evaluator;
- private int startResult;
+ private int startResult;
public SingleIndex() {
@@ -528,38 +540,41 @@
this.evaluator = indexes[0].evaluator;
}
- public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
- extractor = (FieldExtractor)in.readObject();
- declaration = (Declaration)in.readObject();
- evaluator = (Evaluator)in.readObject();
+ public void readExternal(ObjectInput in) throws IOException,
+ ClassNotFoundException {
+ extractor = (InternalReadAccessor) in.readObject();
+ declaration = (Declaration) in.readObject();
+ evaluator = (Evaluator) in.readObject();
startResult = in.readInt();
}
public void writeExternal(ObjectOutput out) throws IOException {
- out.writeObject(extractor);
- out.writeObject(declaration);
- out.writeObject(evaluator);
- out.writeInt(startResult);
+ out.writeObject( extractor );
+ out.writeObject( declaration );
+ out.writeObject( evaluator );
+ out.writeInt( startResult );
}
-
public FieldIndex getFieldIndex(int index) {
if ( index > 0 ) {
- throw new IllegalArgumentException("Index position " + index + " does not exist" );
+ throw new IllegalArgumentException( "Index position " + index + " does not exist" );
}
- return new FieldIndex(extractor, declaration, evaluator);
+ return new FieldIndex( extractor,
+ declaration,
+ evaluator );
}
-
public int hashCodeOf(final Object object) {
int hashCode = this.startResult;
- hashCode = LeftTupleIndexHashTable.PRIME * hashCode + this.extractor.getHashCode( null, object );
+ hashCode = LeftTupleIndexHashTable.PRIME * hashCode + this.extractor.getHashCode( null,
+ object );
return rehash( hashCode );
}
public int hashCodeOf(final LeftTuple tuple) {
int hashCode = this.startResult;
- hashCode = LeftTupleIndexHashTable.PRIME * hashCode + this.declaration.getHashCode( null, tuple.get( this.declaration ).getObject() );
+ hashCode = LeftTupleIndexHashTable.PRIME * hashCode + this.declaration.getHashCode( null,
+ tuple.get( this.declaration ).getObject() );
return rehash( hashCode );
}
@@ -570,7 +585,8 @@
return this.evaluator.evaluate( null,
this.declaration.getExtractor(),
left,
- this.extractor, right );
+ this.extractor,
+ right );
}
public boolean equal(final Object object1,
@@ -579,7 +595,8 @@
return this.evaluator.evaluate( null,
this.extractor,
object1,
- this.extractor, object2 );
+ this.extractor,
+ object2 );
}
public boolean equal(final LeftTuple tuple1,
@@ -589,7 +606,8 @@
return this.evaluator.evaluate( null,
this.declaration.getExtractor(),
object1,
- this.declaration.getExtractor(), object2 );
+ this.declaration.getExtractor(),
+ object2 );
}
public int rehash(int h) {
@@ -608,14 +626,15 @@
private static final long serialVersionUID = 5453765340969897686L;
- private FieldIndex index0;
- private FieldIndex index1;
+ private FieldIndex index0;
+ private FieldIndex index1;
- private int startResult;
+ private int startResult;
public DoubleCompositeIndex() {
}
+
public DoubleCompositeIndex(final FieldIndex[] indexes,
final int startResult) {
this.startResult = startResult;
@@ -624,34 +643,37 @@
this.index1 = indexes[1];
}
- public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
- index0 = (FieldIndex)in.readObject();
- index1 = (FieldIndex)in.readObject();
+ public void readExternal(ObjectInput in) throws IOException,
+ ClassNotFoundException {
+ index0 = (FieldIndex) in.readObject();
+ index1 = (FieldIndex) in.readObject();
startResult = in.readInt();
}
public void writeExternal(ObjectOutput out) throws IOException {
- out.writeObject(index0);
- out.writeObject(index1);
- out.writeInt(startResult);
+ out.writeObject( index0 );
+ out.writeObject( index1 );
+ out.writeInt( startResult );
}
public FieldIndex getFieldIndex(int index) {
switch ( index ) {
- case 0:
+ case 0 :
return index0;
- case 1:
+ case 1 :
return index1;
- default:
- throw new IllegalArgumentException("Index position " + index + " does not exist" );
+ default :
+ throw new IllegalArgumentException( "Index position " + index + " does not exist" );
}
}
public int hashCodeOf(final Object object) {
int hashCode = this.startResult;
- hashCode = LeftTupleIndexHashTable.PRIME * hashCode + this.index0.extractor.getHashCode( null, object );
- hashCode = LeftTupleIndexHashTable.PRIME * hashCode + this.index1.extractor.getHashCode( null, object );
+ hashCode = LeftTupleIndexHashTable.PRIME * hashCode + this.index0.extractor.getHashCode( null,
+ object );
+ hashCode = LeftTupleIndexHashTable.PRIME * hashCode + this.index1.extractor.getHashCode( null,
+ object );
return rehash( hashCode );
}
@@ -659,8 +681,10 @@
public int hashCodeOf(final LeftTuple tuple) {
int hashCode = this.startResult;
- hashCode = LeftTupleIndexHashTable.PRIME * hashCode + this.index0.declaration.getHashCode( null, tuple.get( this.index0.declaration ).getObject() );
- hashCode = LeftTupleIndexHashTable.PRIME * hashCode + this.index1.declaration.getHashCode( null, tuple.get( this.index1.declaration ).getObject() );
+ hashCode = LeftTupleIndexHashTable.PRIME * hashCode + this.index0.declaration.getHashCode( null,
+ tuple.get( this.index0.declaration ).getObject() );
+ hashCode = LeftTupleIndexHashTable.PRIME * hashCode + this.index1.declaration.getHashCode( null,
+ tuple.get( this.index1.declaration ).getObject() );
return rehash( hashCode );
}
@@ -673,10 +697,12 @@
return this.index0.evaluator.evaluate( null,
this.index0.declaration.getExtractor(),
left1,
- this.index0.extractor, right ) && this.index1.evaluator.evaluate( null,
+ this.index0.extractor,
+ right ) && this.index1.evaluator.evaluate( null,
this.index1.declaration.getExtractor(),
left2,
- this.index1.extractor, right );
+ this.index1.extractor,
+ right );
}
public boolean equal(final LeftTuple tuple1,
@@ -690,10 +716,12 @@
return this.index0.evaluator.evaluate( null,
this.index0.declaration.getExtractor(),
object11,
- this.index0.declaration.getExtractor(), object12 ) && this.index1.evaluator.evaluate( null,
+ this.index0.declaration.getExtractor(),
+ object12 ) && this.index1.evaluator.evaluate( null,
this.index1.declaration.getExtractor(),
object21,
- this.index1.declaration.getExtractor(), object22 );
+ this.index1.declaration.getExtractor(),
+ object22 );
}
public boolean equal(final Object object1,
@@ -701,10 +729,12 @@
return this.index0.evaluator.evaluate( null,
this.index0.extractor,
object1,
- this.index0.extractor, object2 ) && this.index1.evaluator.evaluate( null,
+ this.index0.extractor,
+ object2 ) && this.index1.evaluator.evaluate( null,
this.index1.extractor,
object1,
- this.index1.extractor, object2 );
+ this.index1.extractor,
+ object2 );
}
public int rehash(int h) {
@@ -722,11 +752,11 @@
private static final long serialVersionUID = 7743486670399440233L;
- private FieldIndex index0;
- private FieldIndex index1;
- private FieldIndex index2;
+ private FieldIndex index0;
+ private FieldIndex index1;
+ private FieldIndex index2;
- private int startResult;
+ private int startResult;
public TripleCompositeIndex() {
@@ -741,39 +771,43 @@
this.index2 = indexes[2];
}
- public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
- index0 = (FieldIndex)in.readObject();
- index1 = (FieldIndex)in.readObject();
- index2 = (FieldIndex)in.readObject();
+ public void readExternal(ObjectInput in) throws IOException,
+ ClassNotFoundException {
+ index0 = (FieldIndex) in.readObject();
+ index1 = (FieldIndex) in.readObject();
+ index2 = (FieldIndex) in.readObject();
startResult = in.readInt();
}
public void writeExternal(ObjectOutput out) throws IOException {
- out.writeObject(index0);
- out.writeObject(index1);
- out.writeObject(index2);
- out.writeInt(startResult);
+ out.writeObject( index0 );
+ out.writeObject( index1 );
+ out.writeObject( index2 );
+ out.writeInt( startResult );
}
public FieldIndex getFieldIndex(int index) {
switch ( index ) {
- case 0:
+ case 0 :
return index0;
- case 1:
+ case 1 :
return index1;
- case 2:
+ case 2 :
return index2;
- default:
- throw new IllegalArgumentException("Index position " + index + " does not exist" );
+ default :
+ throw new IllegalArgumentException( "Index position " + index + " does not exist" );
}
}
public int hashCodeOf(final Object object) {
int hashCode = this.startResult;
- hashCode = LeftTupleIndexHashTable.PRIME * hashCode + this.index0.extractor.getHashCode( null, object );;
- hashCode = LeftTupleIndexHashTable.PRIME * hashCode + this.index1.extractor.getHashCode( null, object );;
- hashCode = LeftTupleIndexHashTable.PRIME * hashCode + this.index2.extractor.getHashCode( null, object );;
+ hashCode = LeftTupleIndexHashTable.PRIME * hashCode + this.index0.extractor.getHashCode( null,
+ object );;
+ hashCode = LeftTupleIndexHashTable.PRIME * hashCode + this.index1.extractor.getHashCode( null,
+ object );;
+ hashCode = LeftTupleIndexHashTable.PRIME * hashCode + this.index2.extractor.getHashCode( null,
+ object );;
return rehash( hashCode );
}
@@ -781,9 +815,12 @@
public int hashCodeOf(final LeftTuple tuple) {
int hashCode = this.startResult;
- hashCode = LeftTupleIndexHashTable.PRIME * hashCode + this.index0.declaration.getHashCode( null, tuple.get( this.index0.declaration ).getObject() );
- hashCode = LeftTupleIndexHashTable.PRIME * hashCode + this.index1.declaration.getHashCode( null, tuple.get( this.index1.declaration ).getObject() );
- hashCode = LeftTupleIndexHashTable.PRIME * hashCode + this.index2.declaration.getHashCode( null, tuple.get( this.index2.declaration ).getObject() );
+ hashCode = LeftTupleIndexHashTable.PRIME * hashCode + this.index0.declaration.getHashCode( null,
+ tuple.get( this.index0.declaration ).getObject() );
+ hashCode = LeftTupleIndexHashTable.PRIME * hashCode + this.index1.declaration.getHashCode( null,
+ tuple.get( this.index1.declaration ).getObject() );
+ hashCode = LeftTupleIndexHashTable.PRIME * hashCode + this.index2.declaration.getHashCode( null,
+ tuple.get( this.index2.declaration ).getObject() );
return rehash( hashCode );
}
@@ -797,13 +834,16 @@
return this.index0.evaluator.evaluate( null,
this.index0.declaration.getExtractor(),
left1,
- this.index0.extractor, right ) && this.index1.evaluator.evaluate( null,
+ this.index0.extractor,
+ right ) && this.index1.evaluator.evaluate( null,
this.index1.declaration.getExtractor(),
left2,
- this.index1.extractor, right ) && this.index2.evaluator.evaluate( null,
+ this.index1.extractor,
+ right ) && this.index2.evaluator.evaluate( null,
this.index2.declaration.getExtractor(),
left3,
- this.index2.extractor, right );
+ this.index2.extractor,
+ right );
}
public boolean equal(final LeftTuple tuple1,
@@ -818,13 +858,16 @@
return this.index0.evaluator.evaluate( null,
this.index0.declaration.getExtractor(),
object11,
- this.index0.declaration.getExtractor(), object12 ) && this.index1.evaluator.evaluate( null,
+ this.index0.declaration.getExtractor(),
+ object12 ) && this.index1.evaluator.evaluate( null,
this.index1.declaration.getExtractor(),
object21,
- this.index1.declaration.getExtractor(), object22 ) && this.index2.evaluator.evaluate( null,
+ this.index1.declaration.getExtractor(),
+ object22 ) && this.index2.evaluator.evaluate( null,
this.index2.declaration.getExtractor(),
object31,
- this.index2.declaration.getExtractor(), object32 );
+ this.index2.declaration.getExtractor(),
+ object32 );
}
public boolean equal(final Object object1,
@@ -832,13 +875,16 @@
return this.index0.evaluator.evaluate( null,
this.index0.extractor,
object1,
- this.index0.extractor, object2 ) && this.index1.evaluator.evaluate( null,
+ this.index0.extractor,
+ object2 ) && this.index1.evaluator.evaluate( null,
this.index1.extractor,
object1,
- this.index1.extractor, object2 ) && this.index2.evaluator.evaluate( null,
+ this.index1.extractor,
+ object2 ) && this.index2.evaluator.evaluate( null,
this.index2.extractor,
object1,
- this.index2.extractor, object2 );
+ this.index2.extractor,
+ object2 );
}
public int rehash(int h) {
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/util/asm/ClassFieldInspector.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/util/asm/ClassFieldInspector.java 2008-05-16 15:22:07 UTC (rev 19970)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/util/asm/ClassFieldInspector.java 2008-05-16 18:29:20 UTC (rev 19971)
@@ -21,10 +21,8 @@
import java.io.InputStream;
import java.lang.reflect.Method;
import java.lang.reflect.Modifier;
-import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
-import java.util.List;
import java.util.Map;
import java.util.Set;
@@ -47,22 +45,22 @@
*/
public class ClassFieldInspector {
- private final List methods = new ArrayList();
- private final Map fieldNames = new HashMap();
- private final Map fieldTypes = new HashMap();
- private final Map methodNames = new HashMap();
- private final Set nonGetters = new HashSet();
+ private final Map<String, Integer> fieldNames = new HashMap<String, Integer>();
+ private final Map<String, Class< ? >> fieldTypes = new HashMap<String, Class< ? >>();
+ private final Map<String, Method> getterMethods = new HashMap<String, Method>();
+ private final Map<String, Method> setterMethods = new HashMap<String, Method>();
+ private final Set<String> nonGetters = new HashSet<String>();
/**
- * @param clazz The class that the fields to be shadowed are extracted for.
+ * @param clazz The class sthat the fields to be shadowed are extracted for.
* @throws IOException
*/
- public ClassFieldInspector(final Class clazz) throws IOException {
+ public ClassFieldInspector(final Class< ? > clazz) throws IOException {
this( clazz,
true );
}
- public ClassFieldInspector(final Class clazz,
+ public ClassFieldInspector(final Class< ? > clazz,
final boolean includeFinalMethods) throws IOException {
final String name = getResourcePath( clazz );
final InputStream stream = clazz.getResourceAsStream( name );
@@ -78,7 +76,7 @@
}
/** Walk up the inheritance hierarchy recursively, reading in fields */
- private void processClassWithByteCode(final Class clazz,
+ private void processClassWithByteCode(final Class< ? > clazz,
final InputStream stream,
final boolean includeFinalMethods) throws IOException {
@@ -101,7 +99,7 @@
}
}
if ( clazz.isInterface() ) {
- final Class[] interfaces = clazz.getInterfaces();
+ final Class< ? >[] interfaces = clazz.getInterfaces();
for ( int i = 0; i < interfaces.length; i++ ) {
final String name = getResourcePath( interfaces[i] );
final InputStream parentStream = clazz.getResourceAsStream( name );
@@ -117,20 +115,28 @@
}
}
- private void processClassWithoutByteCode(final Class clazz,
+ private void processClassWithoutByteCode(final Class< ? > clazz,
final boolean includeFinalMethods) {
final Method[] methods = clazz.getMethods();
for ( int i = 0; i < methods.length; i++ ) {
-
- //only want public methods that start with 'get' or 'is'
- //and have no args, and return a value
+ // modifiers mask
final int mask = includeFinalMethods ? Modifier.PUBLIC : Modifier.PUBLIC | Modifier.FINAL;
- if ( ((methods[i].getModifiers() & mask) == Modifier.PUBLIC) && (methods[i].getParameterTypes().length == 0) && (!methods[i].getName().equals( "<init>" )) &&
- ( !methods[i].getName().equals( "<clinit>" )) &&
- (methods[i].getReturnType() != void.class) ) {
- final int fieldIndex = this.methods.size();
+
+ if ( ((methods[i].getModifiers() & mask) == Opcodes.ACC_PUBLIC ) && (methods[i].getParameterTypes().length == 0) && (!methods[i].getName().equals( "<init>" )) && (!methods[i].getName().equals( "<clinit>" ))
+ && (methods[i].getReturnType() != void.class) ) {
+
+ // want public methods that start with 'get' or 'is' and have no args, and return a value
+ final int fieldIndex = this.fieldNames.size();
addToMapping( methods[i],
fieldIndex );
+
+ } else if ( ((methods[i].getModifiers() & mask) == Opcodes.ACC_PUBLIC ) && (methods[i].getParameterTypes().length == 1) && (methods[i].getName().startsWith( "set" ))) {
+
+ // want public methods that start with 'set' and have one arg
+ final int fieldIndex = this.fieldNames.size();
+ addToMapping( methods[i],
+ fieldIndex );
+
}
}
}
@@ -138,48 +144,46 @@
/**
* Convert it to a form so we can load the bytes from the classpath.
*/
- private String getResourcePath(final Class clazz) {
- return "/" + clazz.getName().replace( '.',
- '/' ) + ".class";
+ private String getResourcePath(final Class< ? > clazz) {
+ return "/" + clazz.getCanonicalName() + ".class";
}
- /**
- * Return a list in order of which the getters (and "is") methods were found.
- * This should only be done once when compiling a rulebase ideally.
- */
- public List getPropertyGetters() {
- return this.methods;
- }
-
/**
* Return a mapping of the field "names" (ie bean property name convention)
* to the numerical index by which they can be accessed.
*/
- public Map getFieldNames() {
+ public Map<String, Integer> getFieldNames() {
return this.fieldNames;
}
/**
* @return A mapping of field types (unboxed).
*/
- public Map getFieldTypes() {
+ public Map<String, Class< ? >> getFieldTypes() {
return this.fieldTypes;
}
/**
* @return A mapping of methods for the getters.
*/
- public Map getGetterMethods() {
- return this.methodNames;
+ public Map<String, Method> getGetterMethods() {
+ return this.getterMethods;
}
+ /**
+ * @return A mapping of methods for the getters.
+ */
+ public Map<String, Method> getSetterMethods() {
+ return this.setterMethods;
+ }
+
private void addToMapping(final Method method,
final int index) {
final String name = method.getName();
int offset;
if ( name.startsWith( "is" ) ) {
offset = 2;
- } else if ( name.startsWith( "get" ) ) {
+ } else if ( name.startsWith( "get" ) || name.startsWith( "set" ) ) {
offset = 3;
} else {
offset = 0;
@@ -190,42 +194,67 @@
//only want it once, the first one thats found
if ( offset != 0 && this.nonGetters.contains( fieldName ) ) {
//replace the non getter method with the getter one
- removeOldField( fieldName );
+ Integer oldIndex = removeOldField( fieldName );
storeField( method,
- index,
+ oldIndex,
fieldName );
+ storeGetterSetter( method,
+ fieldName );
this.nonGetters.remove( fieldName );
+ } else if ( offset != 0 ) {
+ storeGetterSetter( method,
+ fieldName );
}
} else {
storeField( method,
- index,
+ new Integer( index ),
fieldName );
+ storeGetterSetter( method,
+ fieldName );
+
if ( offset == 0 ) {
+ // only if it is a non-standard getter method
this.nonGetters.add( fieldName );
}
}
}
- private void removeOldField(final String fieldName) {
- this.fieldNames.remove( fieldName );
+ private Integer removeOldField(final String fieldName) {
+ Integer index = this.fieldNames.remove( fieldName );
this.fieldTypes.remove( fieldName );
- this.methods.remove( this.methodNames.get( fieldName ) );
- this.methodNames.remove( fieldName );
+ this.getterMethods.remove( fieldName );
+ return index;
}
private void storeField(final Method method,
- final int index,
+ final Integer index,
final String fieldName) {
this.fieldNames.put( fieldName,
- new Integer( index ) );
- this.fieldTypes.put( fieldName,
- method.getReturnType() );
- this.methodNames.put( fieldName,
- method );
- this.methods.add( method );
+ index );
}
+ /**
+ * @param method
+ * @param fieldName
+ */
+ private void storeGetterSetter(final Method method,
+ final String fieldName) {
+ if( method.getName().startsWith( "set" ) ) {
+ this.setterMethods.put( fieldName,
+ method );
+ if( ! fieldTypes.containsKey( fieldName ) ) {
+ this.fieldTypes.put( fieldName,
+ method.getParameterTypes()[0] );
+ }
+ } else {
+ this.getterMethods.put( fieldName,
+ method );
+ this.fieldTypes.put( fieldName,
+ method.getReturnType() );
+ }
+ }
+
private String calcFieldName(String name,
final int offset) {
name = name.substring( offset );
@@ -240,11 +269,11 @@
implements
ClassVisitor {
- private Class clazz;
+ private Class< ? > clazz;
private ClassFieldInspector inspector;
private boolean includeFinalMethods;
- ClassFieldVisitor(final Class cls,
+ ClassFieldVisitor(final Class< ? > cls,
final boolean includeFinalMethods,
final ClassFieldInspector inspector) {
this.clazz = cls;
@@ -261,13 +290,14 @@
//and have no args, and return a value
final int mask = this.includeFinalMethods ? Opcodes.ACC_PUBLIC : Opcodes.ACC_PUBLIC | Opcodes.ACC_FINAL;
if ( (access & mask) == Opcodes.ACC_PUBLIC ) {
- if ( desc.startsWith( "()" ) && (!name.equals( "<init>" )) &&
- ( ! name.equals( "<clinit>" ) ) ) {// && ( name.startsWith("get") || name.startsWith("is") ) ) {
+ if (( desc.startsWith( "()" ) && (!name.equals( "<init>" )) && (!name.equals( "<clinit>" )) ) ||
+ ( name.startsWith( "set" ) ) ){// && ( name.startsWith("get") || name.startsWith("is") ) ) {
try {
final Method method = this.clazz.getMethod( name,
(Class[]) null );
- if ( method.getReturnType() != void.class ) {
- final int fieldIndex = this.inspector.methods.size();
+ if ( method.getReturnType() != void.class ||
+ ( method.getName().startsWith( "set" ) && ( method.getParameterTypes().length == 1 ) ) ) {
+ final int fieldIndex = this.inspector.fieldNames.size();
this.inspector.addToMapping( method,
fieldIndex );
}
Modified: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/agent/RuleAgentTest.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/agent/RuleAgentTest.java 2008-05-16 15:22:07 UTC (rev 19970)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/agent/RuleAgentTest.java 2008-05-16 18:29:20 UTC (rev 19971)
@@ -136,10 +136,10 @@
//now check subsequent changes
p1.addGlobal( "goo2", String.class );
- System.err.println("-->WRITING CHANGE");
+// System.err.println("-->WRITING CHANGE");
Thread.sleep( 1000 );
RuleBaseAssemblerTest.writePackage( p1, p1f );
- System.err.println("-->WROTE CHANGE");
+// System.err.println("-->WROTE CHANGE");
Thread.sleep( 1000 );
ag.refreshRuleBase();
Copied: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/base/BaseClassFieldAccessorFactoryTest.java (from rev 19963, labs/jbossrules/trunk/drools-core/src/test/java/org/drools/base/BaseClassFieldExtractorFactoryTest.java)
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/base/BaseClassFieldAccessorFactoryTest.java (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/base/BaseClassFieldAccessorFactoryTest.java 2008-05-16 18:29:20 UTC (rev 19971)
@@ -0,0 +1,96 @@
+package org.drools.base;
+
+/*
+ * Copyright 2005 JBoss Inc
+ *
+ * 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.
+ */
+
+import junit.framework.TestCase;
+
+import org.drools.spi.InternalReadAccessor;
+import org.drools.util.asm.BeanInherit;
+import org.drools.util.asm.TestAbstract;
+import org.drools.util.asm.TestAbstractImpl;
+import org.drools.util.asm.TestInterface;
+import org.drools.util.asm.TestInterfaceImpl;
+
+public class BaseClassFieldAccessorFactoryTest extends TestCase {
+
+ private ClassFieldAccessorCache cache;
+
+ protected void setUp() throws Exception {
+ super.setUp();
+ cache = ClassFieldAccessorCache.getInstance();
+ }
+
+ public void testIt() throws Exception {
+ ClassFieldAccessorFactory factory = new ClassFieldAccessorFactory();
+
+ InternalReadAccessor ex = factory.getClassFieldReader( TestBean.class,
+ "name",
+ Thread.currentThread().getContextClassLoader() );
+ assertEquals( "michael",
+ ex.getValue( null,
+ new TestBean() ) );
+ ex = factory.getClassFieldReader( TestBean.class,
+ "age",
+ Thread.currentThread().getContextClassLoader() );
+ assertEquals( 42,
+ ((Number) ex.getValue( null,
+ new TestBean() )).intValue() );
+
+ }
+
+ public void testInterface() throws Exception {
+ final InternalReadAccessor ex = cache.getReader( TestInterface.class,
+ "something",
+ getClass().getClassLoader() );
+ assertEquals( 0,
+ ex.getIndex() );
+ assertEquals( "foo",
+ ex.getValue( null,
+ new TestInterfaceImpl() ) );
+ }
+
+ public void testAbstract() throws Exception {
+ final InternalReadAccessor ex = cache.getReader( TestAbstract.class,
+ "something",
+ getClass().getClassLoader() );
+ assertEquals( 0,
+ ex.getIndex() );
+ assertEquals( "foo",
+ ex.getValue( null,
+ new TestAbstractImpl() ) );
+ }
+
+ public void testInherited() throws Exception {
+ final InternalReadAccessor ex = cache.getReader( BeanInherit.class,
+ "text",
+ getClass().getClassLoader() );
+ assertEquals( "hola",
+ ex.getValue( null,
+ new BeanInherit() ) );
+ }
+
+ public void testSelfReference() throws Exception {
+ final InternalReadAccessor ex = cache.getReader( BeanInherit.class,
+ "this",
+ getClass().getClassLoader() );
+ final TestBean bean = new TestBean();
+ assertEquals( bean,
+ ex.getValue( null,
+ bean ) );
+ }
+
+}
\ No newline at end of file
Deleted: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/base/BaseClassFieldExtractorFactoryTest.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/base/BaseClassFieldExtractorFactoryTest.java 2008-05-16 15:22:07 UTC (rev 19970)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/base/BaseClassFieldExtractorFactoryTest.java 2008-05-16 18:29:20 UTC (rev 19971)
@@ -1,100 +0,0 @@
-package org.drools.base;
-
-/*
- * Copyright 2005 JBoss Inc
- *
- * 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.
- */
-
-import junit.framework.TestCase;
-
-import org.drools.spi.FieldExtractor;
-import org.drools.util.asm.BeanInherit;
-import org.drools.util.asm.TestAbstract;
-import org.drools.util.asm.TestAbstractImpl;
-import org.drools.util.asm.TestInterface;
-import org.drools.util.asm.TestInterfaceImpl;
-
-public class BaseClassFieldExtractorFactoryTest extends TestCase {
-
- private ClassFieldExtractorCache cache;
-
- protected void setUp() throws Exception {
- super.setUp();
- cache = ClassFieldExtractorCache.getInstance();
- }
-
- public void testIt() throws Exception {
- ClassFieldExtractorFactory factory = new ClassFieldExtractorFactory();
-
- FieldExtractor ex = factory.getClassFieldExtractor( TestBean.class,
- "name",
- Thread.currentThread().getContextClassLoader() );
- assertEquals( 0,
- ex.getIndex() );
- assertEquals( "michael",
- ex.getValue( null,
- new TestBean() ) );
- ex = factory.getClassFieldExtractor( TestBean.class,
- "age",
- Thread.currentThread().getContextClassLoader() );
- assertEquals( 1,
- ex.getIndex() );
- assertEquals( 42,
- ((Number) ex.getValue( null,
- new TestBean() )).intValue() );
-
- }
-
- public void testInterface() throws Exception {
- final FieldExtractor ex = cache.getExtractor( TestInterface.class,
- "something",
- getClass().getClassLoader() );
- assertEquals( 0,
- ex.getIndex() );
- assertEquals( "foo",
- ex.getValue( null,
- new TestInterfaceImpl() ) );
- }
-
- public void testAbstract() throws Exception {
- final FieldExtractor ex = cache.getExtractor( TestAbstract.class,
- "something",
- getClass().getClassLoader() );
- assertEquals( 0,
- ex.getIndex() );
- assertEquals( "foo",
- ex.getValue( null,
- new TestAbstractImpl() ) );
- }
-
- public void testInherited() throws Exception {
- final FieldExtractor ex = cache.getExtractor( BeanInherit.class,
- "text",
- getClass().getClassLoader() );
- assertEquals( "hola",
- ex.getValue( null,
- new BeanInherit() ) );
- }
-
- public void testSelfReference() throws Exception {
- final FieldExtractor ex = cache.getExtractor( BeanInherit.class,
- "this",
- getClass().getClassLoader() );
- final TestBean bean = new TestBean();
- assertEquals( bean,
- ex.getValue( null,
- bean ) );
- }
-
-}
\ No newline at end of file
Copied: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/base/ClassFieldAccessorTest.java (from rev 19963, labs/jbossrules/trunk/drools-core/src/test/java/org/drools/base/ClassFieldExtractorTest.java)
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/base/ClassFieldAccessorTest.java (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/base/ClassFieldAccessorTest.java 2008-05-16 18:29:20 UTC (rev 19971)
@@ -0,0 +1,464 @@
+package org.drools.base;
+
+/*
+ * Copyright 2005 JBoss Inc
+ *
+ * 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.
+ */
+
+import junit.framework.Assert;
+import junit.framework.TestCase;
+
+import org.drools.RuntimeDroolsException;
+import org.drools.util.asm.BeanInherit;
+import org.drools.util.asm.InterfaceChild;
+import org.drools.util.asm.TestAbstract;
+import org.drools.util.asm.TestAbstractImpl;
+import org.drools.util.asm.TestBean;
+import org.drools.util.asm.TestInterface;
+import org.drools.util.asm.TestInterfaceImpl;
+
+public class ClassFieldAccessorTest extends TestCase {
+
+ private ClassFieldAccessorCache cache;
+
+ protected void setUp() throws Exception {
+ super.setUp();
+ cache = ClassFieldAccessorCache.getInstance();
+ }
+
+ public void testBasic() throws Exception {
+ final Object[] objArray = new Object[1];
+
+ final TestBean obj = new TestBean();
+ obj.setBlah( false );
+ obj.setSomething( "no" );
+ obj.setObjArray( objArray );
+
+ final ClassFieldReader ext = cache.getReader( TestBean.class,
+ "blah",
+ getClass().getClassLoader() );
+ assertEquals( false,
+ ((Boolean) ext.getValue( null,
+ obj )).booleanValue() );
+
+ final ClassFieldReader ext2 = cache.getReader( TestBean.class,
+ "fooBar",
+ getClass().getClassLoader() );
+ assertEquals( "fooBar",
+ ext2.getValue( null,
+ obj ) );
+
+ final ClassFieldReader ext3 = cache.getReader( TestBean.class,
+ "objArray",
+ getClass().getClassLoader() );
+ assertEquals( objArray,
+ ext3.getValue( null,
+ obj ) );
+
+ }
+
+ public void testInterface() throws Exception {
+
+ final TestInterface obj = new TestInterfaceImpl();
+ final ClassFieldReader ext = cache.getReader( TestInterface.class,
+ "something",
+ getClass().getClassLoader() );
+
+ assertEquals( "foo",
+ (String) ext.getValue( null,
+ obj ) );
+
+ }
+
+ public void testAbstract() throws Exception {
+
+ final ClassFieldReader ext = cache.getReader( TestAbstract.class,
+ "something",
+ getClass().getClassLoader() );
+ final TestAbstract obj = new TestAbstractImpl();
+ assertEquals( "foo",
+ (String) ext.getValue( null,
+ obj ) );
+
+ }
+
+ public void testInherited() throws Exception {
+ final ClassFieldReader ext = cache.getReader( BeanInherit.class,
+ "text",
+ getClass().getClassLoader() );
+ final BeanInherit obj = new BeanInherit();
+ assertEquals( "hola",
+ (String) ext.getValue( null,
+ obj ) );
+
+ }
+
+ public void testMultipleInterfaces() throws Exception {
+ final ConcreteChild obj = new ConcreteChild();
+ final ClassFieldReader ext = cache.getReader( InterfaceChild.class,
+ "foo",
+ getClass().getClassLoader() );
+ assertEquals( 42,
+ ((Number) ext.getValue( null,
+ obj )).intValue() );
+ }
+
+ public void testLong() throws Exception {
+ final ClassFieldReader ext = cache.getReader( TestBean.class,
+ "longField",
+ getClass().getClassLoader() );
+ final TestBean bean = new TestBean();
+ assertEquals( 424242,
+ ((Number) ext.getValue( null,
+ bean )).longValue() );
+ }
+
+ public void testNonExistentField() throws Exception {
+ final Object[] objArray = new Object[1];
+
+ final TestBean obj = new TestBean();
+ obj.setBlah( false );
+ obj.setSomething( "no" );
+ obj.setObjArray( objArray );
+
+ try {
+ final ClassFieldReader ext = cache.getReader( TestBean.class,
+ "xyz",
+ getClass().getClassLoader() );
+ fail( "A RuntimeDroolsException should have been raised" );
+ } catch ( RuntimeDroolsException e ) {
+ // everything is fine, since field does not exist
+ // e.printStackTrace();
+ } catch ( Exception e ) {
+ fail( "A RuntimeDroolsException should have been raised" );
+ }
+
+ }
+
+ public void testBuildFieldAccessor() {
+ try {
+ ClassFieldAccessor intAccessor = cache.getAccessor( TestClass.class,
+ "intAttr",
+ getClass().getClassLoader() );
+ ClassFieldAccessor strAccessor = cache.getAccessor( TestClass.class,
+ "strAttr",
+ getClass().getClassLoader() );
+
+ String testString1 = "TestAttr1";
+ String testString2 = "TestAttr2";
+ TestClass instance = new TestClass();
+ instance.setIntAttr( 10 );
+ instance.setStrAttr( testString1 );
+
+ Assert.assertEquals( "Error reading int attr",
+ 10,
+ ((Integer) intAccessor.getValue( instance )).intValue() );
+ Assert.assertEquals( "Error reading int attr",
+ 10,
+ intAccessor.getIntValue( instance ) );
+ Assert.assertEquals( "Error reading String attr",
+ testString1,
+ strAccessor.getValue( instance ) );
+
+ intAccessor.setValue( instance,
+ new Integer( 50 ) );
+ strAccessor.setValue( instance,
+ testString2 );
+
+ Assert.assertEquals( "Error setting int attr",
+ 50,
+ instance.getIntAttr() );
+ Assert.assertEquals( "Error setting String attr",
+ testString2,
+ instance.getStrAttr() );
+
+ intAccessor.setIntValue( instance,
+ 40 );
+ Assert.assertEquals( "Error reading int attr",
+ 40,
+ intAccessor.getIntValue( instance ) );
+ Assert.assertEquals( "Error reading String attr",
+ testString2,
+ strAccessor.getValue( instance ) );
+
+ } catch ( Exception e ) {
+ e.printStackTrace();
+ Assert.fail( "No exception is supposed to be generated when creating field accessor: " + e );
+ }
+ }
+
+ public void testNullOnPrimitives() {
+ try {
+ ClassFieldAccessor intAccessor = cache.getAccessor( TestClass.class,
+ "intAttr",
+ getClass().getClassLoader() );
+ ClassFieldAccessor strAccessor = cache.getAccessor( TestClass.class,
+ "strAttr",
+ getClass().getClassLoader() );
+ ClassFieldAccessor byteAccessor = cache.getAccessor( TestClass.class,
+ "byteAttr",
+ getClass().getClassLoader() );
+ ClassFieldAccessor booleanAccessor = cache.getAccessor( TestClass.class,
+ "booleanAttr",
+ getClass().getClassLoader() );
+ ClassFieldAccessor charAccessor = cache.getAccessor( TestClass.class,
+ "charAttr",
+ getClass().getClassLoader() );
+ ClassFieldAccessor doubleAccessor = cache.getAccessor( TestClass.class,
+ "doubleAttr",
+ getClass().getClassLoader() );
+ ClassFieldAccessor floatAccessor = cache.getAccessor( TestClass.class,
+ "floatAttr",
+ getClass().getClassLoader() );
+ ClassFieldAccessor longAccessor = cache.getAccessor( TestClass.class,
+ "longAttr",
+ getClass().getClassLoader() );
+ ClassFieldAccessor shortAccessor = cache.getAccessor( TestClass.class,
+ "shortAttr",
+ getClass().getClassLoader() );
+
+ String testString1 = "TestAttr1";
+ TestClass instance = new TestClass();
+ instance.setIntAttr( 25 );
+ instance.setStrAttr( testString1 );
+ instance.setByteAttr( (byte) 10 );
+ instance.setBooleanAttr( true );
+ instance.setCharAttr( 'x' );
+ instance.setDoubleAttr( 10.5d );
+ instance.setFloatAttr( 40.3f );
+ instance.setLongAttr( 43l );
+ instance.setShortAttr( (short) 20 );
+
+ intAccessor.setValue( instance,
+ null );
+ strAccessor.setValue( instance,
+ null );
+ byteAccessor.setValue( instance,
+ null );
+ booleanAccessor.setValue( instance,
+ null );
+ charAccessor.setValue( instance,
+ null );
+ doubleAccessor.setValue( instance,
+ null );
+ floatAccessor.setValue( instance,
+ null );
+ longAccessor.setValue( instance,
+ null );
+ shortAccessor.setValue( instance,
+ null );
+
+ Assert.assertEquals( "Error setting attr",
+ 0,
+ instance.getIntAttr() );
+ Assert.assertNull( "Error setting attr",
+ instance.getStrAttr() );
+ Assert.assertEquals( "Error setting attr",
+ 0,
+ instance.getByteAttr() );
+ Assert.assertEquals( "Error setting attr",
+ false,
+ instance.isBooleanAttr() );
+ Assert.assertEquals( "Error setting attr",
+ '\0',
+ instance.getCharAttr() );
+ Assert.assertEquals( "Error setting attr",
+ 0.0d,
+ instance.getDoubleAttr(),
+ 0.1d );
+ Assert.assertEquals( "Error setting attr",
+ 0.0f,
+ instance.getFloatAttr(),
+ 0.1f );
+ Assert.assertEquals( "Error setting attr",
+ 0l,
+ instance.getLongAttr() );
+ Assert.assertEquals( "Error setting attr",
+ (short) 0,
+ instance.getShortAttr() );
+
+ Assert.assertEquals( "Error reading int attr",
+ 0,
+ ((Integer) intAccessor.getValue( instance )).intValue() );
+ Assert.assertNull( "Error reading String attr",
+ strAccessor.getValue( instance ) );
+ Assert.assertEquals( "Error reading attr",
+ 0,
+ ((Byte) byteAccessor.getValue( instance )).byteValue() );
+ Assert.assertEquals( "Error reading attr",
+ false,
+ ((Boolean) booleanAccessor.getValue( instance )).booleanValue() );
+ Assert.assertEquals( "Error reading attr",
+ '\0',
+ ((Character) charAccessor.getValue( instance )).charValue() );
+ Assert.assertEquals( "Error reading attr",
+ 0.0d,
+ ((Double) doubleAccessor.getValue( instance )).doubleValue(),
+ 0.1d );
+ Assert.assertEquals( "Error reading attr",
+ 0.0f,
+ ((Float) floatAccessor.getValue( instance )).floatValue(),
+ 0.1f );
+ Assert.assertEquals( "Error reading attr",
+ 0l,
+ ((Long) longAccessor.getValue( instance )).longValue() );
+ Assert.assertEquals( "Error reading attr",
+ (short) 0,
+ ((Short) shortAccessor.getValue( instance )).shortValue() );
+
+ } catch ( Exception e ) {
+ e.printStackTrace();
+ Assert.fail( "No exception is supposed to be generated when creating field accessor: " + e );
+ }
+ }
+
+ public static class TestClass {
+ private int intAttr;
+ private String strAttr;
+ private byte byteAttr;
+ private boolean booleanAttr;
+ private char charAttr;
+ private double doubleAttr;
+ private float floatAttr;
+ private long longAttr;
+ private short shortAttr;
+
+ /**
+ * @return Returns the intAttr.
+ */
+ public int getIntAttr() {
+ return intAttr;
+ }
+
+ /**
+ * @param intAttr The intAttr to set.
+ */
+ public void setIntAttr(int intAttr) {
+ this.intAttr = intAttr;
+ }
+
+ /**
+ * @return Returns the strAttr.
+ */
+ public String getStrAttr() {
+ return strAttr;
+ }
+
+ /**
+ * @param strAttr The strAttr to set.
+ */
+ public void setStrAttr(String strAttr) {
+ this.strAttr = strAttr;
+ }
+
+ /**
+ * @return Returns the booleanAttr.
+ */
+ public boolean isBooleanAttr() {
+ return booleanAttr;
+ }
+
+ /**
+ * @param booleanAttr The booleanAttr to set.
+ */
+ public void setBooleanAttr(boolean booleanAttr) {
+ this.booleanAttr = booleanAttr;
+ }
+
+ /**
+ * @return Returns the byteAttr.
+ */
+ public byte getByteAttr() {
+ return byteAttr;
+ }
+
+ /**
+ * @param byteAttr The byteAttr to set.
+ */
+ public void setByteAttr(byte byteAttr) {
+ this.byteAttr = byteAttr;
+ }
+
+ /**
+ * @return Returns the charAttr.
+ */
+ public char getCharAttr() {
+ return charAttr;
+ }
+
+ /**
+ * @param charAttr The charAttr to set.
+ */
+ public void setCharAttr(char charAttr) {
+ this.charAttr = charAttr;
+ }
+
+ /**
+ * @return Returns the doubleAttr.
+ */
+ public double getDoubleAttr() {
+ return doubleAttr;
+ }
+
+ /**
+ * @param doubleAttr The doubleAttr to set.
+ */
+ public void setDoubleAttr(double doubleAttr) {
+ this.doubleAttr = doubleAttr;
+ }
+
+ /**
+ * @return Returns the floatAttr.
+ */
+ public float getFloatAttr() {
+ return floatAttr;
+ }
+
+ /**
+ * @param floatAttr The floatAttr to set.
+ */
+ public void setFloatAttr(float floatAttr) {
+ this.floatAttr = floatAttr;
+ }
+
+ /**
+ * @return Returns the longAttr.
+ */
+ public long getLongAttr() {
+ return longAttr;
+ }
+
+ /**
+ * @param longAttr The longAttr to set.
+ */
+ public void setLongAttr(long longAttr) {
+ this.longAttr = longAttr;
+ }
+
+ /**
+ * @return Returns the shortAttr.
+ */
+ public short getShortAttr() {
+ return shortAttr;
+ }
+
+ /**
+ * @param shortAttr The shortAttr to set.
+ */
+ public void setShortAttr(short shortAttr) {
+ this.shortAttr = shortAttr;
+ }
+ }
+
+}
\ No newline at end of file
Deleted: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/base/ClassFieldExtractorTest.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/base/ClassFieldExtractorTest.java 2008-05-16 15:22:07 UTC (rev 19970)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/base/ClassFieldExtractorTest.java 2008-05-16 18:29:20 UTC (rev 19971)
@@ -1,148 +0,0 @@
-package org.drools.base;
-
-/*
- * Copyright 2005 JBoss Inc
- *
- * 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.
- */
-
-import junit.framework.TestCase;
-
-import org.drools.RuntimeDroolsException;
-import org.drools.util.asm.BeanInherit;
-import org.drools.util.asm.InterfaceChild;
-import org.drools.util.asm.TestAbstract;
-import org.drools.util.asm.TestAbstractImpl;
-import org.drools.util.asm.TestBean;
-import org.drools.util.asm.TestInterface;
-import org.drools.util.asm.TestInterfaceImpl;
-
-public class ClassFieldExtractorTest extends TestCase {
-
- private ClassFieldExtractorCache cache;
-
- protected void setUp() throws Exception {
- super.setUp();
- cache = ClassFieldExtractorCache.getInstance();
- }
-
- public void testBasic() throws Exception {
- final Object[] objArray = new Object[1];
-
- final TestBean obj = new TestBean();
- obj.setBlah( false );
- obj.setSomething( "no" );
- obj.setObjArray( objArray );
-
- final ClassFieldExtractor ext = cache.getExtractor( TestBean.class,
- "blah",
- getClass().getClassLoader() );
- assertEquals( false,
- ((Boolean) ext.getValue( null,
- obj )).booleanValue() );
-
- final ClassFieldExtractor ext2 = cache.getExtractor( TestBean.class,
- "fooBar",
- getClass().getClassLoader() );
- assertEquals( "fooBar",
- ext2.getValue( null,
- obj ) );
-
- final ClassFieldExtractor ext3 = cache.getExtractor( TestBean.class,
- "objArray",
- getClass().getClassLoader() );
- assertEquals( objArray,
- ext3.getValue( null,
- obj ) );
-
- }
-
- public void testInterface() throws Exception {
-
- final TestInterface obj = new TestInterfaceImpl();
- final ClassFieldExtractor ext = cache.getExtractor( TestInterface.class,
- "something",
- getClass().getClassLoader() );
-
- assertEquals( "foo",
- (String) ext.getValue( null,
- obj ) );
-
- }
-
- public void testAbstract() throws Exception {
-
- final ClassFieldExtractor ext = cache.getExtractor( TestAbstract.class,
- "something",
- getClass().getClassLoader() );
- final TestAbstract obj = new TestAbstractImpl();
- assertEquals( "foo",
- (String) ext.getValue( null,
- obj ) );
-
- }
-
- public void testInherited() throws Exception {
- final ClassFieldExtractor ext = cache.getExtractor( BeanInherit.class,
- "text",
- getClass().getClassLoader() );
- final BeanInherit obj = new BeanInherit();
- assertEquals( "hola",
- (String) ext.getValue( null,
- obj ) );
-
- }
-
- public void testMultipleInterfaces() throws Exception {
- final ConcreteChild obj = new ConcreteChild();
- final ClassFieldExtractor ext = cache.getExtractor( InterfaceChild.class,
- "foo",
- getClass().getClassLoader() );
- assertEquals( 42,
- ((Number) ext.getValue( null,
- obj )).intValue() );
- }
-
- public void testLong() throws Exception {
- final ClassFieldExtractor ext = cache.getExtractor( TestBean.class,
- "longField",
- getClass().getClassLoader() );
- final TestBean bean = new TestBean();
- assertEquals( 424242,
- ((Number) ext.getValue( null,
- bean )).longValue() );
- }
-
- public void testNonExistentField() throws Exception {
- final Object[] objArray = new Object[1];
-
- final TestBean obj = new TestBean();
- obj.setBlah( false );
- obj.setSomething( "no" );
- obj.setObjArray( objArray );
-
- try {
- final ClassFieldExtractor ext = cache.getExtractor( TestBean.class,
- "xyz",
- getClass().getClassLoader() );
- fail( "A RuntimeDroolsException should have been raised" );
- } catch ( RuntimeDroolsException e ) {
- e.printStackTrace();
- // everything is fine, since field does not exist
- } catch ( Exception e ) {
- fail( "A RuntimeDroolsException should have been raised" );
- }
-
- }
-
-}
\ No newline at end of file
Modified: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/base/EvaluatorFactoryTest.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/base/EvaluatorFactoryTest.java 2008-05-16 15:22:07 UTC (rev 19970)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/base/EvaluatorFactoryTest.java 2008-05-16 18:29:20 UTC (rev 19971)
@@ -16,6 +16,9 @@
* limitations under the License.
*/
+import java.io.IOException;
+import java.io.ObjectInput;
+import java.io.ObjectOutput;
import java.lang.reflect.Method;
import java.math.BigDecimal;
import java.math.BigInteger;
@@ -26,9 +29,6 @@
import java.util.Date;
import java.util.List;
import java.util.Locale;
-import java.io.ObjectOutput;
-import java.io.IOException;
-import java.io.ObjectInput;
import junit.framework.TestCase;
@@ -42,9 +42,8 @@
import org.drools.rule.VariableRestriction.ObjectVariableContextEntry;
import org.drools.rule.VariableRestriction.VariableContextEntry;
import org.drools.spi.Evaluator;
-import org.drools.spi.Extractor;
-import org.drools.spi.FieldExtractor;
import org.drools.spi.FieldValue;
+import org.drools.spi.InternalReadAccessor;
/**
* Some test coverage goodness for the evaluators.
@@ -61,52 +60,17 @@
list.add( "foo" );
list.add( null );
- Collection col = Arrays.asList( new String[] { "foo", "bar", null} );
+ Collection col = Arrays.asList( new String[]{"foo", "bar", null} );
- final Object[][] data = {
- {"foo", "==", "bar", Boolean.FALSE},
- {"foo", "==", "foo", Boolean.TRUE},
- {"foo", "!=", "bar", Boolean.TRUE},
- {list, "contains", "foo", Boolean.TRUE},
- {list, "contains", "bar", Boolean.FALSE},
- {list, "contains", null, Boolean.TRUE},
- {null, "contains", "bar", Boolean.FALSE},
- {null, "contains", null, Boolean.FALSE},
- {list, "==", null, Boolean.FALSE},
- {list, "!=", null, Boolean.TRUE},
- {null, "==", null, Boolean.TRUE},
- {null, "==", list, Boolean.FALSE},
- {null, "!=", list, Boolean.TRUE},
- {null, "<", new Integer( 43 ), Boolean.FALSE},
- {null, ">=", new Integer( -10 ), Boolean.FALSE},
- {null, ">", new Integer( -10 ), Boolean.FALSE},
- {null, "<=", new Integer( 42 ), Boolean.FALSE},
- {new BigDecimal( "42.42" ), "<", new BigDecimal( "43" ), Boolean.TRUE},
- {new BigDecimal( "42.42" ), ">", new BigDecimal( "43" ), Boolean.FALSE},
- {new BigDecimal( "42.42" ), "<=", new BigDecimal( "42.42" ), Boolean.TRUE},
- {new BigInteger( "42" ), ">=", new BigInteger( "43" ), Boolean.FALSE},
- {new BigInteger( "42" ), ">=", new BigInteger( "43" ), Boolean.FALSE},
- {list, "excludes", "baz", Boolean.TRUE},
- {list, "excludes", "foo", Boolean.FALSE},
- {"foo", "memberOf", col, Boolean.TRUE},
- {"xyz", "memberOf", col, Boolean.FALSE},
- {null, "memberOf", col, Boolean.TRUE},
- {"foo", "memberOf", null, Boolean.FALSE},
- {"foo", "not memberOf", col, Boolean.FALSE},
- {"xyz", "not memberOf", col, Boolean.TRUE},
- {null, "not memberOf", col, Boolean.FALSE},
- {"foo", "not memberOf", null, Boolean.FALSE},
- {Boolean.TRUE, "==", "xyz", Boolean.FALSE},
- {Boolean.TRUE, "==", "true", Boolean.TRUE},
- {Boolean.FALSE, "==", "xyz", Boolean.TRUE},
- {Boolean.FALSE, "==", "false", Boolean.TRUE},
- {Boolean.FALSE, "==", "true", Boolean.FALSE},
- {Boolean.TRUE, "!=", "xyz", Boolean.TRUE},
- {Boolean.TRUE, "!=", "true", Boolean.FALSE},
- {Boolean.FALSE, "!=", "xyz", Boolean.FALSE},
- {Boolean.FALSE, "!=", "true", Boolean.TRUE},
- {Boolean.FALSE, "!=", "false", Boolean.FALSE}
- };
+ final Object[][] data = {{"foo", "==", "bar", Boolean.FALSE}, {"foo", "==", "foo", Boolean.TRUE}, {"foo", "!=", "bar", Boolean.TRUE}, {list, "contains", "foo", Boolean.TRUE}, {list, "contains", "bar", Boolean.FALSE},
+ {list, "contains", null, Boolean.TRUE}, {null, "contains", "bar", Boolean.FALSE}, {null, "contains", null, Boolean.FALSE}, {list, "==", null, Boolean.FALSE}, {list, "!=", null, Boolean.TRUE}, {null, "==", null, Boolean.TRUE},
+ {null, "==", list, Boolean.FALSE}, {null, "!=", list, Boolean.TRUE}, {null, "<", new Integer( 43 ), Boolean.FALSE}, {null, ">=", new Integer( -10 ), Boolean.FALSE}, {null, ">", new Integer( -10 ), Boolean.FALSE},
+ {null, "<=", new Integer( 42 ), Boolean.FALSE}, {new BigDecimal( "42.42" ), "<", new BigDecimal( "43" ), Boolean.TRUE}, {new BigDecimal( "42.42" ), ">", new BigDecimal( "43" ), Boolean.FALSE},
+ {new BigDecimal( "42.42" ), "<=", new BigDecimal( "42.42" ), Boolean.TRUE}, {new BigInteger( "42" ), ">=", new BigInteger( "43" ), Boolean.FALSE}, {new BigInteger( "42" ), ">=", new BigInteger( "43" ), Boolean.FALSE},
+ {list, "excludes", "baz", Boolean.TRUE}, {list, "excludes", "foo", Boolean.FALSE}, {"foo", "memberOf", col, Boolean.TRUE}, {"xyz", "memberOf", col, Boolean.FALSE}, {null, "memberOf", col, Boolean.TRUE},
+ {"foo", "memberOf", null, Boolean.FALSE}, {"foo", "not memberOf", col, Boolean.FALSE}, {"xyz", "not memberOf", col, Boolean.TRUE}, {null, "not memberOf", col, Boolean.FALSE}, {"foo", "not memberOf", null, Boolean.FALSE},
+ {Boolean.TRUE, "==", "xyz", Boolean.FALSE}, {Boolean.TRUE, "==", "true", Boolean.TRUE}, {Boolean.FALSE, "==", "xyz", Boolean.TRUE}, {Boolean.FALSE, "==", "false", Boolean.TRUE}, {Boolean.FALSE, "==", "true", Boolean.FALSE},
+ {Boolean.TRUE, "!=", "xyz", Boolean.TRUE}, {Boolean.TRUE, "!=", "true", Boolean.FALSE}, {Boolean.FALSE, "!=", "xyz", Boolean.FALSE}, {Boolean.FALSE, "!=", "true", Boolean.TRUE}, {Boolean.FALSE, "!=", "false", Boolean.FALSE}};
runEvaluatorTest( data,
ValueType.OBJECT_TYPE );
@@ -117,32 +81,11 @@
final Object[] field = new Object[]{"foo", "bar"};
- final Object[][] data = {{field, "==", new Object[]{"foo"}, Boolean.FALSE},
- {field, "==", field, Boolean.TRUE},
- {field, "!=", new Object[]{"foo"}, Boolean.TRUE},
- {field, "contains", "foo", Boolean.TRUE},
- {field, "contains", "xyz", Boolean.FALSE},
- {field, "contains", null, Boolean.FALSE},
- {null, "contains", "foo", Boolean.FALSE},
- {field, "excludes", "foo", Boolean.FALSE},
- {field, "excludes", "xyz", Boolean.TRUE},
- {field, "excludes", null, Boolean.TRUE},
- {null, "excludes", "foo", Boolean.TRUE},
- {field, "!=", null, Boolean.TRUE},
- {field, "==", null, Boolean.FALSE},
- {null, "==", field, Boolean.FALSE},
- {null, "==", null, Boolean.TRUE},
- {null, "!=", field, Boolean.TRUE},
- {null, "!=", null, Boolean.FALSE},
- {"foo", "memberOf", field, Boolean.TRUE},
- {"xyz", "memberOf", field, Boolean.FALSE},
- {null, "memberOf", field, Boolean.FALSE},
- {"foo", "memberOf", null, Boolean.FALSE},
- {"foo", "not memberOf", field, Boolean.FALSE},
- {"xyz", "not memberOf", field, Boolean.TRUE},
- {null, "not memberOf", field, Boolean.TRUE},
- {"foo", "not memberOf", null, Boolean.TRUE}
- };
+ final Object[][] data = {{field, "==", new Object[]{"foo"}, Boolean.FALSE}, {field, "==", field, Boolean.TRUE}, {field, "!=", new Object[]{"foo"}, Boolean.TRUE}, {field, "contains", "foo", Boolean.TRUE},
+ {field, "contains", "xyz", Boolean.FALSE}, {field, "contains", null, Boolean.FALSE}, {null, "contains", "foo", Boolean.FALSE}, {field, "excludes", "foo", Boolean.FALSE}, {field, "excludes", "xyz", Boolean.TRUE},
+ {field, "excludes", null, Boolean.TRUE}, {null, "excludes", "foo", Boolean.TRUE}, {field, "!=", null, Boolean.TRUE}, {field, "==", null, Boolean.FALSE}, {null, "==", field, Boolean.FALSE}, {null, "==", null, Boolean.TRUE},
+ {null, "!=", field, Boolean.TRUE}, {null, "!=", null, Boolean.FALSE}, {"foo", "memberOf", field, Boolean.TRUE}, {"xyz", "memberOf", field, Boolean.FALSE}, {null, "memberOf", field, Boolean.FALSE},
+ {"foo", "memberOf", null, Boolean.FALSE}, {"foo", "not memberOf", field, Boolean.FALSE}, {"xyz", "not memberOf", field, Boolean.TRUE}, {null, "not memberOf", field, Boolean.TRUE}, {"foo", "not memberOf", null, Boolean.TRUE}};
runEvaluatorTest( data,
ValueType.ARRAY_TYPE );
@@ -151,37 +94,14 @@
public void testString() {
- Collection col = Arrays.asList( new String[] { "foo", "bar", null} );
+ Collection col = Arrays.asList( new String[]{"foo", "bar", null} );
- final Object[][] data = {{"foo", "==", "bar", Boolean.FALSE},
- {"foo", "==", "foo", Boolean.TRUE},
- {"foo", "!=", "bar", Boolean.TRUE},
- {"something foo", "matches", ".*foo", Boolean.TRUE},
- {"foo", "matches", ".*foo", Boolean.TRUE},
- {"foo", "matches", "bar", Boolean.FALSE},
- {null, "matches", ".*foo", Boolean.FALSE},
- {"something", "matches", "something", Boolean.TRUE},
- {"something", "matches", "hello ;=", Boolean.FALSE},
- {"something", "not matches", "something", Boolean.FALSE},
- {"something", "not matches", "hello ;=", Boolean.TRUE},
- {"foo", "==", null, Boolean.FALSE},
- {"foo", "!=", null, Boolean.TRUE},
- {null, "==", null, Boolean.TRUE},
- {"foo", "!=", null, Boolean.TRUE},
- {null, "!=", "foo", Boolean.TRUE},
- {null, "!=", null, Boolean.FALSE},
- {"foo", "memberOf", col, Boolean.TRUE},
- {"xyz", "memberOf", col, Boolean.FALSE},
- {null, "memberOf", col, Boolean.TRUE},
- {"foo", "memberOf", null, Boolean.FALSE},
- {"foo", "not memberOf", col, Boolean.FALSE},
- {"xyz", "not memberOf", col, Boolean.TRUE},
- {null, "not memberOf", col, Boolean.FALSE},
- {"foo", "not memberOf", null, Boolean.FALSE},
- {"foobar", "soundslike", "fubar", Boolean.TRUE},
- {"fubar", "soundslike", "foobar", Boolean.TRUE},
- {"foobar", "soundslike", "wanklerotaryengine", Boolean.FALSE}
- };
+ final Object[][] data = {{"foo", "==", "bar", Boolean.FALSE}, {"foo", "==", "foo", Boolean.TRUE}, {"foo", "!=", "bar", Boolean.TRUE}, {"something foo", "matches", ".*foo", Boolean.TRUE}, {"foo", "matches", ".*foo", Boolean.TRUE},
+ {"foo", "matches", "bar", Boolean.FALSE}, {null, "matches", ".*foo", Boolean.FALSE}, {"something", "matches", "something", Boolean.TRUE}, {"something", "matches", "hello ;=", Boolean.FALSE},
+ {"something", "not matches", "something", Boolean.FALSE}, {"something", "not matches", "hello ;=", Boolean.TRUE}, {"foo", "==", null, Boolean.FALSE}, {"foo", "!=", null, Boolean.TRUE}, {null, "==", null, Boolean.TRUE},
+ {"foo", "!=", null, Boolean.TRUE}, {null, "!=", "foo", Boolean.TRUE}, {null, "!=", null, Boolean.FALSE}, {"foo", "memberOf", col, Boolean.TRUE}, {"xyz", "memberOf", col, Boolean.FALSE}, {null, "memberOf", col, Boolean.TRUE},
+ {"foo", "memberOf", null, Boolean.FALSE}, {"foo", "not memberOf", col, Boolean.FALSE}, {"xyz", "not memberOf", col, Boolean.TRUE}, {null, "not memberOf", col, Boolean.FALSE}, {"foo", "not memberOf", null, Boolean.FALSE},
+ {"foobar", "soundslike", "fubar", Boolean.TRUE}, {"fubar", "soundslike", "foobar", Boolean.TRUE}, {"foobar", "soundslike", "wanklerotaryengine", Boolean.FALSE}};
runEvaluatorTest( data,
ValueType.STRING_TYPE );
@@ -191,35 +111,16 @@
public void testInteger() {
Collection col = new ArrayList();
- col.add( new Integer(42) );
- col.add( new Integer(45) );
+ col.add( new Integer( 42 ) );
+ col.add( new Integer( 45 ) );
- final Object[][] data = {{new Integer( 42 ), "==", new Integer( 42 ), Boolean.TRUE},
- {new Integer( 42 ), "<", new Integer( 43 ), Boolean.TRUE},
- {new Integer( 42 ), ">=", new Integer( 41 ), Boolean.TRUE},
- {new Integer( 42 ), "!=", new Integer( 41 ), Boolean.TRUE},
- {new Integer( 42 ), ">", new Integer( 41 ), Boolean.TRUE},
- {new Integer( 42 ), "<=", new Integer( 42 ), Boolean.TRUE},
- {new Integer( 42 ), ">", new Integer( 100 ), Boolean.FALSE},
- {new Integer( 42 ), "!=", null, Boolean.TRUE},
- {new Integer( 42 ), "==", null, Boolean.FALSE},
- {null, "==", null, Boolean.TRUE},
- {null, "!=", null, Boolean.FALSE},
- {null, "!=", new Integer( 42 ), Boolean.TRUE},
- {null, "==", new Integer( 42 ), Boolean.FALSE},
- {null, "<", new Integer( 43 ), Boolean.FALSE},
- {null, ">=", new Integer( -10 ), Boolean.FALSE},
- {null, ">", new Integer( -10 ), Boolean.FALSE},
- {null, "<=", new Integer( 42 ), Boolean.FALSE},
- {new Integer( 42 ), "memberOf", col, Boolean.TRUE},
- {new Integer( 43 ), "memberOf", col, Boolean.FALSE},
- {null, "memberOf", col, Boolean.FALSE},
- {new Integer( 42 ), "memberOf", null, Boolean.FALSE},
- {new Integer( 42 ), "not memberOf", col, Boolean.FALSE},
- {new Integer( 43 ), "not memberOf", col, Boolean.TRUE},
- {null, "not memberOf", col, Boolean.TRUE},
- {new Integer( 42 ), "not memberOf", null, Boolean.FALSE}
- };
+ final Object[][] data = {{new Integer( 42 ), "==", new Integer( 42 ), Boolean.TRUE}, {new Integer( 42 ), "<", new Integer( 43 ), Boolean.TRUE}, {new Integer( 42 ), ">=", new Integer( 41 ), Boolean.TRUE},
+ {new Integer( 42 ), "!=", new Integer( 41 ), Boolean.TRUE}, {new Integer( 42 ), ">", new Integer( 41 ), Boolean.TRUE}, {new Integer( 42 ), "<=", new Integer( 42 ), Boolean.TRUE},
+ {new Integer( 42 ), ">", new Integer( 100 ), Boolean.FALSE}, {new Integer( 42 ), "!=", null, Boolean.TRUE}, {new Integer( 42 ), "==", null, Boolean.FALSE}, {null, "==", null, Boolean.TRUE}, {null, "!=", null, Boolean.FALSE},
+ {null, "!=", new Integer( 42 ), Boolean.TRUE}, {null, "==", new Integer( 42 ), Boolean.FALSE}, {null, "<", new Integer( 43 ), Boolean.FALSE}, {null, ">=", new Integer( -10 ), Boolean.FALSE},
+ {null, ">", new Integer( -10 ), Boolean.FALSE}, {null, "<=", new Integer( 42 ), Boolean.FALSE}, {new Integer( 42 ), "memberOf", col, Boolean.TRUE}, {new Integer( 43 ), "memberOf", col, Boolean.FALSE},
+ {null, "memberOf", col, Boolean.FALSE}, {new Integer( 42 ), "memberOf", null, Boolean.FALSE}, {new Integer( 42 ), "not memberOf", col, Boolean.FALSE}, {new Integer( 43 ), "not memberOf", col, Boolean.TRUE},
+ {null, "not memberOf", col, Boolean.TRUE}, {new Integer( 42 ), "not memberOf", null, Boolean.FALSE}};
runEvaluatorTest( data,
ValueType.PINTEGER_TYPE );
@@ -233,33 +134,16 @@
ValueType.BIG_DECIMAL_TYPE );
Collection col = new ArrayList();
- col.add( new BigDecimal(42) );
- col.add( new BigDecimal(45) );
+ col.add( new BigDecimal( 42 ) );
+ col.add( new BigDecimal( 45 ) );
- final Object[][] data = {{new BigDecimal( 42 ), "==", new BigDecimal( 42 ), Boolean.TRUE},
- {new BigDecimal( 42 ), "<", new BigDecimal( 43 ), Boolean.TRUE},
- {new BigDecimal( 42 ), ">=", new BigDecimal( 41 ), Boolean.TRUE},
- {new BigDecimal( 42 ), "!=", new BigDecimal( 41 ), Boolean.TRUE},
- {new BigDecimal( 42 ), ">", new BigDecimal( 41 ), Boolean.TRUE},
- {new BigDecimal( 42 ), "<=", new BigDecimal( 42 ), Boolean.TRUE},
- {new BigDecimal( 42 ), ">", new BigDecimal( 100 ), Boolean.FALSE},
- {new BigDecimal( 42 ), "==", null, Boolean.FALSE},
- {new BigDecimal( 42 ), "!=", null, Boolean.TRUE},
- {null, "==", new BigDecimal( 42 ), Boolean.FALSE},
- {null, "!=", new BigDecimal( 42 ), Boolean.TRUE},
- {null, "<", new BigDecimal( 43 ), Boolean.FALSE},
- {null, ">=", new BigDecimal( -10 ), Boolean.FALSE},
- {null, ">", new BigDecimal( -10 ), Boolean.FALSE},
- {null, "<=", new BigDecimal( 42 ), Boolean.FALSE},
- {new BigDecimal( 42 ), "memberOf", col, Boolean.TRUE},
- {new BigDecimal( 43 ), "memberOf", col, Boolean.FALSE},
- {null, "memberOf", col, Boolean.FALSE},
- {new BigDecimal( 42 ), "memberOf", null, Boolean.FALSE},
- {new BigDecimal( 42 ), "not memberOf", col, Boolean.FALSE},
- {new BigDecimal( 43 ), "not memberOf", col, Boolean.TRUE},
- {null, "not memberOf", col, Boolean.TRUE},
- {new BigDecimal( 42 ), "not memberOf", null, Boolean.FALSE}
- };
+ final Object[][] data = {{new BigDecimal( 42 ), "==", new BigDecimal( 42 ), Boolean.TRUE}, {new BigDecimal( 42 ), "<", new BigDecimal( 43 ), Boolean.TRUE}, {new BigDecimal( 42 ), ">=", new BigDecimal( 41 ), Boolean.TRUE},
+ {new BigDecimal( 42 ), "!=", new BigDecimal( 41 ), Boolean.TRUE}, {new BigDecimal( 42 ), ">", new BigDecimal( 41 ), Boolean.TRUE}, {new BigDecimal( 42 ), "<=", new BigDecimal( 42 ), Boolean.TRUE},
+ {new BigDecimal( 42 ), ">", new BigDecimal( 100 ), Boolean.FALSE}, {new BigDecimal( 42 ), "==", null, Boolean.FALSE}, {new BigDecimal( 42 ), "!=", null, Boolean.TRUE}, {null, "==", new BigDecimal( 42 ), Boolean.FALSE},
+ {null, "!=", new BigDecimal( 42 ), Boolean.TRUE}, {null, "<", new BigDecimal( 43 ), Boolean.FALSE}, {null, ">=", new BigDecimal( -10 ), Boolean.FALSE}, {null, ">", new BigDecimal( -10 ), Boolean.FALSE},
+ {null, "<=", new BigDecimal( 42 ), Boolean.FALSE}, {new BigDecimal( 42 ), "memberOf", col, Boolean.TRUE}, {new BigDecimal( 43 ), "memberOf", col, Boolean.FALSE}, {null, "memberOf", col, Boolean.FALSE},
+ {new BigDecimal( 42 ), "memberOf", null, Boolean.FALSE}, {new BigDecimal( 42 ), "not memberOf", col, Boolean.FALSE}, {new BigDecimal( 43 ), "not memberOf", col, Boolean.TRUE}, {null, "not memberOf", col, Boolean.TRUE},
+ {new BigDecimal( 42 ), "not memberOf", null, Boolean.FALSE}};
runEvaluatorTest( data,
ValueType.BIG_DECIMAL_TYPE );
@@ -273,33 +157,16 @@
ValueType.BIG_INTEGER_TYPE );
Collection col = new ArrayList();
- col.add( new BigInteger("42") );
- col.add( new BigInteger("45") );
+ col.add( new BigInteger( "42" ) );
+ col.add( new BigInteger( "45" ) );
- final Object[][] data = {{new BigInteger( "42" ), "==", new BigInteger( "42" ), Boolean.TRUE},
- {new BigInteger( "42" ), "<", new BigInteger( "43" ), Boolean.TRUE},
- {new BigInteger( "42" ), ">=", new BigInteger( "41" ), Boolean.TRUE},
- {new BigInteger( "42" ), "!=", new BigInteger( "41" ), Boolean.TRUE},
- {new BigInteger( "42" ), ">", new BigInteger( "41" ), Boolean.TRUE},
- {new BigInteger( "42" ), "<=", new BigInteger( "42" ), Boolean.TRUE},
- {new BigInteger( "42" ), ">", new BigInteger( "100" ), Boolean.FALSE},
- {new BigInteger( "42" ), "==", null, Boolean.FALSE},
- {new BigInteger( "42" ), "!=", null, Boolean.TRUE},
- {null, "==", new BigInteger( "42" ), Boolean.FALSE},
- {null, "!=", new BigInteger( "42" ), Boolean.TRUE},
- {null, "<", new BigInteger( "43" ), Boolean.FALSE},
- {null, ">=", new BigInteger( "-10" ), Boolean.FALSE},
- {null, ">", new BigInteger( "-10" ), Boolean.FALSE},
- {null, "<=", new BigInteger( "42" ), Boolean.FALSE},
- {new BigInteger( "42" ), "memberOf", col, Boolean.TRUE},
- {new BigInteger( "43" ), "memberOf", col, Boolean.FALSE},
- {null, "memberOf", col, Boolean.FALSE},
- {new BigInteger( "42" ), "memberOf", null, Boolean.FALSE},
- {new BigInteger( "42" ), "not memberOf", col, Boolean.FALSE},
- {new BigInteger( "43" ), "not memberOf", col, Boolean.TRUE},
- {null, "not memberOf", col, Boolean.TRUE},
- {new BigInteger( "42" ), "not memberOf", null, Boolean.FALSE}
- };
+ final Object[][] data = {{new BigInteger( "42" ), "==", new BigInteger( "42" ), Boolean.TRUE}, {new BigInteger( "42" ), "<", new BigInteger( "43" ), Boolean.TRUE}, {new BigInteger( "42" ), ">=", new BigInteger( "41" ), Boolean.TRUE},
+ {new BigInteger( "42" ), "!=", new BigInteger( "41" ), Boolean.TRUE}, {new BigInteger( "42" ), ">", new BigInteger( "41" ), Boolean.TRUE}, {new BigInteger( "42" ), "<=", new BigInteger( "42" ), Boolean.TRUE},
+ {new BigInteger( "42" ), ">", new BigInteger( "100" ), Boolean.FALSE}, {new BigInteger( "42" ), "==", null, Boolean.FALSE}, {new BigInteger( "42" ), "!=", null, Boolean.TRUE}, {null, "==", new BigInteger( "42" ), Boolean.FALSE},
+ {null, "!=", new BigInteger( "42" ), Boolean.TRUE}, {null, "<", new BigInteger( "43" ), Boolean.FALSE}, {null, ">=", new BigInteger( "-10" ), Boolean.FALSE}, {null, ">", new BigInteger( "-10" ), Boolean.FALSE},
+ {null, "<=", new BigInteger( "42" ), Boolean.FALSE}, {new BigInteger( "42" ), "memberOf", col, Boolean.TRUE}, {new BigInteger( "43" ), "memberOf", col, Boolean.FALSE}, {null, "memberOf", col, Boolean.FALSE},
+ {new BigInteger( "42" ), "memberOf", null, Boolean.FALSE}, {new BigInteger( "42" ), "not memberOf", col, Boolean.FALSE}, {new BigInteger( "43" ), "not memberOf", col, Boolean.TRUE}, {null, "not memberOf", col, Boolean.TRUE},
+ {new BigInteger( "42" ), "not memberOf", null, Boolean.FALSE}};
runEvaluatorTest( data,
ValueType.BIG_INTEGER_TYPE );
@@ -309,32 +176,16 @@
public void testShort() {
Collection col = new ArrayList();
- col.add( new Short( (short) 42) );
- col.add( new Short( (short) 45) );
+ col.add( new Short( (short) 42 ) );
+ col.add( new Short( (short) 45 ) );
//Test data: Obj1, Operand, Obj2
- final Object[][] data = {{new Short( (short) 42 ), "==", new Short( (short) 42 ), Boolean.TRUE},
- {new Short( (short) 42 ), "<", new Short( (short) 43 ), Boolean.TRUE},
- {new Short( (short) 42 ), ">=", new Short( (short) 41 ), Boolean.TRUE},
- {new Short( (short) 42 ), "!=", new Short( (short) 41 ), Boolean.TRUE},
- {new Short( (short) 42 ), "==", null, Boolean.FALSE},
- {null, "==", null, Boolean.TRUE},
- {null, "!=", null, Boolean.FALSE},
- {null, "!=", new Short( (short) 42 ), Boolean.TRUE},
- {null, "==", new Short( (short) 42 ), Boolean.FALSE},
- {null, "<", new Short( (short)43 ), Boolean.FALSE},
- {null, ">=", new Short( (short)-10 ), Boolean.FALSE},
- {null, ">", new Short( (short)-10 ), Boolean.FALSE},
- {null, "<=", new Short((short) 42 ), Boolean.FALSE},
- {new Short( (short) 42 ), "memberOf", col, Boolean.TRUE},
- {new Short( (short) 43 ), "memberOf", col, Boolean.FALSE},
- {null, "memberOf", col, Boolean.FALSE},
- {new Short( (short) 42 ), "memberOf", null, Boolean.FALSE},
- {new Short( (short) 42 ), "not memberOf", col, Boolean.FALSE},
- {new Short( (short) 43 ), "not memberOf", col, Boolean.TRUE},
- {null, "not memberOf", col, Boolean.TRUE},
- {new Short( (short) 42 ), "not memberOf", null, Boolean.FALSE}
- };
+ final Object[][] data = {{new Short( (short) 42 ), "==", new Short( (short) 42 ), Boolean.TRUE}, {new Short( (short) 42 ), "<", new Short( (short) 43 ), Boolean.TRUE}, {new Short( (short) 42 ), ">=", new Short( (short) 41 ), Boolean.TRUE},
+ {new Short( (short) 42 ), "!=", new Short( (short) 41 ), Boolean.TRUE}, {new Short( (short) 42 ), "==", null, Boolean.FALSE}, {null, "==", null, Boolean.TRUE}, {null, "!=", null, Boolean.FALSE},
+ {null, "!=", new Short( (short) 42 ), Boolean.TRUE}, {null, "==", new Short( (short) 42 ), Boolean.FALSE}, {null, "<", new Short( (short) 43 ), Boolean.FALSE}, {null, ">=", new Short( (short) -10 ), Boolean.FALSE},
+ {null, ">", new Short( (short) -10 ), Boolean.FALSE}, {null, "<=", new Short( (short) 42 ), Boolean.FALSE}, {new Short( (short) 42 ), "memberOf", col, Boolean.TRUE}, {new Short( (short) 43 ), "memberOf", col, Boolean.FALSE},
+ {null, "memberOf", col, Boolean.FALSE}, {new Short( (short) 42 ), "memberOf", null, Boolean.FALSE}, {new Short( (short) 42 ), "not memberOf", col, Boolean.FALSE}, {new Short( (short) 43 ), "not memberOf", col, Boolean.TRUE},
+ {null, "not memberOf", col, Boolean.TRUE}, {new Short( (short) 42 ), "not memberOf", null, Boolean.FALSE}};
runEvaluatorTest( data,
ValueType.PSHORT_TYPE );
@@ -347,24 +198,11 @@
col.add( new Boolean( true ) );
//Test data: Obj1, Operand, Obj2
- final Object[][] data = {{new Boolean( true ), "==", new Boolean( true ), Boolean.TRUE},
- {new Boolean( false ), "!=", new Boolean( true ), Boolean.TRUE},
- {new Boolean( true ), "==", new Boolean( false ), Boolean.FALSE},
- {new Boolean( true ), "!=", new Boolean( false ), Boolean.TRUE},
- {new Boolean( true ), "==", null, Boolean.FALSE},
- {null, "==", null, Boolean.TRUE},
- {null, "!=", null, Boolean.FALSE},
- {null, "!=", new Boolean( true ), Boolean.TRUE},
- {null, "==", new Boolean( true ), Boolean.FALSE},
- {new Boolean( true ), "memberOf", col, Boolean.TRUE},
- {new Boolean( false ), "memberOf", col, Boolean.FALSE},
- {null, "memberOf", col, Boolean.FALSE},
- {new Boolean( true ), "memberOf", null, Boolean.FALSE},
- {new Boolean( true ), "not memberOf", col, Boolean.FALSE},
- {new Boolean( false ), "not memberOf", col, Boolean.TRUE},
- {null, "not memberOf", col, Boolean.TRUE},
- {new Boolean( true ), "not memberOf", null, Boolean.FALSE}
- };
+ final Object[][] data = {{new Boolean( true ), "==", new Boolean( true ), Boolean.TRUE}, {new Boolean( false ), "!=", new Boolean( true ), Boolean.TRUE}, {new Boolean( true ), "==", new Boolean( false ), Boolean.FALSE},
+ {new Boolean( true ), "!=", new Boolean( false ), Boolean.TRUE}, {new Boolean( true ), "==", null, Boolean.FALSE}, {null, "==", null, Boolean.TRUE}, {null, "!=", null, Boolean.FALSE}, {null, "!=", new Boolean( true ), Boolean.TRUE},
+ {null, "==", new Boolean( true ), Boolean.FALSE}, {new Boolean( true ), "memberOf", col, Boolean.TRUE}, {new Boolean( false ), "memberOf", col, Boolean.FALSE}, {null, "memberOf", col, Boolean.FALSE},
+ {new Boolean( true ), "memberOf", null, Boolean.FALSE}, {new Boolean( true ), "not memberOf", col, Boolean.FALSE}, {new Boolean( false ), "not memberOf", col, Boolean.TRUE}, {null, "not memberOf", col, Boolean.TRUE},
+ {new Boolean( true ), "not memberOf", null, Boolean.FALSE}};
runEvaluatorTest( data,
ValueType.PBOOLEAN_TYPE );
@@ -372,36 +210,16 @@
public void testDouble() {
Collection col = new ArrayList();
- col.add( new Double(42) );
- col.add( new Double(45) );
+ col.add( new Double( 42 ) );
+ col.add( new Double( 45 ) );
- final Object[][] data = {{new Double( 42 ), "==", new Double( 42 ), Boolean.TRUE},
- {new Double( 42 ), "<", new Double( 43 ), Boolean.TRUE},
- {new Double( 42 ), ">=", new Double( 41 ), Boolean.TRUE},
- {new Double( 42 ), "!=", new Double( 41 ), Boolean.TRUE},
- {new Double( 42 ), ">", new Double( 41 ), Boolean.TRUE},
- {new Double( 42 ), ">=", new Double( 41 ), Boolean.TRUE},
- {new Double( 42 ), ">=", new Double( 42 ), Boolean.TRUE},
- {new Double( 42 ), ">=", new Double( 100 ), Boolean.FALSE},
- {new Double( 42 ), "<", new Double( 1 ), Boolean.FALSE},
- {new Double( 42 ), "==", null, Boolean.FALSE},
- {null, "==", null, Boolean.TRUE},
- {null, "!=", null, Boolean.FALSE},
- {null, "!=", new Double( 42 ), Boolean.TRUE},
- {null, "==", new Double( 42 ), Boolean.FALSE},
- {null, "<", new Double( 43 ), Boolean.FALSE},
- {null, ">=", new Double( -10 ), Boolean.FALSE},
- {null, ">", new Double( -10 ), Boolean.FALSE},
- {null, "<=", new Double( 42 ), Boolean.FALSE},
- {new Double( 42 ), "memberOf", col, Boolean.TRUE},
- {new Double( 43 ), "memberOf", col, Boolean.FALSE},
- {null, "memberOf", col, Boolean.FALSE},
- {new Double( 42 ), "memberOf", null, Boolean.FALSE},
- {new Double( 42 ), "not memberOf", col, Boolean.FALSE},
- {new Double( 43 ), "not memberOf", col, Boolean.TRUE},
- {null, "not memberOf", col, Boolean.TRUE},
- {new Double( 42 ), "not memberOf", null, Boolean.FALSE}
- };
+ final Object[][] data = {{new Double( 42 ), "==", new Double( 42 ), Boolean.TRUE}, {new Double( 42 ), "<", new Double( 43 ), Boolean.TRUE}, {new Double( 42 ), ">=", new Double( 41 ), Boolean.TRUE},
+ {new Double( 42 ), "!=", new Double( 41 ), Boolean.TRUE}, {new Double( 42 ), ">", new Double( 41 ), Boolean.TRUE}, {new Double( 42 ), ">=", new Double( 41 ), Boolean.TRUE}, {new Double( 42 ), ">=", new Double( 42 ), Boolean.TRUE},
+ {new Double( 42 ), ">=", new Double( 100 ), Boolean.FALSE}, {new Double( 42 ), "<", new Double( 1 ), Boolean.FALSE}, {new Double( 42 ), "==", null, Boolean.FALSE}, {null, "==", null, Boolean.TRUE}, {null, "!=", null, Boolean.FALSE},
+ {null, "!=", new Double( 42 ), Boolean.TRUE}, {null, "==", new Double( 42 ), Boolean.FALSE}, {null, "<", new Double( 43 ), Boolean.FALSE}, {null, ">=", new Double( -10 ), Boolean.FALSE}, {null, ">", new Double( -10 ), Boolean.FALSE},
+ {null, "<=", new Double( 42 ), Boolean.FALSE}, {new Double( 42 ), "memberOf", col, Boolean.TRUE}, {new Double( 43 ), "memberOf", col, Boolean.FALSE}, {null, "memberOf", col, Boolean.FALSE},
+ {new Double( 42 ), "memberOf", null, Boolean.FALSE}, {new Double( 42 ), "not memberOf", col, Boolean.FALSE}, {new Double( 43 ), "not memberOf", col, Boolean.TRUE}, {null, "not memberOf", col, Boolean.TRUE},
+ {new Double( 42 ), "not memberOf", null, Boolean.FALSE}};
runEvaluatorTest( data,
ValueType.PDOUBLE_TYPE );
@@ -409,36 +227,16 @@
public void testFloat() {
Collection col = new ArrayList();
- col.add( new Float(42) );
- col.add( new Float(45) );
+ col.add( new Float( 42 ) );
+ col.add( new Float( 45 ) );
- final Object[][] data = {{new Float( 42 ), "==", new Float( 42 ), Boolean.TRUE},
- {new Float( 42 ), "<", new Float( 43 ), Boolean.TRUE},
- {new Float( 42 ), ">=", new Float( 41 ), Boolean.TRUE},
- {new Float( 42 ), "!=", new Float( 41 ), Boolean.TRUE},
- {new Float( 42 ), ">", new Float( 41 ), Boolean.TRUE},
- {new Float( 42 ), ">=", new Float( 41 ), Boolean.TRUE},
- {new Float( 42 ), ">=", new Float( 42 ), Boolean.TRUE},
- {new Float( 42 ), ">=", new Float( 100 ), Boolean.FALSE},
- {new Float( 42 ), "<", new Float( 1 ), Boolean.FALSE},
- {new Float( 42 ), "==", null, Boolean.FALSE},
- {null, "==", null, Boolean.TRUE},
- {null, "!=", null, Boolean.FALSE},
- {null, "!=", new Float( 42 ), Boolean.TRUE},
- {null, "==", new Float( 42 ), Boolean.FALSE},
- {null, "<", new Float( 43 ), Boolean.FALSE},
- {null, ">=", new Float( -10 ), Boolean.FALSE},
- {null, ">", new Float( -10 ), Boolean.FALSE},
- {null, "<=", new Float( 42 ), Boolean.FALSE},
- {new Float( 42 ), "memberOf", col, Boolean.TRUE},
- {new Float( 43 ), "memberOf", col, Boolean.FALSE},
- {null, "memberOf", col, Boolean.FALSE},
- {new Float( 42 ), "memberOf", null, Boolean.FALSE},
- {new Float( 42 ), "not memberOf", col, Boolean.FALSE},
- {new Float( 43 ), "not memberOf", col, Boolean.TRUE},
- {null, "not memberOf", col, Boolean.TRUE},
- {new Float( 42 ), "not memberOf", null, Boolean.FALSE}
- };
+ final Object[][] data = {{new Float( 42 ), "==", new Float( 42 ), Boolean.TRUE}, {new Float( 42 ), "<", new Float( 43 ), Boolean.TRUE}, {new Float( 42 ), ">=", new Float( 41 ), Boolean.TRUE},
+ {new Float( 42 ), "!=", new Float( 41 ), Boolean.TRUE}, {new Float( 42 ), ">", new Float( 41 ), Boolean.TRUE}, {new Float( 42 ), ">=", new Float( 41 ), Boolean.TRUE}, {new Float( 42 ), ">=", new Float( 42 ), Boolean.TRUE},
+ {new Float( 42 ), ">=", new Float( 100 ), Boolean.FALSE}, {new Float( 42 ), "<", new Float( 1 ), Boolean.FALSE}, {new Float( 42 ), "==", null, Boolean.FALSE}, {null, "==", null, Boolean.TRUE}, {null, "!=", null, Boolean.FALSE},
+ {null, "!=", new Float( 42 ), Boolean.TRUE}, {null, "==", new Float( 42 ), Boolean.FALSE}, {null, "<", new Float( 43 ), Boolean.FALSE}, {null, ">=", new Float( -10 ), Boolean.FALSE}, {null, ">", new Float( -10 ), Boolean.FALSE},
+ {null, "<=", new Float( 42 ), Boolean.FALSE}, {new Float( 42 ), "memberOf", col, Boolean.TRUE}, {new Float( 43 ), "memberOf", col, Boolean.FALSE}, {null, "memberOf", col, Boolean.FALSE},
+ {new Float( 42 ), "memberOf", null, Boolean.FALSE}, {new Float( 42 ), "not memberOf", col, Boolean.FALSE}, {new Float( 43 ), "not memberOf", col, Boolean.TRUE}, {null, "not memberOf", col, Boolean.TRUE},
+ {new Float( 42 ), "not memberOf", null, Boolean.FALSE}};
runEvaluatorTest( data,
ValueType.PFLOAT_TYPE );
@@ -446,36 +244,15 @@
public void testLong() {
Collection col = new ArrayList();
- col.add( new Long(42) );
- col.add( new Long(45) );
+ col.add( new Long( 42 ) );
+ col.add( new Long( 45 ) );
- final Object[][] data = {{new Long( 42 ), "==", new Long( 42 ), Boolean.TRUE},
- {new Long( 42 ), "<", new Long( 43 ), Boolean.TRUE},
- {new Long( 42 ), ">=", new Long( 41 ), Boolean.TRUE},
- {new Long( 42 ), "!=", new Long( 41 ), Boolean.TRUE},
- {new Long( 42 ), ">", new Long( 41 ), Boolean.TRUE},
- {new Long( 42 ), ">=", new Long( 41 ), Boolean.TRUE},
- {new Long( 42 ), ">=", new Long( 42 ), Boolean.TRUE},
- {new Long( 42 ), ">=", new Long( 100 ), Boolean.FALSE},
- {new Long( 42 ), "<", new Long( 1 ), Boolean.FALSE},
- {new Long( 42 ), "==", null, Boolean.FALSE},
- {null, "==", null, Boolean.TRUE},
- {null, "!=", null, Boolean.FALSE},
- {null, "!=", new Long( 42 ), Boolean.TRUE},
- {null, "==", new Long( 42 ), Boolean.FALSE},
- {null, "<", new Long( 43 ), Boolean.FALSE},
- {null, ">=", new Long( -10 ), Boolean.FALSE},
- {null, ">", new Long( -10 ), Boolean.FALSE},
- {null, "<=", new Long( 42 ), Boolean.FALSE},
- {new Long( 42 ), "memberOf", col, Boolean.TRUE},
- {new Long( 43 ), "memberOf", col, Boolean.FALSE},
- {null, "memberOf", col, Boolean.FALSE},
- {new Long( 42 ), "memberOf", null, Boolean.FALSE},
- {new Long( 42 ), "not memberOf", col, Boolean.FALSE},
- {new Long( 43 ), "not memberOf", col, Boolean.TRUE},
- {null, "not memberOf", col, Boolean.TRUE},
- {new Long( 42 ), "not memberOf", null, Boolean.FALSE}
- };
+ final Object[][] data = {{new Long( 42 ), "==", new Long( 42 ), Boolean.TRUE}, {new Long( 42 ), "<", new Long( 43 ), Boolean.TRUE}, {new Long( 42 ), ">=", new Long( 41 ), Boolean.TRUE}, {new Long( 42 ), "!=", new Long( 41 ), Boolean.TRUE},
+ {new Long( 42 ), ">", new Long( 41 ), Boolean.TRUE}, {new Long( 42 ), ">=", new Long( 41 ), Boolean.TRUE}, {new Long( 42 ), ">=", new Long( 42 ), Boolean.TRUE}, {new Long( 42 ), ">=", new Long( 100 ), Boolean.FALSE},
+ {new Long( 42 ), "<", new Long( 1 ), Boolean.FALSE}, {new Long( 42 ), "==", null, Boolean.FALSE}, {null, "==", null, Boolean.TRUE}, {null, "!=", null, Boolean.FALSE}, {null, "!=", new Long( 42 ), Boolean.TRUE},
+ {null, "==", new Long( 42 ), Boolean.FALSE}, {null, "<", new Long( 43 ), Boolean.FALSE}, {null, ">=", new Long( -10 ), Boolean.FALSE}, {null, ">", new Long( -10 ), Boolean.FALSE}, {null, "<=", new Long( 42 ), Boolean.FALSE},
+ {new Long( 42 ), "memberOf", col, Boolean.TRUE}, {new Long( 43 ), "memberOf", col, Boolean.FALSE}, {null, "memberOf", col, Boolean.FALSE}, {new Long( 42 ), "memberOf", null, Boolean.FALSE},
+ {new Long( 42 ), "not memberOf", col, Boolean.FALSE}, {new Long( 43 ), "not memberOf", col, Boolean.TRUE}, {null, "not memberOf", col, Boolean.TRUE}, {new Long( 42 ), "not memberOf", null, Boolean.FALSE}};
runEvaluatorTest( data,
ValueType.PLONG_TYPE );
@@ -486,33 +263,13 @@
col.add( new Character( 'a' ) );
col.add( new Character( 'b' ) );
- final Object[][] data = {{new Character( 'a' ), "==", new Character( 'a' ), Boolean.TRUE},
- {new Character( 'a' ), "<", new Character( 'b' ), Boolean.TRUE},
- {new Character( 'a' ), ">=", new Character( 'a' ), Boolean.TRUE},
- {new Character( 'a' ), "!=", new Character( 'Z' ), Boolean.TRUE},
- {new Character( 'z' ), ">", new Character( 'a' ), Boolean.TRUE},
- {new Character( 'z' ), ">=", new Character( 'z' ), Boolean.TRUE},
- {new Character( 'z' ), ">=", new Character( 'a' ), Boolean.TRUE},
- {new Character( 'a' ), ">=", new Character( 'z' ), Boolean.FALSE},
- {new Character( 'z' ), "<", new Character( 'a' ), Boolean.FALSE},
- {new Character( 'z' ), "==", null, Boolean.FALSE},
- {null, "==", null, Boolean.TRUE},
- {null, "!=", null, Boolean.FALSE},
- {null, "!=", new Character( 'z' ), Boolean.TRUE},
- {null, "==", new Character( 'z' ), Boolean.FALSE},
- {null, "<", new Character( 'a' ), Boolean.FALSE},
- {null, ">=", new Character( '\0' ), Boolean.FALSE},
- {null, ">", new Character( '\0' ), Boolean.FALSE},
- {null, "<=", new Character( 'a' ), Boolean.FALSE},
- {new Character( 'a' ), "memberOf", col, Boolean.TRUE},
- {new Character( 'z' ), "memberOf", col, Boolean.FALSE},
- {null, "memberOf", col, Boolean.FALSE},
- {new Character( 'a' ), "memberOf", null, Boolean.FALSE},
- {new Character( 'a' ), "not memberOf", col, Boolean.FALSE},
- {new Character( 'z' ), "not memberOf", col, Boolean.TRUE},
- {null, "not memberOf", col, Boolean.TRUE},
- {new Character( 'a' ), "not memberOf", null, Boolean.FALSE}
- };
+ final Object[][] data = {{new Character( 'a' ), "==", new Character( 'a' ), Boolean.TRUE}, {new Character( 'a' ), "<", new Character( 'b' ), Boolean.TRUE}, {new Character( 'a' ), ">=", new Character( 'a' ), Boolean.TRUE},
+ {new Character( 'a' ), "!=", new Character( 'Z' ), Boolean.TRUE}, {new Character( 'z' ), ">", new Character( 'a' ), Boolean.TRUE}, {new Character( 'z' ), ">=", new Character( 'z' ), Boolean.TRUE},
+ {new Character( 'z' ), ">=", new Character( 'a' ), Boolean.TRUE}, {new Character( 'a' ), ">=", new Character( 'z' ), Boolean.FALSE}, {new Character( 'z' ), "<", new Character( 'a' ), Boolean.FALSE},
+ {new Character( 'z' ), "==", null, Boolean.FALSE}, {null, "==", null, Boolean.TRUE}, {null, "!=", null, Boolean.FALSE}, {null, "!=", new Character( 'z' ), Boolean.TRUE}, {null, "==", new Character( 'z' ), Boolean.FALSE},
+ {null, "<", new Character( 'a' ), Boolean.FALSE}, {null, ">=", new Character( '\0' ), Boolean.FALSE}, {null, ">", new Character( '\0' ), Boolean.FALSE}, {null, "<=", new Character( 'a' ), Boolean.FALSE},
+ {new Character( 'a' ), "memberOf", col, Boolean.TRUE}, {new Character( 'z' ), "memberOf", col, Boolean.FALSE}, {null, "memberOf", col, Boolean.FALSE}, {new Character( 'a' ), "memberOf", null, Boolean.FALSE},
+ {new Character( 'a' ), "not memberOf", col, Boolean.FALSE}, {new Character( 'z' ), "not memberOf", col, Boolean.TRUE}, {null, "not memberOf", col, Boolean.TRUE}, {new Character( 'a' ), "not memberOf", null, Boolean.FALSE}};
runEvaluatorTest( data,
ValueType.PCHAR_TYPE );
}
@@ -526,35 +283,15 @@
col.add( df.parse( "11-Jul-1974" ) );
//note that strings are also allowed on the right
- final Object[][] data = {{df.parse( "10-Jul-1974" ), "==", df.parse( "10-Jul-1974" ), Boolean.TRUE},
- {df.parse( "10-Jul-1974" ), "<", df.parse( "11-Jul-1974" ), Boolean.TRUE},
- {df.parse( "10-Jul-1974" ), ">=", df.parse( "10-Jul-1974" ), Boolean.TRUE},
- {df.parse( "10-Jul-1974" ), "!=", df.parse( "11-Jul-1974" ), Boolean.TRUE},
- {df.parse( "10-Jul-2000" ), ">", df.parse( "10-Jul-1974" ), Boolean.TRUE},
- {df.parse( "10-Jul-1974" ), ">=", df.parse( "10-Jul-1974" ), Boolean.TRUE},
- {df.parse( "11-Jul-1974" ), ">=", df.parse( "10-Jul-1974" ), Boolean.TRUE},
- {df.parse( "10-Jul-1974" ), ">=", df.parse( "11-Jul-1974" ), Boolean.FALSE},
- {df.parse( "10-Jul-2000" ), "<", df.parse( "10-Jul-1974" ), Boolean.FALSE},
- {df.parse( "10-Jul-1974" ), "<", df.parse( "11-Jul-1974" ), Boolean.TRUE},
- {df.parse( "10-Jul-1974" ), "==", null, Boolean.FALSE},
- {df.parse( "10-Jul-1974" ), "!=", null, Boolean.TRUE},
- {null, "==", null, Boolean.TRUE},
- {null, "==", df.parse( "10-Jul-1974" ), Boolean.FALSE},
- {null, "!=", null, Boolean.FALSE},
- {null, "!=", df.parse( "10-Jul-1974" ), Boolean.TRUE},
- {null, "<", df.parse( "10-Jul-1974" ), Boolean.FALSE},
- {null, ">=", new Date(0), Boolean.FALSE},
- {null, ">", new Date(0), Boolean.FALSE},
- {null, "<=", df.parse( "10-Jul-1974" ), Boolean.FALSE},
- {df.parse( "10-Jul-1974" ), "memberOf", col, Boolean.TRUE},
- {df.parse( "15-Jul-1974" ), "memberOf", col, Boolean.FALSE},
- {null, "memberOf", col, Boolean.FALSE},
- {df.parse( "10-Jul-1974" ), "memberOf", null, Boolean.FALSE},
- {df.parse( "10-Jul-1974" ), "not memberOf", col, Boolean.FALSE},
- {df.parse( "15-Jul-1974" ), "not memberOf", col, Boolean.TRUE},
- {null, "not memberOf", col, Boolean.TRUE},
- {df.parse( "10-Jul-1974" ), "not memberOf", null, Boolean.FALSE}
- };
+ final Object[][] data = {{df.parse( "10-Jul-1974" ), "==", df.parse( "10-Jul-1974" ), Boolean.TRUE}, {df.parse( "10-Jul-1974" ), "<", df.parse( "11-Jul-1974" ), Boolean.TRUE},
+ {df.parse( "10-Jul-1974" ), ">=", df.parse( "10-Jul-1974" ), Boolean.TRUE}, {df.parse( "10-Jul-1974" ), "!=", df.parse( "11-Jul-1974" ), Boolean.TRUE}, {df.parse( "10-Jul-2000" ), ">", df.parse( "10-Jul-1974" ), Boolean.TRUE},
+ {df.parse( "10-Jul-1974" ), ">=", df.parse( "10-Jul-1974" ), Boolean.TRUE}, {df.parse( "11-Jul-1974" ), ">=", df.parse( "10-Jul-1974" ), Boolean.TRUE}, {df.parse( "10-Jul-1974" ), ">=", df.parse( "11-Jul-1974" ), Boolean.FALSE},
+ {df.parse( "10-Jul-2000" ), "<", df.parse( "10-Jul-1974" ), Boolean.FALSE}, {df.parse( "10-Jul-1974" ), "<", df.parse( "11-Jul-1974" ), Boolean.TRUE}, {df.parse( "10-Jul-1974" ), "==", null, Boolean.FALSE},
+ {df.parse( "10-Jul-1974" ), "!=", null, Boolean.TRUE}, {null, "==", null, Boolean.TRUE}, {null, "==", df.parse( "10-Jul-1974" ), Boolean.FALSE}, {null, "!=", null, Boolean.FALSE},
+ {null, "!=", df.parse( "10-Jul-1974" ), Boolean.TRUE}, {null, "<", df.parse( "10-Jul-1974" ), Boolean.FALSE}, {null, ">=", new Date( 0 ), Boolean.FALSE}, {null, ">", new Date( 0 ), Boolean.FALSE},
+ {null, "<=", df.parse( "10-Jul-1974" ), Boolean.FALSE}, {df.parse( "10-Jul-1974" ), "memberOf", col, Boolean.TRUE}, {df.parse( "15-Jul-1974" ), "memberOf", col, Boolean.FALSE}, {null, "memberOf", col, Boolean.FALSE},
+ {df.parse( "10-Jul-1974" ), "memberOf", null, Boolean.FALSE}, {df.parse( "10-Jul-1974" ), "not memberOf", col, Boolean.FALSE}, {df.parse( "15-Jul-1974" ), "not memberOf", col, Boolean.TRUE}, {null, "not memberOf", col, Boolean.TRUE},
+ {df.parse( "10-Jul-1974" ), "not memberOf", null, Boolean.FALSE}};
runEvaluatorTest( data,
ValueType.DATE_TYPE );
}
@@ -564,33 +301,13 @@
col.add( new Byte( "1" ) );
col.add( new Byte( "2" ) );
- final Object[][] data = {{new Byte( "1" ), "==", new Byte( "1" ), Boolean.TRUE},
- {new Byte( "1" ), "==", new Byte( "2" ), Boolean.FALSE},
- {new Byte( "1" ), "!=", new Byte( "2" ), Boolean.TRUE},
- {new Byte( "1" ), "!=", new Byte( "1" ), Boolean.FALSE},
- {new Byte( "1" ), "<=", new Byte( "1" ), Boolean.TRUE},
- {new Byte( "1" ), "==", null, Boolean.FALSE},
- {new Byte( "1" ), "<", new Byte( "2" ), Boolean.TRUE},
- {new Byte( "2" ), ">=", new Byte( "1" ), Boolean.TRUE},
- {new Byte( "2" ), ">", new Byte( "1" ), Boolean.TRUE},
- {new Byte( "1" ), "<=", new Byte( "2" ), Boolean.TRUE},
- {null, "==", null, Boolean.TRUE},
- {null, "!=", null, Boolean.FALSE},
- {null, "!=", new Byte( "1" ), Boolean.TRUE},
- {null, "==", new Byte( "1" ), Boolean.FALSE},
- {null, "<", new Byte( Byte.MAX_VALUE), Boolean.FALSE},
- {null, ">=", new Byte( Byte.MIN_VALUE ), Boolean.FALSE},
- {null, ">", new Byte( Byte.MIN_VALUE ), Boolean.FALSE},
- {null, "<=", new Byte( Byte.MAX_VALUE ), Boolean.FALSE},
- {new Byte( "1" ), "memberOf", col, Boolean.TRUE},
- {new Byte( "3" ), "memberOf", col, Boolean.FALSE},
- {null, "memberOf", col, Boolean.FALSE},
- {new Byte( "1" ), "memberOf", null, Boolean.FALSE},
- {new Byte( "1" ), "not memberOf", col, Boolean.FALSE},
- {new Byte( "3" ), "not memberOf", col, Boolean.TRUE},
- {null, "not memberOf", col, Boolean.TRUE},
- {new Byte( "1" ), "not memberOf", null, Boolean.FALSE}
- };
+ final Object[][] data = {{new Byte( "1" ), "==", new Byte( "1" ), Boolean.TRUE}, {new Byte( "1" ), "==", new Byte( "2" ), Boolean.FALSE}, {new Byte( "1" ), "!=", new Byte( "2" ), Boolean.TRUE},
+ {new Byte( "1" ), "!=", new Byte( "1" ), Boolean.FALSE}, {new Byte( "1" ), "<=", new Byte( "1" ), Boolean.TRUE}, {new Byte( "1" ), "==", null, Boolean.FALSE}, {new Byte( "1" ), "<", new Byte( "2" ), Boolean.TRUE},
+ {new Byte( "2" ), ">=", new Byte( "1" ), Boolean.TRUE}, {new Byte( "2" ), ">", new Byte( "1" ), Boolean.TRUE}, {new Byte( "1" ), "<=", new Byte( "2" ), Boolean.TRUE}, {null, "==", null, Boolean.TRUE},
+ {null, "!=", null, Boolean.FALSE}, {null, "!=", new Byte( "1" ), Boolean.TRUE}, {null, "==", new Byte( "1" ), Boolean.FALSE}, {null, "<", new Byte( Byte.MAX_VALUE ), Boolean.FALSE},
+ {null, ">=", new Byte( Byte.MIN_VALUE ), Boolean.FALSE}, {null, ">", new Byte( Byte.MIN_VALUE ), Boolean.FALSE}, {null, "<=", new Byte( Byte.MAX_VALUE ), Boolean.FALSE}, {new Byte( "1" ), "memberOf", col, Boolean.TRUE},
+ {new Byte( "3" ), "memberOf", col, Boolean.FALSE}, {null, "memberOf", col, Boolean.FALSE}, {new Byte( "1" ), "memberOf", null, Boolean.FALSE}, {new Byte( "1" ), "not memberOf", col, Boolean.FALSE},
+ {new Byte( "3" ), "not memberOf", col, Boolean.TRUE}, {null, "not memberOf", col, Boolean.TRUE}, {new Byte( "1" ), "not memberOf", null, Boolean.FALSE}};
runEvaluatorTest( data,
ValueType.PBYTE_TYPE );
@@ -603,12 +320,15 @@
*/
private void runEvaluatorTest(final Object[][] data,
final ValueType valueType) {
- final Extractor extractor = new MockExtractor();
+ final InternalReadAccessor extractor = new MockExtractor();
for ( int i = 0; i < data.length; i++ ) {
final Object[] row = data[i];
- boolean isNegated = ((String) row[1]).startsWith("not ");
- String evaluatorStr = isNegated ? ((String)row[1]).substring( 4 ) : (String)row[1];
- final Evaluator evaluator = registry.getEvaluatorDefinition( evaluatorStr ).getEvaluator( valueType, evaluatorStr, isNegated, null );
+ boolean isNegated = ((String) row[1]).startsWith( "not " );
+ String evaluatorStr = isNegated ? ((String) row[1]).substring( 4 ) : (String) row[1];
+ final Evaluator evaluator = registry.getEvaluatorDefinition( evaluatorStr ).getEvaluator( valueType,
+ evaluatorStr,
+ isNegated,
+ null );
checkEvaluatorMethodWithFieldValue( valueType,
extractor,
row,
@@ -639,13 +359,14 @@
* @param evaluator
*/
private void checkEvaluatorMethodWithFieldValue(final ValueType valueType,
- final Extractor extractor,
+ final InternalReadAccessor extractor,
final Object[] row,
final Evaluator evaluator) {
final FieldValue value = FieldFactory.getFieldValue( row[2] );
final boolean result = evaluator.evaluate( null,
extractor,
- row[0], value );
+ row[0],
+ value );
final String message = "The evaluator type: [" + valueType + "] with FieldValue incorrectly returned " + result + " for [" + row[0] + " " + row[1] + " " + row[2] + "]. It was asserted to return " + row[3];
if ( row[3] == Boolean.TRUE ) {
@@ -664,15 +385,16 @@
* @param evaluator
*/
private void checkEvaluatorMethodCachedRight(final ValueType valueType,
- final Extractor extractor,
+ final InternalReadAccessor extractor,
final Object[] row,
final Evaluator evaluator) {
final VariableContextEntry context = this.getContextEntry( evaluator,
- (FieldExtractor) extractor,
- valueType,
- row );
+ extractor,
+ valueType,
+ row );
final boolean result = evaluator.evaluateCachedRight( null,
- context, row[2] );
+ context,
+ row[2] );
final String message = "The evaluator type: [" + valueType + "] with CachedRight incorrectly returned " + result + " for [" + row[0] + " " + row[1] + " " + row[2] + "]. It was asserted to return " + row[3];
if ( row[3] == Boolean.TRUE ) {
@@ -691,15 +413,16 @@
* @param evaluator
*/
private void checkEvaluatorMethodCachedLeft(final ValueType valueType,
- final Extractor extractor,
+ final InternalReadAccessor extractor,
final Object[] row,
final Evaluator evaluator) {
final VariableContextEntry context = this.getContextEntry( evaluator,
- (FieldExtractor) extractor,
- valueType,
- row );
+ extractor,
+ valueType,
+ row );
final boolean result = evaluator.evaluateCachedLeft( null,
- context, row[0] );
+ context,
+ row[0] );
final String message = "The evaluator type: [" + valueType + "] with CachedLeft incorrectly returned " + result + " for [" + row[0] + " " + row[1] + " " + row[2] + "]. It was asserted to return " + row[3];
if ( row[3] == Boolean.TRUE ) {
@@ -718,13 +441,14 @@
* @param evaluator
*/
private void checkEvaluatorMethodWith2Extractors(final ValueType valueType,
- final Extractor extractor,
+ final InternalReadAccessor extractor,
final Object[] row,
final Evaluator evaluator) {
final boolean result = evaluator.evaluate( null,
extractor,
row[0],
- extractor, row[2] );
+ extractor,
+ row[2] );
final String message = "The evaluator type: [" + valueType + "] with 2 extractors incorrectly returned " + result + " for [" + row[0] + " " + row[1] + " " + row[2] + "]. It was asserted to return " + row[3];
if ( row[3] == Boolean.TRUE ) {
@@ -737,26 +461,26 @@
}
private VariableContextEntry getContextEntry(final Evaluator evaluator,
- final FieldExtractor extractor,
+ final InternalReadAccessor extractor,
final ValueType valueType,
final Object[] row) {
final Declaration declaration = new Declaration( "test",
- extractor,
- null );
+ extractor,
+ null );
final ValueType coerced = evaluator.getCoercedValueType();
if ( coerced.isIntegerNumber() ) {
final LongVariableContextEntry context = new LongVariableContextEntry( extractor,
- declaration,
- evaluator );
+ declaration,
+ evaluator );
- if (row[2] == null) {
+ if ( row[2] == null ) {
context.leftNull = true;
} else {
context.left = ((Number) row[2]).longValue();
}
- if (row[0] == null) {
+ if ( row[0] == null ) {
context.rightNull = true;
} else {
context.right = ((Number) row[0]).longValue();
@@ -767,13 +491,13 @@
declaration,
evaluator );
- if (row[2] == null) {
+ if ( row[2] == null ) {
context.leftNull = true;
} else {
context.left = ((Character) row[2]).charValue();
}
- if (row[0] == null) {
+ if ( row[0] == null ) {
context.rightNull = true;
} else {
context.right = ((Character) row[0]).charValue();
@@ -781,16 +505,16 @@
return context;
} else if ( coerced.isBoolean() ) {
final BooleanVariableContextEntry context = new BooleanVariableContextEntry( extractor,
- declaration,
- evaluator );
+ declaration,
+ evaluator );
- if (row[2] == null) {
+ if ( row[2] == null ) {
context.leftNull = true;
} else {
context.left = ((Boolean) row[2]).booleanValue();
}
- if (row[0] == null) {
+ if ( row[0] == null ) {
context.rightNull = true;
} else {
context.right = ((Boolean) row[0]).booleanValue();
@@ -798,15 +522,15 @@
return context;
} else if ( coerced.isFloatNumber() ) {
final DoubleVariableContextEntry context = new DoubleVariableContextEntry( extractor,
- declaration,
- evaluator );
- if (row[2] == null) {
+ declaration,
+ evaluator );
+ if ( row[2] == null ) {
context.leftNull = true;
} else {
context.left = ((Number) row[2]).doubleValue();
}
- if (row[0] == null) {
+ if ( row[0] == null ) {
context.rightNull = true;
} else {
context.right = ((Number) row[0]).doubleValue();
@@ -814,15 +538,15 @@
return context;
} else {
final ObjectVariableContextEntry context = new ObjectVariableContextEntry( extractor,
- declaration,
- evaluator );
- if (row[2] == null) {
+ declaration,
+ evaluator );
+ if ( row[2] == null ) {
context.leftNull = true;
} else {
context.left = row[2];
}
- if (row[0] == null) {
+ if ( row[0] == null ) {
context.rightNull = true;
} else {
context.right = row[0];
@@ -833,28 +557,34 @@
private static class MockExtractor
implements
- FieldExtractor {
+ InternalReadAccessor {
private static final long serialVersionUID = 400L;
- public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
+ public void readExternal(ObjectInput in) throws IOException,
+ ClassNotFoundException {
}
public void writeExternal(ObjectOutput out) throws IOException {
}
- public boolean getBooleanValue(InternalWorkingMemory workingMemory, final Object object) {
+
+ public boolean getBooleanValue(InternalWorkingMemory workingMemory,
+ final Object object) {
return object != null ? ((Boolean) object).booleanValue() : false;
}
- public byte getByteValue(InternalWorkingMemory workingMemory, final Object object) {
+ public byte getByteValue(InternalWorkingMemory workingMemory,
+ final Object object) {
return object != null ? ((Number) object).byteValue() : (byte) 0;
}
- public char getCharValue(InternalWorkingMemory workingMemory, final Object object) {
+ public char getCharValue(InternalWorkingMemory workingMemory,
+ final Object object) {
return object != null ? ((Character) object).charValue() : '\0';
}
- public double getDoubleValue(InternalWorkingMemory workingMemory, final Object object) {
+ public double getDoubleValue(InternalWorkingMemory workingMemory,
+ final Object object) {
return object != null ? ((Number) object).doubleValue() : 0.0;
}
@@ -866,19 +596,23 @@
return null;
}
- public float getFloatValue(InternalWorkingMemory workingMemory, final Object object) {
+ public float getFloatValue(InternalWorkingMemory workingMemory,
+ final Object object) {
return object != null ? ((Number) object).floatValue() : (float) 0.0;
}
- public int getHashCode(InternalWorkingMemory workingMemory, final Object object) {
+ public int getHashCode(InternalWorkingMemory workingMemory,
+ final Object object) {
return 0;
}
- public int getIntValue(InternalWorkingMemory workingMemory, final Object object) {
+ public int getIntValue(InternalWorkingMemory workingMemory,
+ final Object object) {
return object != null ? ((Number) object).intValue() : 0;
}
- public long getLongValue(InternalWorkingMemory workingMemory, final Object object) {
+ public long getLongValue(InternalWorkingMemory workingMemory,
+ final Object object) {
return object != null ? ((Number) object).longValue() : 0;
}
@@ -886,15 +620,18 @@
return null;
}
- public short getShortValue(InternalWorkingMemory workingMemory, final Object object) {
+ public short getShortValue(InternalWorkingMemory workingMemory,
+ final Object object) {
return object != null ? ((Number) object).shortValue() : (short) 0;
}
- public Object getValue(InternalWorkingMemory workingMemory, final Object object) {
+ public Object getValue(InternalWorkingMemory workingMemory,
+ final Object object) {
return object;
}
- public boolean isNullValue(InternalWorkingMemory workingMemory, final Object object ) {
+ public boolean isNullValue(InternalWorkingMemory workingMemory,
+ final Object object) {
return object == null;
}
@@ -911,6 +648,61 @@
return false;
}
+ public boolean getBooleanValue(Object object) {
+ // TODO Auto-generated method stub
+ return false;
+ }
+
+ public byte getByteValue(Object object) {
+ // TODO Auto-generated method stub
+ return 0;
+ }
+
+ public char getCharValue(Object object) {
+ // TODO Auto-generated method stub
+ return 0;
+ }
+
+ public double getDoubleValue(Object object) {
+ // TODO Auto-generated method stub
+ return 0;
+ }
+
+ public float getFloatValue(Object object) {
+ // TODO Auto-generated method stub
+ return 0;
+ }
+
+ public int getHashCode(Object object) {
+ // TODO Auto-generated method stub
+ return 0;
+ }
+
+ public int getIntValue(Object object) {
+ // TODO Auto-generated method stub
+ return 0;
+ }
+
+ public long getLongValue(Object object) {
+ // TODO Auto-generated method stub
+ return 0;
+ }
+
+ public short getShortValue(Object object) {
+ // TODO Auto-generated method stub
+ return 0;
+ }
+
+ public Object getValue(Object object) {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public boolean isNullValue(Object object) {
+ // TODO Auto-generated method stub
+ return false;
+ }
+
}
// public void testRegexFoo() {
Modified: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/base/TemporalEvaluatorFactoryTest.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/base/TemporalEvaluatorFactoryTest.java 2008-05-16 15:22:07 UTC (rev 19970)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/base/TemporalEvaluatorFactoryTest.java 2008-05-16 18:29:20 UTC (rev 19971)
@@ -16,15 +16,13 @@
* limitations under the License.
*/
-import java.lang.reflect.Method;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.List;
import java.io.IOException;
+import java.io.ObjectInput;
import java.io.ObjectOutput;
-import java.io.ObjectInput;
+import java.lang.reflect.Method;
+import junit.framework.TestCase;
+
import org.drools.RuntimeDroolsException;
import org.drools.base.evaluators.EvaluatorDefinition;
import org.drools.base.evaluators.EvaluatorRegistry;
@@ -38,12 +36,9 @@
import org.drools.rule.VariableRestriction.ObjectVariableContextEntry;
import org.drools.rule.VariableRestriction.VariableContextEntry;
import org.drools.spi.Evaluator;
-import org.drools.spi.Extractor;
-import org.drools.spi.FieldExtractor;
import org.drools.spi.FieldValue;
+import org.drools.spi.InternalReadAccessor;
-import junit.framework.TestCase;
-
/**
* Test coverage for the temporal evaluators.
*
@@ -51,483 +46,489 @@
*/
public class TemporalEvaluatorFactoryTest extends TestCase {
- private EvaluatorRegistry registry = new EvaluatorRegistry();
+ private EvaluatorRegistry registry = new EvaluatorRegistry();
- public void testAfter() {
- registry
- .addEvaluatorDefinition("org.drools.base.evaluators.AfterEvaluatorDefinition");
+ public void testAfter() {
+ registry.addEvaluatorDefinition( "org.drools.base.evaluators.AfterEvaluatorDefinition" );
- EventFactHandle foo = new EventFactHandle(1, "foo", 1, 1, 2);
- EventFactHandle bar = new EventFactHandle(2, "bar", 1, 4, 3);
- EventFactHandle drool = new EventFactHandle(1, "drool", 1, 5, 2);
+ EventFactHandle foo = new EventFactHandle( 1,
+ "foo",
+ 1,
+ 1,
+ 2 );
+ EventFactHandle bar = new EventFactHandle( 2,
+ "bar",
+ 1,
+ 4,
+ 3 );
+ EventFactHandle drool = new EventFactHandle( 1,
+ "drool",
+ 1,
+ 5,
+ 2 );
- final Object[][] data = { { drool, "after", foo, Boolean.TRUE },
- { drool, "after", bar, Boolean.FALSE },
- { bar, "after", foo, Boolean.TRUE },
- { bar, "after", drool, Boolean.FALSE },
- { foo, "after", drool, Boolean.FALSE },
- { foo, "after", bar, Boolean.FALSE },
- { foo, "not after", bar, Boolean.TRUE },
- { foo, "not after", drool, Boolean.TRUE },
- { bar, "not after", drool, Boolean.TRUE },
- { bar, "not after", foo, Boolean.FALSE },
- { drool, "not after", foo, Boolean.FALSE },
- { drool, "not after", bar, Boolean.TRUE },
- { bar, "after[1]", foo, Boolean.TRUE },
- { bar, "after[0]", foo, Boolean.FALSE },
- { bar, "after[-3]", drool, Boolean.TRUE },
- { bar, "after[-4]", drool, Boolean.FALSE },
- { drool, "after[2]", foo, Boolean.TRUE },
- { drool, "after[1]", foo, Boolean.FALSE },
- { drool, "after[-2]", bar, Boolean.TRUE },
- { drool, "after[-3]", bar, Boolean.FALSE },
- { foo, "after[-6]", drool, Boolean.TRUE },
- { foo, "after[-7]", drool, Boolean.FALSE },
- { foo, "after[-6]", bar, Boolean.TRUE },
- { foo, "after[-7]", bar, Boolean.FALSE },
- { bar, "not after[1]", foo, Boolean.FALSE },
- { bar, "not after[0]", foo, Boolean.TRUE },
- { bar, "not after[-3]", drool, Boolean.FALSE },
- { bar, "not after[-4]", drool, Boolean.TRUE },
- { drool, "not after[2]", foo, Boolean.FALSE },
- { drool, "not after[1]", foo, Boolean.TRUE },
- { drool, "not after[-2]", bar, Boolean.FALSE },
- { drool, "not after[-3]", bar, Boolean.TRUE },
- { foo, "not after[-6]", drool, Boolean.FALSE },
- { foo, "not after[-7]", drool, Boolean.TRUE },
- { foo, "not after[-6]", bar, Boolean.FALSE },
- { foo, "not after[-7]", bar, Boolean.TRUE },
- { drool, "after[1,4]", foo, Boolean.TRUE },
- { drool, "after[3,6]", foo, Boolean.FALSE },
- { drool, "after[-3,1]", bar, Boolean.TRUE },
- { drool, "after[-1,3]", bar, Boolean.FALSE },
- { bar, "after[1,5]", foo, Boolean.TRUE },
- { bar, "after[2,5]", foo, Boolean.FALSE },
- { bar, "after[-3,0]", drool, Boolean.TRUE },
- { bar, "after[-2,1]", drool, Boolean.FALSE },
- { foo, "after[-7,-3]", bar, Boolean.TRUE },
- { foo, "after[-5,-1]", bar, Boolean.FALSE },
- { foo, "after[-6,-5]", drool, Boolean.TRUE },
- { foo, "after[-5,-4]", drool, Boolean.FALSE },
- { drool, "not after[1,4]", foo, Boolean.FALSE },
- { drool, "not after[3,6]", foo, Boolean.TRUE },
- { drool, "not after[-3,1]", bar, Boolean.FALSE },
- { drool, "not after[-1,3]", bar, Boolean.TRUE },
- { bar, "not after[1,5]", foo, Boolean.FALSE },
- { bar, "not after[2,5]", foo, Boolean.TRUE },
- { bar, "not after[-3,0]", drool, Boolean.FALSE },
- { bar, "not after[-2,1]", drool, Boolean.TRUE },
- { foo, "not after[-7,-3]", bar, Boolean.FALSE },
- { foo, "not after[-5,-1]", bar, Boolean.TRUE },
- { foo, "not after[-6,-5]", drool, Boolean.FALSE },
- { foo, "not after[-5,-4]", drool, Boolean.TRUE }, };
+ final Object[][] data = {{drool, "after", foo, Boolean.TRUE}, {drool, "after", bar, Boolean.FALSE}, {bar, "after", foo, Boolean.TRUE}, {bar, "after", drool, Boolean.FALSE}, {foo, "after", drool, Boolean.FALSE},
+ {foo, "after", bar, Boolean.FALSE}, {foo, "not after", bar, Boolean.TRUE}, {foo, "not after", drool, Boolean.TRUE}, {bar, "not after", drool, Boolean.TRUE}, {bar, "not after", foo, Boolean.FALSE},
+ {drool, "not after", foo, Boolean.FALSE}, {drool, "not after", bar, Boolean.TRUE}, {bar, "after[1]", foo, Boolean.TRUE}, {bar, "after[0]", foo, Boolean.FALSE}, {bar, "after[-3]", drool, Boolean.TRUE},
+ {bar, "after[-4]", drool, Boolean.FALSE}, {drool, "after[2]", foo, Boolean.TRUE}, {drool, "after[1]", foo, Boolean.FALSE}, {drool, "after[-2]", bar, Boolean.TRUE}, {drool, "after[-3]", bar, Boolean.FALSE},
+ {foo, "after[-6]", drool, Boolean.TRUE}, {foo, "after[-7]", drool, Boolean.FALSE}, {foo, "after[-6]", bar, Boolean.TRUE}, {foo, "after[-7]", bar, Boolean.FALSE}, {bar, "not after[1]", foo, Boolean.FALSE},
+ {bar, "not after[0]", foo, Boolean.TRUE}, {bar, "not after[-3]", drool, Boolean.FALSE}, {bar, "not after[-4]", drool, Boolean.TRUE}, {drool, "not after[2]", foo, Boolean.FALSE}, {drool, "not after[1]", foo, Boolean.TRUE},
+ {drool, "not after[-2]", bar, Boolean.FALSE}, {drool, "not after[-3]", bar, Boolean.TRUE}, {foo, "not after[-6]", drool, Boolean.FALSE}, {foo, "not after[-7]", drool, Boolean.TRUE}, {foo, "not after[-6]", bar, Boolean.FALSE},
+ {foo, "not after[-7]", bar, Boolean.TRUE}, {drool, "after[1,4]", foo, Boolean.TRUE}, {drool, "after[3,6]", foo, Boolean.FALSE}, {drool, "after[-3,1]", bar, Boolean.TRUE}, {drool, "after[-1,3]", bar, Boolean.FALSE},
+ {bar, "after[1,5]", foo, Boolean.TRUE}, {bar, "after[2,5]", foo, Boolean.FALSE}, {bar, "after[-3,0]", drool, Boolean.TRUE}, {bar, "after[-2,1]", drool, Boolean.FALSE}, {foo, "after[-7,-3]", bar, Boolean.TRUE},
+ {foo, "after[-5,-1]", bar, Boolean.FALSE}, {foo, "after[-6,-5]", drool, Boolean.TRUE}, {foo, "after[-5,-4]", drool, Boolean.FALSE}, {drool, "not after[1,4]", foo, Boolean.FALSE}, {drool, "not after[3,6]", foo, Boolean.TRUE},
+ {drool, "not after[-3,1]", bar, Boolean.FALSE}, {drool, "not after[-1,3]", bar, Boolean.TRUE}, {bar, "not after[1,5]", foo, Boolean.FALSE}, {bar, "not after[2,5]", foo, Boolean.TRUE}, {bar, "not after[-3,0]", drool, Boolean.FALSE},
+ {bar, "not after[-2,1]", drool, Boolean.TRUE}, {foo, "not after[-7,-3]", bar, Boolean.FALSE}, {foo, "not after[-5,-1]", bar, Boolean.TRUE}, {foo, "not after[-6,-5]", drool, Boolean.FALSE},
+ {foo, "not after[-5,-4]", drool, Boolean.TRUE},};
- runEvaluatorTest(data, ValueType.OBJECT_TYPE);
- }
+ runEvaluatorTest( data,
+ ValueType.OBJECT_TYPE );
+ }
- public void testBefore() {
- registry
- .addEvaluatorDefinition("org.drools.base.evaluators.BeforeEvaluatorDefinition");
+ public void testBefore() {
+ registry.addEvaluatorDefinition( "org.drools.base.evaluators.BeforeEvaluatorDefinition" );
- EventFactHandle foo = new EventFactHandle(1, "foo", 1, 1, 2);
- EventFactHandle bar = new EventFactHandle(2, "bar", 1, 2, 2);
- EventFactHandle drool = new EventFactHandle(1, "drool", 1, 5, 3);
+ EventFactHandle foo = new EventFactHandle( 1,
+ "foo",
+ 1,
+ 1,
+ 2 );
+ EventFactHandle bar = new EventFactHandle( 2,
+ "bar",
+ 1,
+ 2,
+ 2 );
+ EventFactHandle drool = new EventFactHandle( 1,
+ "drool",
+ 1,
+ 5,
+ 3 );
- final Object[][] data = {
- { foo, "before", drool, Boolean.TRUE },
- { foo, "before", bar, Boolean.FALSE },
- { drool, "before", foo, Boolean.FALSE },
- { drool, "before", bar, Boolean.FALSE },
- { bar, "before", drool, Boolean.TRUE },
- { bar, "before", foo, Boolean.FALSE },
- { foo, "not before", drool, Boolean.FALSE },
- { foo, "not before", bar, Boolean.TRUE },
- { drool, "not before", foo, Boolean.TRUE },
- { drool, "not before", bar, Boolean.TRUE },
- { bar, "not before", drool, Boolean.FALSE },
- { bar, "not before", foo, Boolean.TRUE },
- { foo, "before[2]", drool, Boolean.TRUE },
- { foo, "before[3]", drool, Boolean.FALSE },
- { foo, "before[-1]", bar, Boolean.TRUE },
- { foo, "before[-2]", bar, Boolean.FALSE },
- { bar, "before[1]", drool, Boolean.TRUE },
- { bar, "before[2]", drool, Boolean.FALSE },
- { bar, "before[-3]", foo, Boolean.TRUE },
- { bar, "before[-2]", foo, Boolean.FALSE },
- { drool, "before[-6]", bar, Boolean.TRUE },
- { drool, "before[-5]", bar, Boolean.FALSE },
- { drool, "before[-7]", foo, Boolean.TRUE },
- { drool, "before[-8]", foo, Boolean.FALSE },
- { foo, "not before[2]", drool, Boolean.FALSE },
- { foo, "not before[3]", drool, Boolean.TRUE },
- { foo, "not before[-1]", bar, Boolean.FALSE },
- { foo, "not before[-2]", bar, Boolean.TRUE },
- { bar, "not before[1]", drool, Boolean.FALSE },
- { bar, "not before[2]", drool, Boolean.TRUE },
- { bar, "not before[-3]", foo, Boolean.FALSE },
- { bar, "not before[-2]", foo, Boolean.TRUE },
- { drool, "not before[-6]", bar, Boolean.FALSE },
- { drool, "not before[-5]", bar, Boolean.TRUE },
- { drool, "not before[-7]", foo, Boolean.FALSE },
- { drool, "not before[-8]", foo, Boolean.TRUE },
- { foo, "before[2,4]", drool, Boolean.TRUE },
- { foo, "before[3,4]", drool, Boolean.FALSE },
- { foo, "before[-1,1]", bar, Boolean.TRUE },
- { foo, "before[0,-2]", bar, Boolean.FALSE },
- { bar, "before[0,4]", drool, Boolean.TRUE },
- { bar, "before[2,4]", drool, Boolean.FALSE },
- { bar, "before[-4,0]", foo, Boolean.TRUE },
- { bar, "before[-2,0]", foo, Boolean.FALSE },
- { drool, "before[-6,-3]", bar, Boolean.TRUE },
- { drool, "before[-5,-3]", bar, Boolean.FALSE },
- { drool, "before[-7,-4]", foo, Boolean.TRUE },
- { drool, "before[-6,-4]", foo, Boolean.FALSE },
- { foo, "not before[2,4]", drool, Boolean.FALSE },
- { foo, "not before[3,4]", drool, Boolean.TRUE },
- { foo, "not before[-1,1]", bar, Boolean.FALSE },
- { foo, "not before[0,-2]", bar, Boolean.TRUE },
- { bar, "not before[0,4]", drool, Boolean.FALSE },
- { bar, "not before[2,4]", drool, Boolean.TRUE },
- { bar, "not before[-4,0]", foo, Boolean.FALSE },
- { bar, "not before[-2,0]", foo, Boolean.TRUE },
- { drool, "not before[-6,-3]", bar, Boolean.FALSE },
- { drool, "not before[-5,-3]", bar, Boolean.TRUE },
- { drool, "not before[-7,-4]", foo, Boolean.FALSE },
- { drool, "not before[-6,-4]", foo, Boolean.TRUE } };
+ final Object[][] data = {{foo, "before", drool, Boolean.TRUE}, {foo, "before", bar, Boolean.FALSE}, {drool, "before", foo, Boolean.FALSE}, {drool, "before", bar, Boolean.FALSE}, {bar, "before", drool, Boolean.TRUE},
+ {bar, "before", foo, Boolean.FALSE}, {foo, "not before", drool, Boolean.FALSE}, {foo, "not before", bar, Boolean.TRUE}, {drool, "not before", foo, Boolean.TRUE}, {drool, "not before", bar, Boolean.TRUE},
+ {bar, "not before", drool, Boolean.FALSE}, {bar, "not before", foo, Boolean.TRUE}, {foo, "before[2]", drool, Boolean.TRUE}, {foo, "before[3]", drool, Boolean.FALSE}, {foo, "before[-1]", bar, Boolean.TRUE},
+ {foo, "before[-2]", bar, Boolean.FALSE}, {bar, "before[1]", drool, Boolean.TRUE}, {bar, "before[2]", drool, Boolean.FALSE}, {bar, "before[-3]", foo, Boolean.TRUE}, {bar, "before[-2]", foo, Boolean.FALSE},
+ {drool, "before[-6]", bar, Boolean.TRUE}, {drool, "before[-5]", bar, Boolean.FALSE}, {drool, "before[-7]", foo, Boolean.TRUE}, {drool, "before[-8]", foo, Boolean.FALSE}, {foo, "not before[2]", drool, Boolean.FALSE},
+ {foo, "not before[3]", drool, Boolean.TRUE}, {foo, "not before[-1]", bar, Boolean.FALSE}, {foo, "not before[-2]", bar, Boolean.TRUE}, {bar, "not before[1]", drool, Boolean.FALSE}, {bar, "not before[2]", drool, Boolean.TRUE},
+ {bar, "not before[-3]", foo, Boolean.FALSE}, {bar, "not before[-2]", foo, Boolean.TRUE}, {drool, "not before[-6]", bar, Boolean.FALSE}, {drool, "not before[-5]", bar, Boolean.TRUE}, {drool, "not before[-7]", foo, Boolean.FALSE},
+ {drool, "not before[-8]", foo, Boolean.TRUE}, {foo, "before[2,4]", drool, Boolean.TRUE}, {foo, "before[3,4]", drool, Boolean.FALSE}, {foo, "before[-1,1]", bar, Boolean.TRUE}, {foo, "before[0,-2]", bar, Boolean.FALSE},
+ {bar, "before[0,4]", drool, Boolean.TRUE}, {bar, "before[2,4]", drool, Boolean.FALSE}, {bar, "before[-4,0]", foo, Boolean.TRUE}, {bar, "before[-2,0]", foo, Boolean.FALSE}, {drool, "before[-6,-3]", bar, Boolean.TRUE},
+ {drool, "before[-5,-3]", bar, Boolean.FALSE}, {drool, "before[-7,-4]", foo, Boolean.TRUE}, {drool, "before[-6,-4]", foo, Boolean.FALSE}, {foo, "not before[2,4]", drool, Boolean.FALSE}, {foo, "not before[3,4]", drool, Boolean.TRUE},
+ {foo, "not before[-1,1]", bar, Boolean.FALSE}, {foo, "not before[0,-2]", bar, Boolean.TRUE}, {bar, "not before[0,4]", drool, Boolean.FALSE}, {bar, "not before[2,4]", drool, Boolean.TRUE},
+ {bar, "not before[-4,0]", foo, Boolean.FALSE}, {bar, "not before[-2,0]", foo, Boolean.TRUE}, {drool, "not before[-6,-3]", bar, Boolean.FALSE}, {drool, "not before[-5,-3]", bar, Boolean.TRUE},
+ {drool, "not before[-7,-4]", foo, Boolean.FALSE}, {drool, "not before[-6,-4]", foo, Boolean.TRUE}};
- runEvaluatorTest(data, ValueType.OBJECT_TYPE);
- }
+ runEvaluatorTest( data,
+ ValueType.OBJECT_TYPE );
+ }
- public void testCoincides() {
- registry
- .addEvaluatorDefinition("org.drools.base.evaluators.CoincidesEvaluatorDefinition");
+ public void testCoincides() {
+ registry.addEvaluatorDefinition( "org.drools.base.evaluators.CoincidesEvaluatorDefinition" );
- EventFactHandle foo = new EventFactHandle(1, "foo", 1, 2, 3);
- EventFactHandle bar = new EventFactHandle(2, "bar", 1, 2, 3);
- EventFactHandle drool = new EventFactHandle(1, "drool", 1, 2, 2);
- EventFactHandle mole = new EventFactHandle(1, "mole", 1, 1, 2);
+ EventFactHandle foo = new EventFactHandle( 1,
+ "foo",
+ 1,
+ 2,
+ 3 );
+ EventFactHandle bar = new EventFactHandle( 2,
+ "bar",
+ 1,
+ 2,
+ 3 );
+ EventFactHandle drool = new EventFactHandle( 1,
+ "drool",
+ 1,
+ 2,
+ 2 );
+ EventFactHandle mole = new EventFactHandle( 1,
+ "mole",
+ 1,
+ 1,
+ 2 );
- final Object[][] data = {
- { foo, "coincides", bar, Boolean.TRUE },
- { foo, "coincides", drool, Boolean.FALSE },
- { foo, "coincides", mole, Boolean.FALSE },
- { drool, "coincides", mole, Boolean.FALSE },
- { foo, "not coincides", bar, Boolean.FALSE },
- { foo, "not coincides", drool, Boolean.TRUE },
- { foo, "not coincides", mole, Boolean.TRUE },
- { drool, "not coincides", mole, Boolean.TRUE },
- { foo, "coincides[1]", bar, Boolean.TRUE },
- { foo, "coincides[1]", drool, Boolean.TRUE },
- { foo, "coincides[2]", mole, Boolean.TRUE },
- { foo, "coincides[1]", mole, Boolean.FALSE },
- { drool, "coincides[1]", mole, Boolean.TRUE },
- { foo, "not coincides[1]", bar, Boolean.FALSE },
- { foo, "not coincides[1]", drool, Boolean.FALSE },
- { foo, "not coincides[2]", mole, Boolean.FALSE },
- { foo, "not coincides[1]", mole, Boolean.TRUE },
- { drool, "not coincides[1]", mole, Boolean.FALSE },
- { foo, "coincides[1,2]", bar, Boolean.TRUE },
- { foo, "coincides[0,1]", drool, Boolean.TRUE },
- { foo, "coincides[1,0]", drool, Boolean.FALSE },
- { foo, "coincides[1,2]", mole, Boolean.TRUE },
- { foo, "coincides[1,1]", mole, Boolean.FALSE},
- { drool, "coincides[1,1]", mole, Boolean.TRUE },
- { drool, "coincides[0,1]", mole, Boolean.FALSE },
- { foo, "not coincides[1,2]", bar, Boolean.FALSE },
- { foo, "not coincides[0,1]", drool, Boolean.FALSE },
- { foo, "not coincides[1,0]", drool, Boolean.TRUE},
- { foo, "not coincides[1,2]", mole, Boolean.FALSE },
- { foo, "not coincides[1,1]", mole, Boolean.TRUE },
- { drool, "not coincides[1,1]", mole, Boolean.FALSE },
- { drool, "not coincides[0,1]", mole, Boolean.TRUE }
- };
+ final Object[][] data = {{foo, "coincides", bar, Boolean.TRUE}, {foo, "coincides", drool, Boolean.FALSE}, {foo, "coincides", mole, Boolean.FALSE}, {drool, "coincides", mole, Boolean.FALSE}, {foo, "not coincides", bar, Boolean.FALSE},
+ {foo, "not coincides", drool, Boolean.TRUE}, {foo, "not coincides", mole, Boolean.TRUE}, {drool, "not coincides", mole, Boolean.TRUE}, {foo, "coincides[1]", bar, Boolean.TRUE}, {foo, "coincides[1]", drool, Boolean.TRUE},
+ {foo, "coincides[2]", mole, Boolean.TRUE}, {foo, "coincides[1]", mole, Boolean.FALSE}, {drool, "coincides[1]", mole, Boolean.TRUE}, {foo, "not coincides[1]", bar, Boolean.FALSE}, {foo, "not coincides[1]", drool, Boolean.FALSE},
+ {foo, "not coincides[2]", mole, Boolean.FALSE}, {foo, "not coincides[1]", mole, Boolean.TRUE}, {drool, "not coincides[1]", mole, Boolean.FALSE}, {foo, "coincides[1,2]", bar, Boolean.TRUE},
+ {foo, "coincides[0,1]", drool, Boolean.TRUE}, {foo, "coincides[1,0]", drool, Boolean.FALSE}, {foo, "coincides[1,2]", mole, Boolean.TRUE}, {foo, "coincides[1,1]", mole, Boolean.FALSE}, {drool, "coincides[1,1]", mole, Boolean.TRUE},
+ {drool, "coincides[0,1]", mole, Boolean.FALSE}, {foo, "not coincides[1,2]", bar, Boolean.FALSE}, {foo, "not coincides[0,1]", drool, Boolean.FALSE}, {foo, "not coincides[1,0]", drool, Boolean.TRUE},
+ {foo, "not coincides[1,2]", mole, Boolean.FALSE}, {foo, "not coincides[1,1]", mole, Boolean.TRUE}, {drool, "not coincides[1,1]", mole, Boolean.FALSE}, {drool, "not coincides[0,1]", mole, Boolean.TRUE}};
- runEvaluatorTest(data, ValueType.OBJECT_TYPE);
- }
+ runEvaluatorTest( data,
+ ValueType.OBJECT_TYPE );
+ }
- private void runEvaluatorTest(final Object[][] data,
- final ValueType valueType) {
- final Extractor extractor = new MockExtractor();
- for (int i = 0; i < data.length; i++) {
- final Object[] row = data[i];
- boolean isNegated = ((String) row[1]).startsWith("not ");
- System.out.println((String) row[1]);
- String evaluatorStr = isNegated ? ((String) row[1]).substring(4)
- : (String) row[1];
- boolean isConstrained = evaluatorStr.endsWith("]");
- String parameters = null;
- if (isConstrained) {
- parameters = evaluatorStr.split("\\[")[1];
- evaluatorStr = evaluatorStr.split("\\[")[0];
- parameters = parameters.split("\\]")[0];
- }
- EvaluatorDefinition evalDef = registry
- .getEvaluatorDefinition(evaluatorStr);
- assertNotNull(evalDef);
- @SuppressWarnings("unused")
- final Evaluator evaluator = evalDef.getEvaluator(valueType,
- evaluatorStr, isNegated, parameters);
- System.out.println(evaluator);
+ private void runEvaluatorTest(final Object[][] data,
+ final ValueType valueType) {
+ final InternalReadAccessor extractor = new MockExtractor();
+ for ( int i = 0; i < data.length; i++ ) {
+ final Object[] row = data[i];
+ boolean isNegated = ((String) row[1]).startsWith( "not " );
+ // System.out.println((String) row[1]);
+ String evaluatorStr = isNegated ? ((String) row[1]).substring( 4 ) : (String) row[1];
+ boolean isConstrained = evaluatorStr.endsWith( "]" );
+ String parameters = null;
+ if ( isConstrained ) {
+ parameters = evaluatorStr.split( "\\[" )[1];
+ evaluatorStr = evaluatorStr.split( "\\[" )[0];
+ parameters = parameters.split( "\\]" )[0];
+ }
+ EvaluatorDefinition evalDef = registry.getEvaluatorDefinition( evaluatorStr );
+ assertNotNull( evalDef );
+ @SuppressWarnings("unused")
+ final Evaluator evaluator = evalDef.getEvaluator( valueType,
+ evaluatorStr,
+ isNegated,
+ parameters );
+ // System.out.println(evaluator);
- checkEvaluatorMethodWith2Extractors(valueType, extractor, row,
- evaluator);
- checkEvaluatorMethodCachedRight(valueType, extractor, row,
- evaluator);
- checkEvaluatorMethodCachedLeft(valueType, extractor, row, evaluator);
- checkEvaluatorMethodWithFieldValue(valueType, extractor, row, evaluator);
+ checkEvaluatorMethodWith2Extractors( valueType,
+ extractor,
+ row,
+ evaluator );
+ checkEvaluatorMethodCachedRight( valueType,
+ extractor,
+ row,
+ evaluator );
+ checkEvaluatorMethodCachedLeft( valueType,
+ extractor,
+ row,
+ evaluator );
+ checkEvaluatorMethodWithFieldValue( valueType,
+ extractor,
+ row,
+ evaluator );
+ assertEquals( valueType,
+ evaluator.getValueType() );
- assertEquals(valueType, evaluator.getValueType());
+ }
+ }
- }
- }
+ private void checkEvaluatorMethodWith2Extractors(final ValueType valueType,
+ final InternalReadAccessor extractor,
+ final Object[] row,
+ final Evaluator evaluator) {
+ final boolean result = evaluator.evaluate( null,
+ extractor,
+ row[0],
+ extractor,
+ row[2] );
+ final String message = "The evaluator type: [" + valueType + "] with 2 extractors incorrectly returned " + result + " for [" + row[0] + " " + row[1] + " " + row[2] + "]. It was asserted to return " + row[3];
- private void checkEvaluatorMethodWith2Extractors(final ValueType valueType,
- final Extractor extractor, final Object[] row,
- final Evaluator evaluator) {
- final boolean result = evaluator.evaluate(null, extractor, row[0],
- extractor, row[2]);
- final String message = "The evaluator type: [" + valueType
- + "] with 2 extractors incorrectly returned " + result
- + " for [" + row[0] + " " + row[1] + " " + row[2]
- + "]. It was asserted to return " + row[3];
+ if ( row[3] == Boolean.TRUE ) {
+ assertTrue( message,
+ result );
+ } else {
+ assertFalse( message,
+ result );
+ }
+ }
- if (row[3] == Boolean.TRUE) {
- assertTrue(message, result);
- } else {
- assertFalse(message, result);
- }
- }
+ private void checkEvaluatorMethodCachedRight(final ValueType valueType,
+ final InternalReadAccessor extractor,
+ final Object[] row,
+ final Evaluator evaluator) {
+ final VariableContextEntry context = this.getContextEntry( evaluator,
+ extractor,
+ valueType,
+ row );
+ final boolean result = evaluator.evaluateCachedRight( null,
+ context,
+ row[2] );
+ final String message = "The evaluator type: [" + valueType + "] with CachedRight incorrectly returned " + result + " for [" + row[0] + " " + row[1] + " " + row[2] + "]. It was asserted to return " + row[3];
- private void checkEvaluatorMethodCachedRight(final ValueType valueType,
- final Extractor extractor, final Object[] row,
- final Evaluator evaluator) {
- final VariableContextEntry context = this.getContextEntry(evaluator,
- (FieldExtractor) extractor, valueType, row);
- final boolean result = evaluator.evaluateCachedRight(null, context,
- row[2]);
- final String message = "The evaluator type: [" + valueType
- + "] with CachedRight incorrectly returned " + result
- + " for [" + row[0] + " " + row[1] + " " + row[2]
- + "]. It was asserted to return " + row[3];
+ if ( row[3] == Boolean.TRUE ) {
+ assertTrue( message,
+ result );
+ } else {
+ assertFalse( message,
+ result );
+ }
+ }
- if (row[3] == Boolean.TRUE) {
- assertTrue(message, result);
- } else {
- assertFalse(message, result);
- }
- }
+ private void checkEvaluatorMethodCachedLeft(final ValueType valueType,
+ final InternalReadAccessor extractor,
+ final Object[] row,
+ final Evaluator evaluator) {
+ final VariableContextEntry context = this.getContextEntry( evaluator,
+ extractor,
+ valueType,
+ row );
+ final boolean result = evaluator.evaluateCachedLeft( null,
+ context,
+ row[0] );
+ final String message = "The evaluator type: [" + valueType + "] with CachedLeft incorrectly returned " + result + " for [" + row[0] + " " + row[1] + " " + row[2] + "]. It was asserted to return " + row[3];
- private void checkEvaluatorMethodCachedLeft(final ValueType valueType,
- final Extractor extractor, final Object[] row,
- final Evaluator evaluator) {
- final VariableContextEntry context = this.getContextEntry(evaluator,
- (FieldExtractor) extractor, valueType, row);
- final boolean result = evaluator.evaluateCachedLeft(null, context,
- row[0]);
- final String message = "The evaluator type: [" + valueType
- + "] with CachedLeft incorrectly returned " + result + " for ["
- + row[0] + " " + row[1] + " " + row[2]
- + "]. It was asserted to return " + row[3];
+ if ( row[3] == Boolean.TRUE ) {
+ assertTrue( message,
+ result );
+ } else {
+ assertFalse( message,
+ result );
+ }
+ }
- if (row[3] == Boolean.TRUE) {
- assertTrue(message, result);
- } else {
- assertFalse(message, result);
- }
- }
+ private void checkEvaluatorMethodWithFieldValue(final ValueType valueType,
+ final InternalReadAccessor extractor,
+ final Object[] row,
+ final Evaluator evaluator) {
+ final FieldValue value = FieldFactory.getFieldValue( row[2] );
+ RuntimeDroolsException exc = null;
+ try {
+ final boolean result = evaluator.evaluate( null,
+ extractor,
+ row[0],
+ value );
+ } catch ( RuntimeDroolsException e ) {
+ exc = e;
+ }
+ assertNotNull( exc );
+ }
- private void checkEvaluatorMethodWithFieldValue(final ValueType valueType,
- final Extractor extractor, final Object[] row,
- final Evaluator evaluator) {
- final FieldValue value = FieldFactory.getFieldValue(row[2]);
- RuntimeDroolsException exc = null;
- try {
- final boolean result = evaluator.evaluate(null, extractor, row[0],
- value);
- } catch (RuntimeDroolsException e) {
- exc = e;
- }
- assertNotNull(exc);
- }
+ private VariableContextEntry getContextEntry(final Evaluator evaluator,
+ final InternalReadAccessor extractor,
+ final ValueType valueType,
+ final Object[] row) {
+ final Declaration declaration = new Declaration( "test",
+ extractor,
+ null );
+ final ValueType coerced = evaluator.getCoercedValueType();
- private VariableContextEntry getContextEntry(final Evaluator evaluator,
- final FieldExtractor extractor, final ValueType valueType,
- final Object[] row) {
- final Declaration declaration = new Declaration("test", extractor, null);
- final ValueType coerced = evaluator.getCoercedValueType();
+ if ( coerced.isIntegerNumber() ) {
+ final LongVariableContextEntry context = new LongVariableContextEntry( extractor,
+ declaration,
+ evaluator );
- if (coerced.isIntegerNumber()) {
- final LongVariableContextEntry context = new LongVariableContextEntry(
- extractor, declaration, evaluator);
+ if ( row[2] == null ) {
+ context.leftNull = true;
+ } else {
+ context.left = ((Number) row[2]).longValue();
+ }
- if (row[2] == null) {
- context.leftNull = true;
- } else {
- context.left = ((Number) row[2]).longValue();
- }
+ if ( row[0] == null ) {
+ context.rightNull = true;
+ } else {
+ context.right = ((Number) row[0]).longValue();
+ }
+ return context;
+ } else if ( coerced.isChar() ) {
+ final CharVariableContextEntry context = new CharVariableContextEntry( extractor,
+ declaration,
+ evaluator );
- if (row[0] == null) {
- context.rightNull = true;
- } else {
- context.right = ((Number) row[0]).longValue();
- }
- return context;
- } else if (coerced.isChar()) {
- final CharVariableContextEntry context = new CharVariableContextEntry(
- extractor, declaration, evaluator);
+ if ( row[2] == null ) {
+ context.leftNull = true;
+ } else {
+ context.left = ((Character) row[2]).charValue();
+ }
- if (row[2] == null) {
- context.leftNull = true;
- } else {
- context.left = ((Character) row[2]).charValue();
- }
+ if ( row[0] == null ) {
+ context.rightNull = true;
+ } else {
+ context.right = ((Character) row[0]).charValue();
+ }
+ return context;
+ } else if ( coerced.isBoolean() ) {
+ final BooleanVariableContextEntry context = new BooleanVariableContextEntry( extractor,
+ declaration,
+ evaluator );
- if (row[0] == null) {
- context.rightNull = true;
- } else {
- context.right = ((Character) row[0]).charValue();
- }
- return context;
- } else if (coerced.isBoolean()) {
- final BooleanVariableContextEntry context = new BooleanVariableContextEntry(
- extractor, declaration, evaluator);
+ if ( row[2] == null ) {
+ context.leftNull = true;
+ } else {
+ context.left = ((Boolean) row[2]).booleanValue();
+ }
- if (row[2] == null) {
- context.leftNull = true;
- } else {
- context.left = ((Boolean) row[2]).booleanValue();
- }
+ if ( row[0] == null ) {
+ context.rightNull = true;
+ } else {
+ context.right = ((Boolean) row[0]).booleanValue();
+ }
+ return context;
+ } else if ( coerced.isFloatNumber() ) {
+ final DoubleVariableContextEntry context = new DoubleVariableContextEntry( extractor,
+ declaration,
+ evaluator );
+ if ( row[2] == null ) {
+ context.leftNull = true;
+ } else {
+ context.left = ((Number) row[2]).doubleValue();
+ }
- if (row[0] == null) {
- context.rightNull = true;
- } else {
- context.right = ((Boolean) row[0]).booleanValue();
- }
- return context;
- } else if (coerced.isFloatNumber()) {
- final DoubleVariableContextEntry context = new DoubleVariableContextEntry(
- extractor, declaration, evaluator);
- if (row[2] == null) {
- context.leftNull = true;
- } else {
- context.left = ((Number) row[2]).doubleValue();
- }
+ if ( row[0] == null ) {
+ context.rightNull = true;
+ } else {
+ context.right = ((Number) row[0]).doubleValue();
+ }
+ return context;
+ } else {
+ final ObjectVariableContextEntry context = new ObjectVariableContextEntry( extractor,
+ declaration,
+ evaluator );
+ if ( row[2] == null ) {
+ context.leftNull = true;
+ } else {
+ context.left = row[2];
+ }
- if (row[0] == null) {
- context.rightNull = true;
- } else {
- context.right = ((Number) row[0]).doubleValue();
- }
- return context;
- } else {
- final ObjectVariableContextEntry context = new ObjectVariableContextEntry(
- extractor, declaration, evaluator);
- if (row[2] == null) {
- context.leftNull = true;
- } else {
- context.left = row[2];
- }
+ if ( row[0] == null ) {
+ context.rightNull = true;
+ } else {
+ context.right = row[0];
+ }
+ return context;
+ }
+ }
- if (row[0] == null) {
- context.rightNull = true;
- } else {
- context.right = row[0];
- }
- return context;
- }
- }
+ public static class MockExtractor
+ implements
+ InternalReadAccessor {
- public static class MockExtractor implements FieldExtractor {
+ private static final long serialVersionUID = 400L;
- private static final long serialVersionUID = 400L;
-
- public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
+ public void readExternal(ObjectInput in) throws IOException,
+ ClassNotFoundException {
}
public void writeExternal(ObjectOutput out) throws IOException {
}
- public boolean getBooleanValue(InternalWorkingMemory workingMemory,
- final Object object) {
- return object != null ? ((Boolean) object).booleanValue() : false;
- }
- public byte getByteValue(InternalWorkingMemory workingMemory,
- final Object object) {
- return object != null ? ((Number) object).byteValue() : (byte) 0;
- }
+ public boolean getBooleanValue(InternalWorkingMemory workingMemory,
+ final Object object) {
+ return object != null ? ((Boolean) object).booleanValue() : false;
+ }
- public char getCharValue(InternalWorkingMemory workingMemory,
- final Object object) {
- return object != null ? ((Character) object).charValue() : '\0';
- }
+ public byte getByteValue(InternalWorkingMemory workingMemory,
+ final Object object) {
+ return object != null ? ((Number) object).byteValue() : (byte) 0;
+ }
- public double getDoubleValue(InternalWorkingMemory workingMemory,
- final Object object) {
- return object != null ? ((Number) object).doubleValue() : 0.0;
- }
+ public char getCharValue(InternalWorkingMemory workingMemory,
+ final Object object) {
+ return object != null ? ((Character) object).charValue() : '\0';
+ }
- public Class getExtractToClass() {
- return null;
- }
+ public double getDoubleValue(InternalWorkingMemory workingMemory,
+ final Object object) {
+ return object != null ? ((Number) object).doubleValue() : 0.0;
+ }
- public String getExtractToClassName() {
- return null;
- }
+ public Class getExtractToClass() {
+ return null;
+ }
- public float getFloatValue(InternalWorkingMemory workingMemory,
- final Object object) {
- return object != null ? ((Number) object).floatValue()
- : (float) 0.0;
- }
+ public String getExtractToClassName() {
+ return null;
+ }
- public int getHashCode(InternalWorkingMemory workingMemory,
- final Object object) {
- return 0;
- }
+ public float getFloatValue(InternalWorkingMemory workingMemory,
+ final Object object) {
+ return object != null ? ((Number) object).floatValue() : (float) 0.0;
+ }
- public int getIntValue(InternalWorkingMemory workingMemory,
- final Object object) {
- return object != null ? ((Number) object).intValue() : 0;
- }
+ public int getHashCode(InternalWorkingMemory workingMemory,
+ final Object object) {
+ return 0;
+ }
- public long getLongValue(InternalWorkingMemory workingMemory,
- final Object object) {
- return object != null ? ((Number) object).longValue() : 0;
- }
+ public int getIntValue(InternalWorkingMemory workingMemory,
+ final Object object) {
+ return object != null ? ((Number) object).intValue() : 0;
+ }
- public Method getNativeReadMethod() {
- return null;
- }
+ public long getLongValue(InternalWorkingMemory workingMemory,
+ final Object object) {
+ return object != null ? ((Number) object).longValue() : 0;
+ }
- public short getShortValue(InternalWorkingMemory workingMemory,
- final Object object) {
- return object != null ? ((Number) object).shortValue() : (short) 0;
- }
+ public Method getNativeReadMethod() {
+ return null;
+ }
- public Object getValue(InternalWorkingMemory workingMemory,
- final Object object) {
- return object;
- }
+ public short getShortValue(InternalWorkingMemory workingMemory,
+ final Object object) {
+ return object != null ? ((Number) object).shortValue() : (short) 0;
+ }
- public boolean isNullValue(InternalWorkingMemory workingMemory,
- final Object object) {
- return object == null;
- }
+ public Object getValue(InternalWorkingMemory workingMemory,
+ final Object object) {
+ return object;
+ }
- public ValueType getValueType() {
- // TODO Auto-generated method stub
- return null;
- }
+ public boolean isNullValue(InternalWorkingMemory workingMemory,
+ final Object object) {
+ return object == null;
+ }
- public int getIndex() {
- return 0;
- }
+ public ValueType getValueType() {
+ // TODO Auto-generated method stub
+ return null;
+ }
- public boolean isGlobal() {
- return false;
- }
+ public int getIndex() {
+ return 0;
+ }
- }
+ public boolean isGlobal() {
+ return false;
+ }
+ public boolean getBooleanValue(Object object) {
+ // TODO Auto-generated method stub
+ return false;
+ }
+
+ public byte getByteValue(Object object) {
+ // TODO Auto-generated method stub
+ return 0;
+ }
+
+ public char getCharValue(Object object) {
+ // TODO Auto-generated method stub
+ return 0;
+ }
+
+ public double getDoubleValue(Object object) {
+ // TODO Auto-generated method stub
+ return 0;
+ }
+
+ public float getFloatValue(Object object) {
+ // TODO Auto-generated method stub
+ return 0;
+ }
+
+ public int getHashCode(Object object) {
+ // TODO Auto-generated method stub
+ return 0;
+ }
+
+ public int getIntValue(Object object) {
+ // TODO Auto-generated method stub
+ return 0;
+ }
+
+ public long getLongValue(Object object) {
+ // TODO Auto-generated method stub
+ return 0;
+ }
+
+ public short getShortValue(Object object) {
+ // TODO Auto-generated method stub
+ return 0;
+ }
+
+ public Object getValue(Object object) {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public boolean isNullValue(Object object) {
+ // TODO Auto-generated method stub
+ return false;
+ }
+
+ }
+
}
Modified: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/base/extractors/BooleanClassFieldExtractorTest.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/base/extractors/BooleanClassFieldExtractorTest.java 2008-05-16 15:22:07 UTC (rev 19970)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/base/extractors/BooleanClassFieldExtractorTest.java 2008-05-16 18:29:20 UTC (rev 19971)
@@ -2,12 +2,12 @@
import junit.framework.Assert;
-import org.drools.base.ClassFieldExtractorCache;
+import org.drools.base.ClassFieldAccessorCache;
import org.drools.base.TestBean;
-import org.drools.spi.Extractor;
+import org.drools.spi.InternalReadAccessor;
public class BooleanClassFieldExtractorTest extends BaseClassFieldExtractorsTest {
- Extractor extractor = ClassFieldExtractorCache.getInstance().getExtractor( TestBean.class,
+ InternalReadAccessor extractor = ClassFieldAccessorCache.getInstance().getReader( TestBean.class,
"booleanAttr",
getClass().getClassLoader() );
TestBean bean = new TestBean();
Modified: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/base/extractors/ByteClassFieldExtractorTest.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/base/extractors/ByteClassFieldExtractorTest.java 2008-05-16 15:22:07 UTC (rev 19970)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/base/extractors/ByteClassFieldExtractorTest.java 2008-05-16 18:29:20 UTC (rev 19971)
@@ -2,12 +2,12 @@
import junit.framework.Assert;
-import org.drools.base.ClassFieldExtractorCache;
+import org.drools.base.ClassFieldAccessorCache;
import org.drools.base.TestBean;
-import org.drools.spi.Extractor;
+import org.drools.spi.InternalReadAccessor;
public class ByteClassFieldExtractorTest extends BaseClassFieldExtractorsTest {
- Extractor extractor = ClassFieldExtractorCache.getInstance().getExtractor( TestBean.class,
+ InternalReadAccessor extractor = ClassFieldAccessorCache.getInstance().getReader( TestBean.class,
"byteAttr",
getClass().getClassLoader() );
TestBean bean = new TestBean();
Modified: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/base/extractors/CharClassFieldExtractorTest.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/base/extractors/CharClassFieldExtractorTest.java 2008-05-16 15:22:07 UTC (rev 19970)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/base/extractors/CharClassFieldExtractorTest.java 2008-05-16 18:29:20 UTC (rev 19971)
@@ -2,12 +2,12 @@
import junit.framework.Assert;
-import org.drools.base.ClassFieldExtractorCache;
+import org.drools.base.ClassFieldAccessorCache;
import org.drools.base.TestBean;
-import org.drools.spi.Extractor;
+import org.drools.spi.InternalReadAccessor;
public class CharClassFieldExtractorTest extends BaseClassFieldExtractorsTest {
- Extractor extractor = ClassFieldExtractorCache.getInstance().getExtractor( TestBean.class,
+ InternalReadAccessor extractor = ClassFieldAccessorCache.getInstance().getReader( TestBean.class,
"charAttr",
getClass().getClassLoader() );
TestBean bean = new TestBean();
Modified: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/base/extractors/DoubleClassFieldExtractorTest.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/base/extractors/DoubleClassFieldExtractorTest.java 2008-05-16 15:22:07 UTC (rev 19970)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/base/extractors/DoubleClassFieldExtractorTest.java 2008-05-16 18:29:20 UTC (rev 19971)
@@ -2,14 +2,14 @@
import junit.framework.Assert;
-import org.drools.base.ClassFieldExtractorCache;
+import org.drools.base.ClassFieldAccessorCache;
import org.drools.base.TestBean;
-import org.drools.spi.Extractor;
+import org.drools.spi.InternalReadAccessor;
public class DoubleClassFieldExtractorTest extends BaseClassFieldExtractorsTest {
private static final double VALUE = 7;
- Extractor extractor = ClassFieldExtractorCache.getInstance().getExtractor( TestBean.class,
+ InternalReadAccessor extractor = ClassFieldAccessorCache.getInstance().getReader( TestBean.class,
"doubleAttr",
getClass().getClassLoader() );
TestBean bean = new TestBean();
Modified: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/base/extractors/FloatClassFieldExtractorTest.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/base/extractors/FloatClassFieldExtractorTest.java 2008-05-16 15:22:07 UTC (rev 19970)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/base/extractors/FloatClassFieldExtractorTest.java 2008-05-16 18:29:20 UTC (rev 19971)
@@ -2,14 +2,14 @@
import junit.framework.Assert;
-import org.drools.base.ClassFieldExtractorCache;
+import org.drools.base.ClassFieldAccessorCache;
import org.drools.base.TestBean;
-import org.drools.spi.Extractor;
+import org.drools.spi.InternalReadAccessor;
public class FloatClassFieldExtractorTest extends BaseClassFieldExtractorsTest {
private static final float VALUE = 6;
- Extractor extractor = ClassFieldExtractorCache.getInstance().getExtractor( TestBean.class,
+ InternalReadAccessor extractor = ClassFieldAccessorCache.getInstance().getReader( TestBean.class,
"floatAttr",
getClass().getClassLoader() );
TestBean bean = new TestBean();
Modified: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/base/extractors/IntClassFieldExtractorTest.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/base/extractors/IntClassFieldExtractorTest.java 2008-05-16 15:22:07 UTC (rev 19970)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/base/extractors/IntClassFieldExtractorTest.java 2008-05-16 18:29:20 UTC (rev 19971)
@@ -2,14 +2,14 @@
import junit.framework.Assert;
-import org.drools.base.ClassFieldExtractorCache;
+import org.drools.base.ClassFieldAccessorCache;
import org.drools.base.TestBean;
-import org.drools.spi.Extractor;
+import org.drools.spi.InternalReadAccessor;
public class IntClassFieldExtractorTest extends BaseClassFieldExtractorsTest {
private static final int VALUE = 4;
- Extractor extractor = ClassFieldExtractorCache.getInstance().getExtractor( TestBean.class,
+ InternalReadAccessor extractor = ClassFieldAccessorCache.getInstance().getReader( TestBean.class,
"intAttr",
getClass().getClassLoader() );
TestBean bean = new TestBean();
Modified: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/base/extractors/LongClassFieldExtractorTest.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/base/extractors/LongClassFieldExtractorTest.java 2008-05-16 15:22:07 UTC (rev 19970)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/base/extractors/LongClassFieldExtractorTest.java 2008-05-16 18:29:20 UTC (rev 19971)
@@ -2,14 +2,14 @@
import junit.framework.Assert;
-import org.drools.base.ClassFieldExtractorCache;
+import org.drools.base.ClassFieldAccessorCache;
import org.drools.base.TestBean;
-import org.drools.spi.Extractor;
+import org.drools.spi.InternalReadAccessor;
public class LongClassFieldExtractorTest extends BaseClassFieldExtractorsTest {
private static final long VALUE = 5;
- Extractor extractor = ClassFieldExtractorCache.getInstance().getExtractor( TestBean.class,
+ InternalReadAccessor extractor = ClassFieldAccessorCache.getInstance().getReader( TestBean.class,
"longAttr",
getClass().getClassLoader() );
TestBean bean = new TestBean();
Modified: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/base/extractors/MVELClassFieldExtractorTest.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/base/extractors/MVELClassFieldExtractorTest.java 2008-05-16 15:22:07 UTC (rev 19970)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/base/extractors/MVELClassFieldExtractorTest.java 2008-05-16 18:29:20 UTC (rev 19971)
@@ -7,12 +7,12 @@
import org.drools.Address;
import org.drools.Person;
-import org.drools.base.ClassFieldExtractorCache;
-import org.drools.spi.Extractor;
+import org.drools.base.ClassFieldAccessorCache;
+import org.drools.spi.InternalReadAccessor;
public class MVELClassFieldExtractorTest extends TestCase {
- Extractor extractor = ClassFieldExtractorCache.getInstance().getExtractor( Person.class,
+ InternalReadAccessor extractor = ClassFieldAccessorCache.getInstance().getReader( Person.class,
"addresses['home'].street",
getClass().getClassLoader() );
private final Person[] person = new Person[2];
@@ -146,7 +146,7 @@
Assert.assertFalse( this.extractor.isNullValue( null,
this.person[0] ) );
- Extractor nullExtractor = ClassFieldExtractorCache.getInstance().getExtractor( Person.class,
+ InternalReadAccessor nullExtractor = ClassFieldAccessorCache.getInstance().getReader( Person.class,
"addresses['business'].phone",
getClass().getClassLoader() );
Assert.assertTrue( nullExtractor.isNullValue( null,
Modified: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/base/extractors/ObjectClassFieldExtractorTest.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/base/extractors/ObjectClassFieldExtractorTest.java 2008-05-16 15:22:07 UTC (rev 19970)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/base/extractors/ObjectClassFieldExtractorTest.java 2008-05-16 18:29:20 UTC (rev 19971)
@@ -5,13 +5,13 @@
import junit.framework.Assert;
-import org.drools.base.ClassFieldExtractorCache;
+import org.drools.base.ClassFieldAccessorCache;
import org.drools.base.TestBean;
-import org.drools.spi.Extractor;
+import org.drools.spi.InternalReadAccessor;
public class ObjectClassFieldExtractorTest extends BaseClassFieldExtractorsTest {
- Extractor extractor = ClassFieldExtractorCache.getInstance().getExtractor( TestBean.class,
+ InternalReadAccessor extractor = ClassFieldAccessorCache.getInstance().getReader( TestBean.class,
"listAttr",
getClass().getClassLoader() );
TestBean bean = new TestBean();
@@ -117,7 +117,7 @@
Assert.assertFalse( this.extractor.isNullValue( null,
this.bean ) );
- Extractor nullExtractor = ClassFieldExtractorCache.getInstance().getExtractor( TestBean.class,
+ InternalReadAccessor nullExtractor = ClassFieldAccessorCache.getInstance().getReader( TestBean.class,
"nullAttr",
getClass().getClassLoader() );
Assert.assertTrue( nullExtractor.isNullValue( null,
Modified: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/base/extractors/ShortClassFieldExtractorTest.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/base/extractors/ShortClassFieldExtractorTest.java 2008-05-16 15:22:07 UTC (rev 19970)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/base/extractors/ShortClassFieldExtractorTest.java 2008-05-16 18:29:20 UTC (rev 19971)
@@ -2,14 +2,14 @@
import junit.framework.Assert;
-import org.drools.base.ClassFieldExtractorCache;
+import org.drools.base.ClassFieldAccessorCache;
import org.drools.base.TestBean;
-import org.drools.spi.Extractor;
+import org.drools.spi.InternalReadAccessor;
public class ShortClassFieldExtractorTest extends BaseClassFieldExtractorsTest {
private static final short VALUE = 3;
- Extractor extractor = ClassFieldExtractorCache.getInstance().getExtractor( TestBean.class,
+ InternalReadAccessor extractor = ClassFieldAccessorCache.getInstance().getReader( TestBean.class,
"shortAttr",
getClass().getClassLoader() );
TestBean bean = new TestBean();
Modified: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/common/BaseBetaConstraintsTest.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/common/BaseBetaConstraintsTest.java 2008-05-16 15:22:07 UTC (rev 19970)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/common/BaseBetaConstraintsTest.java 2008-05-16 18:29:20 UTC (rev 19971)
@@ -6,7 +6,7 @@
import junit.framework.TestCase;
import org.drools.RuleBaseConfiguration;
-import org.drools.base.ClassFieldExtractorCache;
+import org.drools.base.ClassFieldAccessorCache;
import org.drools.base.ClassObjectType;
import org.drools.base.evaluators.ComparableEvaluatorsDefinition;
import org.drools.base.evaluators.EqualityEvaluatorsDefinition;
@@ -21,18 +21,18 @@
import org.drools.rule.VariableConstraint;
import org.drools.spi.BetaNodeFieldConstraint;
import org.drools.spi.Evaluator;
-import org.drools.spi.FieldExtractor;
+import org.drools.spi.InternalReadAccessor;
+import org.drools.util.LeftTupleIndexHashTable;
+import org.drools.util.LeftTupleList;
+import org.drools.util.LinkedList;
+import org.drools.util.LinkedListEntry;
import org.drools.util.RightTupleIndexHashTable;
import org.drools.util.RightTupleList;
-import org.drools.util.LinkedList;
-import org.drools.util.LinkedListEntry;
-import org.drools.util.LeftTupleList;
-import org.drools.util.LeftTupleIndexHashTable;
import org.drools.util.AbstractHashTable.FieldIndex;
import org.drools.util.AbstractHashTable.Index;
public abstract class BaseBetaConstraintsTest extends TestCase {
-
+
public static EvaluatorRegistry registry = new EvaluatorRegistry();
static {
registry.addEvaluatorDefinition( new EqualityEvaluatorsDefinition() );
@@ -46,16 +46,16 @@
Operator operator,
String fieldName,
Class clazz) {
- FieldExtractor extractor = ClassFieldExtractorCache.getInstance().getExtractor( clazz,
- fieldName,
- getClass().getClassLoader() );
+ InternalReadAccessor extractor = ClassFieldAccessorCache.getInstance().getReader( clazz,
+ fieldName,
+ getClass().getClassLoader() );
Declaration declaration = new Declaration( identifier,
extractor,
new Pattern( 0,
new ClassObjectType( clazz ) ) );
- Evaluator evaluator = registry.getEvaluatorDefinition( operator.getOperatorString() ).getEvaluator( extractor.getValueType(),
- operator.getOperatorString(),
- operator.isNegated(),
+ Evaluator evaluator = registry.getEvaluatorDefinition( operator.getOperatorString() ).getEvaluator( extractor.getValueType(),
+ operator.getOperatorString(),
+ operator.isNegated(),
null );
return new VariableConstraint( extractor,
declaration,
Modified: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/event/AgendaEventSupportTest.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/event/AgendaEventSupportTest.java 2008-05-16 15:22:07 UTC (rev 19970)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/event/AgendaEventSupportTest.java 2008-05-16 18:29:20 UTC (rev 19971)
@@ -30,8 +30,8 @@
import org.drools.RuleBase;
import org.drools.RuleBaseFactory;
import org.drools.WorkingMemory;
-import org.drools.base.ClassFieldExtractor;
-import org.drools.base.ClassFieldExtractorCache;
+import org.drools.base.ClassFieldReader;
+import org.drools.base.ClassFieldAccessorCache;
import org.drools.base.ClassObjectType;
import org.drools.base.FieldFactory;
import org.drools.base.ShadowProxy;
@@ -81,7 +81,7 @@
final Pattern pattern = new Pattern( 0,
cheeseObjectType );
- final ClassFieldExtractor extractor = ClassFieldExtractorCache.getInstance().getExtractor( Cheese.class,
+ final ClassFieldReader extractor = ClassFieldAccessorCache.getInstance().getReader( Cheese.class,
"type",
getClass().getClassLoader() );
Modified: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/event/RuleBaseEventListenerTest.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/event/RuleBaseEventListenerTest.java 2008-05-16 15:22:07 UTC (rev 19970)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/event/RuleBaseEventListenerTest.java 2008-05-16 18:29:20 UTC (rev 19971)
@@ -23,8 +23,8 @@
import org.drools.RuleBase;
import org.drools.RuleBaseFactory;
import org.drools.WorkingMemory;
-import org.drools.base.ClassFieldExtractor;
-import org.drools.base.ClassFieldExtractorCache;
+import org.drools.base.ClassFieldReader;
+import org.drools.base.ClassFieldAccessorCache;
import org.drools.base.ClassObjectType;
import org.drools.base.FieldFactory;
import org.drools.base.ValueType;
@@ -71,7 +71,7 @@
final Pattern pattern = new Pattern( 0,
cheeseObjectType );
- final ClassFieldExtractor extractor = ClassFieldExtractorCache.getInstance().getExtractor( Cheese.class,
+ final ClassFieldReader extractor = ClassFieldAccessorCache.getInstance().getReader( Cheese.class,
"type",
getClass().getClassLoader() );
Modified: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/examples/manners/BaseMannersTest.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/examples/manners/BaseMannersTest.java 2008-05-16 15:22:07 UTC (rev 19970)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/examples/manners/BaseMannersTest.java 2008-05-16 18:29:20 UTC (rev 19971)
@@ -24,9 +24,9 @@
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
+import java.io.ObjectInput;
+import java.io.ObjectOutput;
import java.io.StringWriter;
-import java.io.ObjectOutput;
-import java.io.ObjectInput;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
@@ -35,7 +35,7 @@
import junit.framework.TestCase;
import org.drools.WorkingMemory;
-import org.drools.base.ClassFieldExtractorCache;
+import org.drools.base.ClassFieldAccessorCache;
import org.drools.base.ClassObjectType;
import org.drools.base.ValueType;
import org.drools.base.evaluators.EqualityEvaluatorsDefinition;
@@ -57,8 +57,8 @@
import org.drools.spi.Consequence;
import org.drools.spi.ConsequenceException;
import org.drools.spi.Evaluator;
-import org.drools.spi.FieldExtractor;
import org.drools.spi.FieldValue;
+import org.drools.spi.InternalReadAccessor;
import org.drools.spi.KnowledgeHelper;
import org.drools.spi.Tuple;
@@ -242,7 +242,7 @@
drools.modifyInsert( context );
- System.err.println( "assign first seat : " + seating + " : " + path );
+// System.err.println( "assign first seat : " + seating + " : " + path );
} catch ( Exception e ) {
e.printStackTrace();
@@ -533,7 +533,7 @@
drools.update( tuple.get( contextDeclaration ),
context );
- System.err.println( "find seating : " + seating + " : " + path + " : " + chosen );
+// System.err.println( "find seating : " + seating + " : " + path + " : " + chosen );
} catch ( Exception e ) {
e.printStackTrace();
@@ -887,7 +887,7 @@
drools.update( tuple.get( contextDeclaration ),
context );
- System.err.println( "We Are Done!!!" );
+// System.err.println( "We Are Done!!!" );
} catch ( Exception e ) {
throw new ConsequenceException( e );
}
@@ -1166,7 +1166,7 @@
final Evaluator evaluator) throws IntrospectionException {
final Class clazz = ((ClassObjectType) pattern.getObjectType()).getClassType();
- final FieldExtractor extractor = ClassFieldExtractorCache.getInstance().getExtractor( clazz,
+ final InternalReadAccessor extractor = ClassFieldAccessorCache.getInstance().getReader( clazz,
fieldName,
getClass().getClassLoader() );
@@ -1183,7 +1183,7 @@
final Evaluator evaluator) throws IntrospectionException {
final Class clazz = ((ClassObjectType) pattern.getObjectType()).getClassType();
- final FieldExtractor extractor = ClassFieldExtractorCache.getInstance().getExtractor( clazz,
+ final InternalReadAccessor extractor = ClassFieldAccessorCache.getInstance().getReader( clazz,
fieldName,
getClass().getClassLoader() );
@@ -1199,7 +1199,7 @@
final String identifier) throws IntrospectionException {
final Class clazz = ((ClassObjectType) pattern.getObjectType()).getClassType();
- final FieldExtractor extractor = ClassFieldExtractorCache.getInstance().getExtractor( clazz,
+ final InternalReadAccessor extractor = ClassFieldAccessorCache.getInstance().getReader( clazz,
fieldName,
getClass().getClassLoader() );
@@ -1213,7 +1213,7 @@
final Evaluator evaluator) throws IntrospectionException {
final Class clazz = ((ClassObjectType) pattern.getObjectType()).getClassType();
- final FieldExtractor extractor = ClassFieldExtractorCache.getInstance().getExtractor( clazz,
+ final InternalReadAccessor extractor = ClassFieldAccessorCache.getInstance().getReader( clazz,
fieldName,
getClass().getClassLoader() );
Modified: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/examples/manners/ReteooMannersTest.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/examples/manners/ReteooMannersTest.java 2008-05-16 15:22:07 UTC (rev 19970)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/examples/manners/ReteooMannersTest.java 2008-05-16 18:29:20 UTC (rev 19971)
@@ -76,7 +76,7 @@
final long start = System.currentTimeMillis();
workingMemory.fireAllRules();
- System.err.println( System.currentTimeMillis() - start );
+// System.err.println( System.currentTimeMillis() - start );
//System.out.println( listener );
Deleted: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/factmodel/FieldAccessorBuilderTest.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/factmodel/FieldAccessorBuilderTest.java 2008-05-16 15:22:07 UTC (rev 19970)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/factmodel/FieldAccessorBuilderTest.java 2008-05-16 18:29:20 UTC (rev 19971)
@@ -1,319 +0,0 @@
-package org.drools.factmodel;
-
-import junit.framework.Assert;
-import junit.framework.TestCase;
-
-public class FieldAccessorBuilderTest extends TestCase {
- FieldAccessorBuilder builder;
-
- protected void setUp() throws Exception {
- super.setUp();
- this.builder = new FieldAccessorBuilder();
- }
-
- protected void tearDown() throws Exception {
- super.tearDown();
- }
-
- /*
- * Test method for 'br.com.auster.common.asm.FieldAccessorBuilder.buildFieldAccessor(ClassDefinition, FieldDefinition)'
- */
- public void testBuildFieldAccessor() {
- try {
- FieldAccessor intAccessor = (FieldAccessor) builder.buildAndLoadFieldAccessor( TestClass.class,
- "intAttr" ).newInstance();
- FieldAccessor strAccessor = (FieldAccessor) builder.buildAndLoadFieldAccessor( TestClass.class,
- "strAttr" ).newInstance();
-
- String testString1 = "TestAttr1";
- String testString2 = "TestAttr2";
- TestClass instance = new TestClass();
- instance.setIntAttr( 10 );
- instance.setStrAttr( testString1 );
-
- Assert.assertEquals( "Error reading int attr",
- 10,
- ((Integer) intAccessor.getValue( instance )).intValue() );
- Assert.assertEquals( "Error reading String attr",
- testString1,
- strAccessor.getValue( instance ) );
-
- intAccessor.setValue( instance,
- new Integer( 50 ) );
- strAccessor.setValue( instance,
- testString2 );
-
- Assert.assertEquals( "Error setting int attr",
- 50,
- instance.getIntAttr() );
- Assert.assertEquals( "Error setting String attr",
- testString2,
- instance.getStrAttr() );
-
- Assert.assertEquals( "Error reading int attr",
- 50,
- ((Integer) intAccessor.getValue( instance )).intValue() );
- Assert.assertEquals( "Error reading String attr",
- testString2,
- strAccessor.getValue( instance ) );
-
- } catch ( Exception e ) {
- e.printStackTrace();
- Assert.fail( "No exception is supposed to be generated when creating field accessor: " + e );
- }
- }
-
- public void testNullOnPrimitives() {
- try {
- FieldAccessor intAccessor = (FieldAccessor) builder.buildAndLoadFieldAccessor( TestClass.class,
- "intAttr" ).newInstance();
- FieldAccessor strAccessor = (FieldAccessor) builder.buildAndLoadFieldAccessor( TestClass.class,
- "strAttr" ).newInstance();
- FieldAccessor byteAccessor = (FieldAccessor) builder.buildAndLoadFieldAccessor( TestClass.class,
- "byteAttr" ).newInstance();
- FieldAccessor booleanAccessor = (FieldAccessor) builder.buildAndLoadFieldAccessor( TestClass.class,
- "booleanAttr" ).newInstance();
- FieldAccessor charAccessor = (FieldAccessor) builder.buildAndLoadFieldAccessor( TestClass.class,
- "charAttr" ).newInstance();
- FieldAccessor doubleAccessor = (FieldAccessor) builder.buildAndLoadFieldAccessor( TestClass.class,
- "doubleAttr" ).newInstance();
- FieldAccessor floatAccessor = (FieldAccessor) builder.buildAndLoadFieldAccessor( TestClass.class,
- "floatAttr" ).newInstance();
- FieldAccessor longAccessor = (FieldAccessor) builder.buildAndLoadFieldAccessor( TestClass.class,
- "longAttr" ).newInstance();
- FieldAccessor shortAccessor = (FieldAccessor) builder.buildAndLoadFieldAccessor( TestClass.class,
- "shortAttr" ).newInstance();
-
- String testString1 = "TestAttr1";
- TestClass instance = new TestClass();
- instance.setIntAttr( 25 );
- instance.setStrAttr( testString1 );
- instance.setByteAttr( (byte) 10 );
- instance.setBooleanAttr( true );
- instance.setCharAttr( 'x' );
- instance.setDoubleAttr( 10.5d );
- instance.setFloatAttr( 40.3f );
- instance.setLongAttr( 43l );
- instance.setShortAttr( (short) 20 );
-
- intAccessor.setValue( instance,
- null );
- strAccessor.setValue( instance,
- null );
- byteAccessor.setValue( instance,
- null );
- booleanAccessor.setValue( instance,
- null );
- charAccessor.setValue( instance,
- null );
- doubleAccessor.setValue( instance,
- null );
- floatAccessor.setValue( instance,
- null );
- longAccessor.setValue( instance,
- null );
- shortAccessor.setValue( instance,
- null );
-
- Assert.assertEquals( "Error setting attr",
- 0,
- instance.getIntAttr() );
- Assert.assertNull( "Error setting attr",
- instance.getStrAttr() );
- Assert.assertEquals( "Error setting attr",
- 0,
- instance.getByteAttr() );
- Assert.assertEquals( "Error setting attr",
- false,
- instance.isBooleanAttr() );
- Assert.assertEquals( "Error setting attr",
- '\0',
- instance.getCharAttr() );
- Assert.assertEquals( "Error setting attr",
- 0.0d,
- instance.getDoubleAttr(),
- 0.1d );
- Assert.assertEquals( "Error setting attr",
- 0.0f,
- instance.getFloatAttr(),
- 0.1f );
- Assert.assertEquals( "Error setting attr",
- 0l,
- instance.getLongAttr() );
- Assert.assertEquals( "Error setting attr",
- (short) 0,
- instance.getShortAttr() );
-
- Assert.assertEquals( "Error reading int attr",
- 0,
- ((Integer) intAccessor.getValue( instance )).intValue() );
- Assert.assertNull( "Error reading String attr",
- strAccessor.getValue( instance ) );
- Assert.assertEquals( "Error reading attr",
- 0,
- ((Byte) byteAccessor.getValue( instance )).byteValue() );
- Assert.assertEquals( "Error reading attr",
- false,
- ((Boolean) booleanAccessor.getValue( instance )).booleanValue() );
- Assert.assertEquals( "Error reading attr",
- '\0',
- ((Character) charAccessor.getValue( instance )).charValue() );
- Assert.assertEquals( "Error reading attr",
- 0.0d,
- ((Double) doubleAccessor.getValue( instance )).doubleValue(),
- 0.1d );
- Assert.assertEquals( "Error reading attr",
- 0.0f,
- ((Float) floatAccessor.getValue( instance )).floatValue(),
- 0.1f );
- Assert.assertEquals( "Error reading attr",
- 0l,
- ((Long) longAccessor.getValue( instance )).longValue() );
- Assert.assertEquals( "Error reading attr",
- (short) 0,
- ((Short) shortAccessor.getValue( instance )).shortValue() );
-
- } catch ( Exception e ) {
- e.printStackTrace();
- Assert.fail( "No exception is supposed to be generated when creating field accessor: " + e );
- }
- }
-
- public static class TestClass {
- private int intAttr;
- private String strAttr;
- private byte byteAttr;
- private boolean booleanAttr;
- private char charAttr;
- private double doubleAttr;
- private float floatAttr;
- private long longAttr;
- private short shortAttr;
-
- /**
- * @return Returns the intAttr.
- */
- public int getIntAttr() {
- return intAttr;
- }
-
- /**
- * @param intAttr The intAttr to set.
- */
- public void setIntAttr(int intAttr) {
- this.intAttr = intAttr;
- }
-
- /**
- * @return Returns the strAttr.
- */
- public String getStrAttr() {
- return strAttr;
- }
-
- /**
- * @param strAttr The strAttr to set.
- */
- public void setStrAttr(String strAttr) {
- this.strAttr = strAttr;
- }
-
- /**
- * @return Returns the booleanAttr.
- */
- public boolean isBooleanAttr() {
- return booleanAttr;
- }
-
- /**
- * @param booleanAttr The booleanAttr to set.
- */
- public void setBooleanAttr(boolean booleanAttr) {
- this.booleanAttr = booleanAttr;
- }
-
- /**
- * @return Returns the byteAttr.
- */
- public byte getByteAttr() {
- return byteAttr;
- }
-
- /**
- * @param byteAttr The byteAttr to set.
- */
- public void setByteAttr(byte byteAttr) {
- this.byteAttr = byteAttr;
- }
-
- /**
- * @return Returns the charAttr.
- */
- public char getCharAttr() {
- return charAttr;
- }
-
- /**
- * @param charAttr The charAttr to set.
- */
- public void setCharAttr(char charAttr) {
- this.charAttr = charAttr;
- }
-
- /**
- * @return Returns the doubleAttr.
- */
- public double getDoubleAttr() {
- return doubleAttr;
- }
-
- /**
- * @param doubleAttr The doubleAttr to set.
- */
- public void setDoubleAttr(double doubleAttr) {
- this.doubleAttr = doubleAttr;
- }
-
- /**
- * @return Returns the floatAttr.
- */
- public float getFloatAttr() {
- return floatAttr;
- }
-
- /**
- * @param floatAttr The floatAttr to set.
- */
- public void setFloatAttr(float floatAttr) {
- this.floatAttr = floatAttr;
- }
-
- /**
- * @return Returns the longAttr.
- */
- public long getLongAttr() {
- return longAttr;
- }
-
- /**
- * @param longAttr The longAttr to set.
- */
- public void setLongAttr(long longAttr) {
- this.longAttr = longAttr;
- }
-
- /**
- * @return Returns the shortAttr.
- */
- public short getShortAttr() {
- return shortAttr;
- }
-
- /**
- * @param shortAttr The shortAttr to set.
- */
- public void setShortAttr(short shortAttr) {
- this.shortAttr = shortAttr;
- }
- }
-}
Modified: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/factmodel/InstancesHashcodedTest.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/factmodel/InstancesHashcodedTest.java 2008-05-16 15:22:07 UTC (rev 19970)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/factmodel/InstancesHashcodedTest.java 2008-05-16 18:29:20 UTC (rev 19971)
@@ -76,15 +76,15 @@
cd.getField("cutDate").getFieldAccessor().setValue(o2, cut);
cd.getField("dueDate").getFieldAccessor().setValue(o2, d2);
- System.out.println(o1);
- System.out.println(o1.hashCode());
- System.out.println(o2);
- System.out.println(o2.hashCode());
+// System.out.println(o1);
+// System.out.println(o1.hashCode());
+// System.out.println(o2);
+// System.out.println(o2.hashCode());
+//
+// System.out.println(o1.equals(o2));
- System.out.println(o1.equals(o2));
-
} catch (Exception e) {
- e.printStackTrace();
+// e.printStackTrace();
}
}
}
Modified: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/facttemplates/FactTemplateFieldExtractorTest.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/facttemplates/FactTemplateFieldExtractorTest.java 2008-05-16 15:22:07 UTC (rev 19970)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/facttemplates/FactTemplateFieldExtractorTest.java 2008-05-16 18:29:20 UTC (rev 19971)
@@ -5,7 +5,7 @@
import org.drools.rule.Pattern;
import org.drools.rule.Declaration;
import org.drools.rule.Package;
-import org.drools.spi.Extractor;
+import org.drools.spi.InternalReadAccessor;
public class FactTemplateFieldExtractorTest extends TestCase {
public void testExtractor() {
@@ -22,9 +22,9 @@
"Cheese",
fields );
- final Extractor extractName = new FactTemplateFieldExtractor( cheese,
+ final InternalReadAccessor extractName = new FactTemplateFieldExtractor( cheese,
0 );
- final Extractor extractPrice = new FactTemplateFieldExtractor( cheese,
+ final InternalReadAccessor extractPrice = new FactTemplateFieldExtractor( cheese,
1 );
final Fact stilton = cheese.createFact( 10 );
@@ -82,7 +82,7 @@
"Cheese",
fields );
- final Extractor extractName = new FactTemplateFieldExtractor( cheese,
+ final InternalReadAccessor extractName = new FactTemplateFieldExtractor( cheese,
0 );
final Pattern pattern = new Pattern( 0,
Modified: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/AlphaNodeTest.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/AlphaNodeTest.java 2008-05-16 15:22:07 UTC (rev 19970)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/AlphaNodeTest.java 2008-05-16 18:29:20 UTC (rev 19971)
@@ -21,10 +21,9 @@
import org.drools.Cheese;
import org.drools.DroolsTestCase;
import org.drools.FactException;
-import org.drools.RuleBaseConfiguration;
import org.drools.RuleBaseFactory;
-import org.drools.base.ClassFieldExtractor;
-import org.drools.base.ClassFieldExtractorCache;
+import org.drools.base.ClassFieldAccessorCache;
+import org.drools.base.ClassFieldReader;
import org.drools.base.FieldFactory;
import org.drools.base.ValueType;
import org.drools.base.evaluators.EqualityEvaluatorsDefinition;
@@ -36,14 +35,13 @@
import org.drools.rule.LiteralConstraint;
import org.drools.rule.Rule;
import org.drools.spi.Evaluator;
-import org.drools.spi.FieldExtractor;
import org.drools.spi.FieldValue;
+import org.drools.spi.InternalReadAccessor;
import org.drools.spi.PropagationContext;
-import org.drools.util.RightTupleList;
public class AlphaNodeTest extends DroolsTestCase {
- ClassFieldExtractorCache cache = ClassFieldExtractorCache.getInstance();
+ ClassFieldAccessorCache cache = ClassFieldAccessorCache.getInstance();
EqualityEvaluatorsDefinition equals = new EqualityEvaluatorsDefinition();
public void testLiteralConstraintAssertObjectWithoutMemory() throws Exception {
@@ -61,7 +59,7 @@
final MockObjectSource source = new MockObjectSource( buildContext.getNextId() );
- final ClassFieldExtractor extractor = cache.getExtractor( Cheese.class,
+ final ClassFieldReader extractor = cache.getReader( Cheese.class,
"type",
getClass().getClassLoader() );
@@ -142,7 +140,7 @@
final MockObjectSource source = new MockObjectSource( buildContext.getNextId() );
- final FieldExtractor extractor = cache.getExtractor( Cheese.class,
+ final InternalReadAccessor extractor = cache.getReader( Cheese.class,
"type",
getClass().getClassLoader() );
@@ -212,7 +210,7 @@
final MockObjectSource source = new MockObjectSource( buildContext.getNextId() );
- final FieldExtractor extractor = cache.getExtractor( Cheese.class,
+ final InternalReadAccessor extractor = cache.getReader( Cheese.class,
"type",
getClass().getClassLoader() );
Modified: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/CompositeObjectSinkAdapterTest.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/CompositeObjectSinkAdapterTest.java 2008-05-16 15:22:07 UTC (rev 19970)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/CompositeObjectSinkAdapterTest.java 2008-05-16 18:29:20 UTC (rev 19971)
@@ -1,15 +1,15 @@
package org.drools.reteoo;
-import java.lang.reflect.Method;
import java.io.IOException;
import java.io.ObjectInput;
import java.io.ObjectOutput;
+import java.lang.reflect.Method;
import junit.framework.TestCase;
import org.drools.Cheese;
import org.drools.RuleBaseFactory;
-import org.drools.base.ClassFieldExtractorCache;
+import org.drools.base.ClassFieldAccessorCache;
import org.drools.base.ValueType;
import org.drools.base.evaluators.EqualityEvaluatorsDefinition;
import org.drools.base.evaluators.Operator;
@@ -22,7 +22,7 @@
import org.drools.rule.Behavior;
import org.drools.rule.LiteralConstraint;
import org.drools.rule.PredicateConstraint;
-import org.drools.spi.FieldExtractor;
+import org.drools.spi.InternalReadAccessor;
import org.drools.spi.PropagationContext;
public class CompositeObjectSinkAdapterTest extends TestCase {
@@ -180,7 +180,7 @@
public void testTripleAlpha() {
final CompositeObjectSinkAdapter ad = new CompositeObjectSinkAdapter();
- FieldExtractor extractor = ClassFieldExtractorCache.getInstance().getExtractor( Cheese.class,
+ InternalReadAccessor extractor = ClassFieldAccessorCache.getInstance().getReader( Cheese.class,
"type",
this.getClass().getClassLoader() );
@@ -242,7 +242,7 @@
public void testTripleAlphaCharacterConstraint() {
final CompositeObjectSinkAdapter ad = new CompositeObjectSinkAdapter();
- FieldExtractor extractor = ClassFieldExtractorCache.getInstance().getExtractor( Cheese.class,
+ InternalReadAccessor extractor = ClassFieldAccessorCache.getInstance().getReader( Cheese.class,
"charType",
this.getClass().getClassLoader() );
@@ -326,7 +326,7 @@
public void testPropagationWithNullValue() {
final CompositeObjectSinkAdapter ad = new CompositeObjectSinkAdapter();
- FieldExtractor extractor = ClassFieldExtractorCache.getInstance().getExtractor( Cheese.class,
+ InternalReadAccessor extractor = ClassFieldAccessorCache.getInstance().getReader( Cheese.class,
"type",
this.getClass().getClassLoader() );
final LiteralConstraint lit1 = new LiteralConstraint( extractor,
@@ -375,7 +375,7 @@
public static class MockExtractor
implements
- FieldExtractor {
+ InternalReadAccessor {
public void readExternal(ObjectInput in) throws IOException,
ClassNotFoundException {
@@ -484,6 +484,61 @@
return false;
}
+ public boolean getBooleanValue(Object object) {
+ // TODO Auto-generated method stub
+ return false;
+ }
+
+ public byte getByteValue(Object object) {
+ // TODO Auto-generated method stub
+ return 0;
+ }
+
+ public char getCharValue(Object object) {
+ // TODO Auto-generated method stub
+ return 0;
+ }
+
+ public double getDoubleValue(Object object) {
+ // TODO Auto-generated method stub
+ return 0;
+ }
+
+ public float getFloatValue(Object object) {
+ // TODO Auto-generated method stub
+ return 0;
+ }
+
+ public int getHashCode(Object object) {
+ // TODO Auto-generated method stub
+ return 0;
+ }
+
+ public int getIntValue(Object object) {
+ // TODO Auto-generated method stub
+ return 0;
+ }
+
+ public long getLongValue(Object object) {
+ // TODO Auto-generated method stub
+ return 0;
+ }
+
+ public short getShortValue(Object object) {
+ // TODO Auto-generated method stub
+ return 0;
+ }
+
+ public Object getValue(Object object) {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public boolean isNullValue(Object object) {
+ // TODO Auto-generated method stub
+ return false;
+ }
+
}
static class MockBetaNode extends BetaNode {
Modified: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/FromNodeTest.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/FromNodeTest.java 2008-05-16 15:22:07 UTC (rev 19970)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/FromNodeTest.java 2008-05-16 18:29:20 UTC (rev 19971)
@@ -12,8 +12,8 @@
import org.drools.RuleBaseConfiguration;
import org.drools.RuleBaseFactory;
import org.drools.WorkingMemory;
-import org.drools.base.ClassFieldExtractor;
-import org.drools.base.ClassFieldExtractorCache;
+import org.drools.base.ClassFieldReader;
+import org.drools.base.ClassFieldAccessorCache;
import org.drools.base.ClassObjectType;
import org.drools.base.FieldFactory;
import org.drools.base.ValueType;
@@ -38,7 +38,7 @@
import org.drools.util.LinkedListEntry;
public class FromNodeTest extends TestCase {
- ClassFieldExtractorCache cache = ClassFieldExtractorCache.getInstance();
+ ClassFieldAccessorCache cache = ClassFieldAccessorCache.getInstance();
EqualityEvaluatorsDefinition equals = new EqualityEvaluatorsDefinition();
public void testAlphaNode() {
@@ -49,7 +49,7 @@
null );
final ReteooWorkingMemory workingMemory = new ReteooWorkingMemory( 1,
(ReteooRuleBase) RuleBaseFactory.newRuleBase() );
- final ClassFieldExtractor extractor = cache.getExtractor( Cheese.class,
+ final ClassFieldReader extractor = cache.getReader( Cheese.class,
"type",
getClass().getClassLoader() );
@@ -146,11 +146,11 @@
final ReteooWorkingMemory workingMemory = new ReteooWorkingMemory( 1,
(ReteooRuleBase) RuleBaseFactory.newRuleBase() );
- final ClassFieldExtractor priceExtractor = cache.getExtractor( Cheese.class,
+ final ClassFieldReader priceExtractor = cache.getReader( Cheese.class,
"price",
getClass().getClassLoader() );
- final ClassFieldExtractor ageExtractor = cache.getExtractor( Person.class,
+ final ClassFieldReader ageExtractor = cache.getReader( Person.class,
"age",
getClass().getClassLoader() );
@@ -256,7 +256,7 @@
null );
final ReteooWorkingMemory workingMemory = new ReteooWorkingMemory( 1,
(ReteooRuleBase) RuleBaseFactory.newRuleBase() );
- final ClassFieldExtractor extractor = cache.getExtractor( Cheese.class,
+ final ClassFieldReader extractor = cache.getReader( Cheese.class,
"type",
getClass().getClassLoader() );
Modified: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/QueryTerminalNodeTest.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/QueryTerminalNodeTest.java 2008-05-16 15:22:07 UTC (rev 19970)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/QueryTerminalNodeTest.java 2008-05-16 18:29:20 UTC (rev 19971)
@@ -28,8 +28,8 @@
import org.drools.QueryResults;
import org.drools.RuleBaseFactory;
import org.drools.WorkingMemory;
-import org.drools.base.ClassFieldExtractor;
-import org.drools.base.ClassFieldExtractorCache;
+import org.drools.base.ClassFieldReader;
+import org.drools.base.ClassFieldAccessorCache;
import org.drools.base.ClassObjectType;
import org.drools.base.DroolsQuery;
import org.drools.base.FieldFactory;
@@ -49,7 +49,7 @@
private BuildContext buildContext;
private EntryPointNode entryPoint;
- ClassFieldExtractorCache cache = ClassFieldExtractorCache.getInstance();
+ ClassFieldAccessorCache cache = ClassFieldAccessorCache.getInstance();
private EqualityEvaluatorsDefinition equals = new EqualityEvaluatorsDefinition();
protected void setUp() throws Exception {
@@ -70,7 +70,7 @@
buildContext );
queryObjectTypeNode.attach();
- ClassFieldExtractor extractor = cache.getExtractor( DroolsQuery.class,
+ ClassFieldReader extractor = cache.getReader( DroolsQuery.class,
"name",
DroolsQuery.class.getClassLoader() );
@@ -99,7 +99,7 @@
buildContext );
cheeseObjectTypeNode.attach();
- extractor = cache.getExtractor( Cheese.class,
+ extractor = cache.getReader( Cheese.class,
"type",
getClass().getClassLoader() );
Modified: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/rule/DeclarationTest.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/rule/DeclarationTest.java 2008-05-16 15:22:07 UTC (rev 19970)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/rule/DeclarationTest.java 2008-05-16 18:29:20 UTC (rev 19971)
@@ -23,16 +23,16 @@
import junit.framework.TestCase;
import org.drools.Cheese;
-import org.drools.base.ClassFieldExtractorCache;
+import org.drools.base.ClassFieldAccessorCache;
import org.drools.base.ClassObjectType;
-import org.drools.spi.FieldExtractor;
+import org.drools.spi.InternalReadAccessor;
public class DeclarationTest extends TestCase {
- ClassFieldExtractorCache cache = ClassFieldExtractorCache.getInstance();
+ ClassFieldAccessorCache cache = ClassFieldAccessorCache.getInstance();
public void testDeclaration() throws IntrospectionException {
- final FieldExtractor extractor = cache.getExtractor( Cheese.class,
+ final InternalReadAccessor extractor = cache.getReader( Cheese.class,
"type",
getClass().getClassLoader() );
@@ -60,7 +60,7 @@
}
public void testGetFieldValue() throws IntrospectionException {
- final FieldExtractor extractor = cache.getExtractor( Cheese.class,
+ final InternalReadAccessor extractor = cache.getReader( Cheese.class,
"type",
getClass().getClassLoader() );
Modified: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/rule/FieldConstraintTest.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/rule/FieldConstraintTest.java 2008-05-16 15:22:07 UTC (rev 19970)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/rule/FieldConstraintTest.java 2008-05-16 18:29:20 UTC (rev 19971)
@@ -17,18 +17,17 @@
*/
import java.beans.IntrospectionException;
+import java.io.IOException;
import java.io.ObjectInput;
import java.io.ObjectOutput;
-import java.io.IOException;
import junit.framework.TestCase;
import org.drools.Cheese;
-import org.drools.FactHandle;
import org.drools.RuleBaseFactory;
import org.drools.WorkingMemory;
-import org.drools.base.ClassFieldExtractor;
-import org.drools.base.ClassFieldExtractorCache;
+import org.drools.base.ClassFieldAccessorCache;
+import org.drools.base.ClassFieldReader;
import org.drools.base.ClassObjectType;
import org.drools.base.FieldFactory;
import org.drools.base.ShadowProxy;
@@ -44,15 +43,15 @@
import org.drools.rule.PredicateConstraint.PredicateContextEntry;
import org.drools.rule.ReturnValueRestriction.ReturnValueContextEntry;
import org.drools.spi.Evaluator;
-import org.drools.spi.FieldExtractor;
import org.drools.spi.FieldValue;
+import org.drools.spi.InternalReadAccessor;
import org.drools.spi.PredicateExpression;
import org.drools.spi.ReturnValueExpression;
import org.drools.spi.Tuple;
public class FieldConstraintTest extends TestCase {
- ClassFieldExtractorCache cache = ClassFieldExtractorCache.getInstance();
+ ClassFieldAccessorCache cache = ClassFieldAccessorCache.getInstance();
EqualityEvaluatorsDefinition equals = new EqualityEvaluatorsDefinition();
ComparableEvaluatorsDefinition comparables = new ComparableEvaluatorsDefinition();
@@ -78,7 +77,7 @@
final ReteooRuleBase ruleBase = (ReteooRuleBase) RuleBaseFactory.newRuleBase();
final InternalWorkingMemory workingMemory = (InternalWorkingMemory) ruleBase.newStatefulSession();
- final ClassFieldExtractor extractor = cache.getExtractor( Cheese.class,
+ final ClassFieldReader extractor = cache.getReader( Cheese.class,
"type",
getClass().getClassLoader() );
@@ -128,7 +127,7 @@
final ReteooRuleBase ruleBase = (ReteooRuleBase) RuleBaseFactory.newRuleBase();
final InternalWorkingMemory workingMemory = (InternalWorkingMemory) ruleBase.newStatefulSession();
- final ClassFieldExtractor extractor = cache.getExtractor( Cheese.class,
+ final ClassFieldReader extractor = cache.getReader( Cheese.class,
"price",
getClass().getClassLoader() );
@@ -179,7 +178,7 @@
final ReteooRuleBase ruleBase = (ReteooRuleBase) RuleBaseFactory.newRuleBase();
final InternalWorkingMemory workingMemory = (InternalWorkingMemory) ruleBase.newStatefulSession();
- final FieldExtractor priceExtractor = cache.getExtractor( Cheese.class,
+ final InternalReadAccessor priceExtractor = cache.getReader( Cheese.class,
"price",
getClass().getClassLoader() );
@@ -281,7 +280,7 @@
final ReteooRuleBase ruleBase = (ReteooRuleBase) RuleBaseFactory.newRuleBase();
final InternalWorkingMemory workingMemory = (InternalWorkingMemory) ruleBase.newStatefulSession();
- final FieldExtractor priceExtractor = cache.getExtractor( Cheese.class,
+ final InternalReadAccessor priceExtractor = cache.getReader( Cheese.class,
"price",
getClass().getClassLoader() );
@@ -404,7 +403,7 @@
final ReteooRuleBase ruleBase = (ReteooRuleBase) RuleBaseFactory.newRuleBase();
final InternalWorkingMemory workingMemory = (InternalWorkingMemory) ruleBase.newStatefulSession();
- final ClassFieldExtractor extractor = cache.getExtractor( Cheese.class,
+ final ClassFieldReader extractor = cache.getReader( Cheese.class,
"type",
getClass().getClassLoader() );
@@ -417,7 +416,7 @@
evaluator,
field );
- final ClassFieldExtractor priceExtractor = cache.getExtractor( Cheese.class,
+ final ClassFieldReader priceExtractor = cache.getReader( Cheese.class,
"price",
getClass().getClassLoader() );
@@ -482,7 +481,7 @@
final ReteooRuleBase ruleBase = (ReteooRuleBase) RuleBaseFactory.newRuleBase();
final InternalWorkingMemory workingMemory = (InternalWorkingMemory) ruleBase.newStatefulSession();
- final ClassFieldExtractor extractor = cache.getExtractor( Cheese.class,
+ final ClassFieldReader extractor = cache.getReader( Cheese.class,
"type",
getClass().getClassLoader() );
@@ -495,7 +494,7 @@
evaluator,
field );
- final ClassFieldExtractor priceExtractor = cache.getExtractor( Cheese.class,
+ final ClassFieldReader priceExtractor = cache.getReader( Cheese.class,
"price",
getClass().getClassLoader() );
@@ -559,7 +558,7 @@
final ReteooRuleBase ruleBase = (ReteooRuleBase) RuleBaseFactory.newRuleBase();
final InternalWorkingMemory workingMemory = (InternalWorkingMemory) ruleBase.newStatefulSession();
- final ClassFieldExtractor typeExtractor = cache.getExtractor( Cheese.class,
+ final ClassFieldReader typeExtractor = cache.getReader( Cheese.class,
"type",
getClass().getClassLoader() );
@@ -573,7 +572,7 @@
stringEqual,
cheddarField );
- final ClassFieldExtractor priceExtractor = cache.getExtractor( Cheese.class,
+ final ClassFieldReader priceExtractor = cache.getReader( Cheese.class,
"price",
getClass().getClassLoader() );
Modified: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/rule/PatternTest.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/rule/PatternTest.java 2008-05-16 15:22:07 UTC (rev 19970)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/rule/PatternTest.java 2008-05-16 18:29:20 UTC (rev 19971)
@@ -10,7 +10,7 @@
import org.drools.facttemplates.FactTemplateObjectType;
import org.drools.facttemplates.FieldTemplate;
import org.drools.facttemplates.FieldTemplateImpl;
-import org.drools.spi.Extractor;
+import org.drools.spi.InternalReadAccessor;
import org.drools.spi.ObjectType;
public class PatternTest extends TestCase {
@@ -21,7 +21,7 @@
type,
"foo" );
final Declaration dec = col.getDeclaration();
- final Extractor ext = dec.getExtractor();
+ final InternalReadAccessor ext = dec.getExtractor();
assertEquals( Cheese.class,
ext.getExtractToClass() );
@@ -53,7 +53,7 @@
type,
"foo" );
final Declaration dec = col.getDeclaration();
- final Extractor ext = dec.getExtractor();
+ final InternalReadAccessor ext = dec.getExtractor();
assertEquals( Fact.class,
ext.getExtractToClass() );
Modified: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/util/FieldIndexEntryTest.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/util/FieldIndexEntryTest.java 2008-05-16 15:22:07 UTC (rev 19970)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/util/FieldIndexEntryTest.java 2008-05-16 18:29:20 UTC (rev 19971)
@@ -3,8 +3,8 @@
import junit.framework.TestCase;
import org.drools.Cheese;
-import org.drools.base.ClassFieldExtractor;
-import org.drools.base.ClassFieldExtractorCache;
+import org.drools.base.ClassFieldReader;
+import org.drools.base.ClassFieldAccessorCache;
import org.drools.base.ValueType;
import org.drools.base.evaluators.EqualityEvaluatorsDefinition;
import org.drools.base.evaluators.Operator;
@@ -15,11 +15,11 @@
import org.drools.util.AbstractHashTable.SingleIndex;
public class FieldIndexEntryTest extends TestCase {
- ClassFieldExtractorCache cache = ClassFieldExtractorCache.getInstance();
+ ClassFieldAccessorCache cache = ClassFieldAccessorCache.getInstance();
EqualityEvaluatorsDefinition equals = new EqualityEvaluatorsDefinition();
public void testSingleEntry() {
- final ClassFieldExtractor extractor = cache.getExtractor( Cheese.class,
+ final ClassFieldReader extractor = cache.getReader( Cheese.class,
"type",
getClass().getClassLoader() );
@@ -64,7 +64,7 @@
}
public void testTwoEntries() {
- final ClassFieldExtractor extractor = cache.getExtractor( Cheese.class,
+ final ClassFieldReader extractor = cache.getReader( Cheese.class,
"type",
getClass().getClassLoader() );
final FieldIndex fieldIndex = new FieldIndex( extractor,
@@ -119,7 +119,7 @@
}
public void testThreeEntries() {
- final ClassFieldExtractor extractor = cache.getExtractor( Cheese.class,
+ final ClassFieldReader extractor = cache.getReader( Cheese.class,
"type",
getClass().getClassLoader() );
final FieldIndex fieldIndex = new FieldIndex( extractor,
Modified: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/util/RightTupleIndexHashTableTest.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/util/RightTupleIndexHashTableTest.java 2008-05-16 15:22:07 UTC (rev 19970)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/util/RightTupleIndexHashTableTest.java 2008-05-16 18:29:20 UTC (rev 19971)
@@ -7,7 +7,7 @@
import junit.framework.TestCase;
import org.drools.Cheese;
-import org.drools.base.ClassFieldExtractorCache;
+import org.drools.base.ClassFieldAccessorCache;
import org.drools.base.ClassObjectType;
import org.drools.base.ValueType;
import org.drools.base.evaluators.EqualityEvaluatorsDefinition;
@@ -18,15 +18,15 @@
import org.drools.reteoo.RightTuple;
import org.drools.rule.Declaration;
import org.drools.rule.Pattern;
-import org.drools.spi.FieldExtractor;
+import org.drools.spi.InternalReadAccessor;
import org.drools.util.AbstractHashTable.FieldIndex;
public class RightTupleIndexHashTableTest extends TestCase {
- ClassFieldExtractorCache cache = ClassFieldExtractorCache.getInstance();
+ ClassFieldAccessorCache cache = ClassFieldAccessorCache.getInstance();
EqualityEvaluatorsDefinition equals = new EqualityEvaluatorsDefinition();
public void testSingleEntry() throws Exception {
- final FieldExtractor extractor = cache.getExtractor( Cheese.class,
+ final InternalReadAccessor extractor = cache.getReader( Cheese.class,
"type",
getClass().getClassLoader() );
@@ -82,7 +82,7 @@
}
public void testTwoDifferentEntries() throws Exception {
- final FieldExtractor extractor = cache.getExtractor( Cheese.class,
+ final InternalReadAccessor extractor = cache.getReader( Cheese.class,
"type",
getClass().getClassLoader() );
@@ -146,7 +146,7 @@
}
public void testTwoEqualEntries() throws Exception {
- final FieldExtractor extractor = cache.getExtractor( Cheese.class,
+ final InternalReadAccessor extractor = cache.getReader( Cheese.class,
"type",
getClass().getClassLoader() );
@@ -209,7 +209,7 @@
}
public void testTwoDifferentEntriesSameHashCode() throws Exception {
- final FieldExtractor extractor = cache.getExtractor( TestClass.class,
+ final InternalReadAccessor extractor = cache.getReader( TestClass.class,
"object",
getClass().getClassLoader() );
@@ -269,7 +269,7 @@
}
public void testRemove() throws Exception {
- final FieldExtractor extractor = cache.getExtractor( Cheese.class,
+ final InternalReadAccessor extractor = cache.getReader( Cheese.class,
"type",
getClass().getClassLoader() );
@@ -343,7 +343,7 @@
}
public void testResize() throws Exception {
- final FieldExtractor extractor = cache.getExtractor( Cheese.class,
+ final InternalReadAccessor extractor = cache.getReader( Cheese.class,
"type",
getClass().getClassLoader() );
@@ -569,7 +569,7 @@
}
public void testEmptyIterator() {
- final FieldExtractor extractor = cache.getExtractor( Cheese.class,
+ final InternalReadAccessor extractor = cache.getReader( Cheese.class,
"type",
getClass().getClassLoader() );
Modified: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/util/asm/ClassFieldInspectorTest.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/util/asm/ClassFieldInspectorTest.java 2008-05-16 15:22:07 UTC (rev 19970)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/util/asm/ClassFieldInspectorTest.java 2008-05-16 18:29:20 UTC (rev 19971)
@@ -29,24 +29,18 @@
public void testIt() throws Exception {
final ClassFieldInspector ext = new ClassFieldInspector( Person.class );
assertEquals( 7,
- ext.getPropertyGetters().size() );
- assertEquals( "getAge",
- ((Method) ext.getPropertyGetters().get( 0 )).getName() );
- assertEquals( "isHappy",
- ((Method) ext.getPropertyGetters().get( 1 )).getName() );
- assertEquals( "getName",
- ((Method) ext.getPropertyGetters().get( 2 )).getName() );
+ ext.getFieldNames().size() );
+ assertEquals( "getAge" ,
+ ext.getGetterMethods().get( "age" ).getName() );
+ assertEquals( "isHappy" ,
+ ext.getGetterMethods().get( "happy" ).getName() );
+ assertEquals( "getName" ,
+ ext.getGetterMethods().get( "name" ).getName() );
- final Map names = ext.getFieldNames();
+ final Map<String, Integer> names = ext.getFieldNames();
assertNotNull( names );
assertEquals( 7,
names.size() );
- assertEquals( 0,
- ((Integer) names.get( "age" )).intValue() );
- assertEquals( 1,
- ((Integer) names.get( "happy" )).intValue() );
- assertEquals( 2,
- ((Integer) names.get( "name" )).intValue() );
assertNull( names.get( "nAme" ) );
}
@@ -54,62 +48,52 @@
public void testInterface() throws Exception {
final ClassFieldInspector ext = new ClassFieldInspector( TestInterface.class );
assertEquals( 2,
- ext.getPropertyGetters().size() );
- assertEquals( "getSomething",
- ((Method) ext.getPropertyGetters().get( 0 )).getName() );
- assertEquals( "getAnother",
- ((Method) ext.getPropertyGetters().get( 1 )).getName() );
+ ext.getFieldNames().size() );
+ assertEquals( "getSomething" ,
+ ext.getGetterMethods().get( "something" ).getName() );
+ assertEquals( "getAnother" ,
+ ext.getGetterMethods().get( "another" ).getName() );
- final Map names = ext.getFieldNames();
+ final Map<String, Integer> names = ext.getFieldNames();
assertNotNull( names );
assertEquals( 2,
names.size() );
- assertEquals( 0,
- ((Integer) names.get( "something" )).intValue() );
- assertEquals( 1,
- ((Integer) names.get( "another" )).intValue() );
}
public void testAbstract() throws Exception {
final ClassFieldInspector ext = new ClassFieldInspector( TestAbstract.class );
assertEquals( 5,
- ext.getPropertyGetters().size() );
- assertEquals( "getSomething",
- ((Method) ext.getPropertyGetters().get( 0 )).getName() );
- assertEquals( "getAnother",
- ((Method) ext.getPropertyGetters().get( 1 )).getName() );
+ ext.getFieldNames().size() );
+ assertEquals( "getSomething" ,
+ ext.getGetterMethods().get( "something" ).getName() );
+ assertEquals( "getAnother" ,
+ ext.getGetterMethods().get( "another" ).getName() );
- final Map names = ext.getFieldNames();
+ final Map<String, Integer> names = ext.getFieldNames();
assertNotNull( names );
assertEquals( 5,
names.size() );
- assertEquals( 0,
- ((Integer) names.get( "something" )).intValue() );
- assertEquals( 1,
- ((Integer) names.get( "another" )).intValue() );
}
public void testInheritedFields() throws Exception {
ClassFieldInspector ext = new ClassFieldInspector( BeanInherit.class );
assertEquals( 5,
- ext.getPropertyGetters().size() );
+ ext.getFieldNames().size() );
ext = new ClassFieldInspector( InterfaceChildImpl.class );
assertEquals( 8,
- ext.getPropertyGetters().size() );
+ ext.getFieldNames().size() );
+
// test inheritence from abstract class
- assertEquals( 4,
- ((Integer) ext.getFieldNames().get( "HTML" )).intValue() );
+ assertNotNull( ext.getFieldNames().get( "HTML" ) );
// check normal field on child class
- assertEquals( 1,
- ((Integer) ext.getFieldNames().get( "baz" )).intValue() );
+ assertNotNull( ext.getFieldNames().get( "baz" ) );
// test inheritence from an interface
- assertEquals( 3,
- ((Integer) ext.getFieldNames().get( "URI" )).intValue() );
+ assertNotNull( ext.getFieldNames().get( "URI" ) );
}
public void testIntefaceInheritance() throws Exception {
More information about the jboss-svn-commits
mailing list