コード例 #1
0
  // simple test
  public static void main(String[] args) {
    ZkClient zkclient = new ZkClient("localhost:2191");
    zkclient.setZkSerializer(new ZNRecordSerializer());
    ZkBaseDataAccessor<ZNRecord> accessor = new ZkBaseDataAccessor<ZNRecord>(zkclient);

    // test async create
    List<String> createPaths = Arrays.asList("/test/child1/child1", "/test/child2/child2");
    List<ZNRecord> createRecords = Arrays.asList(new ZNRecord("child1"), new ZNRecord("child2"));

    boolean[] needCreate = new boolean[createPaths.size()];
    Arrays.fill(needCreate, true);
    List<List<String>> pathsCreated =
        new ArrayList<List<String>>(Collections.<List<String>>nCopies(createPaths.size(), null));
    accessor.create(createPaths, createRecords, needCreate, pathsCreated, AccessOption.PERSISTENT);
    System.out.println("pathsCreated: " + pathsCreated);

    // test async set
    List<String> setPaths = Arrays.asList("/test/setChild1/setChild1", "/test/setChild2/setChild2");
    List<ZNRecord> setRecords = Arrays.asList(new ZNRecord("setChild1"), new ZNRecord("setChild2"));

    pathsCreated =
        new ArrayList<List<String>>(Collections.<List<String>>nCopies(setPaths.size(), null));
    boolean[] success =
        accessor.set(setPaths, setRecords, pathsCreated, null, AccessOption.PERSISTENT);
    System.out.println("pathsCreated: " + pathsCreated);
    System.out.println("setSuccess: " + Arrays.toString(success));

    // test async update
    List<String> updatePaths =
        Arrays.asList("/test/updateChild1/updateChild1", "/test/setChild2/setChild2");
    class TestUpdater implements DataUpdater<ZNRecord> {
      final ZNRecord _newData;

      public TestUpdater(ZNRecord newData) {
        _newData = newData;
      }

      @Override
      public ZNRecord update(ZNRecord currentData) {
        return _newData;
      }
    }
    List<DataUpdater<ZNRecord>> updaters =
        Arrays.asList(
            (DataUpdater<ZNRecord>) new TestUpdater(new ZNRecord("updateChild1")),
            (DataUpdater<ZNRecord>) new TestUpdater(new ZNRecord("updateChild2")));

    pathsCreated =
        new ArrayList<List<String>>(Collections.<List<String>>nCopies(updatePaths.size(), null));

    List<ZNRecord> updateRecords =
        accessor.update(updatePaths, updaters, pathsCreated, null, AccessOption.PERSISTENT);
    for (int i = 0; i < updatePaths.size(); i++) {
      success[i] = updateRecords.get(i) != null;
    }
    System.out.println("pathsCreated: " + pathsCreated);
    System.out.println("updateSuccess: " + Arrays.toString(success));

    System.out.println("CLOSING");
    zkclient.close();
  }