Skip to content

Commit 82eb0c4

Browse files
committed
add some null case handling
1 parent f86f4c1 commit 82eb0c4

3 files changed

Lines changed: 33 additions & 0 deletions

File tree

core/src/main/java/com/kumuluz/ee/rest/beans/QueryParameters.java

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -115,6 +115,17 @@ public void addFilter(QueryFilter filter) {
115115
}
116116
}
117117

118+
/**
119+
* Removes all filter parameters with the specified field name.
120+
*
121+
* @param field the field name of the filters to remove
122+
*/
123+
public void removeFilterParameter(String field) {
124+
if (field != null && filters != null) {
125+
filters.removeIf(filter -> field.equals(filter.getField()));
126+
}
127+
}
128+
118129
/**
119130
* @deprecated Will be removed in future releases. Use {@link #setFilterExpression(QueryFilterExpression)} ()}
120131
* instead.
@@ -145,6 +156,19 @@ public QueryFilterExpression getFilterExpression() {
145156
return filterExpression;
146157
}
147158

159+
/**
160+
* Safely returns all filter values from the filter expression.
161+
* Returns an empty list if filterExpression is null.
162+
*
163+
* @return list of QueryFilter values, never null
164+
*/
165+
public List<QueryFilter> getFilterValues() {
166+
if (filterExpression == null) {
167+
return new ArrayList<>();
168+
}
169+
return filterExpression.getAllValues();
170+
}
171+
148172
public void setFilterExpression(QueryFilterExpression filterExpression) {
149173
this.filterExpression = filterExpression;
150174
}

core/src/main/java/com/kumuluz/ee/rest/utils/JPAUtils.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -555,6 +555,10 @@ private static CriteriaWhereQuery createWhereQueryInternal(EntityManager em, Cri
555555

556556
private static Predicate createWhereQueryInternal(EntityManager em, CriteriaBuilder cb, Root<?> r, AtomicBoolean containsToManyAtomic, QueryFilterExpression filterExpression, Map<String, From> fieldJoins) {
557557

558+
if (filterExpression == null) {
559+
return null;
560+
}
561+
558562
if (filterExpression.isLeaf()) {
559563
QueryFilter f = filterExpression.value();
560564

core/src/main/java/com/kumuluz/ee/rest/utils/QueryStringBuilder.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -497,6 +497,11 @@ private List<String> buildFields(String value) {
497497
private QueryFilterExpression buildFilterExpression(String key, String value) {
498498
log.finest("Building filter string: " + value);
499499

500+
// Skip filters with empty values (e.g., "field:like:" with no value after operator)
501+
if (value == null || value.isEmpty() || value.matches(".*:\\s*$")) {
502+
return null;
503+
}
504+
500505
QueryFilterExpressionParser parser = Parboiled.createParser(QueryFilterExpressionParser.class, key);
501506

502507
QueryFilterExpression filterExpression;

0 commit comments

Comments
 (0)