浏览代码

Change DataSource addDataChangeHandler() return type to Registration

Remove DataSource removeDataChangeHandler()

Change-Id: I07a92ad6e7d2c75ca8f53a3376d0b8157559cb70
feature/vaadin8-book
Aleksi Hietanen 8 年前
父节点
当前提交
9764e11842

+ 6
- 7
server/src/main/java/com/vaadin/server/communication/data/typed/AbstractDataSource.java 查看文件

@@ -18,6 +18,8 @@ package com.vaadin.server.communication.data.typed;
import java.util.LinkedHashSet;
import java.util.Set;

import com.vaadin.event.handler.Registration;

/**
* Base class for AbstractDataSource. Provides tracking for
* {@link DataChangeHandler}s and helper methods to call them.
@@ -26,18 +28,15 @@ import java.util.Set;
*/
public abstract class AbstractDataSource<T> implements DataSource<T> {

protected Set<DataChangeHandler<T>> handlers = new LinkedHashSet<DataChangeHandler<T>>();
protected final Set<DataChangeHandler<T>> handlers = new LinkedHashSet<DataChangeHandler<T>>();

@Override
public void addDataChangeHandler(DataChangeHandler<T> handler) {
public Registration addDataChangeHandler(DataChangeHandler<T> handler) {
if (handler != null) {
handlers.add(handler);
return () -> handlers.remove(handler);
}
}

@Override
public void removeDataChangeHandler(DataChangeHandler<T> handler) {
handlers.remove(handler);
return () -> { /* NO-OP */ };
}

/**

+ 6
- 5
server/src/main/java/com/vaadin/server/communication/data/typed/DataProvider.java 查看文件

@@ -21,6 +21,7 @@ import java.util.HashSet;
import java.util.LinkedHashSet;
import java.util.Set;

import com.vaadin.event.handler.Registration;
import com.vaadin.server.AbstractExtension;
import com.vaadin.server.ClientConnector;
import com.vaadin.shared.data.DataRequestRpc;
@@ -172,7 +173,7 @@ public abstract class DataProvider<T> extends AbstractExtension {
protected DataProviderClientRpc rpc;

protected DataSource<T> dataSource;
private DataChangeHandler<T> dataChangeHandler;
private Registration dataChangeHandler;
private DetachListener detachListener;
private DataKeyMapper<T> keyMapper;

@@ -181,8 +182,8 @@ public abstract class DataProvider<T> extends AbstractExtension {
this.dataSource = dataSource;
rpc = getRpcProxy(DataProviderClientRpc.class);
registerRpc(createRpc());
dataChangeHandler = createDataChangeHandler();
this.dataSource.addDataChangeHandler(dataChangeHandler);
dataChangeHandler = this.dataSource
.addDataChangeHandler(createDataChangeHandler());
keyMapper = createKeyMapper();
}

@@ -242,7 +243,7 @@ public abstract class DataProvider<T> extends AbstractExtension {
public DataKeyMapper<T> getKeyMapper() {
return keyMapper;
}
public abstract void refresh(T data);

/**
@@ -311,7 +312,7 @@ public abstract class DataProvider<T> extends AbstractExtension {
*/
protected void cleanUp() {
if (dataSource != null) {
dataSource.removeDataChangeHandler(dataChangeHandler);
dataChangeHandler.removeHandler();
dataChangeHandler = null;
}
if (detachListener != null) {

+ 3
- 9
server/src/main/java/com/vaadin/server/communication/data/typed/DataSource.java 查看文件

@@ -19,6 +19,8 @@ import java.io.Serializable;
import java.util.Arrays;
import java.util.Collection;

import com.vaadin.event.handler.Registration;

/**
* Minimal DataSource API for communication between the DataProvider and a back
* end service.
@@ -53,15 +55,7 @@ public interface DataSource<T> extends Iterable<T>, Serializable {
* @param handler
* data change handler
*/
void addDataChangeHandler(DataChangeHandler<T> handler);

/**
* Removed a DataChangeHandler from this DataSource.
*
* @param handler
* data change handler
*/
void removeDataChangeHandler(DataChangeHandler<T> handler);
Registration addDataChangeHandler(DataChangeHandler<T> handler);

/**
* This method creates a new {@link ListDataSource} from a given Collection.

正在加载...
取消
保存