This is an automated email from the ASF dual-hosted git repository. borinquenkid pushed a commit to branch 8.0.x-hibernate7 in repository https://gitbox.apache.org/repos/asf/grails-core.git
commit e5311da0aa00528211e25b584bcabf3bf0f7cc55 Author: Walter Duque de Estrada <[email protected]> AuthorDate: Wed Feb 25 23:08:29 2026 -0600 Fix PMD DataflowAnomalyAnalysis in CriteriaMethodInvoker --- grails-data-hibernate7/core/PMD.md | 353 +++++++++++++++++++++ .../groovy/grails/orm/CriteriaMethodInvoker.java | 84 +++-- 2 files changed, 394 insertions(+), 43 deletions(-) diff --git a/grails-data-hibernate7/core/PMD.md b/grails-data-hibernate7/core/PMD.md new file mode 100644 index 0000000000..173ec625d3 --- /dev/null +++ b/grails-data-hibernate7/core/PMD.md @@ -0,0 +1,353 @@ +PMD Error,Fully Qualified Class,Line Number,DONE +DataflowAnomalyAnalysis,grails.orm.CriteriaMethodInvoker,151,YES +DataflowAnomalyAnalysis,grails.orm.CriteriaMethodInvoker,154,YES +DataflowAnomalyAnalysis,grails.orm.CriteriaMethodInvoker,154,YES +DataflowAnomalyAnalysis,grails.orm.CriteriaMethodInvoker,155,YES +DataflowAnomalyAnalysis,grails.orm.CriteriaMethodInvoker,155,YES +DataflowAnomalyAnalysis,grails.orm.CriteriaMethodInvoker,184,YES +DataflowAnomalyAnalysis,grails.orm.CriteriaMethodInvoker,210,YES +DataflowAnomalyAnalysis,grails.orm.CriteriaMethodInvoker,220,YES +DataflowAnomalyAnalysis,grails.orm.CriteriaMethodInvoker,221,YES +DataflowAnomalyAnalysis,grails.orm.CriteriaMethodInvoker,240,YES +AvoidFieldNameMatchingMethodName,grails.orm.HibernateCriteriaBuilder,101, +AvoidFieldNameMatchingMethodName,grails.orm.HibernateCriteriaBuilder,102, +AvoidFieldNameMatchingMethodName,grails.orm.HibernateCriteriaBuilder,114, +AvoidFieldNameMatchingMethodName,grails.orm.HibernateCriteriaBuilder,115, +AvoidDuplicateLiterals,grails.orm.HibernateCriteriaBuilder,117, +ConstructorCallsOverridableMethod,grails.orm.HibernateCriteriaBuilder,121, +ConstructorCallsOverridableMethod,grails.orm.HibernateCriteriaBuilder,128, +AvoidDuplicateLiterals,grails.orm.HibernateCriteriaBuilder,504, +CompareObjectsWithEquals,grails.orm.HibernateCriteriaBuilder,855, +NullAssignment,grails.orm.HibernateCriteriaBuilder,1213, +AvoidFieldNameMatchingMethodName,org.grails.orm.hibernate.AbstractHibernateDatastore,112, +CloseResource,org.grails.orm.hibernate.AbstractHibernateDatastore,137, +CloseResource,org.grails.orm.hibernate.AbstractHibernateDatastore,265, +CloseResource,org.grails.orm.hibernate.AbstractHibernateDatastore,460, +CloseResource,org.grails.orm.hibernate.AbstractHibernateDatastore,461, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.AbstractHibernateDatastore,499, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.AbstractHibernateDatastore,499, +EmptyCatchBlock,org.grails.orm.hibernate.AbstractHibernateSession,107, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.EventListenerIntegrator,82, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.EventListenerIntegrator,87, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.EventListenerIntegrator,87, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.EventListenerIntegrator,98, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.EventListenerIntegrator,108, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.GrailsHibernateTemplate,135, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.GrailsHibernateTemplate,136, +CloseResource,org.grails.orm.hibernate.GrailsHibernateTemplate,138, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.GrailsHibernateTemplate,138, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.GrailsHibernateTemplate,141, +CloseResource,org.grails.orm.hibernate.GrailsHibernateTemplate,191, +CloseResource,org.grails.orm.hibernate.GrailsHibernateTemplate,303, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.GrailsHibernateTemplate,309, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.GrailsHibernateTemplate,311, +CompareObjectsWithEquals,org.grails.orm.hibernate.GrailsHibernateTemplate,348, +UseProperClassLoader,org.grails.orm.hibernate.GrailsHibernateTemplate,382, +CompareObjectsWithEquals,org.grails.orm.hibernate.GrailsHibernateTemplate$CloseSuppressingInvocationHandler,541, +EmptyIfStmt,org.grails.orm.hibernate.GrailsHibernateTemplate,685, +EmptyIfStmt,org.grails.orm.hibernate.GrailsSessionContext,137, +CompareObjectsWithEquals,org.grails.orm.hibernate.GrailsSessionContext,147, +EmptyIfStmt,org.grails.orm.hibernate.GrailsSessionContext,192, +CompareObjectsWithEquals,org.grails.orm.hibernate.GrailsSessionContext,199, +AvoidCatchingThrowable,org.grails.orm.hibernate.GrailsSessionContext,202, +CloseResource,org.grails.orm.hibernate.GrailsSessionContext,209, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.GrailsSessionContext,209, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.GrailsSessionContext,209, +CloseResource,org.grails.orm.hibernate.GrailsSessionContext,213, +ConstructorCallsOverridableMethod,org.grails.orm.hibernate.HibernateDatastore,111, +CloseResource,org.grails.orm.hibernate.HibernateDatastore,113, +ConstructorCallsOverridableMethod,org.grails.orm.hibernate.HibernateDatastore,131, +ConstructorCallsOverridableMethod,org.grails.orm.hibernate.HibernateDatastore,132, +CloseResource,org.grails.orm.hibernate.HibernateDatastore,144, +CloseResource,org.grails.orm.hibernate.HibernateDatastore,147, +CloseResource,org.grails.orm.hibernate.HibernateDatastore,150, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.HibernateDatastore,150, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.HibernateDatastore,150, +CloseResource,org.grails.orm.hibernate.HibernateDatastore,153, +ConstructorCallsOverridableMethod,org.grails.orm.hibernate.HibernateDatastore,198, +ConstructorCallsOverridableMethod,org.grails.orm.hibernate.HibernateDatastore,198, +ConstructorCallsOverridableMethod,org.grails.orm.hibernate.HibernateDatastore,198, +CloseResource,org.grails.orm.hibernate.HibernateDatastore,488, +CloseResource,org.grails.orm.hibernate.HibernateDatastore,542, +CompareObjectsWithEquals,org.grails.orm.hibernate.HibernateDatastore,543, +CloseResource,org.grails.orm.hibernate.HibernateDatastore,580, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.HibernateDatastore,581, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.HibernateDatastore,582, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.HibernateDatastore,589, +CloseResource,org.grails.orm.hibernate.HibernateDatastore,632, +CloseResource,org.grails.orm.hibernate.HibernateDatastore,641, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.HibernateDatastore,669, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.HibernateDatastore,669, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.HibernateDatastore,669, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.HibernateDatastore,669, +CloseResource,org.grails.orm.hibernate.HibernateDatastore,671, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.HibernateDatastore,671, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.HibernateDatastore,671, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.HibernateDatastore,671, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.HibernateDatastore,671, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.HibernateDatastore,675, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.HibernateDatastore,675, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.HibernateDatastore,675, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.HibernateDatastore,675, +EmptyCatchBlock,org.grails.orm.hibernate.HibernateDatastore,707, +CloseResource,org.grails.orm.hibernate.HibernateDatastore,731, +CloseResource,org.grails.orm.hibernate.HibernateDatastore,733, +CloseResource,org.grails.orm.hibernate.HibernateDatastore,736, +CloseResource,org.grails.orm.hibernate.HibernateDatastore,739, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.HibernateDatastore,751, +CloseResource,org.grails.orm.hibernate.HibernateDatastore,752, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.HibernateDatastore,760, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.HibernateSession,80, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.HibernateSession,183, +NullAssignment,org.grails.orm.hibernate.access.TraitPropertyAccessStrategy,50, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.access.TraitPropertyAccessStrategy,85, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.access.TraitPropertyAccessStrategy,85, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.access.TraitPropertyAccessStrategy,85, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.access.TraitPropertyAccessStrategy,85, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.access.TraitPropertyAccessStrategy,91, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.access.TraitPropertyAccessStrategy,91, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.access.TraitPropertyAccessStrategy,91, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.access.TraitPropertyAccessStrategy,91, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.access.TraitPropertyAccessStrategy,94, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.access.TraitPropertyAccessStrategy,94, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.access.TraitPropertyAccessStrategy,94, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.access.TraitPropertyAccessStrategy,94, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.access.TraitPropertyAccessStrategy,95, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.access.TraitPropertyAccessStrategy,95, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.access.TraitPropertyAccessStrategy,95, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.access.TraitPropertyAccessStrategy,95, +CloseResource,org.grails.orm.hibernate.cfg.GrailsHibernateUtil,84, +CloseResource,org.grails.orm.hibernate.cfg.GrailsHibernateUtil,108, +CloseResource,org.grails.orm.hibernate.cfg.GrailsHibernateUtil,113, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.cfg.GrailsHibernateUtil,120, +EmptyCatchBlock,org.grails.orm.hibernate.cfg.GrailsHibernateUtil,254, +EmptyCatchBlock,org.grails.orm.hibernate.cfg.GrailsHibernateUtil,256, +UseProperClassLoader,org.grails.orm.hibernate.cfg.HibernateMappingContextConfiguration,116, +UseProperClassLoader,org.grails.orm.hibernate.cfg.HibernateMappingContextConfiguration,137, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.cfg.HibernateMappingContextConfiguration,190, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.cfg.HibernateMappingContextConfiguration,190, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.cfg.HibernateMappingContextConfiguration,195, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.cfg.HibernateMappingContextConfiguration,195, +UseProperClassLoader,org.grails.orm.hibernate.cfg.HibernateMappingContextConfiguration,197, +UseProperClassLoader,org.grails.orm.hibernate.cfg.HibernateMappingContextConfiguration,249, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.cfg.HibernateMappingContextConfiguration,254, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.cfg.HibernateMappingContextConfiguration,254, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.cfg.HibernateMappingContextConfiguration,254, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.cfg.HibernateMappingContextConfiguration,254, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.cfg.HibernateMappingContextConfiguration,275, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.cfg.HibernateMappingContextConfiguration,275, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.cfg.HibernateMappingContextConfiguration,275, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.cfg.HibernateMappingContextConfiguration,275, +CloseResource,org.grails.orm.hibernate.cfg.HibernateMappingContextConfiguration,290, +CloseResource,org.grails.orm.hibernate.cfg.HibernateMappingContextConfiguration,315, +AvoidCatchingThrowable,org.grails.orm.hibernate.cfg.HibernateMappingContextConfiguration,318, +CompareObjectsWithEquals,org.grails.orm.hibernate.cfg.IdentityEnumType,119, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.cfg.MappingCacheHolder,65, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.cfg.domainbinding.binder.ClassPropertiesBinder,72, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.cfg.domainbinding.binder.CollectionBinder,228, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.cfg.domainbinding.binder.CollectionBinder,229, +NullAssignment,org.grails.orm.hibernate.cfg.domainbinding.binder.ColumnBinder,80, +NullAssignment,org.grails.orm.hibernate.cfg.domainbinding.binder.ColumnBinder,81, +NullAssignment,org.grails.orm.hibernate.cfg.domainbinding.binder.ColumnBinder,82, +NullAssignment,org.grails.orm.hibernate.cfg.domainbinding.binder.ColumnBinder,83, +NullAssignment,org.grails.orm.hibernate.cfg.domainbinding.binder.ColumnBinder,84, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.cfg.domainbinding.binder.ColumnBinder,139, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.cfg.domainbinding.binder.ColumnBinder,139, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.cfg.domainbinding.binder.ColumnBinder,139, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.cfg.domainbinding.binder.ComponentBinder,68, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.cfg.domainbinding.binder.ComponentBinder,69, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.cfg.domainbinding.binder.ComponentBinder,70, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.cfg.domainbinding.binder.CompositeIdBinder,69, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.cfg.domainbinding.binder.CompositeIdentifierToManyToOneBinder,85, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.cfg.domainbinding.binder.DiscriminatorPropertyBinder,68, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.cfg.domainbinding.binder.DiscriminatorPropertyBinder,68, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.cfg.domainbinding.binder.GrailsDomainBinder,227, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.cfg.domainbinding.binder.GrailsPropertyBinder,75, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.cfg.domainbinding.binder.GrailsPropertyBinder,75, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.cfg.domainbinding.binder.GrailsPropertyBinder,75, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.cfg.domainbinding.binder.GrailsPropertyBinder,75, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.cfg.domainbinding.binder.GrailsPropertyBinder,75, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.cfg.domainbinding.binder.GrailsPropertyBinder,75, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.cfg.domainbinding.binder.GrailsPropertyBinder,75, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.cfg.domainbinding.binder.ManyToOneBinder,120, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.cfg.domainbinding.binder.NumericColumnConstraintsBinder,36, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.cfg.domainbinding.binder.RootBinder,78, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.cfg.domainbinding.binder.SimpleIdBinder,69, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.cfg.domainbinding.binder.SimpleIdBinder,73, +NullAssignment,org.grails.orm.hibernate.cfg.domainbinding.binder.SimpleValueBinder,80, +NullAssignment,org.grails.orm.hibernate.cfg.domainbinding.binder.SimpleValueBinder,81, +NullAssignment,org.grails.orm.hibernate.cfg.domainbinding.binder.SimpleValueBinder,82, +NullAssignment,org.grails.orm.hibernate.cfg.domainbinding.binder.SimpleValueBinder,83, +NullAssignment,org.grails.orm.hibernate.cfg.domainbinding.binder.SimpleValueBinder,84, +NullAssignment,org.grails.orm.hibernate.cfg.domainbinding.binder.SimpleValueBinder,85, +MissingSerialVersionUID,org.grails.orm.hibernate.cfg.domainbinding.generator.GrailsIdentityGenerator,27, +MissingSerialVersionUID,org.grails.orm.hibernate.cfg.domainbinding.generator.GrailsIncrementGenerator,40, +MissingSerialVersionUID,org.grails.orm.hibernate.cfg.domainbinding.generator.GrailsNativeGenerator,27, +EmptyCatchBlock,org.grails.orm.hibernate.cfg.domainbinding.generator.GrailsNativeGenerator,34, +MissingSerialVersionUID,org.grails.orm.hibernate.cfg.domainbinding.generator.GrailsSequenceStyleGenerator,30, +ConstructorCallsOverridableMethod,org.grails.orm.hibernate.cfg.domainbinding.generator.GrailsSequenceStyleGenerator,59, +MissingSerialVersionUID,org.grails.orm.hibernate.cfg.domainbinding.generator.GrailsTableGenerator,30, +ReturnEmptyArrayRatherThanNull,org.grails.orm.hibernate.cfg.domainbinding.hibernate.HibernateEmbeddedPersistentEntity,50, +ReturnEmptyCollectionRatherThanNull,org.grails.orm.hibernate.cfg.domainbinding.hibernate.HibernateEmbeddedPersistentEntity,51, +ReturnEmptyCollectionRatherThanNull,org.grails.orm.hibernate.cfg.domainbinding.hibernate.HibernatePersistentEntity,77, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.cfg.domainbinding.hibernate.HibernatePersistentEntity,79, +NullAssignment,org.grails.orm.hibernate.cfg.domainbinding.hibernate.HibernatePersistentEntity,82, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.cfg.domainbinding.hibernate.HibernatePersistentEntity,82, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.cfg.domainbinding.hibernate.HibernatePersistentProperty,113, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.cfg.domainbinding.hibernate.HibernatePersistentProperty,113, +EmptyCatchBlock,org.grails.orm.hibernate.cfg.domainbinding.hibernate.HibernatePersistentProperty,120, +ReturnEmptyCollectionRatherThanNull,org.grails.orm.hibernate.cfg.domainbinding.hibernate.HibernatePersistentProperty,198, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.cfg.domainbinding.secondpass.CollectionSecondPassBinder,94, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.cfg.domainbinding.secondpass.CollectionWithJoinTableBinder,96, +NonSerializableClass,org.grails.orm.hibernate.cfg.domainbinding.secondpass.ListSecondPass,32, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.cfg.domainbinding.secondpass.ListSecondPassBinder,73, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.cfg.domainbinding.secondpass.ListSecondPassBinder,106, +NonSerializableClass,org.grails.orm.hibernate.cfg.domainbinding.secondpass.MapSecondPass,32, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.cfg.domainbinding.secondpass.MapSecondPassBinder,95, +NonSerializableClass,org.grails.orm.hibernate.cfg.domainbinding.secondpass.SetSecondPass,39, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.cfg.domainbinding.util.BasicValueIdCreator,67, +EmptyCatchBlock,org.grails.orm.hibernate.cfg.domainbinding.util.CascadeBehavior,94, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.cfg.domainbinding.util.CreateKeyForProps,58, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.cfg.domainbinding.util.DefaultColumnNameFetcher,49, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.cfg.domainbinding.util.DefaultColumnNameFetcher,51, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.cfg.domainbinding.util.ForeignKeyColumnCountCalculator,30, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.cfg.domainbinding.util.ForeignKeyColumnCountCalculator,30, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.cfg.domainbinding.util.ForeignKeyColumnCountCalculator,38, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.cfg.domainbinding.util.ForeignKeyColumnCountCalculator,38, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.cfg.domainbinding.util.ForeignKeyColumnCountCalculator,41, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.cfg.domainbinding.util.ForeignKeyColumnCountCalculator,41, +LoggerIsNotStaticFinal,org.grails.orm.hibernate.cfg.domainbinding.util.LogCascadeMapping,30, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.cfg.domainbinding.util.OrderByClauseBuilder,57, +UseLocaleWithCaseConversions,org.grails.orm.hibernate.cfg.domainbinding.util.OrderByClauseBuilder,68, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.cfg.domainbinding.util.OrderByClauseBuilder,95, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.cfg.domainbinding.util.OrderByClauseBuilder,96, +CompareObjectsWithEquals,org.grails.orm.hibernate.cfg.domainbinding.util.OrderByClauseBuilder,106, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.cfg.domainbinding.util.TableForManyCalculator,56, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.cfg.domainbinding.util.TableForManyCalculator,59, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.cfg.domainbinding.util.TableForManyCalculator,61, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.cfg.domainbinding.util.TableForManyCalculator,92, +AvoidLiteralsInIfCondition,org.grails.orm.hibernate.cfg.domainbinding.util.UniqueNameGenerator,51, +CloseResource,org.grails.orm.hibernate.connections.HibernateConnectionSource,53, +CloseResource,org.grails.orm.hibernate.connections.HibernateConnectionSourceFactory,109, +CloseResource,org.grails.orm.hibernate.connections.HibernateConnectionSourceFactory,172, +AvoidCatchingThrowable,org.grails.orm.hibernate.connections.HibernateConnectionSourceFactory,237, +CloseResource,org.grails.orm.hibernate.connections.HibernateConnectionSourceFactory,256, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.connections.HibernateConnectionSourceFactory,298, +CloseResource,org.grails.orm.hibernate.event.listener.HibernateEventListener,106, +CloseResource,org.grails.orm.hibernate.event.listener.HibernateEventListener,119, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.event.listener.HibernateEventListener,154, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.event.listener.HibernateEventListener,164, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.event.listener.HibernateEventListener,182, +CloseResource,org.grails.orm.hibernate.event.listener.HibernateEventListener,222, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.multitenancy.MultiTenantEventListener,59, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.multitenancy.MultiTenantEventListener,79, +CompareObjectsWithEquals,org.grails.orm.hibernate.multitenancy.MultiTenantEventListener,93, +CloseResource,org.grails.orm.hibernate.proxy.HibernateProxyHandler,155, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.query.GrailsHibernateQueryUtils,68, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.query.GrailsHibernateQueryUtils,84, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.query.GrailsHibernateQueryUtils,84, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.query.GrailsHibernateQueryUtils,87, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.query.GrailsHibernateQueryUtils,138, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.query.GrailsHibernateQueryUtils,139, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.query.GrailsHibernateQueryUtils,201, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.query.GrailsHibernateQueryUtils,214, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.query.GrailsHibernateQueryUtils,252, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.query.GrailsHibernateQueryUtils,252, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.query.GrailsHibernateQueryUtils,252, +AvoidDuplicateLiterals,org.grails.orm.hibernate.query.HibernateHqlQuery,67, +AvoidDuplicateLiterals,org.grails.orm.hibernate.query.HibernateHqlQuery,84, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.query.HibernateQuery,336, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.query.HibernateQuery,336, +CloneMethodReturnTypeMustMatchClassName,org.grails.orm.hibernate.query.HibernateQuery,630, +CloneThrowsCloneNotSupportedException,org.grails.orm.hibernate.query.HibernateQuery,630, +UseLocaleWithCaseConversions,org.grails.orm.hibernate.query.HqlQueryContext,101, +AvoidDuplicateLiterals,org.grails.orm.hibernate.query.HqlQueryContext,102, +AvoidDuplicateLiterals,org.grails.orm.hibernate.query.HqlQueryContext,105, +UseLocaleWithCaseConversions,org.grails.orm.hibernate.query.HqlQueryContext,111, +AvoidDuplicateLiterals,org.grails.orm.hibernate.query.HqlQueryContext,112, +AvoidDuplicateLiterals,org.grails.orm.hibernate.query.HqlQueryContext,113, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.query.HqlQueryContext,116, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.query.HqlQueryContext,116, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.query.HqlQueryContext,116, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.query.HqlQueryContext,117, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.query.HqlQueryContext,117, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.query.HqlQueryContext,122, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.query.HqlQueryContext,125, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.query.HqlQueryContext,127, +AvoidLiteralsInIfCondition,org.grails.orm.hibernate.query.HqlQueryContext,129, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.query.HqlQueryContext,129, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.query.HqlQueryContext,129, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.query.HqlQueryContext,130, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.query.HqlQueryContext,130, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.query.HqlQueryContext,131, +UseLocaleWithCaseConversions,org.grails.orm.hibernate.query.HqlQueryContext,151, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.query.HqlQueryContext,159, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.query.HqlQueryContext,160, +UseLocaleWithCaseConversions,org.grails.orm.hibernate.query.HqlQueryContext,180, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.query.HqlQueryContext,189, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.query.HqlQueryContext,189, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.query.HqlQueryContext,189, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.query.HqlQueryContext,189, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.query.HqlQueryContext,189, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.query.HqlQueryContext,192, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.query.HqlQueryContext,196, +UnnecessaryCaseChange,org.grails.orm.hibernate.query.HqlQueryContext,202, +UseLocaleWithCaseConversions,org.grails.orm.hibernate.query.HqlQueryContext,202, +UseLocaleWithCaseConversions,org.grails.orm.hibernate.query.HqlQueryContext,219, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.query.HqlQueryContext,239, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.query.JpaCriteriaQueryCreator,131, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.query.JpaFromProvider,62, +AvoidLiteralsInIfCondition,org.grails.orm.hibernate.query.JpaFromProvider,150, +ProperCloneImplementation,org.grails.orm.hibernate.query.JpaFromProvider,162, +CloneMethodReturnTypeMustMatchClassName,org.grails.orm.hibernate.query.JpaFromProvider,162, +CloneThrowsCloneNotSupportedException,org.grails.orm.hibernate.query.JpaFromProvider,162, +MissingSerialVersionUID,org.grails.orm.hibernate.query.PagedResultList,31, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.query.PredicateGenerator,116, +AvoidLiteralsInIfCondition,org.grails.orm.hibernate.query.PredicateGenerator,123, +AvoidDuplicateLiterals,org.grails.orm.hibernate.query.PredicateGenerator,141, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.query.PredicateGenerator,168, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.query.PredicateGenerator,229, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.query.PredicateGenerator,230, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.query.PredicateGenerator,297, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.query.PredicateGenerator,299, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.query.PredicateGenerator,337, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.query.PredicateGenerator,338, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.query.PredicateGenerator,350, +AvoidAccessibilityAlteration,org.grails.orm.hibernate.support.ClosureEventListener,143, +AvoidAccessibilityAlteration,org.grails.orm.hibernate.support.ClosureEventListener,145, +EmptyCatchBlock,org.grails.orm.hibernate.support.ClosureEventListener,146, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.support.ClosureEventListener,188, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.support.ClosureEventListener,188, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.support.ClosureEventListener,215, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.support.ClosureEventListener,215, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.support.ClosureEventListener,232, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.support.ClosureEventListener,232, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.support.ClosureEventListener,312, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.support.ClosureEventListener,315, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.support.ClosureEventListener,341, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.support.ClosureEventListener,343, +CompareObjectsWithEquals,org.grails.orm.hibernate.support.ClosureEventListener,361, +CompareObjectsWithEquals,org.grails.orm.hibernate.support.ClosureEventListener,383, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.support.ClosureEventListener,387, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.support.ClosureEventListener,387, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.support.ClosureEventListener,387, +CloseResource,org.grails.orm.hibernate.support.ClosureEventListener,400, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.support.ClosureEventListener,401, +NonSerializableClass,org.grails.orm.hibernate.support.ClosureEventTriggeringInterceptor,73, +NonSerializableClass,org.grails.orm.hibernate.support.ClosureEventTriggeringInterceptor,75, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.support.ClosureEventTriggeringInterceptor,235, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.support.ClosureEventTriggeringInterceptor,292, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.support.ClosureEventTriggeringInterceptor,293, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.support.ClosureEventTriggeringInterceptor,309, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.support.ClosureEventTriggeringInterceptor,332, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.support.ClosureEventTriggeringInterceptor,401, +CloseResource,org.grails.orm.hibernate.support.HibernateDialectDetectorFactoryBean,94, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.support.HibernateDialectDetectorFactoryBean,94, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.support.HibernateDialectDetectorFactoryBean,94, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.support.HibernateDialectDetectorFactoryBean,96, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.support.HibernateDialectDetectorFactoryBean,96, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.support.HibernateDialectDetectorFactoryBean,103, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.support.HibernateDialectDetectorFactoryBean,103, +CloseResource,org.grails.orm.hibernate.support.HibernateDialectDetectorFactoryBean,104, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.support.HibernateDialectDetectorFactoryBean,105, +DataflowAnomalyAnalysis,org.grails.orm.hibernate.support.HibernateDialectDetectorFactoryBean,105, diff --git a/grails-data-hibernate7/core/src/main/groovy/grails/orm/CriteriaMethodInvoker.java b/grails-data-hibernate7/core/src/main/groovy/grails/orm/CriteriaMethodInvoker.java index 983d6f98ee..dfed974503 100644 --- a/grails-data-hibernate7/core/src/main/groovy/grails/orm/CriteriaMethodInvoker.java +++ b/grails-data-hibernate7/core/src/main/groovy/grails/orm/CriteriaMethodInvoker.java @@ -143,16 +143,17 @@ public class CriteriaMethodInvoker { return UNHANDLED; } + @SuppressWarnings("PMD.DataflowAnomalyAnalysis") private Object tryAssociationOrJunction(String name, CriteriaMethods method, Object[] args) { if (!isAssociationQueryMethod(args) && !isAssociationQueryWithJoinSpecificationMethod(args)) { return UNHANDLED; } final boolean hasMoreThanOneArg = args.length > 1; + final Closure callable = hasMoreThanOneArg ? (Closure) args[1] : (Closure) args[0]; + final HibernateQuery hibernateQuery = builder.getHibernateQuery(); if (method != null) { - HibernateQuery hibernateQuery = builder.getHibernateQuery(); - Closure callable = hasMoreThanOneArg ? (Closure) args[1] : (Closure) args[0]; switch (method) { case AND: hibernateQuery.and(callable); @@ -181,16 +182,15 @@ public class CriteriaMethodInvoker { if (attribute.isAssociation()) { Class oldTargetClass = builder.getTargetClass(); builder.setTargetClass(builder.getClassForAssociationType(attribute)); - JoinType joinType = - hasMoreThanOneArg - ? builder.convertFromInt((Integer) args[0]) - : builder.convertFromInt(0); - if (builder.getTargetClass().equals(oldTargetClass) && !hasMoreThanOneArg) { + JoinType joinType; + if (hasMoreThanOneArg) { + joinType = builder.convertFromInt((Integer) args[0]); + } else if (builder.getTargetClass().equals(oldTargetClass)) { joinType = JoinType.LEFT; // default to left join if joining on the same table + } else { + joinType = builder.convertFromInt(0); } - HibernateQuery hibernateQuery = builder.getHibernateQuery(); - Closure callable = hasMoreThanOneArg ? (Closure) args[1] : (Closure) args[0]; hibernateQuery.join(name, joinType); hibernateQuery.in(name, new DetachedCriteria(builder.getTargetClass()).build(callable)); builder.setTargetClass(oldTargetClass); @@ -201,29 +201,27 @@ public class CriteriaMethodInvoker { return UNHANDLED; } - protected Object trySimpleCriteria(String name, CriteriaMethods method, Object[] args) { - if (args.length != 1 || args[0] == null) { + @SuppressWarnings("PMD.DataflowAnomalyAnalysis") + protected Object trySimpleCriteria(String name, CriteriaMethods method, Object[] args) { if (args.length != 1 || args[0] == null) { return UNHANDLED; } if (method != null) { - Object value = args[0]; switch (method) { case ID_EQUALS: - return builder.eq("id", value); + return builder.eq("id", args[0]); case IS_NULL, IS_NOT_NULL, IS_EMPTY, IS_NOT_EMPTY: - if (!(value instanceof String)) { + if (!(args[0] instanceof String)) { builder.throwRuntimeException( new IllegalArgumentException( - "call to [" + name + "] with value [" + value + "] requires a String value.")); + "call to [" + name + "] with value [" + args[0] + "] requires a String value.")); } - String propertyName = builder.calculatePropertyName((String) value); - HibernateQuery hibernateQuery = builder.getHibernateQuery(); + final String value = (String) args[0]; switch (method) { - case IS_NULL -> hibernateQuery.isNull(propertyName); - case IS_NOT_NULL -> hibernateQuery.isNotNull(propertyName); - case IS_EMPTY -> hibernateQuery.isEmpty(propertyName); - case IS_NOT_EMPTY -> hibernateQuery.isNotEmpty(propertyName); + case IS_NULL -> builder.getHibernateQuery().isNull(builder.calculatePropertyName(value)); + case IS_NOT_NULL -> builder.getHibernateQuery().isNotNull(builder.calculatePropertyName(value)); + case IS_EMPTY -> builder.getHibernateQuery().isEmpty(builder.calculatePropertyName(value)); + case IS_NOT_EMPTY -> builder.getHibernateQuery().isNotEmpty(builder.calculatePropertyName(value)); } return name; } @@ -233,60 +231,60 @@ public class CriteriaMethodInvoker { @SuppressWarnings("PMD.AvoidLiteralsInIfCondition") protected Object tryPropertyCriteria(CriteriaMethods method, Object[] args) { - if (method == null || args.length < 2 || !(args[0] instanceof String)) { + if (method == null || args.length < 2 || !(args[0] instanceof String propertyName)) { return UNHANDLED; } - String propertyName = builder.calculatePropertyName((String) args[0]); switch (method) { case RLIKE: - return builder.rlike(propertyName, args[1]); + return builder.rlike(builder.calculatePropertyName(propertyName), args[1]); case BETWEEN: if (args.length >= 3) { - return builder.between(propertyName, args[1], args[2]); + return builder.between(builder.calculatePropertyName(propertyName), args[1], args[2]); } break; case EQUALS: if (args.length == 3 && args[2] instanceof Map) { - return builder.eq(propertyName, args[1], (Map) args[2]); + return builder.eq(builder.calculatePropertyName(propertyName), args[1], (Map) args[2]); } - return builder.eq(propertyName, args[1]); + return builder.eq(builder.calculatePropertyName(propertyName), args[1]); case EQUALS_PROPERTY: - return builder.eqProperty(propertyName, args[1].toString()); + return builder.eqProperty(builder.calculatePropertyName(propertyName), args[1].toString()); case GREATER_THAN: - return builder.gt(propertyName, args[1]); + return builder.gt(builder.calculatePropertyName(propertyName), args[1]); case GREATER_THAN_PROPERTY: - return builder.gtProperty(propertyName, args[1].toString()); + return builder.gtProperty(builder.calculatePropertyName(propertyName), args[1].toString()); case GREATER_THAN_OR_EQUAL: - return builder.ge(propertyName, args[1]); + return builder.ge(builder.calculatePropertyName(propertyName), args[1]); case GREATER_THAN_OR_EQUAL_PROPERTY: - return builder.geProperty(propertyName, args[1].toString()); + return builder.geProperty(builder.calculatePropertyName(propertyName), args[1].toString()); case ILIKE: - return builder.ilike(propertyName, args[1]); + return builder.ilike(builder.calculatePropertyName(propertyName), args[1]); case IN: if (args[1] instanceof Collection) { - return builder.in(propertyName, (Collection) args[1]); + return builder.in(builder.calculatePropertyName(propertyName), (Collection) args[1]); } else if (args[1] instanceof Object[]) { - return builder.in(propertyName, (Object[]) args[1]); + return builder.in(builder.calculatePropertyName(propertyName), (Object[]) args[1]); } break; case LESS_THAN: - return builder.lt(propertyName, args[1]); + return builder.lt(builder.calculatePropertyName(propertyName), args[1]); case LESS_THAN_PROPERTY: - return builder.ltProperty(propertyName, args[1].toString()); + return builder.ltProperty(builder.calculatePropertyName(propertyName), args[1].toString()); case LESS_THAN_OR_EQUAL: - return builder.le(propertyName, args[1]); + return builder.le(builder.calculatePropertyName(propertyName), args[1]); case LESS_THAN_OR_EQUAL_PROPERTY: - return builder.leProperty(propertyName, args[1].toString()); + return builder.leProperty(builder.calculatePropertyName(propertyName), args[1].toString()); case LIKE: - return builder.like(propertyName, args[1]); + return builder.like(builder.calculatePropertyName(propertyName), args[1]); case NOT_EQUAL: - return builder.ne(propertyName, args[1]); + return builder.ne(builder.calculatePropertyName(propertyName), args[1]); case NOT_EQUAL_PROPERTY: - return builder.neProperty(propertyName, args[1].toString()); + return builder.neProperty(builder.calculatePropertyName(propertyName), args[1].toString()); case SIZE_EQUALS: if (args[1] instanceof Number) { - return builder.sizeEq(propertyName, ((Number) args[1]).intValue()); + return builder.sizeEq( + builder.calculatePropertyName(propertyName), ((Number) args[1]).intValue()); } break; }
