@@ -58,7 +58,7 @@ protected PropertyBasedCreator(DeserializationContext ctxt,
5858 {
5959 _valueInstantiator = valueInstantiator ;
6060 if (caseInsensitive ) {
61- _propertyLookup = new CaseInsensitiveMap ( );
61+ _propertyLookup = CaseInsensitiveMap . construct ( ctxt . getConfig (). getLocale () );
6262 } else {
6363 _propertyLookup = new HashMap <String , SettableBeanProperty >();
6464 }
@@ -226,14 +226,36 @@ static class CaseInsensitiveMap extends HashMap<String, SettableBeanProperty>
226226 {
227227 private static final long serialVersionUID = 1L ;
228228
229+ /**
230+ * Lower-casing can have Locale-specific minor variations.
231+ *
232+ * @since 2.11
233+ */
234+ protected final Locale _locale ;
235+
236+ @ Deprecated // since 2.11
237+ public CaseInsensitiveMap () {
238+ this (Locale .getDefault ());
239+ }
240+
241+ // @since 2.11
242+ public CaseInsensitiveMap (Locale l ) {
243+ _locale = l ;
244+ }
245+
246+ // @since 2.11
247+ public static CaseInsensitiveMap construct (Locale l ) {
248+ return new CaseInsensitiveMap (l );
249+ }
250+
229251 @ Override
230252 public SettableBeanProperty get (Object key0 ) {
231- return super .get (((String ) key0 ).toLowerCase ());
253+ return super .get (((String ) key0 ).toLowerCase (_locale ));
232254 }
233255
234256 @ Override
235257 public SettableBeanProperty put (String key , SettableBeanProperty value ) {
236- key = key .toLowerCase ();
258+ key = key .toLowerCase (_locale );
237259 return super .put (key , value );
238260 }
239261 }
0 commit comments