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); }
@Override public JsonNode toJson() { ObjectNode node = getFactory().objectNode(); ArrayNode fieldArr = getFactory().arrayNode(); for (Path x : fields) { fieldArr.add(getFactory().textNode(x.toString())); } node.set(UpdateOperator._unset.toString(), fieldArr); return node; }
/** * Parses a primitive expression using the given json object */ public static PrimitiveUpdateExpression fromJson(ObjectNode node) { if (node.has(UpdateOperator._add.toString()) || node.has(UpdateOperator._set.toString())) { return SetExpression.fromJson(node); } else if (node.has(UpdateOperator._unset.toString())) { return UnsetExpression.fromJson(node); } else { throw Error.get(QueryConstants.ERR_INVALID_UPDATE_EXPRESSION, node.toString()); } } }
/** * Parses an unset expression using the given json object */ public static UnsetExpression fromJson(ObjectNode node) { if (node.size() == 1) { JsonNode val = node.get(UpdateOperator._unset.toString()); if (val != null) { List<Path> fields = new ArrayList<>(); if (val instanceof ArrayNode) { for (Iterator<JsonNode> itr = ((ArrayNode) val).elements(); itr.hasNext();) { fields.add(new Path(itr.next().asText())); } } else if (val.isValueNode()) { fields.add(new Path(val.asText())); } return new UnsetExpression(fields); } } throw Error.get(QueryConstants.ERR_INVALID_UNSET_EXPRESSION, node.toString()); }
/** * Parses a primitive expression using the given json object */ public static PrimitiveUpdateExpression fromJson(ObjectNode node) { if (node.has(UpdateOperator._add.toString()) || node.has(UpdateOperator._set.toString())) { return SetExpression.fromJson(node); } else if (node.has(UpdateOperator._unset.toString())) { return UnsetExpression.fromJson(node); } else { throw Error.get(QueryConstants.ERR_INVALID_UPDATE_EXPRESSION, node.toString()); } } }
/** * Parses an unset expression using the given json object */ public static UnsetExpression fromJson(ObjectNode node) { if (node.size() == 1) { JsonNode val = node.get(UpdateOperator._unset.toString()); if (val != null) { List<Path> fields = new ArrayList<>(); if (val instanceof ArrayNode) { for (Iterator<JsonNode> itr = ((ArrayNode) val).elements(); itr.hasNext();) { fields.add(new Path(itr.next().asText())); } } else if (val.isValueNode()) { fields.add(new Path(val.asText())); } return new UnsetExpression(fields); } } throw Error.get(QueryConstants.ERR_INVALID_UNSET_EXPRESSION, node.toString()); }
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); }
@Override public JsonNode toJson() { ObjectNode node = getFactory().objectNode(); ArrayNode fieldArr = getFactory().arrayNode(); for (Path x : fields) { fieldArr.add(getFactory().textNode(x.toString())); } node.set(UpdateOperator._unset.toString(), fieldArr); return node; }
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); }
private void translateUnset(FieldTreeNode root, UnsetExpression expr, BasicDBObject dest) throws CannotTranslateException { BasicDBObject obj = (BasicDBObject) dest.get("$unset"); if (obj == null) { obj = new BasicDBObject(); dest.put("$unset", obj); } for (Path field : expr.getFields()) { if (hasArray(root, field)) { throw new CannotTranslateException(expr); } obj.put(translatePath(field), ""); } }
private void translateUnset(FieldTreeNode root, UnsetExpression expr, BasicDBObject dest) throws CannotTranslateException { BasicDBObject obj = (BasicDBObject) dest.get("$unset"); if (obj == null) { obj = new BasicDBObject(); dest.put("$unset", obj); } for (Path field : expr.getFields()) { if (hasArray(root, field)) { throw new CannotTranslateException(expr); } obj.put(translatePath(field), ""); } }