public void setFieldPath(String fieldPath) { originalFieldPath = fieldPath; this.fieldPath = docType.buildFieldPath(fieldPath); }
@Override public void execute(Object obj) { InputExpression exp = (InputExpression) obj; exp.fieldPath = documentType.buildFieldPath(exp.getFieldName()); }
@Override public DataType getInputType(Expression exp, String fieldName) { try { return input.getDataType().buildFieldPath(fieldName).getResultingDataType(); } catch (IllegalArgumentException e) { throw new VerificationException(exp, "Input field '" + fieldName + "' not found."); } }
private static Object evaluateFieldPath(String fieldPth, Object value) { if (value instanceof DocumentPut) { final Document doc = ((DocumentPut) value).getDocument(); FieldPath fieldPath = doc.getDataType().buildFieldPath(fieldPth); IteratorHandler handler = new IteratorHandler(); doc.iterateNested(fieldPath, 0, handler); if (handler.values.isEmpty()) { return null; } return handler.values; } else if (value instanceof DocumentUpdate) { return Result.INVALID; } else if (value instanceof DocumentRemove) { return Result.INVALID; } else if (value instanceof DocumentGet) { return Result.INVALID; } return Result.FALSE; }