Changeset 34711 in osm for applications/editors


Ignore:
Timestamp:
2018-10-31T21:33:39+01:00 (6 years ago)
Author:
donvip
Message:

see #josm16926 - add robustness to Cadastre API errors

Location:
applications/editors/josm/plugins/cadastre-fr/src/org/openstreetmap/josm/plugins/fr/cadastre
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • applications/editors/josm/plugins/cadastre-fr/src/org/openstreetmap/josm/plugins/fr/cadastre/actions/MenuActionLoadFromCache.java

    r34668 r34711  
    5454                    !CadastrePlugin.isLambert_cc9())
    5555                    || (ext.length() == 4 && ext.substring(0, CacheControl.C_UTM20N.length()).equals(CacheControl.C_UTM20N) &&
    56                             !(CadastrePlugin.isUtm_france_dom()))
     56                            !CadastrePlugin.isUtm_france_dom())
    5757                    || (ext.length() == 1 && !CadastrePlugin.isLambert())) {
    5858                        JOptionPane.showMessageDialog(MainApplication.getMainFrame(),
  • applications/editors/josm/plugins/cadastre-fr/src/org/openstreetmap/josm/plugins/fr/cadastre/api/CadastreAPI.java

    r34351 r34711  
    1010
    1111import javax.json.Json;
     12import javax.json.JsonArray;
     13import javax.json.JsonObject;
     14import javax.json.JsonStructure;
    1215
    1316import org.openstreetmap.josm.data.Bounds;
     17import org.openstreetmap.josm.io.OsmApiException;
    1418import org.openstreetmap.josm.tools.HttpClient;
    1519import org.openstreetmap.josm.tools.JosmRuntimeException;
     
    4650     */
    4751    public static Set<String> getSheets(double minlon, double minlat, double maxlon, double maxlat) throws IOException {
     52        URL url = new URL(API_ENDPOINT + "/feuilles?bbox=" + String.join(",",
     53                Double.toString(minlon), Double.toString(minlat), Double.toString(maxlon), Double.toString(maxlat)));
    4854        try {
    49             return Json.createReader(new StringReader(
    50                     HttpClient.create(new URL(API_ENDPOINT + "/feuilles?bbox=" + String.join(",",
    51                             Double.toString(minlon), Double.toString(minlat), Double.toString(maxlon), Double.toString(maxlat))))
    52                     .connect().fetchContent()))
    53                     .readArray().stream().map(x -> x.asJsonObject().getString("id")).collect(Collectors.toSet());
     55            JsonStructure json = Json.createReader(new StringReader(HttpClient.create(url).connect().fetchContent())).read();
     56            if (json instanceof JsonArray) {
     57                return json.asJsonArray().stream().map(x -> x.asJsonObject().getString("id")).collect(Collectors.toSet());
     58            } else {
     59                JsonObject obj = json.asJsonObject();
     60                throw new IOException(new OsmApiException(obj.getInt("code"), null, obj.getString("message"), url.toExternalForm()));
     61            }
    5462        } catch (MalformedURLException e) {
    5563            throw new JosmRuntimeException(e);
  • applications/editors/josm/plugins/cadastre-fr/src/org/openstreetmap/josm/plugins/fr/cadastre/download/CadastreDownloadTask.java

    r34355 r34711  
    1313import java.util.stream.Stream;
    1414
     15import javax.swing.JOptionPane;
     16
    1517import org.openstreetmap.josm.actions.downloadtasks.DownloadOsmTask;
    1618import org.openstreetmap.josm.actions.downloadtasks.DownloadParams;
     
    2022import org.openstreetmap.josm.data.osm.UploadPolicy;
    2123import org.openstreetmap.josm.gui.MainApplication;
     24import org.openstreetmap.josm.gui.Notification;
    2225import org.openstreetmap.josm.gui.layer.OsmDataLayer;
    2326import org.openstreetmap.josm.gui.progress.ProgressMonitor;
    2427import org.openstreetmap.josm.plugins.fr.cadastre.api.CadastreAPI;
    2528import org.openstreetmap.josm.tools.Logging;
     29import org.openstreetmap.josm.tools.Utils;
    2630
    2731/**
     
    5963        } catch (IOException e) {
    6064            Logging.error(e);
     65            new Notification(Utils.escapeReservedCharactersHTML(Utils.getRootCause(e).getMessage()))
     66                .setIcon(JOptionPane.ERROR_MESSAGE).show();
    6167        }
    6268        return MainApplication.worker.submit(() -> {
Note: See TracChangeset for help on using the changeset viewer.