private static SortFieldInfo getSortField(Path field, FieldTreeNode context, boolean descending) { FieldTreeNode fieldMd = context.resolve(field); if (!(fieldMd instanceof SimpleField)) { throw new EvaluationError(CrudConstants.ERR_EXPECTED_VALUE + ":" + field); } return new SortFieldInfo((SimpleField) fieldMd, field, descending); } }
private SortFieldInfo getSortField(Path field,FieldTreeNode context,boolean descending) { FieldTreeNode fieldMd=context.resolve(field); if(! (fieldMd instanceof SimpleField) ) { throw new EvaluationError(CrudConstants.ERR_EXPECTED_VALUE+":"+field); } return new SortFieldInfo((SimpleField)fieldMd,field,descending); }
private static SortFieldInfo getSortField(Path field, FieldTreeNode context, boolean descending) { FieldTreeNode fieldMd = context.resolve(field); if (!(fieldMd instanceof SimpleField)) { throw new EvaluationError(CrudConstants.ERR_EXPECTED_VALUE + ":" + field); } return new SortFieldInfo((SimpleField) fieldMd, field, descending); } }
private void validateArrayElement(ArrayElement element, FieldTreeNode refMd, RValueExpression rvalue, Path refPath) { if (element instanceof ObjectArrayElement) { if (refMd != null && !refMd.getType().equals(element.getType())) { throw new EvaluationError(CrudConstants.ERR_INVALID_ASSIGNMENT + arrayField + " <- " + refPath); } else if (rvalue.getType() == RValueExpression.RValueType._value) { throw new EvaluationError(CrudConstants.ERR_EXPECTED_OBJECT_VALUE + arrayField); } } else { if (refMd != null && !refMd.getType().equals(element.getType())) { throw new EvaluationError(CrudConstants.ERR_INVALID_ASSIGNMENT + arrayField + "<-" + refPath); } else if (rvalue.getType() == RValueExpression.RValueType._emptyObject) { throw new EvaluationError(CrudConstants.ERR_EXPECTED_VALUE + arrayField); } } }
public UnsetExpressionEvaluator(JsonNodeFactory factory, FieldTreeNode context, UnsetExpression expr) { fields = new ArrayList<>(expr.getFields().size()); this.factory = factory; for (Path p : expr.getFields()) { FieldTreeNode node = context.resolve(p); if (node == null) { throw new EvaluationError(CrudConstants.ERR_INVALID_DEREFERENCE + p); } fields.add(new AbsPath(p, node, node.getFullPath())); } LOGGER.debug("context {} fields {}", context, fields); }
public UnsetExpressionEvaluator(JsonNodeFactory factory, FieldTreeNode context, UnsetExpression expr) { fields = new ArrayList<>(expr.getFields().size()); this.factory = factory; for (Path p : expr.getFields()) { FieldTreeNode node = context.resolve(p); if (node == null) { throw new EvaluationError(CrudConstants.ERR_INVALID_DEREFERENCE + p); } fields.add(new AbsPath(p, node, node.getFullPath())); } LOGGER.debug("context {} fields {}", context, fields); }
public UnsetExpressionEvaluator(JsonNodeFactory factory, FieldTreeNode context, UnsetExpression expr) { fields = new ArrayList<>(expr.getFields().size()); this.factory = factory; for (Path p : expr.getFields()) { FieldTreeNode node = context.resolve(p); if (node == null) { throw new EvaluationError(CrudConstants.ERR_INVALID_DEREFERENCE + p); } fields.add(new AbsPath(p, node, node.getFullPath())); } LOGGER.debug("context {} fields {}", context, fields); }
public ArrayMatchEvaluator(ArrayMatchExpression expr, FieldTreeNode context) { // field needs to be resolved relative to the current context field = expr.getArray(); FieldTreeNode node = context.resolve(field); if (node == null) { throw new EvaluationError(expr); } if (node instanceof ArrayField) { elem = ((ArrayField) node).getElement(); ev = QueryEvaluator.getInstance(expr.getElemMatch(), elem); } else { throw new EvaluationError(expr, CrudConstants.ERR_EXPECTED_ARRAY + field); } }
/** * Constructs evaluator for {field op value} style comparison * * @param expr The expression * @param md Entity metadata */ public ValueComparisonEvaluator(ValueComparisonExpression expr, FieldTreeNode context) { this.field = expr.getField(); fieldMd = context.resolve(field); if (fieldMd == null) { throw new EvaluationError(expr, CrudConstants.ERR_FIELD_NOT_THERE + field); } operator = expr.getOp(); rvalue = expr.getRvalue(); LOGGER.debug("ctor {} {}", field, operator); }
/** * Constructs evaluator for {field op value} style comparison * * @param expr The expression * @param md Entity metadata */ public ValueComparisonEvaluator(ValueComparisonExpression expr, FieldTreeNode context) { this.field = expr.getField(); fieldMd = context.resolve(field); if (fieldMd == null) { throw new EvaluationError(expr, CrudConstants.ERR_FIELD_NOT_THERE + field); } operator = expr.getOp(); rvalue = expr.getRvalue(); LOGGER.debug("ctor {} {}", field, operator); }
private FieldData initializeObject(RValueExpression rvalue, FieldTreeNode refMdNode, FieldTreeNode mdNode, Path field, Path refPath) { if (rvalue.getType() == RValueExpression.RValueType._dereference) { if (!(refMdNode instanceof ObjectField)) { throw new EvaluationError(CrudConstants.ERR_INCOMPATIBLE_ASSIGNMENT + field + " <- " + refPath); } } else if (rvalue.getType() == RValueExpression.RValueType._value) { throw new EvaluationError(CrudConstants.ERR_INCOMPATIBLE_ASSIGNMENT + field + " <- " + rvalue.getValue()); } return new FieldData(field, mdNode.getType(), refPath, refMdNode == null ? null : refMdNode.getType(), rvalue, mdNode.getFullPath()); }
public NaryValueRelationalExpressionEvaluator(NaryValueRelationalExpression expr, FieldTreeNode context) { field = expr.getField(); fieldMd = context.resolve(field); if (fieldMd == null) { throw new EvaluationError(expr, CrudConstants.ERR_FIELD_NOT_THERE + field); } operator = expr.getOp(); values = new HashSet<>(); for (Value x : expr.getValues()) { values.add(fieldMd.getType().cast(x.getValue())); } LOGGER.debug("ctor {} {} {}", expr.getField(), operator, values); }
public NaryValueRelationalExpressionEvaluator(NaryValueRelationalExpression expr, FieldTreeNode context) { field = expr.getField(); fieldMd = context.resolve(field); if (fieldMd == null) { throw new EvaluationError(expr, CrudConstants.ERR_FIELD_NOT_THERE + field); } operator = expr.getOp(); values = new HashSet<>(); for (Value x : expr.getValues()) { values.add(fieldMd.getType().cast(x.getValue())); } LOGGER.debug("ctor {} {} {}", expr.getField(), operator, values); }
private FieldData initializeArray(RValueExpression rvalue, FieldTreeNode refMdNode, FieldTreeNode mdNode, Path field, Path refPath) { if (rvalue.getType() == RValueExpression.RValueType._dereference) { if (!(refMdNode instanceof ArrayField)) { throw new EvaluationError(CrudConstants.ERR_INCOMPATIBLE_ASSIGNMENT + field + " <- " + refPath); } } else if (rvalue.getType() != RValueExpression.RValueType._null) { Value v = rvalue.getValue(); if (!(v.getValue() instanceof ArrayNode)) { throw new EvaluationError(CrudConstants.ERR_INCOMPATIBLE_ASSIGNMENT + field + " <- " + rvalue.getValue()); } } return new FieldData(field, mdNode.getType(), refPath, refMdNode == null ? null : refMdNode.getType(), rvalue, mdNode.getFullPath()); }
private FieldData initializeSimple(RValueExpression rvalue, FieldTreeNode refMdNode, FieldTreeNode mdNode, Path field, Path refPath) { if (rvalue.getType() == RValueExpression.RValueType._dereference) { if (!mdNode.getType().equals(refMdNode.getType())) { throw new EvaluationError(CrudConstants.ERR_INCOMPATIBLE_DEREFERENCE + field + " <- " + refPath); } } else if (rvalue.getType() == RValueExpression.RValueType._emptyObject) { throw new EvaluationError(CrudConstants.ERR_INCOMPATIBLE_ASSIGNMENT + field + " <- {}"); } return new FieldData(field, mdNode.getType(), refPath, refMdNode == null ? null : refMdNode.getType(), rvalue, mdNode.getFullPath()); }
private FieldData initializeObject(RValueExpression rvalue, FieldTreeNode refMdNode, FieldTreeNode mdNode, Path field, Path refPath) { if (rvalue.getType() == RValueExpression.RValueType._dereference) { if (!(refMdNode instanceof ObjectField)) { throw new EvaluationError(CrudConstants.ERR_INCOMPATIBLE_ASSIGNMENT + field + " <- " + refPath); } } else if (rvalue.getType() != RValueExpression.RValueType._null) { Value v = rvalue.getValue(); if (!(v.getValue() instanceof ObjectNode)) { throw new EvaluationError(CrudConstants.ERR_INCOMPATIBLE_ASSIGNMENT + field + " <- " + rvalue.getValue()); } } return new FieldData(field, mdNode.getType(), refPath, refMdNode == null ? null : refMdNode.getType(), rvalue, mdNode.getFullPath()); }
private FieldData initializeObject(RValueExpression rvalue, FieldTreeNode refMdNode, FieldTreeNode mdNode, Path field, Path refPath) { if (rvalue.getType() == RValueExpression.RValueType._dereference) { if (!(refMdNode instanceof ObjectField)) { throw new EvaluationError(CrudConstants.ERR_INCOMPATIBLE_ASSIGNMENT + field + " <- " + refPath); } } else if (rvalue.getType() != RValueExpression.RValueType._null) { Value v = rvalue.getValue(); if (!(v.getValue() instanceof ObjectNode)) { throw new EvaluationError(CrudConstants.ERR_INCOMPATIBLE_ASSIGNMENT + field + " <- " + rvalue.getValue()); } } return new FieldData(field, mdNode.getType(), refPath, refMdNode == null ? null : refMdNode.getType(), rvalue, mdNode.getFullPath()); }
private FieldData initializeArray(RValueExpression rvalue, FieldTreeNode refMdNode, FieldTreeNode mdNode, Path field, Path refPath) { if (rvalue.getType() == RValueExpression.RValueType._dereference) { if (!(refMdNode instanceof ArrayField)) { throw new EvaluationError(CrudConstants.ERR_INCOMPATIBLE_ASSIGNMENT + field + " <- " + refPath); } } else if (rvalue.getType() != RValueExpression.RValueType._null) { Value v = rvalue.getValue(); if (!(v.getValue() instanceof ArrayNode)) { throw new EvaluationError(CrudConstants.ERR_INCOMPATIBLE_ASSIGNMENT + field + " <- " + rvalue.getValue()); } } return new FieldData(field, mdNode.getType(), refPath, refMdNode == null ? null : refMdNode.getType(), rvalue, mdNode.getFullPath()); }
private FieldData initializeSimple(RValueExpression rvalue, FieldTreeNode refMdNode, FieldTreeNode mdNode, Path field, Path refPath) { if (rvalue.getType() == RValueExpression.RValueType._dereference) { if (!mdNode.getType().equals(refMdNode.getType())) { throw new EvaluationError(CrudConstants.ERR_INCOMPATIBLE_DEREFERENCE + field + " <- " + refPath); } } else if (rvalue.getType() != RValueExpression.RValueType._null) { Value v = rvalue.getValue(); if (v.getValue() instanceof JsonNode) { throw new EvaluationError(CrudConstants.ERR_INCOMPATIBLE_ASSIGNMENT + field + " <- {}"); } } return new FieldData(field, mdNode.getType(), refPath, refMdNode == null ? null : refMdNode.getType(), rvalue, mdNode.getFullPath()); }
private FieldData initializeSimple(RValueExpression rvalue, FieldTreeNode refMdNode, FieldTreeNode mdNode, Path field, Path refPath) { if (rvalue.getType() == RValueExpression.RValueType._dereference) { if (!mdNode.getType().equals(refMdNode.getType())) { throw new EvaluationError(CrudConstants.ERR_INCOMPATIBLE_DEREFERENCE + field + " <- " + refPath); } } else if (rvalue.getType() != RValueExpression.RValueType._null) { Value v = rvalue.getValue(); if (v.getValue() instanceof JsonNode) { throw new EvaluationError(CrudConstants.ERR_INCOMPATIBLE_ASSIGNMENT + field + " <- {}"); } } return new FieldData(field, mdNode.getType(), refPath, refMdNode == null ? null : refMdNode.getType(), rvalue, mdNode.getFullPath()); }