private static RuntimeEnvironmentBuilder setupClasspathKmoduleBuilder( KieContainer kieContainer, String kbaseName, String ksessionName ) { if (StringUtils.isEmpty(kbaseName)) { KieBaseModel defaultKBaseModel = ((KieContainerImpl)kieContainer).getKieProject().getDefaultKieBaseModel(); if (defaultKBaseModel != null) { kbaseName = defaultKBaseModel.getName(); } else { kbaseName = DEFAULT_KBASE_NAME; } } InternalKieModule module = (InternalKieModule) ((KieContainerImpl)kieContainer).getKieModuleForKBase(kbaseName); if (module == null) { throw new IllegalStateException("Cannot find kbase with name " + kbaseName); } KieBase kbase = kieContainer.getKieBase(kbaseName); return getDefault() .knowledgeBase(kbase) .classLoader(kieContainer.getClassLoader()) .registerableItemsFactory(new KModuleRegisterableItemsFactory(kieContainer, ksessionName)); }
@Override public Map<String, WorkItemHandler> getWorkItemHandlers(RuntimeEngine runtime) { KieSessionModel ksessionModel = null; if(StringUtils.isEmpty(ksessionName)) { ksessionModel = ((KieContainerImpl)kieContainer).getKieProject().getDefaultKieSession(); if (ksessionModel == null) { ksessionName = DEFAULT_KIE_SESSION; ksessionModel = ((KieContainerImpl)kieContainer).getKieSessionModel(ksessionName); ksessionModel = ((KieContainerImpl)kieContainer).getKieSessionModel(ksessionName);
@Test public void testClassLoaderStore() throws Exception { // DROOLS-1766 String drl = "package org; declare Person name : String end"; KieServices ks = KieServices.Factory.get(); KieFileSystem kfs = ks.newKieFileSystem().write( "src/main/resources/r1.drl", drl ); ks.newKieBuilder( kfs ).buildAll(); KieContainer kcontainer = ks.newKieContainer(ks.getRepository().getDefaultReleaseId()); KieProject kieProject = (( KieContainerImpl ) kcontainer).getKieProject(); ResultsImpl messages = kieProject.verify(); assertSame( kieProject.getClassLoader(), kcontainer.getClassLoader() ); ProjectClassLoader pcl = (( ProjectClassLoader ) kieProject.getClassLoader()); assertNotNull( pcl.getStore().get("org/Person.class") ); }
@Test public void test_as_kie_wb_common_services_backend_Builder() throws Exception { final KieServices ks = KieServices.Factory.get(); final ReleaseId v100 = ks.newReleaseId("org.kie", "dmn-test", "1.0.0"); final KieModule kieModule = KieHelper.createAndDeployJar(ks, v100, wrapWithDroolsModelResource(ks, ks.getResources().newClassPathResource("0001-input-data-string.dmn", this.getClass()))); final KieContainer kieContainer = ks.newKieContainer(v100); final KieSession kieSession = kieContainer.newKieSession(); final DMNRuntime runtime = kieSession.getKieRuntime(DMNRuntime.class); Assert.assertNotNull(runtime); assertThat(runtime.getModels(), hasSize(1)); check0001_input_data_string(runtime); // the below is performed by the WB at: https://github.com/kiegroup/kie-wb-common/blob/master/kie-wb-common-services/kie-wb-common-services-backend/src/main/java/org/kie/workbench/common/services/backend/builder/core/Builder.java#L592 final KieProject kieProject = new KieModuleKieProject((InternalKieModule) kieModule, null); final KieContainer kieContainer2 = new KieContainerImpl(kieProject, ks.getRepository(), v100); final KieSession kieSession2 = kieContainer2.newKieSession(); // exhibit the issue. final DMNRuntime runtime2 = kieSession2.getKieRuntime(DMNRuntime.class); Assert.assertNotNull(runtime2); assertThat(runtime2.getModels(), hasSize(1)); check0001_input_data_string(runtime2); }
DroolsAndroidContext.setContext(application); ks = KieServices.Factory.get(); classpathContainer = (KieContainerImpl) ks.getKieClasspathContainer(); KieProject kieProject = classpathContainer.getKieProject(); if (kieProject.getDefaultKieBaseModel() != null) { bind(KieBase.class).toProvider( new KBaseProvider(kieProject.getDefaultKieBaseModel(), classpathContainer)); if (kieProject.getDefaultKieSession() != null) { bind(KieSession.class).toProvider( new KSessionProvider(kieProject.getDefaultKieSession(), classpathContainer)); if (kieProject.getDefaultStatelessKieSession() != null) { bind(StatelessKieSession.class).toProvider( new KStatelessSessionProvider(classpathContainer.getKieProject().getDefaultStatelessKieSession(), classpathContainer)); for (final String kbaseName : classpathContainer.getKieBaseNames()) { logger.debug("Binding @KBase({})", kbaseName); bind(KieBase.class).annotatedWith(new KBaseImpl(kbaseName)).toProvider( new KBaseProvider(classpathContainer.getKieBaseModel(kbaseName), classpathContainer)); for (final String ksessionName : classpathContainer.getKieSessionNamesInKieBase(kbaseName)) { logger.debug("Binding @KSession({})", ksessionName); KieSessionModel model = classpathContainer.getKieSessionModel(ksessionName); if (model.getType().equals(KieSessionModel.KieSessionType.STATEFUL)) { bind(KieSession.class).annotatedWith(new KSessionImpl(ksessionName)) .toProvider(new KSessionProvider(model, classpathContainer));
final org.drools.compiler.kie.builder.impl.KieProject kieProject = new KieModuleKieProject(kieModule, null); final KieContainer kieContainer = new KieContainerImpl(kieProject, KieServices.Factory.get().getRepository()); solverFactory.getSolverConfig().getScoreDirectorFactoryConfig().setKsessionName(kieProject.getDefaultKieSession().getName());
public Object resolveKSession(KieContainer kieContainer, String id) { KieProject kProject = ((KieContainerImpl) kieContainer).getKieProject(); KieSessionModel kieSessionModel = kProject.getKieSessionModel(id); if (kieSessionModel.getType() == KieSessionModel.KieSessionType.STATEFUL) { return ((KieContainerImpl) kieContainer).getKieSession(id); } else if (kieSessionModel.getType() == KieSessionModel.KieSessionType.STATELESS) { return ((KieContainerImpl) kieContainer).getStatelessKieSession(id); } return null; }
public KieContainer getKieContainer() { BuildResults results = null; //Kie classes are only available once built if (!isBuilt()) { results = build(); } else { results = new BuildResults(); results.addAllBuildMessages(convertMessages(kieBuilder.getResults().getMessages(), handles)); } //It's impossible to retrieve a KieContainer if the KieModule contains errors if (results.getErrorMessages().isEmpty()) { // Do not retrieve the KieContainer with KieServices.newKieContainer(releaseId) since this looks-up the KieModule to // create the KieContainer from KieRepository. This holds the most recent KieModule (for the ReleaseId) that was built with // kieBuilder.buildAll() which *may* be a KieModule created during asset validation and hence will lack many assets. // See https://bugzilla.redhat.com/show_bug.cgi?id=1202551 final org.kie.api.builder.KieModule kieModule = kieBuilder.getKieModule(); final ReleaseId releaseId = kieModule.getReleaseId(); final org.drools.compiler.kie.builder.impl.KieProject kieProject = new KieModuleKieProject((InternalKieModule) kieBuilder.getKieModule(), null); final KieContainer kieContainer = new KieContainerImpl(kieProject, KieServices.Factory.get().getRepository(), releaseId); return kieContainer; } else { return null; } }
KieModuleModel kProjModel4 = createKieModule( "fol4", false ); ReleaseId releaseId1 = KieServices.Factory.get().newReleaseId("jar1", "art1", "1.0-SNAPSHOT"); ReleaseId releaseId2 = KieServices.Factory.get().newReleaseId("jar2", "art1", "1.0-SNAPSHOT"); ReleaseId releaseId3 = KieServices.Factory.get().newReleaseId("jar3", "art1", "1.0-SNAPSHOT"); KieContainer kContainer = new KieContainerImpl( kProject, null );
@Override public CommandExecutor lookupKieSession(String kieSessionId, KieContainerInstance containerInstance, KieServerRegistry registry) { CommandExecutor ks = null; if( kieSessionId != null ) { KieSessionModel ksm = ((KieContainerImpl)containerInstance.getKieContainer()).getKieSessionModel(kieSessionId); if( ksm != null ) { switch (ksm.getType() ) { case STATEFUL: ks = ((KieContainerImpl)containerInstance.getKieContainer()).getKieSession(kieSessionId); break; case STATELESS: ks = ((KieContainerImpl)containerInstance.getKieContainer()).getStatelessKieSession(kieSessionId); break; } } return ks; } return null; } }
public static List<DeploymentDescriptor> getDeploymentDescriptorHierarchy(DeploymentDescriptorManager manager, KieContainer kieContainer) { List<DeploymentDescriptor> descriptorHierarchy = new ArrayList<DeploymentDescriptor>(); if (((KieContainerImpl)kieContainer).getKieProject() instanceof KieModuleKieProject) { InternalKieModule module = ((KieModuleKieProject) ((KieContainerImpl)kieContainer).getKieProject()).getInternalKieModule(); collectDeploymentDescriptors(module, descriptorHierarchy); } // last is the default descriptor descriptorHierarchy.add(manager.getDefaultDescriptor()); return descriptorHierarchy; }
private static KieContainerImpl createMockKieContainer(final ReleaseId projectReleaseId, final KieModuleRepo kieModuleRepo) throws Exception { // kie module final InternalKieModule mockKieProjectKieModule = mock(InternalKieModule.class); final ResourceProvider mockKieProjectKieModuleResourceProvider = mock(ResourceProvider.class); when(mockKieProjectKieModule.createResourceProvider()).thenReturn(mockKieProjectKieModuleResourceProvider); // kie project final KieModuleKieProject kieProject = new KieModuleKieProject(mockKieProjectKieModule); final KieModuleKieProject mockKieProject = spy(kieProject); doNothing().when(mockKieProject).init(); doReturn(projectReleaseId).when(mockKieProject).getGAV(); doReturn( new HashMap<String, KieBaseModel>() ).when( mockKieProject ).updateToModule( any( InternalKieModule.class ) ); // kie repository final KieRepository kieRepository = new KieRepositoryImpl(); final Field kieModuleRepoField = KieRepositoryImpl.class.getDeclaredField("kieModuleRepo"); kieModuleRepoField.setAccessible(true); kieModuleRepoField.set(kieRepository, kieModuleRepo); kieModuleRepoField.setAccessible(false); // kie container final KieContainerImpl kieContainerImpl = new KieContainerImpl(mockKieProject, kieRepository); return kieContainerImpl; }
@Test public void test_as_kie_wb_common_services_backend_Builder2() throws Exception { final KieServices ks = KieServices.Factory.get(); final ReleaseId v100 = ks.newReleaseId("org.kie", "dmn-test", "1.0.0"); final KieModule kieModule = KieHelper.createAndDeployJar(ks, v100, wrapWithDroolsModelResource(ks, ks.getResources().newClassPathResource("v1_2/dmn-hotcold.dmn", this.getClass()))); final KieContainer kieContainer = ks.newKieContainer(v100); final KieSession kieSession = kieContainer.newKieSession(); final DMNRuntime runtime = kieSession.getKieRuntime(DMNRuntime.class); Assert.assertNotNull(runtime); assertThat(runtime.getModels(), hasSize(1)); checkDMNHotColdDMN12WithNSScattered(runtime); // the below is performed by the WB at: https://github.com/kiegroup/kie-wb-common/blob/master/kie-wb-common-services/kie-wb-common-services-backend/src/main/java/org/kie/workbench/common/services/backend/builder/core/Builder.java#L592 final KieProject kieProject = new KieModuleKieProject((InternalKieModule) kieModule, null); final KieContainer kieContainer2 = new KieContainerImpl(kieProject, ks.getRepository(), v100); final KieSession kieSession2 = kieContainer2.newKieSession(); // exhibit the issue. final DMNRuntime runtime2 = kieSession2.getKieRuntime(DMNRuntime.class); Assert.assertNotNull(runtime2); assertThat(runtime2.getModels(), hasSize(1)); checkDMNHotColdDMN12WithNSScattered(runtime2); }
public Object resolveKSession(KieContainer kieContainer, String id) { KieProject kProject = ((KieContainerImpl) kieContainer).getKieProject(); KieSessionModel kieSessionModel = kProject.getKieSessionModel(id); if (kieSessionModel.getType() == KieSessionModel.KieSessionType.STATEFUL) { return ((KieContainerImpl) kieContainer).getKieSession(id); } else if (kieSessionModel.getType() == KieSessionModel.KieSessionType.STATELESS) { return ((KieContainerImpl) kieContainer).getStatelessKieSession(id); } return null; }
public static List<DeploymentDescriptor> getDeploymentDescriptorHierarchy(DeploymentDescriptorManager manager, KieContainer kieContainer) { List<DeploymentDescriptor> descriptorHierarchy = new ArrayList<DeploymentDescriptor>(); if (((KieContainerImpl)kieContainer).getKieProject() instanceof KieModuleKieProject) { InternalKieModule module = ((KieModuleKieProject) ((KieContainerImpl)kieContainer).getKieProject()).getInternalKieModule(); collectDeploymentDescriptors(module, descriptorHierarchy); } // last is the default descriptor descriptorHierarchy.add(manager.getDefaultDescriptor()); return descriptorHierarchy; }
repository.resolveArtifact(releaseId.toExternalForm()); KieServices ks = KieServices.Factory.get(); KieContainer kieContainer = ks.newKieContainer(releaseId); DeploymentDescriptor descriptor = merger.merge(descriptorHierarchy, MergeMode.MERGE_COLLECTIONS); if (StringUtils.isEmpty(kbaseName)) { KieBaseModel defaultKBaseModel = ((KieContainerImpl)kieContainer).getKieProject().getDefaultKieBaseModel(); if (defaultKBaseModel != null) { kbaseName = defaultKBaseModel.getName(); } else { kbaseName = DEFAULT_KBASE_NAME; InternalKieModule module = (InternalKieModule) ((KieContainerImpl)kieContainer).getKieModuleForKBase(kbaseName); if (module == null) { throw new IllegalStateException("Cannot find kbase, either it does not exist or there are multiple default kbases in kmodule.xml");
@Override public Map<String, WorkItemHandler> getWorkItemHandlers(RuntimeEngine runtime) { KieSessionModel ksessionModel = null; if(StringUtils.isEmpty(ksessionName)) { ksessionModel = ((KieContainerImpl)kieContainer).getKieProject().getDefaultKieSession(); if (ksessionModel == null) { ksessionName = DEFAULT_KIE_SESSION; ksessionModel = ((KieContainerImpl)kieContainer).getKieSessionModel(ksessionName); ksessionModel = ((KieContainerImpl)kieContainer).getKieSessionModel(ksessionName);
protected Object resolveKSession( String id, KieContainer kieContainer ) { KieContainerImpl kcontainer = (KieContainerImpl) kieContainer; KieProject kProject = kcontainer.getKieProject(); KieSessionModel kieSessionModel = kProject.getKieSessionModel( id ); if ( kieSessionModel == null) { return null; } if (kieSessionModel.getType() == KieSessionModel.KieSessionType.STATEFUL) { return kcontainer.getKieSession( id ); } else if (kieSessionModel.getType() == KieSessionModel.KieSessionType.STATELESS) { return kcontainer.getStatelessKieSession( id ); } return null; }
public ImageReference(KieContainer kieContainer, String kieBaseName) { this.kieContainer = kieContainer; if (kieBaseName == null || kieBaseName.isEmpty()) { KieBaseModel defaultKBaseModel = ((KieContainerImpl)kieContainer).getKieProject().getDefaultKieBaseModel(); if (defaultKBaseModel != null) { kieBaseName = defaultKBaseModel.getName(); } else { kieBaseName = DEFAULT_KBASE_NAME; } } kieModule = (InternalKieModule) ((KieContainerImpl)kieContainer).getKieModuleForKBase(kieBaseName); this.kieBaseName = kieBaseName; }
if(StringUtils.isEmpty(ksessionName)) { ksessionModel = ((KieContainerImpl)kieContainer).getKieProject().getDefaultKieSession(); if (ksessionModel == null) { ksessionModel = ((KieContainerImpl)kieContainer).getKieSessionModel(DEFAULT_KIE_SESSION); ksessionModel = ((KieContainerImpl)kieContainer).getKieSessionModel(ksessionName);