From 3c2939f0e54ff18c35efc5bd78b63f2c0940803e Mon Sep 17 00:00:00 2001 From: Benoit Lateltin Date: Mon, 13 Feb 2017 13:08:51 +0100 Subject: [PATCH] HHH-11484 - Fix LocaleTypeDescriptor to handle Locale.ROOT --- .../type/descriptor/java/LocaleTypeDescriptor.java | 8 ++++++-- .../type/descriptor/java/LocaleTypeDescriptorTest.java | 2 ++ 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/hibernate-core/src/main/java/org/hibernate/type/descriptor/java/LocaleTypeDescriptor.java b/hibernate-core/src/main/java/org/hibernate/type/descriptor/java/LocaleTypeDescriptor.java index 9a82fa52501e..f1b0d40eafd2 100644 --- a/hibernate-core/src/main/java/org/hibernate/type/descriptor/java/LocaleTypeDescriptor.java +++ b/hibernate-core/src/main/java/org/hibernate/type/descriptor/java/LocaleTypeDescriptor.java @@ -13,7 +13,7 @@ /** * Descriptor for {@link Locale} handling. - * + * * @author Steve Ebersole */ public class LocaleTypeDescriptor extends AbstractTypeDescriptor { @@ -43,10 +43,14 @@ public String toString(Locale value) { public Locale fromString(String string) { // TODO : Ultimately switch to Locale.Builder for this. However, Locale.Builder is Java 7 - if ( string == null || string.isEmpty() ) { + if ( string == null ) { return null; } + if( string.isEmpty() ) { + return Locale.ROOT; + } + boolean separatorFound = false; int position = 0; char[] chars = string.toCharArray(); diff --git a/hibernate-core/src/test/java/org/hibernate/test/type/descriptor/java/LocaleTypeDescriptorTest.java b/hibernate-core/src/test/java/org/hibernate/test/type/descriptor/java/LocaleTypeDescriptorTest.java index 6fdc745fcd2b..ee2e63dd2502 100644 --- a/hibernate-core/src/test/java/org/hibernate/test/type/descriptor/java/LocaleTypeDescriptorTest.java +++ b/hibernate-core/src/test/java/org/hibernate/test/type/descriptor/java/LocaleTypeDescriptorTest.java @@ -32,6 +32,8 @@ public void testConversionFromString() { assertEquals( toLocale( null, "DE", "ch123" ), LocaleTypeDescriptor.INSTANCE.fromString( "_DE_ch123" ) ); assertEquals( toLocale( "de", null, "ch123" ), LocaleTypeDescriptor.INSTANCE.fromString( "de__ch123" ) ); assertEquals( toLocale( "de", "DE", "ch123" ), LocaleTypeDescriptor.INSTANCE.fromString( "de_DE_ch123" ) ); + assertEquals( toLocale( "", "", "" ), LocaleTypeDescriptor.INSTANCE.fromString( "" ) ); + assertEquals( Locale.ROOT, LocaleTypeDescriptor.INSTANCE.fromString( "" ) ); } public Locale toLocale(String lang, String region, String variant) {