@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)); }