diff --git a/drools-alphanetwork-compiler/src/test/java/org/drools/ancompiler/BaseModelTest.java b/drools-alphanetwork-compiler/src/test/java/org/drools/ancompiler/BaseModelTest.java index d2d88b3200a..a12810095f0 100644 --- a/drools-alphanetwork-compiler/src/test/java/org/drools/ancompiler/BaseModelTest.java +++ b/drools-alphanetwork-compiler/src/test/java/org/drools/ancompiler/BaseModelTest.java @@ -37,7 +37,6 @@ import org.kie.api.builder.Message; import org.kie.api.builder.ReleaseId; import org.kie.api.builder.model.KieModuleModel; -import org.kie.api.runtime.ClassObjectFilter; import org.kie.api.runtime.KieContainer; import org.kie.api.runtime.KieSession; import org.kie.internal.builder.conf.AlphaNetworkCompilerOption; @@ -157,7 +156,7 @@ protected KieModuleModel getDefaultKieModuleModel( KieServices ks ) { } public static List getObjectsIntoList(KieSession ksession, Class clazz) { - return (List) ksession.getObjects(new ClassObjectFilter(clazz)).stream().collect(Collectors.toList()); + return ksession.getInstancesOf(clazz).stream().collect(Collectors.toList()); } protected void createAndDeployJar( KieServices ks, ReleaseId releaseId, String... drls ) { diff --git a/drools-core/src/main/java/org/drools/core/ClassObjectFilter.java b/drools-core/src/main/java/org/drools/core/ClassObjectFilter.java deleted file mode 100644 index ad7e228fbef..00000000000 --- a/drools-core/src/main/java/org/drools/core/ClassObjectFilter.java +++ /dev/null @@ -1,32 +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.core; - - -/** - * Filters Objects by Class, only accepting Classes of the specified type - */ -public class ClassObjectFilter extends org.kie.api.runtime.ClassObjectFilter { - - public ClassObjectFilter(Class clazz) { - super( clazz ); - } - - -} diff --git a/drools-core/src/main/java/org/drools/core/process/ProcessContext.java b/drools-core/src/main/java/org/drools/core/process/ProcessContext.java index f31dd9538d8..f866cd609d9 100644 --- a/drools-core/src/main/java/org/drools/core/process/ProcessContext.java +++ b/drools-core/src/main/java/org/drools/core/process/ProcessContext.java @@ -20,7 +20,7 @@ import java.util.Collection; -import org.drools.core.ClassObjectFilter; +import org.kie.api.runtime.ClassObjectFilter; import org.kie.api.runtime.KieRuntime; import org.kie.api.runtime.process.CaseAssignment; import org.kie.api.runtime.process.CaseData; diff --git a/drools-model/drools-model-codegen/src/test/java/org/drools/model/codegen/execmodel/BaseModelTest.java b/drools-model/drools-model-codegen/src/test/java/org/drools/model/codegen/execmodel/BaseModelTest.java index 5c5e4bd5c58..5d99cc628fe 100644 --- a/drools-model/drools-model-codegen/src/test/java/org/drools/model/codegen/execmodel/BaseModelTest.java +++ b/drools-model/drools-model-codegen/src/test/java/org/drools/model/codegen/execmodel/BaseModelTest.java @@ -37,16 +37,15 @@ import org.kie.api.builder.Message; import org.kie.api.builder.ReleaseId; import org.kie.api.builder.model.KieModuleModel; -import org.kie.api.runtime.ClassObjectFilter; import org.kie.api.runtime.KieContainer; import org.kie.api.runtime.KieSession; import org.kie.internal.builder.conf.AlphaNetworkCompilerOption; import static java.util.Arrays.asList; +import static org.assertj.core.api.Assertions.fail; import static org.drools.model.codegen.execmodel.BaseModelTest.RUN_TYPE.PATTERN_DSL; import static org.drools.model.codegen.execmodel.BaseModelTest.RUN_TYPE.PATTERN_WITH_ALPHA_NETWORK; import static org.drools.model.codegen.execmodel.BaseModelTest.RUN_TYPE.STANDARD_WITH_ALPHA_NETWORK; -import static org.assertj.core.api.Assertions.fail; @RunWith(Parameterized.class) public abstract class BaseModelTest { @@ -168,7 +167,7 @@ protected KieModuleModel getDefaultKieModuleModel( KieServices ks ) { } public static List getObjectsIntoList(KieSession ksession, Class clazz) { - return (List) ksession.getObjects(new ClassObjectFilter(clazz)).stream().collect(Collectors.toList()); + return ksession.getInstancesOf(clazz).stream().collect(Collectors.toList()); } protected void createAndDeployJar( KieServices ks, ReleaseId releaseId, String... drls ) { diff --git a/drools-model/drools-model-compiler/src/test/java/org/drools/modelcompiler/PatternDSLTest.java b/drools-model/drools-model-compiler/src/test/java/org/drools/modelcompiler/PatternDSLTest.java index 2425eed5cca..bb7f803825f 100644 --- a/drools-model/drools-model-compiler/src/test/java/org/drools/modelcompiler/PatternDSLTest.java +++ b/drools-model/drools-model-compiler/src/test/java/org/drools/modelcompiler/PatternDSLTest.java @@ -376,9 +376,8 @@ public void testQueryInRule() { ksession.fireAllRules(); - Collection results = (Collection) ksession.getObjects( new ClassObjectFilter( Result.class ) ); - assertThat(results.size()).isEqualTo(1); - assertThat(results.iterator().next().getValue()).isEqualTo("Mario"); + Result result = ksession.getSingleInstanceOf( Result.class ); + assertThat(result.getValue()).isEqualTo("Mario"); } @Test @@ -1132,6 +1131,6 @@ public void test2AccsWithGetObjectsDeep() throws Exception { } public static List getObjectsIntoList(KieSession ksession, Class clazz) { - return (List) ksession.getObjects(new ClassObjectFilter(clazz)).stream().collect(Collectors.toList()); + return ksession.getInstancesOf(clazz).stream().collect(Collectors.toList()); } } diff --git a/drools-reliability/drools-reliability-tests/src/test/java/org/drools/reliability/test/ReliabilityTestBasics.java b/drools-reliability/drools-reliability-tests/src/test/java/org/drools/reliability/test/ReliabilityTestBasics.java index cefcf88e4df..c4c52e54ba6 100644 --- a/drools-reliability/drools-reliability-tests/src/test/java/org/drools/reliability/test/ReliabilityTestBasics.java +++ b/drools-reliability/drools-reliability-tests/src/test/java/org/drools/reliability/test/ReliabilityTestBasics.java @@ -26,7 +26,7 @@ import java.util.concurrent.TimeUnit; import java.util.stream.Stream; -import org.drools.core.ClassObjectFilter; +import org.kie.api.runtime.ClassObjectFilter; import org.drools.kiesession.session.StatefulKnowledgeSessionImpl; import org.drools.model.Model; import org.drools.model.codegen.ExecutableModelProject; @@ -431,7 +431,7 @@ protected Optional getPersonByName(String name) { } protected Optional getPersonByName(KieSession kieSession, String name) { - return kieSession.getObjects(new ClassObjectFilter(Person.class)) + return kieSession.getInstancesOf( Person.class ) .stream() .map(Person.class::cast) .filter(p -> p.getName().equals(name) ).findFirst(); diff --git a/drools-serialization-protobuf/src/test/java/org/drools/serialization/protobuf/TruthMaintenanceTest.java b/drools-serialization-protobuf/src/test/java/org/drools/serialization/protobuf/TruthMaintenanceTest.java index fe63199cacf..24ede56803d 100644 --- a/drools-serialization-protobuf/src/test/java/org/drools/serialization/protobuf/TruthMaintenanceTest.java +++ b/drools-serialization-protobuf/src/test/java/org/drools/serialization/protobuf/TruthMaintenanceTest.java @@ -18,7 +18,12 @@ */ package org.drools.serialization.protobuf; -import org.drools.core.ClassObjectFilter; +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + import org.drools.core.common.EqualityKey; import org.drools.core.common.InternalAgenda; import org.drools.core.common.InternalFactHandle; @@ -38,18 +43,13 @@ import org.kie.api.KieBase; import org.kie.api.definition.KiePackage; import org.kie.api.io.ResourceType; +import org.kie.api.runtime.ClassObjectFilter; import org.kie.api.runtime.KieSession; import org.kie.api.runtime.rule.FactHandle; import org.kie.internal.builder.KnowledgeBuilder; import org.kie.internal.builder.KnowledgeBuilderFactory; import org.kie.internal.io.ResourceFactory; -import java.util.ArrayList; -import java.util.Collection; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.fail; import static org.drools.serialization.protobuf.SerializationHelper.getSerialisedStatefulKnowledgeSession; diff --git a/drools-test-coverage/test-compiler-integration/src/test/java/org/drools/compiler/integrationtests/incrementalcompilation/IncrementalCompilationTest.java b/drools-test-coverage/test-compiler-integration/src/test/java/org/drools/compiler/integrationtests/incrementalcompilation/IncrementalCompilationTest.java index ce4c053c114..1c444aa0060 100644 --- a/drools-test-coverage/test-compiler-integration/src/test/java/org/drools/compiler/integrationtests/incrementalcompilation/IncrementalCompilationTest.java +++ b/drools-test-coverage/test-compiler-integration/src/test/java/org/drools/compiler/integrationtests/incrementalcompilation/IncrementalCompilationTest.java @@ -20,7 +20,7 @@ import org.drools.commands.runtime.rule.FireAllRulesCommand; import org.drools.compiler.kie.builder.impl.DrlProject; -import org.drools.core.ClassObjectFilter; +import org.kie.api.runtime.ClassObjectFilter; import org.drools.base.definitions.rule.impl.RuleImpl; import org.drools.core.event.DefaultAgendaEventListener; import org.drools.core.impl.InternalRuleBase; diff --git a/drools-test-coverage/test-compiler-integration/src/test/java/org/drools/mvel/compiler/beliefsystem/defeasible/DefeasibilityTest.java b/drools-test-coverage/test-compiler-integration/src/test/java/org/drools/mvel/compiler/beliefsystem/defeasible/DefeasibilityTest.java index 47ca30372ea..c8d5a937861 100644 --- a/drools-test-coverage/test-compiler-integration/src/test/java/org/drools/mvel/compiler/beliefsystem/defeasible/DefeasibilityTest.java +++ b/drools-test-coverage/test-compiler-integration/src/test/java/org/drools/mvel/compiler/beliefsystem/defeasible/DefeasibilityTest.java @@ -23,7 +23,7 @@ import java.util.List; import org.drools.core.BeliefSystemType; -import org.drools.core.ClassObjectFilter; +import org.kie.api.runtime.ClassObjectFilter; import org.drools.core.RuleSessionConfiguration; import org.drools.core.common.EqualityKey; import org.drools.core.common.InternalFactHandle; diff --git a/drools-test-coverage/test-compiler-integration/src/test/java/org/drools/mvel/integrationtests/ExpirationTest.java b/drools-test-coverage/test-compiler-integration/src/test/java/org/drools/mvel/integrationtests/ExpirationTest.java index a91fbbc3f1b..d99aee46c53 100644 --- a/drools-test-coverage/test-compiler-integration/src/test/java/org/drools/mvel/integrationtests/ExpirationTest.java +++ b/drools-test-coverage/test-compiler-integration/src/test/java/org/drools/mvel/integrationtests/ExpirationTest.java @@ -25,7 +25,7 @@ import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicInteger; -import org.drools.core.ClassObjectFilter; +import org.kie.api.runtime.ClassObjectFilter; import org.drools.core.ClockType; import org.drools.core.SessionConfiguration; import org.drools.core.impl.RuleBaseFactory; diff --git a/drools-test-coverage/test-compiler-integration/src/test/java/org/drools/mvel/integrationtests/Misc2Test.java b/drools-test-coverage/test-compiler-integration/src/test/java/org/drools/mvel/integrationtests/Misc2Test.java index 908566b6ef2..980e59288cb 100644 --- a/drools-test-coverage/test-compiler-integration/src/test/java/org/drools/mvel/integrationtests/Misc2Test.java +++ b/drools-test-coverage/test-compiler-integration/src/test/java/org/drools/mvel/integrationtests/Misc2Test.java @@ -46,7 +46,7 @@ import org.drools.base.base.ValueResolver; import org.drools.compiler.builder.impl.KnowledgeBuilderConfigurationImpl; import org.drools.compiler.builder.impl.KnowledgeBuilderImpl; -import org.drools.core.ClassObjectFilter; +import org.kie.api.runtime.ClassObjectFilter; import org.drools.base.InitialFact; import org.drools.base.base.ClassObjectType; import org.drools.core.common.DefaultFactHandle; diff --git a/drools-test-coverage/test-compiler-integration/src/test/java/org/drools/mvel/integrationtests/session/StatefulSessionTest.java b/drools-test-coverage/test-compiler-integration/src/test/java/org/drools/mvel/integrationtests/session/StatefulSessionTest.java index 2d1ecf5b3c8..5c5afd96934 100644 --- a/drools-test-coverage/test-compiler-integration/src/test/java/org/drools/mvel/integrationtests/session/StatefulSessionTest.java +++ b/drools-test-coverage/test-compiler-integration/src/test/java/org/drools/mvel/integrationtests/session/StatefulSessionTest.java @@ -23,7 +23,7 @@ import java.util.Iterator; import java.util.List; -import org.drools.core.ClassObjectFilter; +import org.kie.api.runtime.ClassObjectFilter; import org.drools.core.common.DefaultFactHandle; import org.drools.mvel.compiler.Cheese; import org.drools.mvel.compiler.CheeseEqual; diff --git a/drools-test-coverage/test-integration-nomvel/src/test/java/org/drools/compiler/integrationtests/nomvel/TestUtil.java b/drools-test-coverage/test-integration-nomvel/src/test/java/org/drools/compiler/integrationtests/nomvel/TestUtil.java index 5121be49911..0ab5794cbb8 100644 --- a/drools-test-coverage/test-integration-nomvel/src/test/java/org/drools/compiler/integrationtests/nomvel/TestUtil.java +++ b/drools-test-coverage/test-integration-nomvel/src/test/java/org/drools/compiler/integrationtests/nomvel/TestUtil.java @@ -30,7 +30,6 @@ import org.kie.api.builder.Message; import org.kie.api.builder.ReleaseId; import org.kie.api.builder.model.KieModuleModel; -import org.kie.api.runtime.ClassObjectFilter; import org.kie.api.runtime.KieContainer; import org.kie.api.runtime.KieSession; @@ -99,7 +98,7 @@ public static KieModuleModel getDefaultKieModuleModel( KieServices ks ) { } public static List getObjectsIntoList( KieSession ksession, Class clazz) { - return (List) ksession.getObjects(new ClassObjectFilter(clazz)).stream().collect( Collectors.toList()); + return ksession.getInstancesOf(clazz).stream().collect( Collectors.toList()); } public static void createAndDeployJar( KieServices ks, ReleaseId releaseId, String... drls ) { diff --git a/drools-test-coverage/test-suite/src/test/java/org/drools/testcoverage/regression/FromGenericCollectionTest.java b/drools-test-coverage/test-suite/src/test/java/org/drools/testcoverage/regression/FromGenericCollectionTest.java index 5aa7260137e..fcb1b32925b 100644 --- a/drools-test-coverage/test-suite/src/test/java/org/drools/testcoverage/regression/FromGenericCollectionTest.java +++ b/drools-test-coverage/test-suite/src/test/java/org/drools/testcoverage/regression/FromGenericCollectionTest.java @@ -18,13 +18,11 @@ */ package org.drools.testcoverage.regression; -import java.util.Arrays; import java.util.Collection; import java.util.HashMap; import java.util.List; import java.util.Map; -import org.drools.core.ClassObjectFilter; import org.drools.testcoverage.common.util.KieBaseTestConfiguration; import org.drools.testcoverage.common.util.KieBaseUtil; import org.drools.testcoverage.common.util.TestConstants; @@ -34,6 +32,7 @@ import org.junit.runners.Parameterized; import org.junit.runners.Parameterized.Parameters; import org.kie.api.KieBase; +import org.kie.api.runtime.ClassObjectFilter; import org.kie.api.runtime.KieSession; import static org.assertj.core.api.Assertions.assertThat; diff --git a/drools-traits/src/test/java/org/drools/traits/compiler/factmodel/traits/TraitMapCoreTest.java b/drools-traits/src/test/java/org/drools/traits/compiler/factmodel/traits/TraitMapCoreTest.java index 5987d7fd98d..97f8a3ac4da 100644 --- a/drools-traits/src/test/java/org/drools/traits/compiler/factmodel/traits/TraitMapCoreTest.java +++ b/drools-traits/src/test/java/org/drools/traits/compiler/factmodel/traits/TraitMapCoreTest.java @@ -24,7 +24,7 @@ import java.util.Map; import org.drools.traits.compiler.CommonTraitTest; -import org.drools.core.ClassObjectFilter; +import org.kie.api.runtime.ClassObjectFilter; import org.drools.traits.core.factmodel.TraitableMap; import org.drools.traits.core.factmodel.TraitFactoryImpl; import org.drools.base.factmodel.traits.Traitable; diff --git a/drools-verifier/drools-verifier-drl/src/main/java/org/drools/verifier/data/VerifierDataKnowledgeSession.java b/drools-verifier/drools-verifier-drl/src/main/java/org/drools/verifier/data/VerifierDataKnowledgeSession.java index 6a2d1238ec8..5060bd5ddb2 100644 --- a/drools-verifier/drools-verifier-drl/src/main/java/org/drools/verifier/data/VerifierDataKnowledgeSession.java +++ b/drools-verifier/drools-verifier-drl/src/main/java/org/drools/verifier/data/VerifierDataKnowledgeSession.java @@ -21,7 +21,7 @@ import java.util.ArrayList; import java.util.Collection; -import org.drools.core.ClassObjectFilter; +import org.kie.api.runtime.ClassObjectFilter; import org.drools.kiesession.rulebase.InternalKnowledgeBase; import org.drools.kiesession.rulebase.KnowledgeBaseFactory; import org.drools.verifier.components.EntryPoint; diff --git a/drools-xml-support/src/test/java/org/drools/xml/support/CommandSerializationTest.java b/drools-xml-support/src/test/java/org/drools/xml/support/CommandSerializationTest.java index eb2f89ed199..82622e17387 100644 --- a/drools-xml-support/src/test/java/org/drools/xml/support/CommandSerializationTest.java +++ b/drools-xml-support/src/test/java/org/drools/xml/support/CommandSerializationTest.java @@ -38,7 +38,7 @@ import jakarta.xml.bind.annotation.XmlElement; import jakarta.xml.bind.annotation.XmlElements; -import org.drools.core.ClassObjectFilter; +import org.kie.api.runtime.ClassObjectFilter; import org.drools.core.ClassObjectSerializationFilter; import org.drools.core.base.RuleNameEndsWithAgendaFilter; import org.drools.core.base.RuleNameEqualsAgendaFilter; diff --git a/kie-api/src/main/java/org/kie/api/runtime/rule/EntryPoint.java b/kie-api/src/main/java/org/kie/api/runtime/rule/EntryPoint.java index 6f4c36d1348..c9e8e77cda3 100644 --- a/kie-api/src/main/java/org/kie/api/runtime/rule/EntryPoint.java +++ b/kie-api/src/main/java/org/kie/api/runtime/rule/EntryPoint.java @@ -19,7 +19,9 @@ package org.kie.api.runtime.rule; import java.util.Collection; +import java.util.NoSuchElementException; +import org.kie.api.runtime.ClassObjectFilter; import org.kie.api.runtime.ObjectFilter; /** @@ -152,6 +154,34 @@ void update(FactHandle handle, */ Collection getObjects(ObjectFilter filter); + /** + * Returns a Collection of objects in this entry-point that are instances of the given class. + * @param clazz the class of objects to be retrieved + * @return all facts from this entry-point that are instance of the given class. + */ + default Collection getInstancesOf(Class clazz) { + return (Collection) getObjects(new ClassObjectFilter(clazz)); + } + + /** + * Returns the only object in this entry-point that is an instance of the given class. + * @param clazz the class of object to be retrieved + * @return the only object from this entry-point that is an instance of the given class. + * @throws NoSuchElementException if there isn't any object of the given class in this entry-point + * @throws IllegalStateException if there is more than one object of the given class in this entry-point + */ + default T getSingleInstanceOf(Class clazz) { + Collection ts = (Collection) getObjects(new ClassObjectFilter(clazz)); + int size = ts.size(); + if (size == 0) { + throw new NoSuchElementException(); + } + if (size > 1) { + throw new IllegalStateException("Found " + size + " instances instead of the expected single one"); + } + return ts.iterator().next(); + } + /** * @return all FactHandles from the current session. */ @@ -168,5 +198,4 @@ void update(FactHandle handle, * @return the total number of facts currently in this entry point */ long getFactCount(); - }