use of com.hazelcast.collection.ItemListener in project hazelcast by hazelcast.
the class ListAddListenerMessageTask method createItemListener.
private ItemListener createItemListener(final ClientEndpoint endpoint, final Data partitionKey) {
return new ItemListener() {
@Override
public void itemAdded(ItemEvent item) {
send(item);
}
@Override
public void itemRemoved(ItemEvent item) {
send(item);
}
private void send(ItemEvent event) {
if (endpoint.isAlive()) {
if (!(event instanceof DataAwareItemEvent)) {
throw new IllegalArgumentException("Expecting: DataAwareItemEvent, Found: " + event.getClass().getSimpleName());
}
DataAwareItemEvent dataAwareItemEvent = (DataAwareItemEvent) event;
Data item = dataAwareItemEvent.getItemData();
ClientMessage clientMessage = ListAddListenerCodec.encodeItemEvent(item, event.getMember().getUuid(), event.getEventType().getType());
sendClientMessage(partitionKey, clientMessage);
}
}
};
}
use of com.hazelcast.collection.ItemListener in project hazelcast by hazelcast.
the class ListAddListenerMessageTask method processInternal.
@Override
protected CompletableFuture<UUID> processInternal() {
Data partitionKey = serializationService.toData(parameters.name);
ItemListener listener = createItemListener(endpoint, partitionKey);
EventService eventService = clientEngine.getEventService();
CollectionEventFilter filter = new CollectionEventFilter(parameters.includeValue);
if (parameters.localOnly) {
return newCompletedFuture(eventService.registerLocalListener(getServiceName(), parameters.name, filter, listener).getId());
}
return eventService.registerListenerAsync(getServiceName(), parameters.name, filter, listener).thenApplyAsync(EventRegistration::getId, CALLER_RUNS);
}
use of com.hazelcast.collection.ItemListener in project hazelcast by hazelcast.
the class ClientSetTest method testListener.
@Test
public void testListener() throws Exception {
final CountDownLatch latch = new CountDownLatch(6);
ItemListener<String> listener = new ItemListener<String>() {
public void itemAdded(ItemEvent<String> itemEvent) {
latch.countDown();
}
public void itemRemoved(ItemEvent<String> item) {
}
};
UUID registrationId = set.addItemListener(listener, true);
new Thread() {
public void run() {
for (int i = 0; i < 5; i++) {
set.add("item" + i);
}
set.add("done");
}
}.start();
assertTrue(latch.await(20, TimeUnit.SECONDS));
set.removeItemListener(registrationId);
}
use of com.hazelcast.collection.ItemListener in project hazelcast by hazelcast.
the class QueueAddListenerMessageTask method processInternal.
@Override
protected CompletableFuture<UUID> processInternal() {
final QueueService service = getService(QueueService.SERVICE_NAME);
final Data partitionKey = serializationService.toData(parameters.name);
ItemListener listener = new ItemListener() {
@Override
public void itemAdded(ItemEvent item) {
send(item);
}
@Override
public void itemRemoved(ItemEvent item) {
send(item);
}
private void send(ItemEvent event) {
if (endpoint.isAlive()) {
if (!(event instanceof DataAwareItemEvent)) {
throw new IllegalArgumentException("Expecting: DataAwareItemEvent, Found: " + event.getClass().getSimpleName());
}
DataAwareItemEvent dataAwareItemEvent = (DataAwareItemEvent) event;
Data item = dataAwareItemEvent.getItemData();
ClientMessage clientMessage = QueueAddListenerCodec.encodeItemEvent(item, event.getMember().getUuid(), event.getEventType().getType());
sendClientMessage(partitionKey, clientMessage);
}
}
};
if (parameters.localOnly) {
return newCompletedFuture(service.addLocalItemListener(parameters.name, listener, parameters.includeValue));
}
return service.addItemListenerAsync(parameters.name, listener, parameters.includeValue);
}
use of com.hazelcast.collection.ItemListener in project hazelcast by hazelcast.
the class SetAddListenerMessageTask method createItemListener.
private ItemListener createItemListener(final ClientEndpoint endpoint, final Data partitionKey) {
return new ItemListener() {
@Override
public void itemAdded(ItemEvent item) {
send(item);
}
@Override
public void itemRemoved(ItemEvent item) {
send(item);
}
private void send(ItemEvent event) {
if (endpoint.isAlive()) {
if (!(event instanceof DataAwareItemEvent)) {
throw new IllegalArgumentException("Expecting: DataAwareItemEvent, Found: " + event.getClass().getSimpleName());
}
DataAwareItemEvent dataAwareItemEvent = (DataAwareItemEvent) event;
Data item = dataAwareItemEvent.getItemData();
ClientMessage clientMessage = SetAddListenerCodec.encodeItemEvent(item, event.getMember().getUuid(), event.getEventType().getType());
sendClientMessage(partitionKey, clientMessage);
}
}
};
}
Aggregations