Ticket #18741: 18741.patch

File 18741.patch, 2.1 KB (added by simon04, 5 years ago)
  • src/org/openstreetmap/josm/data/validation/tests/TagChecker.java

    diff --git a/src/org/openstreetmap/josm/data/validation/tests/TagChecker.java b/src/org/openstreetmap/josm/data/validation/tests/TagChecker.java
    index 3324f0b83..dc6a982b3 100644
    a b  
    2222import java.util.Locale;
    2323import java.util.Map;
    2424import java.util.Map.Entry;
     25import java.util.OptionalInt;
    2526import java.util.Set;
    2627import java.util.regex.Pattern;
    2728import java.util.stream.Collectors;
    static String removeUnwantedNonPrintingControlCharacters(String s) {  
    450451    }
    451452
    452453    static boolean containsUnusualUnicodeCharacter(String key, String value) {
    453         return value != null && value.chars().anyMatch(c -> isUnusualUnicodeBlock(key, c));
     454        return getUnusualUnicodeCharacter(key, value).isPresent();
     455    }
     456
     457    static OptionalInt getUnusualUnicodeCharacter(String key, String value) {
     458        return value == null
     459                ? OptionalInt.empty()
     460                : value.chars().filter(c -> isUnusualUnicodeBlock(key, c)).findFirst();
    454461    }
    455462
    456463    /**
    private void checkSingleTagValueSimple(MultiMap<OsmPrimitive, String> withErrors  
    675682                    .build());
    676683            withErrors.put(p, "ICV");
    677684        }
    678         if ((containsUnusualUnicodeCharacter(key, value)) && !withErrors.contains(p, "UUCV")) {
     685        final OptionalInt unusualUnicodeCharacter = getUnusualUnicodeCharacter(key, value);
     686        if (unusualUnicodeCharacter.isPresent() && !withErrors.contains(p, "UUCV")) {
     687            final String codepoint = String.format(Locale.ROOT, "U+%04X", unusualUnicodeCharacter.getAsInt());
    679688            errors.add(TestError.builder(this, Severity.WARNING, UNUSUAL_UNICODE_CHAR_VALUE)
    680                     .message(tr("Tag value contains unusual Unicode character"), s, key)
     689                    .message(tr("Tag value contains unusual Unicode character {0}", codepoint), s, key)
    681690                    .primitives(p)
    682691                    .build());
    683692            withErrors.put(p, "UUCV");