@@ -1674,12 +1674,12 @@ private void checkFinderParameter(TypeElement entity, VariableElement parameter)
1674
1674
final TypeMirror parameterType = parameterType (parameter );
1675
1675
final String typeName = parameterType .toString ();
1676
1676
if ( isOrderParam ( typeName ) || isRestrictionParam ( typeName ) ) {
1677
- final TypeMirror typeArgument = getTypeArgument ( parameterType , entity );
1677
+ final TypeMirror typeArgument = getTypeArgument ( parameterType );
1678
1678
if ( typeArgument == null ) {
1679
- missingTypeArgError ( entity .getSimpleName ().toString (), parameter );
1679
+ missingTypeArgError ( entity .getSimpleName ().toString (), parameter , typeName );
1680
1680
}
1681
1681
else if ( !types .isSameType ( typeArgument , entity .asType () ) ) {
1682
- wrongTypeArgError ( entity .getSimpleName ().toString (), parameter );
1682
+ wrongTypeArgError ( entity .getSimpleName ().toString (), parameter , typeName );
1683
1683
}
1684
1684
}
1685
1685
}
@@ -1727,16 +1727,37 @@ private void createCriteriaDelete(ExecutableElement method) {
1727
1727
}
1728
1728
}
1729
1729
1730
- private void wrongTypeArgError (String entity , VariableElement parameter ) {
1731
- message (parameter , "mismatched type of order (should be 'Order<? super " + entity + ">')" ,
1730
+ private void wrongTypeArgError (String entity , VariableElement parameter , String parameterType ) {
1731
+ message (parameter , "mismatched type of " + message ( parameterType , entity ) ,
1732
1732
Diagnostic .Kind .ERROR );
1733
1733
}
1734
1734
1735
- private void missingTypeArgError (String entity , VariableElement parameter ) {
1736
- message (parameter , "missing type of order (should be 'Order<? super " + entity + ">')" ,
1735
+ private void missingTypeArgError (String entity , VariableElement parameter , String parameterType ) {
1736
+ message (parameter , "missing type of " + message ( parameterType , entity ) ,
1737
1737
Diagnostic .Kind .ERROR );
1738
1738
}
1739
1739
1740
+ private String message (String parameterType , String entity ) {
1741
+ if (parameterType .startsWith (HIB_ORDER ) || parameterType .startsWith (JD_ORDER )) {
1742
+ return "order (should be 'Order<? super " + entity + ">')" ;
1743
+ }
1744
+ else if (parameterType .startsWith (LIST + "<" + HIB_ORDER )) {
1745
+ return "order (should be 'List<Order<? super " + entity + ">>')" ;
1746
+ }
1747
+ else if (parameterType .startsWith (HIB_RESTRICTION )) {
1748
+ return "restriction (should be 'Restriction<? super " + entity + ">')" ;
1749
+ }
1750
+ else if (parameterType .startsWith (LIST + "<" + HIB_RESTRICTION )) {
1751
+ return "restriction (should be 'List<Restriction<? super " + entity + ">>')" ;
1752
+ }
1753
+ else if (parameterType .startsWith (JD_SORT )) {
1754
+ return "sort (should be 'Sort<? super " + entity + ">')" ;
1755
+ }
1756
+ else {
1757
+ return "parameter" ;
1758
+ }
1759
+ }
1760
+
1740
1761
private List <OrderBy > orderByList (ExecutableElement method , TypeElement returnType ) {
1741
1762
final TypeElement entityType = implicitEntityType ( returnType );
1742
1763
if ( entityType != null ) {
@@ -1780,17 +1801,17 @@ private OrderBy orderByExpression(AnnotationMirror orderBy, TypeElement entityTy
1780
1801
return new OrderBy ( path , descending , ignoreCase );
1781
1802
}
1782
1803
1783
- private static @ Nullable TypeMirror getTypeArgument (TypeMirror parameterType , TypeElement entity ) {
1804
+ private static @ Nullable TypeMirror getTypeArgument (TypeMirror parameterType ) {
1784
1805
switch ( parameterType .getKind () ) {
1785
1806
case ARRAY :
1786
1807
final ArrayType arrayType = (ArrayType ) parameterType ;
1787
- return getTypeArgument ( arrayType .getComponentType (), entity );
1808
+ return getTypeArgument ( arrayType .getComponentType () );
1788
1809
case DECLARED :
1789
1810
final DeclaredType type = (DeclaredType ) parameterType ;
1790
1811
switch ( typeName (parameterType ) ) {
1791
1812
case LIST :
1792
1813
for (TypeMirror arg : type .getTypeArguments ()) {
1793
- return getTypeArgument ( arg , entity );
1814
+ return getTypeArgument ( arg );
1794
1815
}
1795
1816
return null ;
1796
1817
case HIB_ORDER :
@@ -1800,9 +1821,7 @@ private OrderBy orderByExpression(AnnotationMirror orderBy, TypeElement entityTy
1800
1821
for ( TypeMirror arg : type .getTypeArguments () ) {
1801
1822
switch ( arg .getKind () ) {
1802
1823
case WILDCARD :
1803
- final TypeMirror superBound = ((WildcardType ) arg ).getSuperBound ();
1804
- // horrible hack b/c Jakarta Data is not typesafe
1805
- return superBound == null ? entity .asType () : superBound ;
1824
+ return ((WildcardType ) arg ).getSuperBound ();
1806
1825
case ARRAY :
1807
1826
case DECLARED :
1808
1827
case TYPEVAR :
0 commit comments