Changeset 11773 in josm


Ignore:
Timestamp:
2017-03-24T22:30:25+01:00 (2 years ago)
Author:
wiktorn
Message:

Fix NPE when there is no supported format for WMTS Tile Source

  • generate warning when no supported format was found in GetCapabilities document
  • skip layers with no supported formats

See: #14558

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/openstreetmap/josm/data/imagery/WMTSTileSource.java

    r11559 r11773  
    356356            if (event == XMLStreamReader.START_ELEMENT) {
    357357                if (QN_LAYER.equals(reader.getName())) {
    358                     layers.add(parseLayer(reader));
     358                    Layer l = parseLayer(reader);
     359                    if (l != null) {
     360                        layers.add(l);
     361                    }
    359362                }
    360363                if (QN_TILEMATRIXSET.equals(reader.getName())) {
     
    387390        Stack<QName> tagStack = new Stack<>();
    388391        List<String> supportedMimeTypes = Arrays.asList(ImageIO.getReaderMIMETypes());
     392        Collection<String> unsupportedFormats = new ArrayList<>();
    389393
    390394        for (int event = reader.getEventType();
     
    398402                        if (supportedMimeTypes.contains(format)) {
    399403                            layer.format = format;
     404                        } else {
     405                            unsupportedFormats.add(format);
    400406                        }
    401407                    } else if (GetCapabilitiesParseHelper.QN_OWS_IDENTIFIER.equals(reader.getName())) {
     
    428434        if (layer.style == null) {
    429435            layer.style = "";
     436        }
     437        if (layer.format == null) {
     438            // no format found - it's mandatory parameter - can't use this layer
     439            Main.warn(tr("Can''t use layer {0} because no supported formats where found. Layer is available in formats: {1}",
     440                    layer.name,
     441                    String.join(", ", unsupportedFormats)));
     442            return null;
    430443        }
    431444        return layer;
Note: See TracChangeset for help on using the changeset viewer.