From 7ca9ecbcec261ac3ff72140d58ded03baad254de Mon Sep 17 00:00:00 2001 From: Darin Kelkhoff Date: Wed, 15 Mar 2023 11:49:40 -0500 Subject: [PATCH] Fix to clone a possibleValueSource filter before calling interpret values... added warning to the javadoc on that method - how to make better? --- .../core/model/actions/tables/query/QQueryFilter.java | 4 ++++ .../qqq/backend/javalin/QJavalinImplementation.java | 5 +++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/actions/tables/query/QQueryFilter.java b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/actions/tables/query/QQueryFilter.java index 88485f0e..f89d23e4 100644 --- a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/actions/tables/query/QQueryFilter.java +++ b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/actions/tables/query/QQueryFilter.java @@ -372,6 +372,10 @@ public class QQueryFilter implements Serializable, Cloneable /******************************************************************************* ** Replace any criteria values that look like ${input.XXX} with the value of XXX ** from the supplied inputValues map. + ** + ** Note - it may be very important that you call this method on a clone of a + ** QQueryFilter - e.g., if it's one that defined in metaData, and that we don't + ** want to be (permanently) changed!! *******************************************************************************/ public void interpretValues(Map inputValues) { diff --git a/qqq-middleware-javalin/src/main/java/com/kingsrook/qqq/backend/javalin/QJavalinImplementation.java b/qqq-middleware-javalin/src/main/java/com/kingsrook/qqq/backend/javalin/QJavalinImplementation.java index 52595b00..5b569f64 100644 --- a/qqq-middleware-javalin/src/main/java/com/kingsrook/qqq/backend/javalin/QJavalinImplementation.java +++ b/qqq-middleware-javalin/src/main/java/com/kingsrook/qqq/backend/javalin/QJavalinImplementation.java @@ -1332,8 +1332,9 @@ public class QJavalinImplementation if(field.getPossibleValueSourceFilter() != null) { - field.getPossibleValueSourceFilter().interpretValues(values); - input.setDefaultQueryFilter(field.getPossibleValueSourceFilter()); + QQueryFilter filter = field.getPossibleValueSourceFilter().clone(); + filter.interpretValues(values); + input.setDefaultQueryFilter(filter); } if(StringUtils.hasContent(ids))