Skip to content

Commit 7df1f66

Browse files
committed
HHH-19795 better error message for an illegal use of ? in a pattern
1 parent c942210 commit 7df1f66

File tree

1 file changed

+16
-1
lines changed

1 file changed

+16
-1
lines changed

hibernate-core/src/main/java/org/hibernate/query/sqm/produce/function/internal/PatternRenderer.java

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,7 @@ else if ( c == '?' ) {
9696
vararg = paramList.size();
9797
}
9898
else {
99-
final int paramNumber = parseInt( index.toString() );
99+
final int paramNumber = parameterIndex( pattern, index.toString() );
100100
paramList.add( paramNumber );
101101
index.setLength(0);
102102
if ( paramNumber > max ) {
@@ -126,6 +126,21 @@ else if ( c == '?' ) {
126126
this.argumentRenderingModes = argumentRenderingModes;
127127
}
128128

129+
private static int parameterIndex(String pattern, String index) {
130+
if ( index.isEmpty() ) {
131+
throw new IllegalArgumentException( "Missing parameter index in pattern: '" + pattern + "'" );
132+
}
133+
final int paramNumber;
134+
try {
135+
paramNumber = parseInt( index );
136+
}
137+
catch (NumberFormatException nfe) {
138+
throw new IllegalArgumentException( "Illegal parameter index '" + index
139+
+ "' in pattern: '" + pattern + "'", nfe );
140+
}
141+
return paramNumber;
142+
}
143+
129144
public boolean hasVarargs() {
130145
return varargParam >= 0;
131146
}

0 commit comments

Comments
 (0)