Skip to content

Commit

Permalink
hack in acceptance of PageRequest<?>
Browse files Browse the repository at this point in the history
JD examples and TCK require this, though it's not really correct

Signed-off-by: Gavin King <gavin@hibernate.org>
  • Loading branch information
gavinking authored and beikov committed Mar 28, 2024
1 parent 091ba9a commit c32f0a0
Showing 1 changed file with 7 additions and 5 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -1439,7 +1439,7 @@ private void checkFinderParameter(TypeElement entity, VariableElement parameter)
final TypeMirror parameterType = parameterType(parameter);
boolean pageRequest = typeNameEquals( parameterType, JD_PAGE_REQUEST );
if ( isOrderParam( typeName(parameterType) ) || pageRequest ) {
final TypeMirror typeArgument = getTypeArgument( parameterType );
final TypeMirror typeArgument = getTypeArgument( parameterType, entity );
if ( typeArgument == null ) {
missingTypeArgError( entity.getSimpleName().toString(), parameter, pageRequest );
}
Expand Down Expand Up @@ -1552,17 +1552,17 @@ private OrderBy orderByExpression(AnnotationMirror orderBy, TypeElement entityTy
return new OrderBy( path, descending, ignoreCase );
}

private static @Nullable TypeMirror getTypeArgument(TypeMirror parameterType) {
private static @Nullable TypeMirror getTypeArgument(TypeMirror parameterType, TypeElement entity) {
switch ( parameterType.getKind() ) {
case ARRAY:
final ArrayType arrayType = (ArrayType) parameterType;
return getTypeArgument( arrayType.getComponentType() );
return getTypeArgument( arrayType.getComponentType(), entity);
case DECLARED:
final DeclaredType type = (DeclaredType) parameterType;
switch ( typeName(parameterType) ) {
case LIST:
for (TypeMirror arg : type.getTypeArguments()) {
return getTypeArgument( arg );
return getTypeArgument( arg, entity);
}
return null;
case HIB_ORDER:
Expand All @@ -1572,7 +1572,9 @@ private OrderBy orderByExpression(AnnotationMirror orderBy, TypeElement entityTy
for ( TypeMirror arg : type.getTypeArguments() ) {
switch ( arg.getKind() ) {
case WILDCARD:
return ((WildcardType) arg).getSuperBound();
final TypeMirror superBound = ((WildcardType) arg).getSuperBound();
// horrible hack b/c Jakarta Data is not typesafe
return superBound == null ? entity.asType() : superBound;
case ARRAY:
case DECLARED:
case TYPEVAR:
Expand Down

0 comments on commit c32f0a0

Please sign in to comment.