Search in sources :

Example 16 with DroolsObjectOutputStream

use of org.drools.core.common.DroolsObjectOutputStream in project drools by kiegroup.

the class ReteooBuilder method writeExternal.

public void writeExternal(ObjectOutput out) throws IOException {
    boolean isDrools = out instanceof DroolsObjectOutputStream;
    DroolsObjectOutputStream droolsStream;
    ByteArrayOutputStream bytes;
    if (isDrools) {
        bytes = null;
        droolsStream = (DroolsObjectOutputStream) out;
    } else {
        bytes = new ByteArrayOutputStream();
        droolsStream = new DroolsObjectOutputStream(bytes);
    }
    droolsStream.writeObject(rules);
    droolsStream.writeObject(queries);
    droolsStream.writeObject(namedWindows);
    droolsStream.writeObject(idGenerator);
    if (!isDrools) {
        droolsStream.flush();
        droolsStream.close();
        bytes.close();
        out.writeInt(bytes.size());
        out.writeObject(bytes.toByteArray());
    }
}
Also used : ByteArrayOutputStream(java.io.ByteArrayOutputStream) DroolsObjectOutputStream(org.drools.core.common.DroolsObjectOutputStream)

Example 17 with DroolsObjectOutputStream

use of org.drools.core.common.DroolsObjectOutputStream in project drools by kiegroup.

the class MarshallingTest method testAccumulateSerialization.

@Test
public void testAccumulateSerialization() throws Exception {
    KieBase kbase = loadKnowledgeBase("org/drools/compiler/integrationtests/marshalling/test_SerializableAccumulate.drl");
    KieSession ksession = kbase.newKieSession();
    ksession.setGlobal("results", new ArrayList());
    Cheese t1 = new Cheese("brie", 10);
    Cheese t2 = new Cheese("brie", 15);
    Cheese t3 = new Cheese("stilton", 20);
    Cheese t4 = new Cheese("brie", 30);
    ksession.insert(t1);
    ksession.insert(t2);
    ksession.insert(t3);
    ksession.insert(t4);
    // ksession.fireAllRules();
    Marshaller marshaller = createSerializableMarshaller(kbase);
    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    ObjectOutputStream out = new DroolsObjectOutputStream(baos);
    out.writeObject(kbase);
    marshaller.marshall(out, ksession);
    out.flush();
    out.close();
    ObjectInputStream in = new DroolsObjectInputStream(new ByteArrayInputStream(baos.toByteArray()));
    kbase = (InternalKnowledgeBase) in.readObject();
    marshaller = createSerializableMarshaller(kbase);
    ksession = (StatefulKnowledgeSession) marshaller.unmarshall(in);
    in.close();
    // setting the global again, since it is not serialized with the session
    List<List> results = (List<List>) new ArrayList<List>();
    ksession.setGlobal("results", results);
    assertNotNull(results);
    ksession.fireAllRules();
    ksession.dispose();
    assertEquals(1, results.size());
    assertEquals(3, results.get(0).size());
}
Also used : DroolsObjectInputStream(org.drools.core.common.DroolsObjectInputStream) Marshaller(org.kie.api.marshalling.Marshaller) ArrayList(java.util.ArrayList) Cheese(org.drools.compiler.Cheese) ByteArrayOutputStream(java.io.ByteArrayOutputStream) DroolsObjectOutputStream(org.drools.core.common.DroolsObjectOutputStream) ObjectOutputStream(java.io.ObjectOutputStream) ByteArrayInputStream(java.io.ByteArrayInputStream) KieBase(org.kie.api.KieBase) KieSession(org.kie.api.runtime.KieSession) List(java.util.List) ArrayList(java.util.ArrayList) IteratorToList(org.drools.compiler.integrationtests.IteratorToList) DroolsObjectOutputStream(org.drools.core.common.DroolsObjectOutputStream) ObjectInputStream(java.io.ObjectInputStream) DroolsObjectInputStream(org.drools.core.common.DroolsObjectInputStream) Test(org.junit.Test)

Aggregations

DroolsObjectOutputStream (org.drools.core.common.DroolsObjectOutputStream)17 ByteArrayOutputStream (java.io.ByteArrayOutputStream)11 DroolsObjectInputStream (org.drools.core.common.DroolsObjectInputStream)9 ByteArrayInputStream (java.io.ByteArrayInputStream)8 Test (org.junit.Test)7 ObjectInputStream (java.io.ObjectInputStream)6 KieBase (org.kie.api.KieBase)6 ObjectOutputStream (java.io.ObjectOutputStream)4 KieSession (org.kie.api.runtime.KieSession)4 ObjectOutput (java.io.ObjectOutput)3 ArrayList (java.util.ArrayList)3 InternalKnowledgeBase (org.drools.core.impl.InternalKnowledgeBase)3 Marshaller (org.kie.api.marshalling.Marshaller)3 FileOutputStream (java.io.FileOutputStream)2 IOException (java.io.IOException)2 OptionalDataException (java.io.OptionalDataException)2 Collection (java.util.Collection)2 KiePackage (org.kie.api.definition.KiePackage)2 KnowledgeBuilder (org.kie.internal.builder.KnowledgeBuilder)2 Output (com.google.protobuf.ByteString.Output)1