Skip to content

Commit aa539ce

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 aae38a1 commit aa539ce

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
@@ -494,7 +494,7 @@ else if (Map.class.isAssignableFrom(targetCls)) {
494494
// Generate the special VALUES field for querying map values
495495
if (valuesInterceptor != null) {
496496
String mapFieldName = field.getSimpleName().toString();
497-
String mapValuesFieldName = mapFieldName.toUpperCase().replace("_", "") + "_VALUES";
497+
String mapValuesFieldName = mapFieldName.toUpperCase(Locale.ROOT).replace("_", "") + "_VALUES";
498498

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

524524
TypeMirror subfieldTypeMirror = subfieldElement.asType();
525525
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)