Skip to content

Commit c772d31

Browse files
committed
fix: use locale-agnostic uppercase in metamodel generator (#700)
The metamodel generator was using String.toUpperCase() without specifying a locale, causing non-ASCII characters in generated field names when running in Turkish locale. For example, 'id' was converted to 'İD' instead of 'ID'. Changed all toUpperCase() calls to use Locale.ROOT for consistent ASCII uppercase conversion regardless of system locale settings: - MetamodelGenerator: Map field values and nested field names - ObjectUtils.staticField(): Static field name generation
1 parent 97ff942 commit c772d31

File tree

2 files changed

+4
-4
lines changed

2 files changed

+4
-4
lines changed

redis-om-spring/src/main/java/com/redis/om/spring/metamodel/MetamodelGenerator.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -490,7 +490,7 @@ else if (Map.class.isAssignableFrom(targetCls)) {
490490
// Generate the special VALUES field for querying map values
491491
if (valuesInterceptor != null) {
492492
String mapFieldName = field.getSimpleName().toString();
493-
String mapValuesFieldName = mapFieldName.toUpperCase().replace("_", "") + "_VALUES";
493+
String mapValuesFieldName = mapFieldName.toUpperCase(Locale.ROOT).replace("_", "") + "_VALUES";
494494

495495
// Add the VALUES field as a special metamodel field
496496
Triple<ObjectGraphFieldSpec, FieldSpec, CodeBlock> valuesField = generateMapValuesFieldMetamodel(entity,
@@ -514,8 +514,8 @@ else if (Map.class.isAssignableFrom(targetCls)) {
514514
if (subfieldElement.getAnnotation(com.redis.om.spring.annotations.Indexed.class) != null) {
515515
String subfieldName = subfieldElement.getSimpleName().toString();
516516
String jsonFieldName = getJsonFieldName(subfieldElement);
517-
String nestedFieldName = field.getSimpleName().toString().toUpperCase().replace("_",
518-
"") + "_" + subfieldName.toUpperCase().replace("_", "");
517+
String nestedFieldName = field.getSimpleName().toString().toUpperCase(Locale.ROOT).replace("_",
518+
"") + "_" + subfieldName.toUpperCase(Locale.ROOT).replace("_", "");
519519

520520
TypeMirror subfieldTypeMirror = subfieldElement.asType();
521521
String subfieldTypeName = subfieldTypeMirror.toString();

redis-om-spring/src/main/java/com/redis/om/spring/util/ObjectUtils.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -873,7 +873,7 @@ public static String replaceIfIllegalJavaIdentifierCharacter(final String word)
873873
*/
874874
public static String staticField(final String externalName) {
875875
requireNonNull(externalName);
876-
return ObjectUtils.toUnderscoreSeparated(javaNameFromExternal(externalName)).toUpperCase();
876+
return ObjectUtils.toUnderscoreSeparated(javaNameFromExternal(externalName)).toUpperCase(java.util.Locale.ROOT);
877877
}
878878

879879
/**

0 commit comments

Comments
 (0)