protected void saveData() { synchronized ((Integer) processedRow) { List<PlaceRecord> records = dataProvider.getList(); if (records.size() == 0) return; String lat = LocationFetcher.getLatResult(); String lng = LocationFetcher.getLngResult(); if (processedRow < records.size()) { PlaceRecord r = records.get(processedRow); r.setLatitude(lat); r.setLongitude(lng); locationService.savePlaceRecord( r, new AsyncCallback<Void>() { @Override public void onFailure(Throwable caught) { GWT.log("save failed"); DialogBox box = new DialogBox(); box.setTitle("savePlaceRecord Failed"); box.setText(caught.getMessage()); box.show(); } @Override public void onSuccess(Void result) { GWT.log("save ok"); // refresh table dataProvider.refresh(); LocationFetcher.setLatResult(""); LocationFetcher.setLngResult(""); } }); } else { GWT.log("lat and lng is null"); } } }