Search in sources :

Example 6 with DroolsObjectOutputStream

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

the class EventAccessorRestoreTest method saveSession.

public void saveSession(FileOutputStream output, KieSession ksession) throws IOException {
    DroolsObjectOutputStream droolsOut = new DroolsObjectOutputStream(output);
    droolsOut.writeObject(ksession.getKieBase());
    Marshaller mas = createMarshaller(ksession.getKieBase());
    mas.marshall(droolsOut, ksession);
    droolsOut.flush();
    droolsOut.close();
}
Also used : Marshaller(org.kie.api.marshalling.Marshaller) DroolsObjectOutputStream(org.drools.core.common.DroolsObjectOutputStream)

Example 7 with DroolsObjectOutputStream

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

the class DMNModelImpl method writeExternal.

@Override
public void writeExternal(ObjectOutput out) throws IOException {
    out.writeObject(serializedAs);
    out.writeObject(resource);
    if (!(out instanceof DroolsObjectOutputStream)) {
        throw new UnsupportedOperationException();
    // TODO assume some defaults
    }
    DroolsObjectOutputStream os = (DroolsObjectOutputStream) out;
    DMNCompilerImpl compiler = (DMNCompilerImpl) os.getCustomExtensions().get(DMNAssemblerService.DMN_COMPILER_CACHE_KEY);
    List<DMNExtensionRegister> dmnRegisteredExtensions = compiler.getRegisteredExtensions();
    String output = DMNMarshallerFactory.newMarshallerWithExtensions(dmnRegisteredExtensions).marshal(this.definitions);
    out.writeObject(output);
}
Also used : DMNCompilerImpl(org.kie.dmn.core.compiler.DMNCompilerImpl) DroolsObjectOutputStream(org.drools.core.common.DroolsObjectOutputStream) DMNExtensionRegister(org.kie.dmn.api.marshalling.v1_1.DMNExtensionRegister)

Example 8 with DroolsObjectOutputStream

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

the class LargeRuleBase method bigBlobCompile.

private static void bigBlobCompile() throws DroolsParserException, IOException, Exception {
    StringBuilder buf = new StringBuilder();
    buf.append(getHeader());
    for (int i = 0; i < 1; i++) {
        String name = "x" + i;
        int status = i;
        String r = getTemplate1(name, status);
        buf.append(r);
    }
    KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
    kbuilder.add(ResourceFactory.newByteArrayResource(buf.toString().getBytes()), ResourceType.DRL);
    InternalKnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
    kbase.addPackages(kbuilder.getKnowledgePackages());
    File f = new File("foo.rulebase");
    if (f.exists())
        f.delete();
    ObjectOutput out = new DroolsObjectOutputStream(new FileOutputStream(f));
    out.writeObject(kbase);
    out.flush();
    out.close();
    ObjectInputStream in = new DroolsObjectInputStream(new FileInputStream(f));
    KieBase rb_ = (KieBase) in.readObject();
}
Also used : DroolsObjectInputStream(org.drools.core.common.DroolsObjectInputStream) ObjectOutput(java.io.ObjectOutput) FileInputStream(java.io.FileInputStream) KnowledgeBuilder(org.kie.internal.builder.KnowledgeBuilder) KieBase(org.kie.api.KieBase) FileOutputStream(java.io.FileOutputStream) File(java.io.File) InternalKnowledgeBase(org.drools.core.impl.InternalKnowledgeBase) DroolsObjectOutputStream(org.drools.core.common.DroolsObjectOutputStream) ObjectInputStream(java.io.ObjectInputStream) DroolsObjectInputStream(org.drools.core.common.DroolsObjectInputStream)

Example 9 with DroolsObjectOutputStream

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

the class MarshallingIssuesTest method testMarshallWithAccumulate.

@Test
public void testMarshallWithAccumulate() throws Exception {
    String drl1 = "import java.util.concurrent.atomic.AtomicInteger\n" + "global java.util.List list;\n" + "rule R when\n" + "  $a : AtomicInteger( get() > 3 )\n" + "  $i : Integer( this == $a.get() )\n" + "  accumulate ( $s : String( length == $i ), $result : count( ) )\n" + "then\n" + "  list.add($result);\n" + "end";
    KieBase kb1 = new KieHelper().addContent(drl1, ResourceType.DRL).build();
    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    DroolsObjectOutputStream oos = new DroolsObjectOutputStream(baos);
    oos.writeObject(kb1);
    oos.flush();
    oos.close();
    baos.flush();
    baos.close();
    byte[] serializedKb = baos.toByteArray();
    ByteArrayInputStream bais = new ByteArrayInputStream(serializedKb);
    DroolsObjectInputStream ois = new DroolsObjectInputStream(bais);
    ois.close();
    bais.close();
    KieBase kb2 = (KieBase) ois.readObject();
    assertTrue(ReteComparator.areEqual(kb1, kb2));
}
Also used : DroolsObjectInputStream(org.drools.core.common.DroolsObjectInputStream) ByteArrayInputStream(java.io.ByteArrayInputStream) KieBase(org.kie.api.KieBase) KieHelper(org.kie.internal.utils.KieHelper) ByteArrayOutputStream(java.io.ByteArrayOutputStream) DroolsObjectOutputStream(org.drools.core.common.DroolsObjectOutputStream) Test(org.junit.Test)

Example 10 with DroolsObjectOutputStream

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

the class MarshallingTest method testDroolsObjectOutputInputStream.

/**
 * test that creates a new knowledge base, new stateful session, inserts new
 * fact, serializes the knowledge base and session and fact using one output
 * stream then deserializes and verifies that fact in the session is the
 * same as fact that was deserialized,
 *
 * from the ObjectOutputStream API: "Multiple references to a single object
 * are encoded using a reference sharing mechanism so that graphs of objects
 * can be restored to the same shape as when the original was written."
 *
 * This is still not fixed, as mentioned in the JIRA
 *
 * JBRULES-2048
 *
 * @throws Exception
 */
@Test
@Ignore
public void testDroolsObjectOutputInputStream() throws Exception {
    KieBase kbase = loadKnowledgeBase("org/drools/compiler/integrationtests/test_Serializable.drl");
    KieSession session = kbase.newKieSession();
    Person bob = new Person();
    session.insert(bob);
    assertSame("these two object references should be same", bob, session.getObjects().iterator().next());
    Marshaller marshaller = createSerializableMarshaller(kbase);
    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    ObjectOutputStream out = new DroolsObjectOutputStream(baos);
    out.writeObject(bob);
    out.writeObject(kbase);
    marshaller.marshall(out, session);
    out.flush();
    out.close();
    ObjectInputStream in = new DroolsObjectInputStream(new ByteArrayInputStream(baos.toByteArray()));
    Person deserializedBob = (Person) in.readObject();
    kbase = (InternalKnowledgeBase) in.readObject();
    marshaller = createSerializableMarshaller(kbase);
    session = (StatefulKnowledgeSession) marshaller.unmarshall(in);
    assertSame("these two object references should be same", deserializedBob, session.getObjects().iterator().next());
    in.close();
}
Also used : DroolsObjectInputStream(org.drools.core.common.DroolsObjectInputStream) Marshaller(org.kie.api.marshalling.Marshaller) ByteArrayInputStream(java.io.ByteArrayInputStream) KieBase(org.kie.api.KieBase) KieSession(org.kie.api.runtime.KieSession) ByteArrayOutputStream(java.io.ByteArrayOutputStream) DroolsObjectOutputStream(org.drools.core.common.DroolsObjectOutputStream) ObjectOutputStream(java.io.ObjectOutputStream) Person(org.drools.compiler.Person) DroolsObjectOutputStream(org.drools.core.common.DroolsObjectOutputStream) ObjectInputStream(java.io.ObjectInputStream) DroolsObjectInputStream(org.drools.core.common.DroolsObjectInputStream) Ignore(org.junit.Ignore) 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