public static StatefulKnowledgeSession getSerialisedStatefulKnowledgeSession(StatefulKnowledgeSession ksession, ObjectMarshallingStrategy [] strategies, boolean dispose) throws Exception { Marshaller marshaller = MarshallerFactory.newMarshaller( ksession.getKieBase(), strategies ); final byte [] b1 = serializeKnowledgeSession(marshaller, ksession); StatefulKnowledgeSession ksession2 = deserializeKnowledgeSession(marshaller, b1); final byte[] b2 = serializeKnowledgeSession(marshaller, ksession2); // bytes should be the same. if ( !areByteArraysEqual( b1, b2 ) ) { // throw new IllegalArgumentException( "byte streams for serialisation test are not equal" ); } ((StatefulKnowledgeSessionImpl) ksession2).setGlobalResolver( ((StatefulKnowledgeSessionImpl) ksession).getGlobalResolver() ); if ( dispose ) { ksession.dispose(); } return ksession2; }
public JAXBContext getJaxbContext() { if ( this.jaxbContext == null ) { JaxbDataFormat def = new JaxbDataFormat(); def.setPrettyPrint( true ); def.setContextPath( "org.drools.model:org.drools.pipeline.camel" ); // create a jaxbContext for the test to use outside of Camel. StatefulKnowledgeSession ksession1 = (StatefulKnowledgeSession) node.get( "ksession1", CommandExecutor.class ); KnowledgeBase kbase = ksession1.getKieBase(); ClassLoader originalCl = Thread.currentThread().getContextClassLoader(); try { Thread.currentThread().setContextClassLoader( ((ReteooRuleBase) ((KnowledgeBaseImpl) kbase).getRuleBase()).getRootClassLoader() ); def = DroolsPolicy.augmentJaxbDataFormatDefinition( def ); org.apache.camel.converter.jaxb.JaxbDataFormat jaxbDataformat = (org.apache.camel.converter.jaxb.JaxbDataFormat) def.getDataFormat( this.context.getRoutes().get( 0 ).getRouteContext() ); jaxbDataformat.setCamelContext(routeBuilder.getContext()); try { jaxbDataformat.start(); } catch (Exception e) { throw new IllegalStateException(e); } jaxbContext = jaxbDataformat.getContext(); } finally { Thread.currentThread().setContextClassLoader( originalCl ); } } return jaxbContext; }
public JAXBContext getJaxbContext() { if ( this.jaxbContext == null ) { JaxbDataFormat def = new JaxbDataFormat(); def.setPrettyPrint( true ); // TODO does not work: def.setContextPath( "org.drools.camel.testdomain:org.drools.pipeline.camel" ); def.setContextPath( "org.drools.pipeline.camel" ); // create a jaxbContext for the test to use outside of Camel. StatefulKnowledgeSession ksession1 = (StatefulKnowledgeSession) node.get( "ksession1", CommandExecutor.class ); KnowledgeBase kbase = ksession1.getKieBase(); ClassLoader originalCl = Thread.currentThread().getContextClassLoader(); try { Thread.currentThread().setContextClassLoader( ((ReteooRuleBase) ((KnowledgeBaseImpl) kbase).getRuleBase()).getRootClassLoader() ); def = DroolsPolicy.augmentJaxbDataFormatDefinition( def ); org.apache.camel.converter.jaxb.JaxbDataFormat jaxbDataformat = (org.apache.camel.converter.jaxb.JaxbDataFormat) def.getDataFormat( this.context.getRoutes().get( 0 ).getRouteContext() ); jaxbDataformat.setCamelContext(routeBuilder.getContext()); try { jaxbDataformat.start(); } catch (Exception e) { throw new IllegalStateException(e); } jaxbContext = jaxbDataformat.getContext(); } finally { Thread.currentThread().setContextClassLoader( originalCl ); } } return jaxbContext; }
public JAXBContext getJaxbContext() { if ( this.jaxbContext == null ) { JaxbDataFormat def = new JaxbDataFormat(); def.setPrettyPrint( true ); // TODO does not work: def.setContextPath( "org.drools.camel.testdomain:org.drools.pipeline.camel" ); def.setContextPath( "org.drools.pipeline.camel" ); // create a jaxbContext for the test to use outside of Camel. StatefulKnowledgeSession ksession1 = (StatefulKnowledgeSession) node.get( "ksession1", CommandExecutor.class ); KnowledgeBase kbase = ksession1.getKieBase(); ClassLoader originalCl = Thread.currentThread().getContextClassLoader(); try { Thread.currentThread().setContextClassLoader( ((ReteooRuleBase) ((KnowledgeBaseImpl) kbase).getRuleBase()).getRootClassLoader() ); def = DroolsPolicy.augmentJaxbDataFormatDefinition( def ); org.apache.camel.converter.jaxb.JaxbDataFormat jaxbDataformat = (org.apache.camel.converter.jaxb.JaxbDataFormat) def.getDataFormat( this.context.getRoutes().get( 0 ).getRouteContext() ); jaxbDataformat.setCamelContext(routeBuilder.getContext()); try { jaxbDataformat.start(); } catch (Exception e) { throw new IllegalStateException(e); } jaxbContext = jaxbDataformat.getContext(); } finally { Thread.currentThread().setContextClassLoader( originalCl ); } } return jaxbContext; }
results.clear(); KnowledgeBase ruleBaseWM = workingMemory.getKieBase(); ruleBaseWM.removeKnowledgePackage( packageName );
outXml, ExecutionResults.class ); org.kie.api.definition.type.FactType fT = ksession.getKieBase().getFactType("org.drools.camel.testdomain","Cheese1"); ExecutionResults.class ); org.kie.api.definition.type.FactType fT2 = ksession2.getKieBase().getFactType("org.drools.camel.testdomain","Cheese2");
TraitFactory.setMode( mode, ksession.getKieBase() ); List<?> list = new ArrayList<Object>();
@Test (timeout=10000) public void testRemovePackage() throws Exception { Collection<KnowledgePackage> kpkgs = SerializationHelper.serializeObject( loadKnowledgePackages( "test_RemovePackage.drl" ) ); final String packageName = kpkgs.iterator().next().getName(); KnowledgeBase kbase = loadKnowledgeBase( ); kbase.addKnowledgePackages( kpkgs ); kbase = SerializationHelper.serializeObject( kbase ); StatefulKnowledgeSession session = createKnowledgeSession( kbase ); session.insert( new Precondition( "genericcode", "genericvalue" ) ); session.fireAllRules(); KnowledgeBase ruleBaseWM = session.getKieBase(); ruleBaseWM.removeKnowledgePackage( packageName ); kpkgs = SerializationHelper.serializeObject( loadKnowledgePackages( "test_RemovePackage.drl" ) ); ruleBaseWM.addKnowledgePackages( kpkgs ); ruleBaseWM = SerializationHelper.serializeObject( ruleBaseWM ); session = SerializationHelper.getSerialisedStatefulKnowledgeSession( session, true ); session.fireAllRules(); ruleBaseWM.removeKnowledgePackage( packageName ); ruleBaseWM.addKnowledgePackages( SerializationHelper.serializeObject( kpkgs ) ); ruleBaseWM.removeKnowledgePackage( packageName ); ruleBaseWM.addKnowledgePackages( SerializationHelper.serializeObject( kpkgs ) ); }