This is an automated email from the ASF dual-hosted git repository. borinquenkid pushed a commit to branch test/document-datamapping-core-finders in repository https://gitbox.apache.org/repos/asf/grails-core.git
commit e4ace7700d1184e0088462b759ab797f5ac63187 Author: Walter Duque de Estrada <[email protected]> AuthorDate: Sat Aug 15 16:10:41 2026 -0500 Deduplicate the identity-property fallback in MethodExpression convertArguments and convertArgumentsForProp each had their own copy of "fall back to the identity property when getPropertyByName returns null" - extract a shared resolveProperty helper instead. This also lets convertArgumentsForProp drop its now-unused PersistentEntity/ propertyName parameters, and removes NotInList#convertArguments' redundant self-assigned locals along the way. Co-Authored-By: Claude Sonnet 5 <[email protected]> --- .../datastore/gorm/finders/MethodExpression.java | 39 +++++++++++----------- 1 file changed, 19 insertions(+), 20 deletions(-) diff --git a/grails-datamapping-core/src/main/groovy/org/grails/datastore/gorm/finders/MethodExpression.java b/grails-datamapping-core/src/main/groovy/org/grails/datastore/gorm/finders/MethodExpression.java index 7c67a91de4..c580720aea 100644 --- a/grails-datamapping-core/src/main/groovy/org/grails/datastore/gorm/finders/MethodExpression.java +++ b/grails-datamapping-core/src/main/groovy/org/grails/datastore/gorm/finders/MethodExpression.java @@ -74,13 +74,7 @@ public abstract class MethodExpression { public void convertArguments(PersistentEntity persistentEntity) { ConversionService conversionService = persistentEntity .getMappingContext().getConversionService(); - PersistentProperty<?> prop = persistentEntity - .getPropertyByName(propertyName); - if (prop == null) { - if (propertyName.equals(persistentEntity.getIdentity().getName())) { - prop = persistentEntity.getIdentity(); - } - } + PersistentProperty<?> prop = resolveProperty(persistentEntity, propertyName); if (prop != null && arguments != null && argumentsRequired > 0) { Class<?> type = prop.getType(); for (int i = 0; i < argumentsRequired; i++) { @@ -260,11 +254,8 @@ public abstract class MethodExpression { public void convertArguments(PersistentEntity persistentEntity) { ConversionService conversionService = persistentEntity .getMappingContext().getConversionService(); - String propertyName = this.propertyName; - PersistentProperty<?> prop = persistentEntity - .getPropertyByName(propertyName); - Object[] arguments = this.arguments; - convertArgumentsForProp(persistentEntity, prop, propertyName, arguments, conversionService); + PersistentProperty<?> prop = resolveProperty(persistentEntity, propertyName); + convertArgumentsForProp(prop, arguments, conversionService); } } @@ -299,9 +290,8 @@ public abstract class MethodExpression { public void convertArguments(PersistentEntity persistentEntity) { ConversionService conversionService = persistentEntity .getMappingContext().getConversionService(); - PersistentProperty<?> prop = persistentEntity - .getPropertyByName(propertyName); - convertArgumentsForProp(persistentEntity, prop, propertyName, arguments, conversionService); + PersistentProperty<?> prop = resolveProperty(persistentEntity, propertyName); + convertArgumentsForProp(prop, arguments, conversionService); } } @@ -498,12 +488,21 @@ public abstract class MethodExpression { } - private static void convertArgumentsForProp(PersistentEntity persistentEntity, PersistentProperty<?> prop, String propertyName, Object[] arguments, ConversionService conversionService) { - if (prop == null) { - if (propertyName.equals(persistentEntity.getIdentity().getName())) { - prop = persistentEntity.getIdentity(); - } + /** + * Resolves the given property name against the entity, falling back to the identity property + * when there is no regular property by that name (e.g. {@code findByIdInList}). Shared by the + * base {@link #convertArguments} and {@link #convertArgumentsForProp} so the fallback exists in + * exactly one place. + */ + private static PersistentProperty<?> resolveProperty(PersistentEntity persistentEntity, String propertyName) { + PersistentProperty<?> prop = persistentEntity.getPropertyByName(propertyName); + if (prop == null && propertyName.equals(persistentEntity.getIdentity().getName())) { + return persistentEntity.getIdentity(); } + return prop; + } + + private static void convertArgumentsForProp(PersistentProperty<?> prop, Object[] arguments, ConversionService conversionService) { if (prop != null) { Class<?> type = prop.getType(); Collection<?> collection = (Collection<?>) arguments[0];
