Skip to content

Commit

Permalink
fix bug in checking of PageRequest type arg
Browse files Browse the repository at this point in the history
Signed-off-by: Gavin King <gavin@hibernate.org>
  • Loading branch information
gavinking committed Mar 28, 2024
1 parent 8aaf0c7 commit ccbb84a
Showing 1 changed file with 31 additions and 23 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -1409,18 +1409,7 @@ private void createCriteriaFinder(
}
else {
multivalued.add( false );
final Types types = context.getTypeUtils();
final TypeMirror parameterType = parameterType( parameter );
boolean pageRequest = typeNameEquals( parameterType, JD_PAGE_REQUEST );
if ( isOrderParam( typeName(parameterType) ) || pageRequest ) {
final TypeMirror typeArgument = getTypeArgument( parameterType );
if ( typeArgument == null ) {
missingTypeArgError( entity.getSimpleName().toString(), parameter, pageRequest );
}
else if ( !types.isSameType( typeArgument, entity.asType() ) ) {
wrongTypeArgError( entity.getSimpleName().toString(), parameter, pageRequest );
}
}
checkFinderParameter(entity, parameter);
}
}
putMember( methodKey,
Expand All @@ -1445,6 +1434,21 @@ else if ( !types.isSameType( typeArgument, entity.asType() ) ) {
);
}

private void checkFinderParameter(TypeElement entity, VariableElement parameter) {
final Types types = context.getTypeUtils();
final TypeMirror parameterType = parameterType(parameter);
boolean pageRequest = typeNameEquals( parameterType, JD_PAGE_REQUEST );
if ( isOrderParam( typeName(parameterType) ) || pageRequest ) {
final TypeMirror typeArgument = getTypeArgument( parameterType );
if ( typeArgument == null ) {
missingTypeArgError( entity.getSimpleName().toString(), parameter, pageRequest );
}
else if ( !types.isSameType( typeArgument, entity.asType() ) ) {
wrongTypeArgError( entity.getSimpleName().toString(), parameter, pageRequest );
}
}
}

private void createCriteriaDelete(ExecutableElement method, TypeMirror returnType) {
final TypeElement entity = primaryEntity;
if ( entity == null) {
Expand Down Expand Up @@ -2689,21 +2693,25 @@ private void checkParameters(
}
}
if ( returnType != null ) {
final Types types = context.getTypeUtils();
for ( VariableElement parameter : method.getParameters() ) {
final TypeMirror parameterType = parameterType( parameter );
final TypeMirror typeArgument = getTypeArgument( parameterType );
final boolean pageRequest = typeNameEquals(parameterType, JD_PAGE_REQUEST);
if ( isOrderParam( typeName(parameterType) ) || pageRequest ) {
if ( typeArgument == null ) {
missingTypeArgError( returnType.toString(), parameter, pageRequest );
}
else if ( !types.isSameType(typeArgument, returnType) ) {
wrongTypeArgError( returnType.toString(), parameter, pageRequest );
}
final TypeElement entity = implicitEntityType(returnType);
if ( entity != null ) {
checkFinderParameter(entity, parameter);
}
// else? what?
}
}
}

private @Nullable TypeElement implicitEntityType(@Nullable TypeMirror resultType) {
if ( resultType != null && resultType.getKind() == TypeKind.DECLARED) {
final DeclaredType declaredType = (DeclaredType) resultType;
final Element typeElement = declaredType.asElement();
if ( hasAnnotation(typeElement, ENTITY) ) {
return (TypeElement) typeElement;
}
}
return primaryEntity;
}

private boolean typeNameEquals(TypeMirror parameterType, String typeName) {
Expand Down

0 comments on commit ccbb84a

Please sign in to comment.