package org.vaadin.touchkit.gwt.client.vcom;
import org.vaadin.touchkit.extensions.LocalStorage;
import com.google.gwt.storage.client.Storage;
import com.vaadin.client.ServerConnector;
import com.vaadin.client.communication.RpcProxy;
import com.vaadin.client.extensions.AbstractExtensionConnector;
import com.vaadin.shared.ui.Connect;
@SuppressWarnings("serial")
@Connect(LocalStorage.class)
public class LocalStorageConnector extends AbstractExtensionConnector {
private LocalStorageServerRpc rpc = RpcProxy.create(
LocalStorageServerRpc.class, this);
public LocalStorageConnector() {
registerRpc(LocalStorageClientRpc.class, new LocalStorageClientRpc() {
@Override
public void detectValue(int requestId, String key) {
try {
String value = null;
Storage localStorageIfSupported = Storage
.getLocalStorageIfSupported();
if (localStorageIfSupported != null) {
value = localStorageIfSupported.getItem(key);
rpc.onValueDetected(requestId, value);
} else {
throw new Exception("Local storage not supported");
}
} catch (Exception e) {
rpc.onValueDetectionFailure(requestId, e.getMessage());
}
}
@Override
public void put(int requestId, String key, String value) {
try {
Storage localStorageIfSupported = Storage
.getLocalStorageIfSupported();
if (localStorageIfSupported != null) {
localStorageIfSupported.setItem(key, value);
rpc.putSucceeded(requestId, value);
} else {
throw new Exception("Local storage not supported!");
}
} catch (Exception e) {
rpc.putFailed(requestId, e.getLocalizedMessage());
}
}
});
}
@Override
protected void extend(ServerConnector target) {
}
}