Java源码示例:org.apache.curator.framework.api.BackgroundPathable
示例1
/**
* Test deleteNode method
* @throws Exception
*/
@Test
public void testDeleteNode() throws Exception {
CuratorStateManager spyStateManager = spy(new CuratorStateManager());
CuratorFramework mockClient = mock(CuratorFramework.class);
DeleteBuilder mockDeleteBuilder = mock(DeleteBuilder.class);
// Mockito doesn't support mock type-parametrized class, thus suppress the warning
@SuppressWarnings("rawtypes")
BackgroundPathable mockBackPathable = mock(BackgroundPathable.class);
doReturn(mockClient)
.when(spyStateManager).getCuratorClient();
doReturn(true)
.when(mockClient).blockUntilConnected(anyInt(), any(TimeUnit.class));
doReturn(mockDeleteBuilder)
.when(mockClient).delete();
doReturn(mockBackPathable)
.when(mockDeleteBuilder).withVersion(-1);
spyStateManager.initialize(config);
ListenableFuture<Boolean> result = spyStateManager.deleteExecutionState(PATH);
// Verify the node is deleted correctly
verify(mockDeleteBuilder).withVersion(-1);
assertTrue(result.get());
}
示例2
public static boolean exists(CuratorFramework client, String path, CuratorWatcher watcher) {
try {
if (watcher != null) {
return ((BackgroundPathable) client.checkExists().usingWatcher(watcher)).forPath(path) != null;
}
return client.checkExists().forPath(path) != null;
} catch (Exception e) {
LOGGER.error("ZKUtil-->>exists(CuratorFramework client, String path, CuratorWatcher watcher) error, ", e);
}
return false;
}
示例3
public static String getData(CuratorFramework client, String path, CuratorWatcher watcher) {
try {
if (client.checkExists().forPath(path) == null) {
return null;
}
if (watcher != null) {
return List2StringUtil
.toString((byte[]) ((BackgroundPathable) client.getData().usingWatcher(watcher)).forPath(path));
}
return List2StringUtil.toString((byte[]) client.getData().forPath(path));
} catch (Exception e) {
LOGGER.error("ZKUtil-->>getData(CuratorFramework client, String path, CuratorWatcher watcher) error ", e);
}
return null;
}
示例4
public static List<String> getChilds(CuratorFramework client, String path, CuratorWatcher watcher) {
try {
if (watcher != null) {
return (List) ((BackgroundPathable) client.getChildren().usingWatcher(watcher)).forPath(path);
}
return (List) client.getChildren().forPath(path);
} catch (Exception e) {
LOGGER.error("ZKUtil-->>getChilds(CuratorFramework client, String path, CuratorWatcher watcher) error,", e);
}
return null;
}
示例5
private <T, P extends Watchable<BackgroundPathable<T>> & BackgroundPathable<T>> Pathable<T> maybeWatch(
P dataBuilder) {
if (disableZkWatches) {
return dataBuilder.inBackground(this);
} else {
return dataBuilder.usingWatcher(this).inBackground(this);
}
}
示例6
@Override
public BackgroundPathable<List<String>> watched()
{
watching = new Watching(true);
return this;
}
示例7
@Override
public BackgroundPathable<List<String>> usingWatcher(Watcher watcher)
{
watching = new Watching(client, watcher);
return this;
}
示例8
@Override
public BackgroundPathable<List<String>> usingWatcher(CuratorWatcher watcher)
{
watching = new Watching(client, watcher);
return this;
}
示例9
@Override
public BackgroundPathable<T> watched() {
throw new UnsupportedOperationException("Not implemented in MockCurator");
}
示例10
@Override
public BackgroundPathable<T> usingWatcher(Watcher watcher) {
throw new UnsupportedOperationException("Not implemented in MockCurator");
}
示例11
@Override
public BackgroundPathable<T> usingWatcher(CuratorWatcher curatorWatcher) {
throw new UnsupportedOperationException("Not implemented in MockCurator");
}
示例12
@Override
public BackgroundPathable<Void> withVersion(int i) {
throw new UnsupportedOperationException("Not implemented in MockCurator");
}
示例13
/**
* Test getNodeData method
* @throws Exception
*/
@Test
public void testGetNodeData() throws Exception {
CuratorStateManager spyStateManager = spy(new CuratorStateManager());
final CuratorFramework mockClient = mock(CuratorFramework.class);
GetDataBuilder mockGetBuilder = mock(GetDataBuilder.class);
// Mockito doesn't support mock type-parametrized class, thus suppress the warning
@SuppressWarnings("rawtypes")
BackgroundPathable mockBackPathable = mock(BackgroundPathable.class);
final CuratorEvent mockEvent = mock(CuratorEvent.class);
Message.Builder mockBuilder = mock(Message.Builder.class);
Message mockMessage = mock(Message.class);
final byte[] data = "wy_1989".getBytes();
doReturn(mockMessage)
.when(mockBuilder).build();
doReturn(data)
.when(mockEvent).getData();
doReturn(PATH)
.when(mockEvent).getPath();
doReturn(mockClient)
.when(spyStateManager).getCuratorClient();
doReturn(true)
.when(mockClient).blockUntilConnected(anyInt(), any(TimeUnit.class));
doReturn(mockGetBuilder)
.when(mockClient).getData();
doReturn(mockBackPathable)
.when(mockGetBuilder).usingWatcher(any(Watcher.class));
doAnswer(new Answer<Object>() {
@Override
public Object answer(InvocationOnMock invocationOnMock) throws Throwable {
Object[] objests = invocationOnMock.getArguments();
// the first object is the BackgroundCallback
((BackgroundCallback) objests[0]).processResult(mockClient, mockEvent);
return null;
}
}).when(mockBackPathable).inBackground(any(BackgroundCallback.class));
spyStateManager.initialize(config);
// Verify the data on node is fetched correctly
ListenableFuture<Message> result = spyStateManager.getNodeData(null, PATH, mockBuilder);
assertTrue(result.get().equals(mockMessage));
}
示例14
@Override
public void usingWatcher(BackgroundPathable<?> backgroundPathable, String path) throws Exception {
backgroundPathable.inBackground(callback, context, executor).forPath(path);
}
示例15
public void usingWatcher(BackgroundPathable<?> backgroundPathable, String path) throws Exception {
backgroundPathable.forPath(path);
}
示例16
@Override
public BackgroundPathable<List<String>> watched()
{
watching = new Watching(client, true);
return this;
}
示例17
@Override
public BackgroundPathable<List<String>> usingWatcher(Watcher watcher)
{
watching = new Watching(client, watcher);
return this;
}
示例18
@Override
public BackgroundPathable<List<String>> usingWatcher(CuratorWatcher watcher)
{
watching = new Watching(client, watcher);
return this;
}