public WorkingMemoryReteAssertAction(MarshallerReaderContext context) throws IOException {
      this.factHandle = context.handles.get(context.readInt());
      this.removeLogical = context.readBoolean();
      this.updateEqualsMap = context.readBoolean();

      if (context.readBoolean()) {
        String pkgName = context.readUTF();
        String ruleName = context.readUTF();
        Package pkg = context.ruleBase.getPackage(pkgName);
        this.ruleOrigin = pkg.getRule(ruleName);
      }
      if (context.readBoolean()) {
        this.leftTuple = context.terminalTupleMap.get(context.readInt());
      }
    }
  @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 DeactivateCallback(MarshallerReaderContext context) throws IOException {
   this.ruleFlowGroup =
       (InternalRuleFlowGroup) context.wm.getAgenda().getRuleFlowGroup(context.readUTF());
 }
 public WorkingMemoryReteExpireAction(MarshallerReaderContext context) throws IOException {
   this.factHandle = context.handles.get(context.readInt());
   final int nodeId = context.readInt();
   this.node = (ObjectTypeNode) context.sinks.get(Integer.valueOf(nodeId));
 }