Пример #1
0
 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));
  }
Пример #3
0
    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);
      }
    }