Changeset 14411 in josm for trunk


Ignore:
Timestamp:
2018-11-04T20:51:19+01:00 (8 months ago)
Author:
wiktorn
Message:

Skip unkown tags in WMS Getcapabilities

In Layer definition, if there is any other tag than ones that are interpreted,
move to the end of the tag, as it may be complex tag and affect further parsing.

Closes: #16940

Location:
trunk
Files:
2 added
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/openstreetmap/josm/io/imagery/WMSImagery.java

    r14367 r14411  
    461461                if (tagEquals(QN_NAME, reader.getName())) {
    462462                    ret.setName(reader.getElementText());
    463                 }
    464                 if (tagEquals(QN_ABSTRACT, reader.getName())) {
     463                } else if (tagEquals(QN_ABSTRACT, reader.getName())) {
    465464                    ret.setAbstract(GetCapabilitiesParseHelper.getElementTextWithSubtags(reader));
    466                 }
    467                 if (tagEquals(QN_TITLE, reader.getName())) {
     465                } else if (tagEquals(QN_TITLE, reader.getName())) {
    468466                    ret.setTitle(reader.getElementText());
    469                 }
    470                 if (tagEquals(QN_CRS, reader.getName())) {
     467                } else if (tagEquals(QN_CRS, reader.getName())) {
    471468                    ret.addCrs(reader.getElementText());
    472                 }
    473                 if (tagEquals(QN_SRS, reader.getName()) && belowWMS130()) {
     469                } else if (tagEquals(QN_SRS, reader.getName()) && belowWMS130()) {
    474470                    ret.addCrs(reader.getElementText());
    475                 }
    476                 if (tagEquals(QN_STYLE, reader.getName())) {
     471                } else if (tagEquals(QN_STYLE, reader.getName())) {
    477472                    parseAndAddStyle(reader, ret);
    478                 }
    479                 if (tagEquals(QN_LAYER, reader.getName())) {
     473                } else if (tagEquals(QN_LAYER, reader.getName())) {
    480474                    parseLayer(reader, ret);
    481                 }
    482                 if (tagEquals(QN_EX_GEOGRAPHIC_BBOX, reader.getName()) && ret.getBounds() == null) {
     475                } else if (tagEquals(QN_EX_GEOGRAPHIC_BBOX, reader.getName()) && ret.getBounds() == null) {
    483476                    ret.setBounds(parseExGeographic(reader));
    484                 }
    485                 if (tagEquals(QN_BOUNDINGBOX, reader.getName())) {
     477                } else if (tagEquals(QN_BOUNDINGBOX, reader.getName())) {
    486478                    Projection conv;
    487479                    if (belowWMS130()) {
     
    493485                        ret.setBounds(parseBoundingBox(reader, conv));
    494486                    }
    495                 }
    496                 if (tagEquals(QN_LATLONBOUNDINGBOX, reader.getName()) && belowWMS130() && ret.getBounds() == null) {
     487                } else if (tagEquals(QN_LATLONBOUNDINGBOX, reader.getName()) && belowWMS130() && ret.getBounds() == null) {
    497488                    ret.setBounds(parseBoundingBox(reader, null));
     489                } else {
     490                    // unknown tag, move to its end as it may have child elements
     491                    GetCapabilitiesParseHelper.moveReaderToEndCurrentTag(reader);
    498492                }
    499493            }
  • trunk/test/unit/org/openstreetmap/josm/io/imagery/WMSImageryTest.java

    r14138 r14411  
    118118        assertEquals("bag:Matching Street", wms.getLayers().get(0).getChildren().get(0).getName());
    119119        assertEquals("Dichtstbijzijnde straat", wms.getLayers().get(0).getChildren().get(0).getTitle());
     120    }
    120121
     122    @Test
     123    public void testForTitleWithinAttribution_ticket16940() throws IOException, WMSGetCapabilitiesException {
     124        tileServer.stubFor(
     125                WireMock.get(WireMock.anyUrl())
     126                .willReturn(WireMock.aResponse().withBody(
     127                        Files.readAllBytes(Paths.get(TestUtils.getRegressionDataFile(16940, "capabilities.xml")))
     128                ))
     129        );
     130        WMSImagery wms = new WMSImagery(tileServer.url("any"));
     131        assertEquals("Hipsográfico", wms.getLayers().stream().findFirst().get().getTitle());
    121132    }
    122133}
Note: See TracChangeset for help on using the changeset viewer.