Package org.waveprotocol.wave.concurrencycontrol.common

Examples of org.waveprotocol.wave.concurrencycontrol.common.DeltaPair


    // Deltas with same ops are the same, other info should be ignored
    assertTrue(DeltaPair.areSame(client, server));

    // Transforming the ops should result in only version update server ops
    DeltaPair pair = new DeltaPair(client, server);
    pair = pair.transform();
    assertEquals(0, pair.getClient().size());
    assertEquals(2, pair.getServer().size());
    checkVersionUpdate(pair.getServer().get(0), 1, null);
    checkVersionUpdate(pair.getServer().get(1), 1, resultingVersion);
  }
View Full Code Here


    // Server insert ".2.1"
    List<WaveletOperation> server = CollectionUtils.newArrayList();
    server.add(SERVER_UTIL.insert(2, "1", 0, null));
    server.add(SERVER_UTIL.insert(1, "2", 2, null));

    DeltaPair pair = new DeltaPair(client, server);
    pair = pair.transform();
    // Expect the transformation of the inserts are correct. If client and server
    // have the same insert point, client op is transformed to the left of the server op.

    // Expect client inserts ".A..B."
    assertEquals(2, pair.getClient().size());
    checkInsert(pair.getClient().get(0), 1, "A", 3);
    checkInsert(pair.getClient().get(1), 4, "B", 1);

    // Expect server inserts "..2..1"
    assertEquals(2, pair.getServer().size());
    checkInsert(pair.getServer().get(0), 4, "1", 0);
    checkInsert(pair.getServer().get(1), 2, "2", 3);
  }
View Full Code Here

  @Override
  public DeltaPair transform(Iterable<WaveletOperation> client, Iterable<WaveletOperation> server) {
    Expectation expectation = expectations.removeFirst();
    expectation.assertClientInputValid(client);
    DeltaPair result = expectation.getOutput();
    return result;
  }
View Full Code Here

     * Gets the client/server delta pair that will be output by an appropriately
     * timed and parameterised call to this expected transform.
     */
    DeltaPair getOutput() {
      assertNotNull("No output client delta specified", outputClientDelta);
      return new DeltaPair(outputClientDelta, outputServerDelta);
    }
View Full Code Here

        // under us. This should not happen as the caller of this method should
        // control changes to the underlying set via locks, e.g. writeLock in
        // the WS's WaveletContext.
        throw new IllegalStateException("No delta at version: " + result.getTargetVersion());
      }
      DeltaPair pair = new DeltaPair(result, serverDelta).transform();
      result = new WaveletDelta(delta.getAuthor(), serverDelta.getResultingVersion(),
          pair.getClient());
    }
    return result;
  }
View Full Code Here

      // optimise the delta before transforming against the server delta because
      // it makes transformation more efficient.
      Item item = takeMergedAndOptimisedItem(queue);
      MergingSequence queuedDelta = item.opSequence;

      DeltaPair transformedDeltas = transformer.transform(queuedDelta, transformedServerOps);

      // Even if server op is nullified we must still count the nullified op,
      // hence we use the input server ops for incrementing the version. This
      // is already transformedDelta.getServer() and we don't touch it.
      transformedServerOps = transformedDeltas.getServer();

      // Discard client deltas which have had all their ops transformed away
      if (!transformedDeltas.getClient().isEmpty()) {
        newQueue.add(new Item(
            new MergingSequence(transformedDeltas.getClient()), item.state));
      }
    }
    queue.addAll(newQueue);

    return transformedServerOps;
View Full Code Here

                + serverDelta.getAppliedAtVersion() + " unacknowledged version:"
                + unacknowledged.getTargetVersion() + ". [Received serverDelta:" + serverDelta
                + "] " + this);
      }

      DeltaPair transformedPair = (new DeltaPair(unacknowledged, serverDelta)).transform();
      // The ops of the server delta are transformed, all metadata remains.
      transformedServerDelta = transformedPair.getServer();
      // The unacknowledged delta must have applied after the server delta.
      unacknowledged = new WaveletDelta(unacknowledged.getAuthor(),
          serverDelta.getResultingVersion(), transformedPair.getClient());
    }

    // Transform against any queued ops
    transformedServerDelta = clientOperationQueue.transform(transformedServerDelta);
View Full Code Here

   * returning.
   *
   * @param operations the operations to send, all of which must specify a creator
   */
  public void onClientOperations(WaveletOperation operations[]) throws TransformException {
    DeltaPair transformedPair =
        (new DeltaPair(Arrays.asList(operations), serverOperations)).transform();
    serverOperations = transformedPair.getServer();

    for (WaveletOperation o : transformedPair.getClient()) {
      clientOperationQueue.add(o);
    }
    triggerUnsavedDataListener();
    sendDelta();
  }
View Full Code Here

      // optimise the delta before transforming against the server delta because
      // it makes transformation more efficient.
      Item item = takeMergedAndOptimisedItem(queue);
      MergingSequence queuedDelta = item.opSequence;

      DeltaPair transformedDeltas = transformer.transform(queuedDelta, transformedServerOps);

      // Even if server op is nullified we must still count the nullified op,
      // hence we use the input server ops for incrementing the version. This
      // is already transformedDelta.getServer() and we don't touch it.
      transformedServerOps = transformedDeltas.getServer();

      // Discard client deltas which have had all their ops transformed away
      if (!transformedDeltas.getClient().isEmpty()) {
        newQueue.add(new Item(
            new MergingSequence(transformedDeltas.getClient()), item.state));
      }
    }
    queue.addAll(newQueue);

    return transformedServerOps;
View Full Code Here

        // under us. This should not happen as the caller of this method should
        // control changes to the underlying set via locks, e.g. writeLock in
        // the WS's WaveletContext.
        throw new IllegalStateException("No delta at version: " + result.getTargetVersion());
      }
      DeltaPair pair = new DeltaPair(result, serverDelta).transform();
      result = new WaveletDelta(delta.getAuthor(), serverDelta.getResultingVersion(),
          pair.getClient());
    }
    return result;
  }
View Full Code Here

TOP

Related Classes of org.waveprotocol.wave.concurrencycontrol.common.DeltaPair

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.