public void write(MarshallerWriteContext context) throws IOException { context.writeShort(WorkingMemoryAction.WorkingMemoryReteExpireAction); context.writeInt(this.factHandle.getId()); context.writeInt(this.node.getId()); }
@Test public void backwardsCompatibleEventFactHandleTest() throws IOException, ClassNotFoundException { InternalKnowledgeBase kBase = createKnowledgeBase(); StatefulKnowledgeSessionImpl wm = createWorkingMemory(kBase); InternalFactHandle factHandle = createEventFactHandle(wm, kBase); // marshall/serialize workItem byte[] byteArray; { ObjectMarshallingStrategy[] strats = new ObjectMarshallingStrategy[] { MarshallerFactory.newSerializeMarshallingStrategy(), new MarshallerProviderImpl().newIdentityMarshallingStrategy() }; ByteArrayOutputStream baos = new ByteArrayOutputStream(); MarshallerWriteContext outContext = new MarshallerWriteContext( baos, null, null, null, new ObjectMarshallingStrategyStoreImpl(strats), true, true, null); OldOutputMarshallerMethods.writeFactHandle_v1( outContext, (ObjectOutputStream) outContext, outContext.objectMarshallingStrategyStore, 2, factHandle); outContext.close(); byteArray = baos.toByteArray(); } // unmarshall/deserialize workItem InternalFactHandle newFactHandle; { // Only put serialization strategy in ObjectMarshallingStrategy[] newStrats = new ObjectMarshallingStrategy[] {MarshallerFactory.newSerializeMarshallingStrategy()}; ByteArrayInputStream bais = new ByteArrayInputStream(byteArray); MarshallerReaderContext inContext = new MarshallerReaderContext( bais, null, null, new ObjectMarshallingStrategyStoreImpl(newStrats), Collections.EMPTY_MAP, true, true, null); inContext.wm = wm; newFactHandle = InputMarshaller.readFactHandle(inContext); inContext.close(); } assertTrue( "Serialized FactHandle not the same as the original.", compareInstances(factHandle, newFactHandle)); }
public void write(MarshallerWriteContext context) throws IOException { context.writeShort(WorkingMemoryAction.WorkingMemoryReteAssertAction); context.writeInt(this.factHandle.getId()); context.writeBoolean(this.removeLogical); context.writeBoolean(this.updateEqualsMap); if (this.ruleOrigin != null) { context.writeBoolean(true); context.writeUTF(ruleOrigin.getPackage()); context.writeUTF(ruleOrigin.getName()); } else { context.writeBoolean(false); } if (this.leftTuple != null) { context.writeBoolean(true); context.writeInt(context.terminalTupleMap.get(this.leftTuple)); } else { context.writeBoolean(false); } }