Ignore:
Timestamp:
2016-06-01T02:41:04+02:00 (8 years ago)
Author:
donvip
Message:

see #josm12878 - update plugin to work with new cadastre version

File:
1 edited

Legend:

Unmodified
Added
Removed
  • applications/editors/josm/plugins/cadastre-fr/src/cadastre_fr/CadastreInterface.java

    r32211 r32212  
    99import java.io.InputStreamReader;
    1010import java.io.OutputStream;
     11import java.net.CookieHandler;
    1112import java.net.HttpURLConnection;
    1213import java.net.MalformedURLException;
     14import java.net.URISyntaxException;
    1315import java.net.URL;
    1416import java.nio.charset.StandardCharsets;
    1517import java.util.ArrayList;
    1618import java.util.Date;
     19import java.util.HashMap;
    1720import java.util.List;
    1821
     
    2427import org.openstreetmap.josm.Main;
    2528import org.openstreetmap.josm.data.coor.EastNorth;
     29import org.openstreetmap.josm.data.validation.util.Entities;
    2630import org.openstreetmap.josm.gui.layer.Layer;
    2731import org.openstreetmap.josm.tools.GBC;
     
    124128                    }
    125129                    success = true;
    126                     String headerName;
    127                     for (int i=1; (headerName = urlConn.getHeaderFieldKey(i))!=null; i++) {
    128                         if (Main.isDebugEnabled()) {
    129                             Main.debug(headerName + ": " + urlConn.getHeaderField(i));
     130                    // See https://bugs.openjdk.java.net/browse/JDK-8036017
     131                    // When a cookie handler is setup, "Set-Cookie" header returns empty values
     132                    CookieHandler cookieHandler = CookieHandler.getDefault();
     133                    if (cookieHandler != null) {
     134                        if (handleCookie(cookieHandler.get(searchFormURL.toURI(), new HashMap<String,List<String>>()).get("Cookie").get(0))) {
     135                            break;
    130136                        }
    131                         if ("Set-Cookie".equals(headerName)) {
    132                             cookie = urlConn.getHeaderField(i);
    133                             if (cookie.isEmpty()) {
    134                                 Main.warn("received empty cookie");
    135                                 cookie = null;
    136                             } else {
    137                                 cookie = cookie.substring(0, cookie.indexOf(';'));
    138                                 cookieTimestamp = new Date().getTime();
    139                                 Main.info("received cookie=" + cookie + " at " + new Date(cookieTimestamp));
     137                    } else {
     138                        String headerName;
     139                        for (int i=1; (headerName = urlConn.getHeaderFieldKey(i))!=null; i++) {
     140                            if ("Set-Cookie".equals(headerName) && handleCookie(urlConn.getHeaderField(i))) {
    140141                                break;
    141                             }
    142                         } 
     142                            } 
     143                        }
    143144                    }
    144145                } else {
     
    148149                }
    149150            }
    150         } catch (MalformedURLException e) {
     151        } catch (MalformedURLException | URISyntaxException e) {
    151152            throw new IOException("Illegal url.", e);
    152153        }
     154    }
     155
     156    private boolean handleCookie(String pCookie) {
     157        cookie = pCookie;
     158        if (cookie == null || cookie.isEmpty()) {
     159            Main.warn("received empty cookie");
     160            cookie = null;
     161        } else {
     162            int index = cookie.indexOf(';');
     163            if (index > -1) {
     164                cookie = cookie.substring(0, index);
     165            }
     166            cookieTimestamp = new Date().getTime();
     167            Main.info("received cookie=" + cookie + " at " + new Date(cookieTimestamp));
     168        }
     169        return cookie != null;
    153170    }
    154171
     
    320337                    lines = lines.substring(lines.indexOf(C_INTERFACE_VECTOR),lines.length());
    321338                    lines = lines.substring(0, lines.indexOf('\''));
     339                    lines = Entities.unescape(lines);
    322340                    Main.info("interface ref.:"+lines);
    323341                    return lines;
     
    335353                                wmsLayer.setCodeCommune(listOfFeuilles.get(res).ref);
    336354                                lines = buildRasterFeuilleInterfaceRef(listOfFeuilles.get(res).ref);
     355                                lines = Entities.unescape(lines);
    337356                                Main.info("interface ref.:"+lines);
    338357                                return lines;
Note: See TracChangeset for help on using the changeset viewer.