Ticket #9560: 9560_v2.patch

File 9560_v2.patch, 2.9 KB (added by simon04, 10 years ago)
  • src/org/openstreetmap/josm/data/Preferences.java

    commit 4598dc1cf3b79fad2da64b60f9ac97bbcdea24b7
    Author: Simon Legner <Simon.Legner@gmail.com>
    Date:   Fri Jan 10 19:13:28 2014 +0100
    
        fix #9560 - IllegalArgumentException when color.layer contains "{ }"
    
    diff --git a/src/org/openstreetmap/josm/data/Preferences.java b/src/org/openstreetmap/josm/data/Preferences.java
    index ac199d6..7680dc4 100644
    a b import org.openstreetmap.josm.io.MirroredInputStream;  
    5252import org.openstreetmap.josm.io.XmlWriter;
    5353import org.openstreetmap.josm.tools.CheckParameterUtil;
    5454import org.openstreetmap.josm.tools.ColorHelper;
     55import org.openstreetmap.josm.tools.I18n;
    5556import org.openstreetmap.josm.tools.Utils;
    5657
    5758/**
    public class Preferences {  
    835836        try {
    836837            Matcher m = Pattern.compile("mappaint\\.(.+?)\\.(.+)").matcher(o);
    837838            if (m.matches()) {
    838                 return tr("Paint style {0}: {1}", tr(m.group(1)), tr(m.group(2)));
     839                return tr("Paint style {0}: {1}", tr(I18n.escape(m.group(1))), tr(I18n.escape(m.group(2))));
    839840            }
    840841        } catch (Exception e) {
    841842            Main.warn(e);
    public class Preferences {  
    843844        try {
    844845            Matcher m = Pattern.compile("layer (.+)").matcher(o);
    845846            if (m.matches()) {
    846                 return tr("Layer: {0}", tr(m.group(1)));
     847                return tr("Layer: {0}", tr(I18n.escape(m.group(1))));
    847848            }
    848849        } catch (Exception e) {
    849850            Main.warn(e);
    850851        }
    851         return tr(colornames.containsKey(o) ? colornames.get(o) : o);
     852        return tr(I18n.escape(colornames.containsKey(o) ? colornames.get(o) : o));
    852853    }
    853854
    854855    /**
  • new file test/unit/org/openstreetmap/josm/data/PreferencesTest.groovy

    diff --git a/test/unit/org/openstreetmap/josm/data/PreferencesTest.groovy b/test/unit/org/openstreetmap/josm/data/PreferencesTest.groovy
    new file mode 100644
    index 0000000..acd8f4b
    - +  
     1package org.openstreetmap.josm.data
     2
     3import org.openstreetmap.josm.Main
     4
     5class PreferencesTest extends GroovyTestCase {
     6    @Override
     7    void setUp() {
     8        Main.initApplicationPreferences()
     9    }
     10
     11    void testColorName() {
     12        Main.pref.getColorName("color.layer {5DE308C0-916F-4B5A-B3DB-D45E17F30172}.gpx") == "{5DE308C0-916F-4B5A-B3DB-D45E17F30172}.gpx"
     13    }
     14}
  • new file test/unit/org/openstreetmap/josm/tools/I18nTest.groovy

    diff --git a/test/unit/org/openstreetmap/josm/tools/I18nTest.groovy b/test/unit/org/openstreetmap/josm/tools/I18nTest.groovy
    new file mode 100644
    index 0000000..96c5bd5
    - +  
     1// License: GPL. For details, see LICENSE file.
     2package org.openstreetmap.josm.tools
     3
     4class I18nTest extends GroovyTestCase {
     5    void testEscape() {
     6        def foobar = "{foo'bar}"
     7        assert I18n.escape(foobar) == "'{'foo''bar'}'"
     8        assert I18n.tr(I18n.escape(foobar)) == foobar
     9    }
     10}