/** * Creates an updater object based on the given update expression * * @param factory Node factory * @param context Metadata for the context node * @param expr The update expression. */ public static Updater getInstance(JsonNodeFactory factory, FieldTreeNode context, UpdateExpression expr) { Updater ret = null; if (expr instanceof UpdateExpressionList) { ret = new UpdateExpressionListEvaluator(factory, context, (UpdateExpressionList) expr); } else if (expr instanceof SetExpression) { ret = new SetExpressionEvaluator(factory, context, (SetExpression) expr); } else if (expr instanceof UnsetExpression) { ret = new UnsetExpressionEvaluator(factory, context, (UnsetExpression) expr); } else if (expr instanceof ForEachExpression) { ret = new ForEachExpressionEvaluator(factory, context, (ForEachExpression) expr); } else if (expr instanceof ArrayAddExpression) { ret = new ArrayAddExpressionEvaluator(factory, context, (ArrayAddExpression) expr); } return ret; } }
private void initializeArrayField(FieldTreeNode context, ArrayAddExpression expr) { for (RValueExpression rvalue : expr.getValues()) { Path refPath = null; FieldTreeNode refMd = null; if (rvalue.getType() == RValueExpression.RValueType._dereference) { refPath = rvalue.getPath(); refMd = context.resolve(refPath); if (refMd == null) { throw new EvaluationError(CrudConstants.ERR_INVALID_DEREFERENCE + refPath); } } ArrayElement element = fieldMd.getElement(); validateArrayElement(element, refMd, rvalue, refPath); values.add(new RValueData(refPath, refMd == null ? null : refMd.getType(), rvalue.getValue(), rvalue.getType())); } }
initializeArrayField(context, expr); } else { throw new EvaluationError(CrudConstants.ERR_REQUIRED_ARRAY + arrayField);
initializeArrayField(context, expr); } else { throw new EvaluationError(CrudConstants.ERR_REQUIRED_ARRAY + arrayField);
private void initializeArrayField(FieldTreeNode context, ArrayAddExpression expr) { for (RValueExpression rvalue : expr.getValues()) { Path refPath = null; FieldTreeNode refMd = null; if (rvalue.getType() == RValueExpression.RValueType._dereference) { refPath = rvalue.getPath(); refMd = context.resolve(refPath); if (refMd == null) { throw new EvaluationError(CrudConstants.ERR_INVALID_DEREFERENCE + refPath); } } ArrayElement element = fieldMd.getElement(); validateArrayElement(element, refMd, rvalue, refPath); values.add(new RValueData(refPath, refMd == null ? null : refMd.getType(), rvalue.getValue(), rvalue.getType())); } }
/** * Creates an updater object based on the given update expression * * @param factory Node factory * @param context Metadata for the context node * @param expr The update expression. */ public static Updater getInstance(JsonNodeFactory factory, FieldTreeNode context, UpdateExpression expr) { Updater ret = null; if (expr instanceof UpdateExpressionList) { ret = new UpdateExpressionListEvaluator(factory, context, (UpdateExpressionList) expr); } else if (expr instanceof SetExpression) { ret = new SetExpressionEvaluator(factory, context, (SetExpression) expr); } else if (expr instanceof UnsetExpression) { ret = new UnsetExpressionEvaluator(factory, context, (UnsetExpression) expr); } else if (expr instanceof ForEachExpression) { ret = new ForEachExpressionEvaluator(factory, context, (ForEachExpression) expr); } else if (expr instanceof ArrayAddExpression) { ret = new ArrayAddExpressionEvaluator(factory, context, (ArrayAddExpression) expr); } return ret; } }
initializeArrayField(context, expr); } else { throw new EvaluationError(CrudConstants.ERR_REQUIRED_ARRAY + arrayField);
private void initializeArrayField(FieldTreeNode context, ArrayAddExpression expr) { for (RValueExpression rvalue : expr.getValues()) { Path refPath = null; FieldTreeNode refMd = null; if (rvalue.getType() == RValueExpression.RValueType._dereference) { refPath = rvalue.getPath(); refMd = context.resolve(refPath); if (refMd == null) { throw new EvaluationError(CrudConstants.ERR_INVALID_DEREFERENCE + refPath); } } ArrayElement element = fieldMd.getElement(); validateArrayElement(element, refMd, rvalue, refPath); values.add(new RValueData(refPath, refMd == null ? null : refMd.getType(), rvalue.getValue(), rvalue.getType())); } }
/** * Creates an updater object based on the given update expression * * @param factory Node factory * @param context Metadata for the context node * @param expr The update expression. */ public static Updater getInstance(JsonNodeFactory factory, FieldTreeNode context, UpdateExpression expr) { Updater ret = null; if (expr instanceof UpdateExpressionList) { ret = new UpdateExpressionListEvaluator(factory, context, (UpdateExpressionList) expr); } else if (expr instanceof SetExpression) { ret = new SetExpressionEvaluator(factory, context, (SetExpression) expr); } else if (expr instanceof UnsetExpression) { ret = new UnsetExpressionEvaluator(factory, context, (UnsetExpression) expr); } else if (expr instanceof ForEachExpression) { ret = new ForEachExpressionEvaluator(factory, context, (ForEachExpression) expr); } else if (expr instanceof ArrayAddExpression) { ret = new ArrayAddExpressionEvaluator(factory, context, (ArrayAddExpression) expr); } return ret; } }