This is an automated email from the ASF dual-hosted git repository.
mariofusco pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/incubator-kie-drools.git
The following commit(s) were added to refs/heads/main by this push:
new 59ef10953a [incubator-kie-drools-6436] Review SetEvaluatorsDefinition
and Matche… (#6437)
59ef10953a is described below
commit 59ef10953a50d769a78b188a85dd110a08e7a8e8
Author: Toshiya Kobayashi <[email protected]>
AuthorDate: Thu Aug 28 20:47:25 2025 +0900
[incubator-kie-drools-6436] Review SetEvaluatorsDefinition and Matche…
(#6437)
* [incubator-kie-drools-6436] Review SetEvaluatorsDefinition and
MatchesEvaluatorsDefinition
* fix verifier rules
---
.../drools/drl/parser/antlr4/DescrDumperTest.java | 6 -
.../evaluators/MatchesEvaluatorsDefinition.java | 244 ---
.../mvel/evaluators/SetEvaluatorsDefinition.java | 1565 --------------------
.../META-INF/kie.default.mvel.properties.conf | 2 -
.../drools/mvel/compiler/lang/DescrDumperTest.java | 5 -
.../verifier/missingEquality/MissingEquality.drl | 9 +-
.../verifier/optimisation/RestrictionOrder.drl | 17 +-
7 files changed, 12 insertions(+), 1836 deletions(-)
diff --git
a/drools-drl/drools-drl-parser-tests/src/test/java/org/drools/drl/parser/antlr4/DescrDumperTest.java
b/drools-drl/drools-drl-parser-tests/src/test/java/org/drools/drl/parser/antlr4/DescrDumperTest.java
index 97d6132455..6d714894cf 100644
---
a/drools-drl/drools-drl-parser-tests/src/test/java/org/drools/drl/parser/antlr4/DescrDumperTest.java
+++
b/drools-drl/drools-drl-parser-tests/src/test/java/org/drools/drl/parser/antlr4/DescrDumperTest.java
@@ -24,8 +24,6 @@ import org.drools.drl.ast.descr.AtomicExprDescr;
import org.drools.drl.ast.descr.BindingDescr;
import org.drools.drl.ast.descr.ConstraintConnectiveDescr;
import org.drools.drl.parser.DrlExprParser;
-import org.drools.mvel.evaluators.MatchesEvaluatorsDefinition;
-import org.drools.mvel.evaluators.SetEvaluatorsDefinition;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;
@@ -39,10 +37,6 @@ public class DescrDumperTest {
@BeforeEach
void setUp() {
- // configure operators
- new SetEvaluatorsDefinition();
- new MatchesEvaluatorsDefinition();
-
dumper = new DescrDumper();
}
diff --git
a/drools-mvel/src/main/java/org/drools/mvel/evaluators/MatchesEvaluatorsDefinition.java
b/drools-mvel/src/main/java/org/drools/mvel/evaluators/MatchesEvaluatorsDefinition.java
deleted file mode 100644
index 1f57059745..0000000000
---
a/drools-mvel/src/main/java/org/drools/mvel/evaluators/MatchesEvaluatorsDefinition.java
+++ /dev/null
@@ -1,244 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.mvel.evaluators;
-
-import java.io.IOException;
-import java.io.ObjectInput;
-import java.io.ObjectOutput;
-
-import org.drools.base.base.ValueResolver;
-import org.drools.base.base.ValueType;
-import org.drools.compiler.rule.builder.EvaluatorDefinition;
-import org.drools.drl.parser.impl.Operator;
-import
org.drools.mvel.evaluators.VariableRestriction.ObjectVariableContextEntry;
-import org.drools.mvel.evaluators.VariableRestriction.VariableContextEntry;
-import org.drools.base.rule.accessor.Evaluator;
-import org.drools.base.rule.accessor.FieldValue;
-import org.drools.base.rule.accessor.ReadAccessor;
-import org.kie.api.runtime.rule.FactHandle;
-
-/**
- * This class defines the matches evaluator
- */
-public class MatchesEvaluatorsDefinition implements EvaluatorDefinition {
-
- protected static final String matchesOp =
Operator.BuiltInOperator.MATCHES.getSymbol();
-
- public static final Operator MATCHES = Operator.determineOperator(
matchesOp, false );
- public static final Operator NOT_MATCHES = Operator.determineOperator(
matchesOp, true );
-
- private static final String[] SUPPORTED_IDS = new String[] { matchesOp };
-
- private EvaluatorCache evaluators = new EvaluatorCache() {
- private static final long serialVersionUID = 510l;
- {
- addEvaluator( ValueType.STRING_TYPE, MATCHES,
StringMatchesEvaluator.INSTANCE );
- addEvaluator( ValueType.OBJECT_TYPE, MATCHES,
StringMatchesEvaluator.INSTANCE );
- addEvaluator( ValueType.STRING_TYPE, NOT_MATCHES,
StringNotMatchesEvaluator.INSTANCE );
- addEvaluator( ValueType.OBJECT_TYPE, NOT_MATCHES,
StringNotMatchesEvaluator.INSTANCE );
- }
- };
-
- public void readExternal(ObjectInput in) throws IOException,
ClassNotFoundException {
- evaluators = (EvaluatorCache)in.readObject();
- }
-
- public void writeExternal(ObjectOutput out) throws IOException {
- out.writeObject(evaluators);
- }
-
- /**
- * @inheridDoc
- */
- public Evaluator getEvaluator(ValueType type,
- Operator operator) {
- return this.evaluators.getEvaluator( type,
- operator );
- }
-
- /**
- * @inheridDoc
- */
- public Evaluator getEvaluator(ValueType type,
- Operator operator,
- String parameterText) {
- return this.evaluators.getEvaluator( type,
- operator );
- }
-
-
- public Evaluator getEvaluator(final ValueType type,
- final String operatorId,
- final boolean isNegated,
- final String parameterText) {
- return this.getEvaluator( type,
- operatorId,
- isNegated,
- parameterText,
- Target.FACT,
- Target.FACT );
-
- }
-
- /**
- * @inheritDoc
- */
- public Evaluator getEvaluator(final ValueType type,
- final String operatorId,
- final boolean isNegated,
- final String parameterText,
- final Target left,
- final Target right ) {
- return this.evaluators.getEvaluator( type, Operator.determineOperator(
operatorId, isNegated ) );
- }
-
- public String[] getEvaluatorIds() {
- return SUPPORTED_IDS;
- }
-
- public boolean isNegatable() {
- return true;
- }
-
- public Target getTarget() {
- return Target.FACT;
- }
-
- public boolean supportsType(ValueType type) {
- return this.evaluators.supportsType( type );
- }
-
- /* *********************************************************
- * Evaluator Implementations
- * *********************************************************
- */
- public static class StringMatchesEvaluator extends BaseEvaluator {
- private static final long serialVersionUID = 400L;
- public final static Evaluator INSTANCE = new
StringMatchesEvaluator();
-
- public StringMatchesEvaluator() {
- super( ValueType.STRING_TYPE,
- MATCHES );
- }
-
- public boolean evaluate(final ValueResolver valueResolver,
- final ReadAccessor extractor,
- final FactHandle handle1, final FieldValue
fieldValue) {
- final String value1 = (String) extractor.getValue( valueResolver,
handle1.getObject() );
- final String value2 = (String) fieldValue.getValue();
- if ( value1 == null ) {
- return false;
- }
- return value1.matches( value2 );
- }
-
- public boolean evaluateCachedRight(final ValueResolver valueResolver,
- final VariableContextEntry context,
final FactHandle left) {
- final String value = (String) ((ObjectVariableContextEntry)
context).right;
- if ( value == null ) {
- return false;
- }
- return value.matches( (String)
context.declaration.getExtractor().getValue( valueResolver, left.getObject() )
);
- }
-
- public boolean evaluateCachedLeft(final ValueResolver valueResolver,
- final VariableContextEntry context,
final FactHandle right) {
- final String value = (String) context.extractor.getValue(
valueResolver, right.getObject() );
- if ( value == null ) {
- return false;
- }
- return value.matches( (String) ((ObjectVariableContextEntry)
context).left );
- }
-
- public boolean evaluate(final ValueResolver valueResolver,
- final ReadAccessor extractor1,
- final FactHandle handle1,
- final ReadAccessor extractor2, final
FactHandle handle2) {
- final Object value1 = extractor1.getValue( valueResolver,
handle1.getObject() );
- final Object value2 = extractor2.getValue( valueResolver,
handle2.getObject() );
- if ( value1 == null ) {
- return false;
- }
- return ((String) value1).matches( (String) value2 );
- }
-
- public String toString() {
- return "String matches";
- }
- }
-
- public static class StringNotMatchesEvaluator extends BaseEvaluator {
- private static final long serialVersionUID = 400L;
- public final static Evaluator INSTANCE = new
StringNotMatchesEvaluator();
-
- public StringNotMatchesEvaluator() {
- super( ValueType.STRING_TYPE,
- NOT_MATCHES );
- }
-
- public boolean evaluate(final ValueResolver valueResolver,
- final ReadAccessor extractor,
- final FactHandle handle1,
- final FieldValue fieldValue) {
- final String value1 = (String) extractor.getValue( valueResolver,
handle1.getObject() );
- final String value2 = (String) fieldValue.getValue();
- if ( value1 == null ) {
- return false;
- }
- return ! value1.matches( value2 );
- }
-
- public boolean evaluateCachedRight(final ValueResolver valueResolver,
- final VariableContextEntry context,
- final FactHandle left) {
- final String value = (String) ((ObjectVariableContextEntry)
context).right;
- if ( value == null ) {
- return false;
- }
- return ! value.matches( (String)
context.declaration.getExtractor().getValue( valueResolver, left.getObject() )
);
- }
-
- public boolean evaluateCachedLeft(final ValueResolver valueResolver,
- final VariableContextEntry context,
- final FactHandle right) {
- final String value = (String) context.extractor.getValue(
valueResolver, right.getObject() );
- if ( value == null ) {
- return false;
- }
- return ! value.matches( (String) ((ObjectVariableContextEntry)
context).left );
- }
-
- public boolean evaluate(final ValueResolver valueResolver,
- final ReadAccessor extractor1,
- final FactHandle handle1,
- final ReadAccessor extractor2, final
FactHandle handle2) {
- final Object value1 = extractor1.getValue( valueResolver,
handle1.getObject() );
- final Object value2 = extractor2.getValue( valueResolver,
handle2.getObject() );
- if ( value1 == null ) {
- return false;
- }
- return ! ((String) value1).matches( (String) value2 );
- }
-
- public String toString() {
- return "String not matches";
- }
- }
-
-}
diff --git
a/drools-mvel/src/main/java/org/drools/mvel/evaluators/SetEvaluatorsDefinition.java
b/drools-mvel/src/main/java/org/drools/mvel/evaluators/SetEvaluatorsDefinition.java
deleted file mode 100644
index 3b05ed421b..0000000000
---
a/drools-mvel/src/main/java/org/drools/mvel/evaluators/SetEvaluatorsDefinition.java
+++ /dev/null
@@ -1,1565 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.mvel.evaluators;
-
-import java.io.IOException;
-import java.io.ObjectInput;
-import java.io.ObjectOutput;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.Map;
-
-import org.drools.base.base.ValueResolver;
-import org.drools.base.base.ValueType;
-import org.drools.compiler.rule.builder.EvaluatorDefinition;
-import org.drools.drl.parser.impl.Operator;
-import
org.drools.mvel.evaluators.VariableRestriction.ObjectVariableContextEntry;
-import org.drools.mvel.evaluators.VariableRestriction.VariableContextEntry;
-import org.drools.base.rule.accessor.Evaluator;
-import org.drools.base.rule.accessor.FieldValue;
-import org.drools.base.rule.accessor.ReadAccessor;
-import org.kie.api.runtime.rule.FactHandle;
-
-/**
- * This class defines all the set built in evaluators like contains, memberOf,
- * etc.
- */
-public class SetEvaluatorsDefinition
- implements
- EvaluatorDefinition {
-
- protected static final String containsOp =
Operator.BuiltInOperator.CONTAINS.getSymbol();
- protected static final String excludesOp =
Operator.BuiltInOperator.EXCLUDES.getSymbol();
- protected static final String memberOfOp =
Operator.BuiltInOperator.MEMBEROF.getSymbol();
-
- public static final Operator CONTAINS = Operator.determineOperator(
containsOp, false );
- public static final Operator NOT_CONTAINS = Operator.determineOperator(
containsOp, true );
- public static final Operator EXCLUDES = Operator.determineOperator(
excludesOp, false );
- public static final Operator NOT_EXCLUDES = Operator.determineOperator(
excludesOp, true );
- public static final Operator MEMBEROF = Operator.determineOperator(
memberOfOp, false );
- public static final Operator NOT_MEMBEROF = Operator.determineOperator(
memberOfOp, true );
-
- private static String[] SUPPORTED_IDS = new String[] { memberOfOp,
containsOp, excludesOp };
-
- private EvaluatorCache evaluators = new EvaluatorCache() {
- private static final long
serialVersionUID = 510l;
- {
- addEvaluator(
ValueType.ARRAY_TYPE,
- CONTAINS,
-
ArrayContainsEvaluator.INSTANCE );
- addEvaluator(
ValueType.ARRAY_TYPE,
-
NOT_CONTAINS,
-
ArrayExcludesEvaluator.INSTANCE );
- addEvaluator(
ValueType.ARRAY_TYPE,
- EXCLUDES,
-
ArrayExcludesEvaluator.INSTANCE );
- addEvaluator(
ValueType.ARRAY_TYPE,
-
NOT_EXCLUDES,
-
ArrayContainsEvaluator.INSTANCE );
- addEvaluator(
ValueType.BIG_DECIMAL_TYPE,
- MEMBEROF,
-
BigDecimalMemberOfEvaluator.INSTANCE );
- addEvaluator(
ValueType.BIG_DECIMAL_TYPE,
-
NOT_MEMBEROF,
-
BigDecimalNotMemberOfEvaluator.INSTANCE );
- addEvaluator(
ValueType.BIG_INTEGER_TYPE,
- MEMBEROF,
-
BigIntegerMemberOfEvaluator.INSTANCE );
- addEvaluator(
ValueType.BIG_INTEGER_TYPE,
-
NOT_MEMBEROF,
-
BigIntegerNotMemberOfEvaluator.INSTANCE );
- addEvaluator(
ValueType.BOOLEAN_TYPE,
- MEMBEROF,
-
BooleanMemberOfEvaluator.INSTANCE );
- addEvaluator(
ValueType.BOOLEAN_TYPE,
-
NOT_MEMBEROF,
-
BooleanNotMemberOfEvaluator.INSTANCE );
- addEvaluator(
ValueType.PBOOLEAN_TYPE,
- MEMBEROF,
-
BooleanMemberOfEvaluator.INSTANCE );
- addEvaluator(
ValueType.PBOOLEAN_TYPE,
-
NOT_MEMBEROF,
-
BooleanNotMemberOfEvaluator.INSTANCE );
- addEvaluator(
ValueType.BYTE_TYPE,
- MEMBEROF,
-
ByteMemberOfEvaluator.INSTANCE );
- addEvaluator(
ValueType.BYTE_TYPE,
-
NOT_MEMBEROF,
-
ByteNotMemberOfEvaluator.INSTANCE );
- addEvaluator(
ValueType.PBYTE_TYPE,
- MEMBEROF,
-
ByteMemberOfEvaluator.INSTANCE );
- addEvaluator(
ValueType.PBYTE_TYPE,
-
NOT_MEMBEROF,
-
ByteNotMemberOfEvaluator.INSTANCE );
- addEvaluator(
ValueType.CHAR_TYPE,
- MEMBEROF,
-
CharacterMemberOfEvaluator.INSTANCE );
- addEvaluator(
ValueType.CHAR_TYPE,
-
NOT_MEMBEROF,
-
CharacterNotMemberOfEvaluator.INSTANCE );
- addEvaluator(
ValueType.PCHAR_TYPE,
- MEMBEROF,
-
CharacterMemberOfEvaluator.INSTANCE );
- addEvaluator(
ValueType.PCHAR_TYPE,
-
NOT_MEMBEROF,
-
CharacterNotMemberOfEvaluator.INSTANCE );
- addEvaluator(
ValueType.DATE_TYPE,
- MEMBEROF,
-
DateMemberOfEvaluator.INSTANCE );
- addEvaluator(
ValueType.DATE_TYPE,
-
NOT_MEMBEROF,
-
DateNotMemberOfEvaluator.INSTANCE );
- addEvaluator(
ValueType.DOUBLE_TYPE,
- MEMBEROF,
-
DoubleMemberOfEvaluator.INSTANCE );
- addEvaluator(
ValueType.DOUBLE_TYPE,
-
NOT_MEMBEROF,
-
DoubleNotMemberOfEvaluator.INSTANCE );
- addEvaluator(
ValueType.PDOUBLE_TYPE,
- MEMBEROF,
-
DoubleMemberOfEvaluator.INSTANCE );
- addEvaluator(
ValueType.PDOUBLE_TYPE,
-
NOT_MEMBEROF,
-
DoubleNotMemberOfEvaluator.INSTANCE );
- addEvaluator(
ValueType.FLOAT_TYPE,
- MEMBEROF,
-
FloatMemberOfEvaluator.INSTANCE );
- addEvaluator(
ValueType.FLOAT_TYPE,
-
NOT_MEMBEROF,
-
FloatNotMemberOfEvaluator.INSTANCE );
- addEvaluator(
ValueType.PFLOAT_TYPE,
- MEMBEROF,
-
FloatMemberOfEvaluator.INSTANCE );
- addEvaluator(
ValueType.PFLOAT_TYPE,
-
NOT_MEMBEROF,
-
FloatNotMemberOfEvaluator.INSTANCE );
- addEvaluator(
ValueType.INTEGER_TYPE,
- MEMBEROF,
-
IntegerMemberOfEvaluator.INSTANCE );
- addEvaluator(
ValueType.INTEGER_TYPE,
-
NOT_MEMBEROF,
-
IntegerNotMemberOfEvaluator.INSTANCE );
- addEvaluator(
ValueType.PINTEGER_TYPE,
- MEMBEROF,
-
IntegerMemberOfEvaluator.INSTANCE );
- addEvaluator(
ValueType.PINTEGER_TYPE,
-
NOT_MEMBEROF,
-
IntegerNotMemberOfEvaluator.INSTANCE );
- addEvaluator(
ValueType.LONG_TYPE,
- MEMBEROF,
-
LongMemberOfEvaluator.INSTANCE );
- addEvaluator(
ValueType.LONG_TYPE,
-
NOT_MEMBEROF,
-
LongNotMemberOfEvaluator.INSTANCE );
- addEvaluator(
ValueType.PLONG_TYPE,
- MEMBEROF,
-
LongMemberOfEvaluator.INSTANCE );
- addEvaluator(
ValueType.PLONG_TYPE,
-
NOT_MEMBEROF,
-
LongNotMemberOfEvaluator.INSTANCE );
- addEvaluator(
ValueType.OBJECT_TYPE,
- CONTAINS,
-
ObjectContainsEvaluator.INSTANCE );
- addEvaluator(
ValueType.OBJECT_TYPE,
-
NOT_CONTAINS,
-
ObjectExcludesEvaluator.INSTANCE );
- addEvaluator(
ValueType.OBJECT_TYPE,
- EXCLUDES,
-
ObjectExcludesEvaluator.INSTANCE );
- addEvaluator(
ValueType.OBJECT_TYPE,
-
NOT_EXCLUDES,
-
ObjectContainsEvaluator.INSTANCE );
- addEvaluator(
ValueType.OBJECT_TYPE,
- MEMBEROF,
-
ObjectMemberOfEvaluator.INSTANCE );
- addEvaluator(
ValueType.OBJECT_TYPE,
-
NOT_MEMBEROF,
-
ObjectNotMemberOfEvaluator.INSTANCE );
- addEvaluator(
ValueType.SHORT_TYPE,
- MEMBEROF,
-
ShortMemberOfEvaluator.INSTANCE );
- addEvaluator(
ValueType.SHORT_TYPE,
-
NOT_MEMBEROF,
-
ShortNotMemberOfEvaluator.INSTANCE );
- addEvaluator(
ValueType.PSHORT_TYPE,
- MEMBEROF,
-
ShortMemberOfEvaluator.INSTANCE );
- addEvaluator(
ValueType.PSHORT_TYPE,
-
NOT_MEMBEROF,
-
ShortNotMemberOfEvaluator.INSTANCE );
- addEvaluator(
ValueType.STRING_TYPE,
- MEMBEROF,
-
StringMemberOfEvaluator.INSTANCE );
- addEvaluator(
ValueType.STRING_TYPE,
-
NOT_MEMBEROF,
-
StringNotMemberOfEvaluator.INSTANCE );
- }
- };
-
- public void readExternal(ObjectInput in) throws IOException,
- ClassNotFoundException {
- evaluators = (EvaluatorCache) in.readObject();
- }
-
- public void writeExternal(ObjectOutput out) throws IOException {
- out.writeObject( evaluators );
- }
-
- /**
- * @inheridDoc
- */
- public Evaluator getEvaluator(ValueType type,
- Operator operator) {
- return this.evaluators.getEvaluator( type,
- operator );
- }
-
- /**
- * @inheridDoc
- */
- public Evaluator getEvaluator(ValueType type,
- Operator operator,
- String parameterText) {
- return this.evaluators.getEvaluator( type,
- operator );
- }
-
- public Evaluator getEvaluator(final ValueType type,
- final String operatorId,
- final boolean isNegated,
- final String parameterText) {
- return this.getEvaluator( type,
- operatorId,
- isNegated,
- parameterText,
- Target.FACT,
- Target.FACT );
-
- }
-
- /**
- * @inheritDoc
- */
- public Evaluator getEvaluator(final ValueType type,
- final String operatorId,
- final boolean isNegated,
- final String parameterText,
- final Target left,
- final Target right) {
- return this.evaluators.getEvaluator( type,
- Operator.determineOperator(
operatorId,
-
isNegated ) );
- }
-
- public String[] getEvaluatorIds() {
- return SUPPORTED_IDS;
- }
-
- public boolean isNegatable() {
- return true;
- }
-
- public Target getTarget() {
- return Target.FACT;
- }
-
- public boolean supportsType(ValueType type) {
- return this.evaluators.supportsType( type );
- }
-
- private static ObjectArrayContainsEvaluator objectArrayEvaluator = new
ObjectArrayContainsEvaluator();
-
- private static Map<Class, ArrayContains> primitiveArrayEvaluator = new
HashMap() {
- {
-
put( boolean[].class,
-
new BooleanArrayContainsEvaluator() );
-
put( byte[].class,
-
new ByteArrayContainsEvaluator() );
-
put( short[].class,
-
new ShortArrayContainsEvaluator() );
-
put( char[].class,
-
new CharArrayContainsEvaluator() );
-
put( int[].class,
-
new IntegerArrayContainsEvaluator() );
-
put( long[].class,
-
new LongArrayContainsEvaluator() );
-
put( float[].class,
-
new FloatArrayContainsEvaluator() );
-
put( double[].class,
-
new DoubleArrayContainsEvaluator() );
- }
- };
-
- public static ArrayContains getArrayContains(Class cls) {
- ArrayContains eval = primitiveArrayEvaluator.get( cls );
- if ( eval == null ) {
- eval = objectArrayEvaluator;
- }
- return eval;
- }
-
- /*
- * Evaluator Implementations
- */
- public static class ArrayContainsEvaluator extends BaseEvaluator {
-
- private static final long serialVersionUID = 510l;
- public final static Evaluator INSTANCE = new
ArrayContainsEvaluator();
-
- public ArrayContainsEvaluator() {
- super( ValueType.ARRAY_TYPE,
- CONTAINS );
- }
-
- public boolean evaluate(final ValueResolver valueResolver,
- final ReadAccessor extractor,
- final FactHandle handle1,
- final FieldValue fieldValue) {
- final Object array = extractor.getValue( valueResolver,
- handle1.getObject() );
-
- if ( array == null ) return false;
-
- return getArrayContains( array.getClass() ).contains( array,
- fieldValue );
- }
-
- public boolean evaluateCachedRight(final ValueResolver valueResolver,
- final VariableContextEntry context,
- final FactHandle left) {
- final Object array = ((ObjectVariableContextEntry) context).right;
- if ( array == null ) return false;
-
- return getArrayContains( array.getClass() ).contains( array,
-
valueResolver,
-
context.declaration.getExtractor(),
-
left.getObject() );
- }
-
- public boolean evaluateCachedLeft(final ValueResolver valueResolver,
- final VariableContextEntry context,
- final FactHandle right) {
- final Object array = context.extractor.getValue( valueResolver,
- right.getObject()
);
-
- if ( array == null ) return false;
-
- // the original object is passed, as the extractor
- // is used to cast to the correct type for the array comparison
- return getArrayContains( array.getClass() ).contains( array,
-
valueResolver,
-
context.declaration.getExtractor(),
-
context.tuple.getObject( context.declaration ) );
- }
-
- public boolean evaluate(final ValueResolver valueResolver,
- final ReadAccessor extractor1,
- final FactHandle handle1,
- final ReadAccessor extractor2,
- final FactHandle handle2) {
- final Object array = extractor1.getValue( valueResolver,
- handle1.getObject() );
-
- if ( array == null ) return false;
-
- return getArrayContains( array.getClass() ).contains( array,
-
valueResolver,
- extractor2,
-
handle2.getObject() );
- }
-
- public String toString() {
- return "Array contains";
- }
- }
-
- public static class ArrayExcludesEvaluator extends BaseEvaluator {
- private static final long serialVersionUID = 510l;
- public final static Evaluator INSTANCE = new
ArrayExcludesEvaluator();
-
- public ArrayExcludesEvaluator() {
- super( ValueType.ARRAY_TYPE,
- EXCLUDES );
- }
-
- public boolean evaluate(final ValueResolver valueResolver,
- final ReadAccessor extractor,
- final FactHandle handle1,
- final FieldValue fieldValue) {
- final Object array = extractor.getValue( valueResolver,
- handle1.getObject() );
-
- if ( array == null ) return false;
-
- return !getArrayContains( array.getClass() ).contains( array,
- fieldValue
);
- }
-
- public boolean evaluateCachedRight(final ValueResolver valueResolver,
- final VariableContextEntry context,
- final FactHandle left) {
- final Object array = ((ObjectVariableContextEntry) context).right;
- if ( array == null ) return false;
-
- return !getArrayContains( array.getClass() ).contains( array,
-
valueResolver,
-
context.declaration.getExtractor(),
-
left.getObject() );
- }
-
- public boolean evaluateCachedLeft(final ValueResolver valueResolver,
- final VariableContextEntry context,
- final FactHandle right) {
- final Object array = context.extractor.getValue( valueResolver,
- right.getObject()
);
-
- if ( array == null ) return false;
-
- return !getArrayContains( array.getClass() ).contains( array,
-
valueResolver,
-
context.declaration.getExtractor(),
-
context.getTuple().getObject( context.getVariableDeclaration() ) );
- }
-
- public boolean evaluate(final ValueResolver valueResolver,
- final ReadAccessor extractor1,
- final FactHandle handle1,
- final ReadAccessor extractor2,
- final FactHandle handle2) {
- final Object array = extractor1.getValue( valueResolver,
- handle1 .getObject());
-
- if ( array == null ) return false;
-
- return !getArrayContains( array.getClass() ).contains( array,
-
valueResolver,
- extractor2,
-
handle2.getObject() );
- }
-
- public String toString() {
- return "Array not contains";
- }
- }
-
-
- private static boolean contains(Object[] array,
- Object value) {
- for ( int i = 0; i < array.length; i++ ) {
- if ( array[i] == null && value == null || array[i] != null &&
array[i].equals( value ) ) {
- return true;
- }
- }
- return false;
- }
-
- public static abstract class BaseMemberOfEvaluator extends BaseEvaluator {
-
- private static final long serialVersionUID = 510l;
-
- public BaseMemberOfEvaluator() {
- super( null,
- null );
- }
-
- public BaseMemberOfEvaluator(ValueType type,
- Operator operator) {
- super( type,
- operator );
- }
-
- public ValueType getCoercedValueType() {
- // during evaluation, always coerce to object
- return ValueType.OBJECT_TYPE;
- }
-
- public boolean evaluate(final ValueResolver valueResolver,
- final ReadAccessor extractor,
- final FactHandle handle1,
- final FieldValue fieldValue) {
- if ( fieldValue.isNull() ) {
- return false;
- } else if ( fieldValue.isCollectionField() ) {
- final Collection col = (Collection) fieldValue.getValue();
- final Object value = extractor.getValue( valueResolver,
- handle1.getObject() );
- return col.contains( value );
- } else if ( fieldValue.getValue().getClass().isArray() ) {
- return getArrayContains( fieldValue.getValue().getClass()
).contains( fieldValue.getValue(),
-
valueResolver,
-
extractor,
-
handle1.getObject() );
- } else {
- throw new ClassCastException( "Can't check if an attribute is
member of an object of class " + fieldValue.getValue().getClass() );
- }
- }
-
- public boolean evaluateCachedRight(final ValueResolver valueResolver,
- final VariableContextEntry context,
- final FactHandle left) {
- final Object object = context.declaration.getExtractor().getValue(
valueResolver,
-
left.getObject() );
- if ( object == null ) {
- return false;
- } else if ( object instanceof Collection ) {
- final Collection col = (Collection) object;
- final Object value = ((ObjectVariableContextEntry)
context).right;
- return col.contains( value );
- } else if ( object.getClass().isArray() ) {
- return getArrayContains( object.getClass() ).contains( object,
-
valueResolver,
-
context.extractor,
-
context.object );
- } else {
- throw new ClassCastException( "Can't check if an attribute is
member of an object of class " + object.getClass() );
- }
- }
-
- public boolean evaluateCachedLeft(final ValueResolver valueResolver,
- final VariableContextEntry context,
- final FactHandle right) {
- final Object object = ((ObjectVariableContextEntry) context).left;
- if ( object == null ) {
- return false;
- } else if ( object instanceof Collection ) {
- final Collection col = (Collection) object;
- final Object value = context.extractor.getValue( valueResolver,
-
right.getObject() );
- return col.contains( value );
- } else if ( object.getClass().isArray() ) {
- return getArrayContains( object.getClass() ).contains( object,
-
valueResolver,
-
context.extractor,
-
right.getObject() );
- } else {
- throw new ClassCastException( "Can't check if an attribute is
member of an object of class " + object.getClass() );
- }
- }
-
- public boolean evaluate(final ValueResolver valueResolver,
- final ReadAccessor extractor1,
- final FactHandle handle1,
- final ReadAccessor extractor2,
- final FactHandle handle2) {
- final Object object = extractor2.getValue( valueResolver,
- handle2.getObject() );
- if ( object == null ) {
- return false;
- } else if ( object instanceof Collection ) {
- final Collection col = (Collection) object;
- final Object value = extractor1.getValue( valueResolver,
- handle1.getObject()
);
- return col.contains( value );
- } else if ( object.getClass().isArray() ) {
- return getArrayContains( object.getClass() ).contains( object,
-
valueResolver,
-
extractor1,
-
handle1.getObject() );
- } else {
- throw new ClassCastException( "Can't check if an attribute is
member of an object of class " + object.getClass() );
- }
- }
-
- public abstract String toString();
-
- }
-
- public static abstract class BaseNotMemberOfEvaluator extends
BaseEvaluator {
-
- private static final long serialVersionUID = 510l;
-
- public BaseNotMemberOfEvaluator(ValueType type,
- Operator operator) {
- super( type,
- operator );
- }
-
- public BaseNotMemberOfEvaluator() {
- }
-
- public ValueType getCoercedValueType() {
- // during evaluation, always coerce to object
- return ValueType.OBJECT_TYPE;
- }
-
- public boolean evaluate(final ValueResolver valueResolver,
- final ReadAccessor extractor,
- final FactHandle handle1,
- final FieldValue fieldValue) {
- if ( fieldValue.isNull() ) {
- return false;
- } else if ( fieldValue.isCollectionField() ) {
- final Collection col = (Collection) fieldValue.getValue();
- final Object value = extractor.getValue( valueResolver,
- handle1.getObject() );
- return !col.contains( value );
- } else if ( fieldValue.getValue().getClass().isArray() ) {
- return !getArrayContains( fieldValue.getValue().getClass()
).contains( fieldValue.getValue(),
-
valueResolver,
-
extractor,
-
handle1.getObject() );
- } else {
- throw new ClassCastException( "Can't check if an attribute is
not member of an object of class " + fieldValue.getValue().getClass() );
- }
- }
-
- public boolean evaluateCachedRight(final ValueResolver valueResolver,
- final VariableContextEntry context,
- final FactHandle left) {
- final Object object = context.declaration.getExtractor().getValue(
valueResolver,
-
left.getObject() );
- if ( object == null ) {
- return false;
- } else if ( object instanceof Collection ) {
- final Collection col = (Collection) object;
- final Object value = ((ObjectVariableContextEntry)
context).right;
- return !col.contains( value );
- } else if ( object.getClass().isArray() ) {
- // the original object is passed, as the extractor
- // is used to cast to the correct type for the array comparison
- return !getArrayContains( object.getClass() ).contains( object,
-
valueResolver,
-
context.extractor,
-
context.object );
-
- } else {
- throw new ClassCastException( "Can't check if an attribute is
not member of an object of class " + object.getClass() );
- }
- }
-
- public boolean evaluateCachedLeft(final ValueResolver valueResolver,
- final VariableContextEntry context,
- final FactHandle right) {
- final Object object = ((ObjectVariableContextEntry) context).left;
- if ( object == null ) {
- return false;
- } else if ( object instanceof Collection ) {
- final Collection col = (Collection) object;
- final Object value = context.extractor.getValue( valueResolver,
-
right.getObject() );
- return !col.contains( value );
- } else if ( object.getClass().isArray() ) {
- return !getArrayContains( object.getClass() ).contains( object,
-
valueResolver,
-
context.extractor,
-
right.getObject() );
- } else {
- throw new ClassCastException( "Can't check if an attribute is
not member of an object of class " + object.getClass() );
- }
- }
-
- public boolean evaluate(final ValueResolver valueResolver,
- final ReadAccessor extractor1,
- final FactHandle handle1,
- final ReadAccessor extractor2,
- final FactHandle handle2) {
- final Object object = extractor2.getValue( valueResolver,
- handle2.getObject() );
- if ( object == null ) {
- return false;
- } else if ( object instanceof Collection ) {
- final Collection col = (Collection) object;
- final Object value = extractor1.getValue( valueResolver,
- handle1.getObject()
);
- return !col.contains( value );
- } else if ( object.getClass().isArray() ) {
- return !getArrayContains( object.getClass() ).contains( object,
-
valueResolver,
-
extractor1,
-
handle1.getObject() );
- } else {
- throw new ClassCastException( "Can't check if an attribute is
not member of an object of class " + object.getClass() );
- }
-
- }
-
- public abstract String toString();
- }
-
- public static class BigDecimalMemberOfEvaluator extends
BaseMemberOfEvaluator {
-
- private static final long serialVersionUID = 510l;
- public final static Evaluator INSTANCE = new
BigDecimalMemberOfEvaluator();
-
- public BigDecimalMemberOfEvaluator() {
- super( ValueType.BIG_DECIMAL_TYPE,
- MEMBEROF );
- }
-
- public String toString() {
- return "BigDecimal memberOf";
- }
- }
-
- public static class BigDecimalNotMemberOfEvaluator extends
BaseNotMemberOfEvaluator {
-
- private static final long serialVersionUID = 510l;
- public final static Evaluator INSTANCE = new
BigDecimalNotMemberOfEvaluator();
-
- public BigDecimalNotMemberOfEvaluator() {
- super( ValueType.BIG_DECIMAL_TYPE,
- NOT_MEMBEROF );
- }
-
- public String toString() {
- return "BigDecimal not memberOf";
- }
- }
-
- public static class BigIntegerMemberOfEvaluator extends
BaseMemberOfEvaluator {
-
- private static final long serialVersionUID = 510l;
- public final static Evaluator INSTANCE = new
BigIntegerMemberOfEvaluator();
-
- public BigIntegerMemberOfEvaluator() {
- super( ValueType.BIG_INTEGER_TYPE,
- MEMBEROF );
- }
-
- public String toString() {
- return "BigInteger memberOf";
- }
- }
-
- public static class BigIntegerNotMemberOfEvaluator extends
BaseNotMemberOfEvaluator {
- private static final long serialVersionUID = 510l;
- public final static Evaluator INSTANCE = new
BigIntegerNotMemberOfEvaluator();
-
- public BigIntegerNotMemberOfEvaluator() {
- super( ValueType.BIG_INTEGER_TYPE,
- NOT_MEMBEROF );
- }
-
- public String toString() {
- return "BigInteger not memberOf";
- }
- }
-
- public static class BooleanMemberOfEvaluator extends BaseMemberOfEvaluator
{
-
- private static final long serialVersionUID = 510l;
- public final static Evaluator INSTANCE = new
BooleanMemberOfEvaluator();
-
- public BooleanMemberOfEvaluator() {
- super( ValueType.PBOOLEAN_TYPE,
- MEMBEROF );
- }
-
- public String toString() {
- return "Boolean memberOf";
- }
- }
-
- public static class BooleanNotMemberOfEvaluator extends
BaseNotMemberOfEvaluator {
-
- private static final long serialVersionUID = 510l;
- public final static Evaluator INSTANCE = new
BooleanNotMemberOfEvaluator();
-
- public BooleanNotMemberOfEvaluator() {
- super( ValueType.PBOOLEAN_TYPE,
- NOT_MEMBEROF );
- }
-
- public String toString() {
- return "Boolean not memberOf";
- }
- }
-
- public static class ByteMemberOfEvaluator extends BaseMemberOfEvaluator {
-
- private static final long serialVersionUID = 510l;
- public final static Evaluator INSTANCE = new
ByteMemberOfEvaluator();
-
- public ByteMemberOfEvaluator() {
- super( ValueType.PBYTE_TYPE,
- MEMBEROF );
- }
-
- public String toString() {
- return "Byte memberOf";
- }
- }
-
- public static class ByteNotMemberOfEvaluator extends
BaseNotMemberOfEvaluator {
-
- private static final long serialVersionUID = 510l;
- public final static Evaluator INSTANCE = new
ByteNotMemberOfEvaluator();
-
- public ByteNotMemberOfEvaluator() {
- super( ValueType.PBYTE_TYPE,
- NOT_MEMBEROF );
- }
-
- public String toString() {
- return "Byte not memberOf";
- }
- }
-
- public static class CharacterMemberOfEvaluator extends
BaseMemberOfEvaluator {
-
- private static final long serialVersionUID = 510l;
- public final static Evaluator INSTANCE = new
CharacterMemberOfEvaluator();
-
- public CharacterMemberOfEvaluator() {
- super( ValueType.PCHAR_TYPE,
- MEMBEROF );
- }
-
- public String toString() {
- return "Character memberOf";
- }
- }
-
- public static class CharacterNotMemberOfEvaluator extends
BaseNotMemberOfEvaluator {
-
- private static final long serialVersionUID = 510l;
- public final static Evaluator INSTANCE = new
CharacterNotMemberOfEvaluator();
-
- public CharacterNotMemberOfEvaluator() {
- super( ValueType.PCHAR_TYPE,
- NOT_MEMBEROF );
- }
-
- public String toString() {
- return "Character not memberOf";
- }
- }
-
- public static class DateMemberOfEvaluator extends BaseMemberOfEvaluator {
-
- private static final long serialVersionUID = 510l;
- public final static Evaluator INSTANCE = new
DateMemberOfEvaluator();
-
- public DateMemberOfEvaluator() {
- super( ValueType.DATE_TYPE,
- MEMBEROF );
- }
-
- public String toString() {
- return "Date memberOf";
- }
- }
-
- public static class DateNotMemberOfEvaluator extends
BaseNotMemberOfEvaluator {
-
- private static final long serialVersionUID = 510l;
- public final static Evaluator INSTANCE = new
DateNotMemberOfEvaluator();
-
- public DateNotMemberOfEvaluator() {
- super( ValueType.DATE_TYPE,
- NOT_MEMBEROF );
- }
-
- public String toString() {
- return "Date not memberOf";
- }
- }
-
- public static class DoubleMemberOfEvaluator extends BaseMemberOfEvaluator {
-
- private static final long serialVersionUID = 510l;
- public final static Evaluator INSTANCE = new
DoubleMemberOfEvaluator();
-
- public DoubleMemberOfEvaluator() {
- super( ValueType.PDOUBLE_TYPE,
- MEMBEROF );
- }
-
- public String toString() {
- return "Double memberOf";
- }
- }
-
- public static class DoubleNotMemberOfEvaluator extends
BaseNotMemberOfEvaluator {
-
- private static final long serialVersionUID = 510l;
- public final static Evaluator INSTANCE = new
DoubleNotMemberOfEvaluator();
-
- public DoubleNotMemberOfEvaluator() {
- super( ValueType.PDOUBLE_TYPE,
- NOT_MEMBEROF );
- }
-
- public String toString() {
- return "Double not memberOf";
- }
- }
-
- public static class FloatMemberOfEvaluator extends BaseMemberOfEvaluator {
-
- private static final long serialVersionUID = 510l;
- public final static Evaluator INSTANCE = new
FloatMemberOfEvaluator();
-
- public FloatMemberOfEvaluator() {
- super( ValueType.PFLOAT_TYPE,
- MEMBEROF );
- }
-
- public String toString() {
- return "Float memberOf";
- }
- }
-
- public static class FloatNotMemberOfEvaluator extends
BaseNotMemberOfEvaluator {
-
- private static final long serialVersionUID = 510l;
- public final static Evaluator INSTANCE = new
FloatNotMemberOfEvaluator();
-
- public FloatNotMemberOfEvaluator() {
- super( ValueType.PFLOAT_TYPE,
- NOT_MEMBEROF );
- }
-
- public String toString() {
- return "Float not memberOf";
- }
- }
-
- public static class IntegerMemberOfEvaluator extends BaseMemberOfEvaluator
{
-
- private static final long serialVersionUID = 510l;
- public final static Evaluator INSTANCE = new
IntegerMemberOfEvaluator();
-
- public IntegerMemberOfEvaluator() {
- super( ValueType.PINTEGER_TYPE,
- MEMBEROF );
- }
-
- public String toString() {
- return "Integer memberOf";
- }
- }
-
- public static class IntegerNotMemberOfEvaluator extends
BaseNotMemberOfEvaluator {
-
- private static final long serialVersionUID = 510l;
- public final static Evaluator INSTANCE = new
IntegerNotMemberOfEvaluator();
-
- public IntegerNotMemberOfEvaluator() {
- super( ValueType.PINTEGER_TYPE,
- NOT_MEMBEROF );
- }
-
- public String toString() {
- return "Integer not memberOf";
- }
- }
-
- public static class LongMemberOfEvaluator extends BaseMemberOfEvaluator {
-
- private static final long serialVersionUID = 510l;
- public final static Evaluator INSTANCE = new
LongMemberOfEvaluator();
-
- public LongMemberOfEvaluator() {
- super( ValueType.PLONG_TYPE,
- MEMBEROF );
- }
-
- public String toString() {
- return "Long memberOf";
- }
- }
-
- public static class LongNotMemberOfEvaluator extends
BaseNotMemberOfEvaluator {
-
- private static final long serialVersionUID = 510l;
- public final static Evaluator INSTANCE = new
LongNotMemberOfEvaluator();
-
- public LongNotMemberOfEvaluator() {
- super( ValueType.PLONG_TYPE,
- NOT_MEMBEROF );
- }
-
- public String toString() {
- return "Long not memberOf";
- }
- }
-
- public static class ObjectContainsEvaluator extends BaseEvaluator {
- private static final long serialVersionUID = 510l;
- public final static Evaluator INSTANCE = new
ObjectContainsEvaluator();
-
- public ObjectContainsEvaluator() {
- super( ValueType.OBJECT_TYPE,
- CONTAINS );
- }
-
- public boolean evaluate(final ValueResolver valueResolver,
- final ReadAccessor extractor,
- final FactHandle handle1,
- final FieldValue fieldValue) {
- final Object value = fieldValue.getValue();
- final Collection col = (Collection) extractor.getValue(
valueResolver,
-
handle1.getObject() );
- return (col == null) ? false : col.contains( value );
- }
-
- public boolean evaluateCachedRight(final ValueResolver valueResolver,
- final VariableContextEntry context,
- final FactHandle left) {
- final Object value = context.declaration.getExtractor().getValue(
valueResolver,
-
left.getObject() );
- final Collection col = (Collection) ((ObjectVariableContextEntry)
context).right;
- return (col == null) ? false : col.contains( value );
- }
-
- public boolean evaluateCachedLeft(final ValueResolver valueResolver,
- final VariableContextEntry context,
- final FactHandle right) {
- final Object value = ((ObjectVariableContextEntry) context).left;
- final Collection col = (Collection) context.extractor.getValue(
valueResolver,
-
right.getObject() );
- return (col == null) ? false : col.contains( value );
- }
-
- public boolean evaluate(final ValueResolver valueResolver,
- final ReadAccessor extractor1,
- final FactHandle handle1,
- final ReadAccessor extractor2,
- final FactHandle handle2) {
- final Object value = extractor2.getValue( valueResolver,
- handle2.getObject() );
- final Collection col = (Collection) extractor1.getValue(
valueResolver,
-
handle1.getObject() );
- return (col == null) ? false : col.contains( value );
- }
-
- public String toString() {
- return "Object contains";
- }
- }
-
- public static class ObjectExcludesEvaluator extends BaseEvaluator {
- private static final long serialVersionUID = 510l;
- public final static Evaluator INSTANCE = new
ObjectExcludesEvaluator();
-
- public ObjectExcludesEvaluator() {
- super( ValueType.OBJECT_TYPE,
- EXCLUDES );
- }
-
- public boolean evaluate(final ValueResolver valueResolver,
- final ReadAccessor extractor,
- final FactHandle handle1,
- final FieldValue fieldValue) {
- final Object value = fieldValue.getValue();
- final Collection col = (Collection) extractor.getValue(
valueResolver,
-
handle1.getObject() );
- return (col == null) ? true : !col.contains( value );
- }
-
- public boolean evaluateCachedRight(final ValueResolver valueResolver,
- final VariableContextEntry context,
- final FactHandle left) {
- final Object value = context.declaration.getExtractor().getValue(
valueResolver,
-
left.getObject() );
- final Collection col = (Collection) ((ObjectVariableContextEntry)
context).right;
- return (col == null) ? true : !col.contains( value );
- }
-
- public boolean evaluateCachedLeft(final ValueResolver valueResolver,
- final VariableContextEntry context,
- final FactHandle right) {
- final Object value = ((ObjectVariableContextEntry) context).left;
- final Collection col = (Collection) context.extractor.getValue(
valueResolver,
-
right.getObject() );
- return (col == null) ? true : !col.contains( value );
- }
-
- public boolean evaluate(final ValueResolver valueResolver,
- final ReadAccessor extractor1,
- final FactHandle handle1,
- final ReadAccessor extractor2,
- final FactHandle handle2) {
- final Object value = extractor2.getValue( valueResolver,
- handle2.getObject() );
- final Collection col = (Collection) extractor1.getValue(
valueResolver,
-
handle1.getObject() );
- return (col == null) ? true : !col.contains( value );
- }
-
- public String toString() {
- return "Object excludes";
- }
- }
-
- public static class ObjectMemberOfEvaluator extends BaseMemberOfEvaluator {
-
- private static final long serialVersionUID = 510l;
- public final static Evaluator INSTANCE = new
ObjectMemberOfEvaluator();
-
- public ObjectMemberOfEvaluator() {
- super( ValueType.OBJECT_TYPE,
- MEMBEROF );
- }
-
- public String toString() {
- return "Object memberOf";
- }
- }
-
- public static class ObjectNotMemberOfEvaluator extends
BaseNotMemberOfEvaluator {
-
- private static final long serialVersionUID = 510l;
- public final static Evaluator INSTANCE = new
ObjectNotMemberOfEvaluator();
-
- public ObjectNotMemberOfEvaluator() {
- super( ValueType.OBJECT_TYPE,
- NOT_MEMBEROF );
- }
-
- public String toString() {
- return "Object not memberOf";
- }
- }
-
- public static class ShortMemberOfEvaluator extends BaseMemberOfEvaluator {
-
- private static final long serialVersionUID = 510l;
- public final static Evaluator INSTANCE = new
ShortMemberOfEvaluator();
-
- public ShortMemberOfEvaluator() {
- super( ValueType.PSHORT_TYPE,
- MEMBEROF );
- }
-
- public String toString() {
- return "Short memberOf";
- }
- }
-
- public static class ShortNotMemberOfEvaluator extends
BaseNotMemberOfEvaluator {
-
- private static final long serialVersionUID = 510l;
- public final static Evaluator INSTANCE = new
ShortNotMemberOfEvaluator();
-
- public ShortNotMemberOfEvaluator() {
- super( ValueType.PSHORT_TYPE,
- NOT_MEMBEROF );
- }
-
- public String toString() {
- return "Short not memberOf";
- }
- }
-
- public static class StringMemberOfEvaluator extends BaseMemberOfEvaluator {
-
- private static final long serialVersionUID = 510l;
- public final static Evaluator INSTANCE = new
StringMemberOfEvaluator();
-
- public StringMemberOfEvaluator() {
- super( ValueType.STRING_TYPE,
- MEMBEROF );
- }
-
- public String toString() {
- return "String memberOf";
- }
- }
-
- public static class StringNotMemberOfEvaluator extends
BaseNotMemberOfEvaluator {
-
- private static final long serialVersionUID = 510l;
- public final static Evaluator INSTANCE = new
StringNotMemberOfEvaluator();
-
- public StringNotMemberOfEvaluator() {
- super( ValueType.STRING_TYPE,
- NOT_MEMBEROF );
- }
-
- public String toString() {
- return "String not memberOf";
- }
- }
-
- public interface ArrayContains {
- Class getArrayType();
-
- boolean contains(Object array,
- FieldValue value);
-
- boolean contains(Object array,
- ValueResolver valueResolver,
- ReadAccessor accessor,
- Object object);
- //
- // boolean member(FieldValue array,
- // Object object);
- //
- // boolean member(Object object,
- // ReteEvaluator reteEvaluator,
- // ReadAccessor accessor,
- // Object array);
- }
-
- public static class BooleanArrayContainsEvaluator
- implements
- ArrayContains {
-
- public boolean contains(Object array,
- FieldValue value) {
- boolean[] boolArray = (boolean[]) array;
-
- for ( int i = 0, length = boolArray.length; i < length; i++ ) {
- if ( boolArray[i] == value.getBooleanValue() ) {
- return true;
- }
- }
-
- return false;
- }
-
- public boolean contains(Object array,
- ValueResolver valueResolver,
- ReadAccessor accessor,
- Object object) {
- boolean[] boolArray = (boolean[]) array;
-
- for ( int i = 0, length = boolArray.length; i < length; i++ ) {
- if ( boolArray[i] == accessor.getBooleanValue( valueResolver,
- object ) ) {
- return true;
- }
- }
-
- return false;
- }
-
- public Class getArrayType() {
- return boolean[].class;
- }
-
- }
-
- public static class ByteArrayContainsEvaluator
- implements
- ArrayContains {
-
- public boolean contains(Object array,
- FieldValue value) {
- return contains( (byte[]) array,
- value.getByteValue() );
- }
-
- public boolean contains(Object array,
- ValueResolver valueResolver,
- ReadAccessor accessor,
- Object object) {
- return contains( (byte[]) array,
- accessor.getByteValue( valueResolver,
- object ) );
- }
-
- private boolean contains(byte[] array,
- byte value) {
- for ( int i = 0, length = array.length; i < length; i++ ) {
- if ( array[i] == value ) {
- return true;
- }
- }
-
- return false;
- }
-
- public Class getArrayType() {
- return byte[].class;
- }
-
- }
-
- public static class ShortArrayContainsEvaluator
- implements
- ArrayContains {
-
- public boolean contains(Object array,
- FieldValue value) {
- return contains( (short[]) array,
- value.getShortValue() );
- }
-
- public boolean contains(Object array,
- ValueResolver valueResolver,
- ReadAccessor accessor,
- Object object) {
- return contains( (short[]) array,
- accessor.getShortValue( valueResolver,
- object ) );
- }
-
- private boolean contains(short[] array,
- short value) {
- for ( int i = 0, length = array.length; i < length; i++ ) {
- if ( array[i] == value ) {
- return true;
- }
- }
-
- return false;
- }
-
- public Class getArrayType() {
- return short[].class;
- }
- }
-
- public static class CharArrayContainsEvaluator
- implements
- ArrayContains {
-
- public boolean contains(Object array,
- FieldValue value) {
- return contains( (char[]) array,
- value.getCharValue() );
- }
-
- public boolean contains(Object array,
- ValueResolver valueResolver,
- ReadAccessor accessor,
- Object object) {
- return contains( (char[]) array,
- accessor.getCharValue( valueResolver,
- object ) );
- }
-
- private boolean contains(char[] array,
- char value) {
- for ( int i = 0, length = array.length; i < length; i++ ) {
- if ( array[i] == value ) {
- return true;
- }
- }
-
- return false;
- }
-
- public Class getArrayType() {
- return char[].class;
- }
-
- }
-
- public static class IntegerArrayContainsEvaluator
- implements
- ArrayContains {
-
- public boolean contains(Object array,
- FieldValue value) {
- return contains( (int[]) array,
- value.getIntValue() );
- }
-
- public boolean contains(Object array,
- ValueResolver valueResolver,
- ReadAccessor accessor,
- Object object) {
- return contains( (int[]) array,
- accessor.getIntValue( valueResolver,
- object ) );
- }
-
- private boolean contains(int[] array,
- int value) {
- for ( int i = 0, length = array.length; i < length; i++ ) {
- if ( array[i] == value ) {
- return true;
- }
- }
-
- return false;
- }
-
- public Class getArrayType() {
- return int[].class;
- }
-
- }
-
- public static class LongArrayContainsEvaluator
- implements
- ArrayContains {
-
- public boolean contains(Object array,
- FieldValue value) {
- return contains( (long[]) array,
- value.getLongValue() );
- }
-
- public boolean contains(Object array,
- ValueResolver valueResolver,
- ReadAccessor accessor,
- Object object) {
- return contains( (long[]) array,
- accessor.getLongValue( valueResolver,
- object ) );
- }
-
- private boolean contains(long[] array,
- long value) {
- for ( int i = 0, length = array.length; i < length; i++ ) {
- if ( array[i] == value ) {
- return true;
- }
- }
-
- return false;
- }
-
- public Class getArrayType() {
- return long[].class;
- }
-
- }
-
- public static class FloatArrayContainsEvaluator
- implements
- ArrayContains {
-
- public boolean contains(Object array,
- FieldValue value) {
- return contains( (float[]) array,
- value.getFloatValue() );
- }
-
- public boolean contains(Object array,
- ValueResolver valueResolver,
- ReadAccessor accessor,
- Object object) {
- return contains( (float[]) array,
- accessor.getFloatValue( valueResolver,
- object ) );
- }
-
- private boolean contains(float[] array,
- float value) {
- for ( int i = 0, length = array.length; i < length; i++ ) {
- if ( array[i] == value ) {
- return true;
- }
- }
-
- return false;
- }
-
- public Class getArrayType() {
- return float[].class;
- }
- }
-
- public static class DoubleArrayContainsEvaluator
- implements
- ArrayContains {
-
- public boolean contains(Object array,
- FieldValue fieldValue) {
- return contains( (double[]) array,
- fieldValue.getDoubleValue() );
- }
-
- public boolean contains(Object array,
- ValueResolver valueResolver,
- ReadAccessor accessor,
- Object object) {
- return contains( (double[]) array,
- accessor.getDoubleValue( valueResolver,
- object ) );
- }
-
- // public boolean member(FieldValue array,
- // Object object) {
- // return contains( (double[]) array.getValue(),
- // object );
- // }
- //
- // public boolean member(Object object,
- // ReteEvaluator reteEvaluator,
- // ReadAccessor accessor,
- // Object array) {
- // return contains( (double[]) accessor.getValue( reteEvaluator,
- // object ),
- // object );
- // }
-
- private boolean contains(double[] array,
- double value) {
- for ( int i = 0, length = array.length; i < length; i++ ) {
- if ( array[i] == value ) {
- return true;
- }
- }
-
- return false;
- }
-
- public Class getArrayType() {
- return double[].class;
- }
- }
-
- public static class ObjectArrayContainsEvaluator
- implements
- ArrayContains {
-
- public boolean contains(Object array,
- FieldValue fieldValue) {
- return contains( (Object[]) array,
- fieldValue.getValue() );
- }
-
- public boolean contains(Object array,
- ValueResolver valueResolver,
- ReadAccessor accessor,
- Object object) {
- return contains( (Object[]) array,
- accessor.getValue( valueResolver,
- object ) );
- }
-
- private boolean contains(Object[] array,
- Object value) {
- for ( int i = 0, length = array.length; i < length; i++ ) {
- if ( array[i].equals( value ) ) {
- return true;
- }
- }
-
- return false;
- }
-
- public Class getArrayType() {
- return Object[].class;
- }
-
- // public boolean member(FieldValue array,
- // Object object) {
- // return contains( (Object[]) array.getValue(),
- // object );
- // }
- //
- // public boolean member(Object object,
- // ReteEvaluator reteEvaluator,
- // ReadAccessor accessor,
- // Object array) {
- // return contains( (Object[]) accessor.getValue( reteEvaluator,
- // object ),
- // object );
- // }
- }
-}
diff --git
a/drools-mvel/src/main/resources/META-INF/kie.default.mvel.properties.conf
b/drools-mvel/src/main/resources/META-INF/kie.default.mvel.properties.conf
index 3a7fb05059..8c34723e3f 100644
--- a/drools-mvel/src/main/resources/META-INF/kie.default.mvel.properties.conf
+++ b/drools-mvel/src/main/resources/META-INF/kie.default.mvel.properties.conf
@@ -30,6 +30,4 @@ drools.evaluator.starts =
org.drools.mvel.evaluators.StartsEvaluatorDefinition
drools.evaluator.startedby =
org.drools.mvel.evaluators.StartedByEvaluatorDefinition
drools.evaluator.finishes =
org.drools.mvel.evaluators.FinishesEvaluatorDefinition
drools.evaluator.finishedby =
org.drools.mvel.evaluators.FinishedByEvaluatorDefinition
-drools.evaluator.set = org.drools.mvel.evaluators.SetEvaluatorsDefinition
-drools.evaluator.matches =
org.drools.mvel.evaluators.MatchesEvaluatorsDefinition
drools.evaluator.soundslike =
org.drools.mvel.evaluators.SoundslikeEvaluatorsDefinition
diff --git
a/drools-test-coverage/test-compiler-integration/src/test/java/org/drools/mvel/compiler/lang/DescrDumperTest.java
b/drools-test-coverage/test-compiler-integration/src/test/java/org/drools/mvel/compiler/lang/DescrDumperTest.java
index 74bca200bb..6c4788e9f8 100644
---
a/drools-test-coverage/test-compiler-integration/src/test/java/org/drools/mvel/compiler/lang/DescrDumperTest.java
+++
b/drools-test-coverage/test-compiler-integration/src/test/java/org/drools/mvel/compiler/lang/DescrDumperTest.java
@@ -25,8 +25,6 @@ import org.drools.drl.ast.descr.AtomicExprDescr;
import org.drools.drl.ast.descr.BindingDescr;
import org.drools.drl.ast.descr.ConstraintConnectiveDescr;
import org.drools.drl.parser.DrlExprParserFactory;
-import org.drools.mvel.evaluators.MatchesEvaluatorsDefinition;
-import org.drools.mvel.evaluators.SetEvaluatorsDefinition;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;
@@ -40,9 +38,6 @@ public class DescrDumperTest {
@BeforeEach
public void setUp() throws Exception {
- // configure operators
- new SetEvaluatorsDefinition();
- new MatchesEvaluatorsDefinition();
dumper = new DescrDumper();
}
diff --git
a/drools-verifier/drools-verifier-drl/src/main/resources/org/drools/verifier/missingEquality/MissingEquality.drl
b/drools-verifier/drools-verifier-drl/src/main/resources/org/drools/verifier/missingEquality/MissingEquality.drl
index 64d0658eef..baf78bb1f3 100644
---
a/drools-verifier/drools-verifier-drl/src/main/resources/org/drools/verifier/missingEquality/MissingEquality.drl
+++
b/drools-verifier/drools-verifier-drl/src/main/resources/org/drools/verifier/missingEquality/MissingEquality.drl
@@ -22,7 +22,6 @@ package org.drools.verifier.missingEquality
//list any import classes here.
import org.drools.drl.parser.impl.Operator;
-import org.drools.mvel.evaluators.MatchesEvaluatorsDefinition;
import org.drools.verifier.components.VariableRestriction;
import org.drools.verifier.components.LiteralRestriction;
@@ -81,25 +80,25 @@ rule "Missing restriction in LiteralRestrictions"
//
) or (
$r :LiteralRestriction(
- operator == MatchesEvaluatorsDefinition.MATCHES,
+ operator == Operator.determineOperator("matches", false),
valueAsString == $r.valueAsString
)
and
not LiteralRestriction(
fieldPath == $r.fieldPath,
- operator == MatchesEvaluatorsDefinition.NOT_MATCHES,
+ operator == Operator.determineOperator("matches", true),
patternIsNot == $r.patternIsNot,
valueAsString == $r.valueAsString
)
) or (
$r :LiteralRestriction(
- operator == MatchesEvaluatorsDefinition.NOT_MATCHES,
+ operator == Operator.determineOperator("matches", true),
valueAsString == $r.valueAsString
)
and
not LiteralRestriction(
fieldPath == $r.fieldPath,
- operator == MatchesEvaluatorsDefinition.MATCHES,
+ operator == Operator.determineOperator("matches", false),
patternIsNot == $r.patternIsNot,
valueAsString == $r.valueAsString
)
diff --git
a/drools-verifier/drools-verifier-drl/src/main/resources/org/drools/verifier/optimisation/RestrictionOrder.drl
b/drools-verifier/drools-verifier-drl/src/main/resources/org/drools/verifier/optimisation/RestrictionOrder.drl
index e911f6580f..17f3b43421 100644
---
a/drools-verifier/drools-verifier-drl/src/main/resources/org/drools/verifier/optimisation/RestrictionOrder.drl
+++
b/drools-verifier/drools-verifier-drl/src/main/resources/org/drools/verifier/optimisation/RestrictionOrder.drl
@@ -25,7 +25,6 @@ import java.util.Collection;
import java.util.ArrayList;
import org.drools.drl.parser.impl.Operator;
-import org.drools.mvel.evaluators.MatchesEvaluatorsDefinition;
import org.drools.verifier.components.SubPattern;
import org.drools.verifier.components.Restriction;
@@ -63,14 +62,14 @@ rule "Optimise restrictions inside operator"
(
$r1 :Restriction(
this memberOf $sp.items,
- ( operator == Operator.BuiltInOperator.EQUAL.getOperator()
|| == MatchesEvaluatorsDefinition.MATCHES )
+ ( operator == Operator.BuiltInOperator.EQUAL.getOperator()
|| == Operator.determineOperator("matches", false) )
)
and
$r2 :Restriction(
this memberOf $sp.items,
path != $r1.path,
orderNumber < $r1.orderNumber,
- ( operator ==
Operator.BuiltInOperator.GREATER.getOperator() || ==
Operator.BuiltInOperator.LESS.getOperator() || ==
Operator.BuiltInOperator.GREATER_OR_EQUAL.getOperator() || ==
Operator.BuiltInOperator.LESS_OR_EQUAL.getOperator() || ==
MatchesEvaluatorsDefinition.NOT_MATCHES || ==
Operator.BuiltInOperator.NOT_EQUAL.getOperator() )
+ ( operator ==
Operator.BuiltInOperator.GREATER.getOperator() || ==
Operator.BuiltInOperator.LESS.getOperator() || ==
Operator.BuiltInOperator.GREATER_OR_EQUAL.getOperator() || ==
Operator.BuiltInOperator.LESS_OR_EQUAL.getOperator() || ==
Operator.determineOperator("matches", true) || ==
Operator.BuiltInOperator.NOT_EQUAL.getOperator() )
)
) or (
$r1 :Restriction(
@@ -82,7 +81,7 @@ rule "Optimise restrictions inside operator"
this memberOf $sp.items,
path != $r1.path,
orderNumber < $r1.orderNumber,
- ( operator ==
Operator.BuiltInOperator.GREATER_OR_EQUAL.getOperator() || ==
Operator.BuiltInOperator.LESS_OR_EQUAL.getOperator() || ==
MatchesEvaluatorsDefinition.NOT_MATCHES || ==
Operator.BuiltInOperator.NOT_EQUAL.getOperator() )
+ ( operator ==
Operator.BuiltInOperator.GREATER_OR_EQUAL.getOperator() || ==
Operator.BuiltInOperator.LESS_OR_EQUAL.getOperator() || ==
Operator.determineOperator("matches", true) || ==
Operator.BuiltInOperator.NOT_EQUAL.getOperator() )
)
) or (
$r1 :Restriction(
@@ -94,7 +93,7 @@ rule "Optimise restrictions inside operator"
this memberOf $sp.items,
path != $r1.path,
orderNumber < $r1.orderNumber,
- ( operator == MatchesEvaluatorsDefinition.NOT_MATCHES ||
== Operator.BuiltInOperator.NOT_EQUAL.getOperator() )
+ ( operator == Operator.determineOperator("matches", true)
|| == Operator.BuiltInOperator.NOT_EQUAL.getOperator() )
)
)
@@ -130,7 +129,7 @@ rule "Optimise restrictions inside constraint"
when
(
$r1 :Restriction(
- ( operator == Operator.BuiltInOperator.EQUAL.getOperator()
|| == MatchesEvaluatorsDefinition.MATCHES )
+ ( operator == Operator.BuiltInOperator.EQUAL.getOperator()
|| == Operator.determineOperator("matches", false) )
)
and
$r2 :Restriction(
@@ -141,7 +140,7 @@ rule "Optimise restrictions inside constraint"
== Operator.BuiltInOperator.LESS.getOperator()
||
==
Operator.BuiltInOperator.GREATER_OR_EQUAL.getOperator() ||
==
Operator.BuiltInOperator.LESS_OR_EQUAL.getOperator() ||
- == MatchesEvaluatorsDefinition.NOT_MATCHES ||
+ == Operator.determineOperator("matches", true)
||
==
Operator.BuiltInOperator.NOT_EQUAL.getOperator() )
)
) or (
@@ -156,7 +155,7 @@ rule "Optimise restrictions inside constraint"
orderNumber < $r1.orderNumber,
( operator ==
Operator.BuiltInOperator.GREATER_OR_EQUAL.getOperator() ||
==
Operator.BuiltInOperator.LESS_OR_EQUAL.getOperator() ||
- == MatchesEvaluatorsDefinition.NOT_MATCHES ||
+ == Operator.determineOperator("matches", true)
||
==
Operator.BuiltInOperator.NOT_EQUAL.getOperator() )
)
)
@@ -169,7 +168,7 @@ rule "Optimise restrictions inside constraint"
parentPath == $r1.parentPath,
parentType == $r1.parentType,
orderNumber < $r1.orderNumber,
- ( operator == MatchesEvaluatorsDefinition.NOT_MATCHES ||
== Operator.BuiltInOperator.NOT_EQUAL.getOperator() )
+ ( operator == Operator.determineOperator("matches", true)
|| == Operator.BuiltInOperator.NOT_EQUAL.getOperator() )
)
)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]