Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -143,7 +143,7 @@ public String makeWhereString(ModelEntity modelEntity, List<EntityConditionParam
Datasource datasourceInfo, Delegator delegator) {
checkRhsType(modelEntity, delegator);
StringBuilder sql = new StringBuilder();
operator.addSqlValue(sql, modelEntity, entityConditionParams, true, lhs, rhs, datasourceInfo);
operator.addSqlValue(sql, modelEntity, entityConditionParams, true, lhs, rhs, datasourceInfo, delegator);
return sql.toString();
}

Expand Down Expand Up @@ -179,7 +179,7 @@ public void accept(EntityConditionVisitor visitor) {
* @param delegator the delegator used to check the condition expression
*/
public void checkRhsType(ModelEntity modelEntity, Delegator delegator) {
if (EntityExpr.isNullField(rhs) || modelEntity == null || delegator == null) {
if (EntityExpr.isNullField(rhs) || modelEntity == null) {
return;
}

Expand All @@ -199,8 +199,6 @@ public void checkRhsType(ModelEntity modelEntity, Delegator delegator) {
}
}

Delegator deleg = delegator;

String fieldName = null;
ModelField curField;
if (lhs instanceof EntityFieldValue) {
Expand All @@ -216,6 +214,11 @@ public void checkRhsType(ModelEntity modelEntity, Delegator delegator) {
String msg = "FieldName " + fieldName + " not found for entity: " + modelEntity.getEntityName();
throw new IllegalArgumentException(msg);
}
// The type checks below need the delegator running the query, so skip them when it isn't available
if (delegator == null) {
return;
}
Delegator deleg = delegator;
ModelFieldType type = null;
try {
type = deleg.getEntityFieldType(modelEntity, curField.getType());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -49,10 +49,16 @@ protected EntityJoinOperator(int id, String code, boolean shortCircuitValue) {
@Override
public void addSqlValue(StringBuilder sql, ModelEntity modelEntity, List<EntityConditionParam> entityConditionParams, boolean compat,
EntityCondition lhs, EntityCondition rhs, Datasource datasourceInfo) {
addSqlValue(sql, modelEntity, entityConditionParams, compat, lhs, rhs, datasourceInfo, null);
}

@Override
public void addSqlValue(StringBuilder sql, ModelEntity modelEntity, List<EntityConditionParam> entityConditionParams, boolean compat,
EntityCondition lhs, EntityCondition rhs, Datasource datasourceInfo, Delegator delegator) {
List<EntityCondition> conditions = new LinkedList<>();
conditions.add(lhs);
conditions.add(rhs);
addSqlValue(sql, modelEntity, entityConditionParams, conditions, datasourceInfo);
addSqlValue(sql, modelEntity, entityConditionParams, conditions, datasourceInfo, delegator);
}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -385,6 +385,23 @@ public void addSqlValue(StringBuilder sql, ModelEntity entity, List<EntityCondit

public abstract void addSqlValue(StringBuilder sql, ModelEntity entity, List<EntityConditionParam> entityConditionParams, boolean compat,
L lhs, R rhs, Datasource datasourceInfo);

/**
* Add sql value.
* @param sql the sql
* @param entity the entity
* @param entityConditionParams the entity condition params
* @param compat the compat
* @param lhs the lhs
* @param rhs the rhs
* @param datasourceInfo the datasource info
* @param delegator the delegator actually being used to run this query, or {@code null} if unavailable
*/
public void addSqlValue(StringBuilder sql, ModelEntity entity, List<EntityConditionParam> entityConditionParams, boolean compat,
L lhs, R rhs, Datasource datasourceInfo, Delegator delegator) {
addSqlValue(sql, entity, entityConditionParams, compat, lhs, rhs, datasourceInfo);
}

public abstract EntityCondition freeze(L lhs, R rhs);

public static final Comparable<?> WILDCARD = new Comparable<Object>() {
Expand Down
Loading