private AddFieldPathUpdate readAddFieldPathUpdate(DocumentType documentType, String fieldPath, TokenBuffer buffer) { AddFieldPathUpdate fieldPathUpdate = new AddFieldPathUpdate(documentType, fieldPath); FieldValue fv = SingleValueReader.readSingleValue( buffer, fieldPathUpdate.getFieldPath().getResultingDataType()); fieldPathUpdate.setNewValues((Array) fv); return fieldPathUpdate; }
public static FieldPathUpdate create(Type type, DocumentType docType, DocumentUpdateReader reader) { switch (type) { case ASSIGN: return new AssignFieldPathUpdate(docType, reader); case ADD: return new AddFieldPathUpdate(docType, reader); case REMOVE: return new RemoveFieldPathUpdate(docType, reader); } throw new IllegalArgumentException("Field path update type '" + type + "' not supported."); }
public void read(AddFieldPathUpdate update) { DataType dt = update.getFieldPath().getResultingDataType(); FieldValue fv = dt.createFieldValue(); fv.deserialize(resolveField(update), this); update.setNewValues((Array)fv); }
public AddFieldPathUpdate(DocumentType type, String fieldPath, String whereClause, Array newValues) { super(FieldPathUpdate.Type.ADD, type, fieldPath, whereClause); setNewValues(newValues); }
public void write(AddFieldPathUpdate update) { write((FieldPathUpdate)update); update.getNewValues().serialize(this); }
skipToEnd("assign"); } else if ("add".equals(currentName)) { update.addFieldPathUpdate(new AddFieldPathUpdate(doctype, this)); skipToEnd("add"); } else if ("remove".equals(currentName)) {
public void read(AddFieldPathUpdate update) { DataType dt = update.getFieldPath().getResultingDataType(); FieldValue fv = dt.createFieldValue(); dt.createFieldValue(); fv.deserialize(this); if (!(fv instanceof Array)) { throw new DeserializationException("Add only applicable to array types"); } update.setNewValues((Array)fv); }
public AddFieldPathUpdate(DocumentType type, String fieldPath, Array newValues) { super(FieldPathUpdate.Type.ADD, type, fieldPath, null); setNewValues(newValues); }
private void write(FieldPath fieldPath, Collection<FieldPathUpdate> fieldPathUpdates, JsonGenerator generator) throws IOException { generator.writeObjectFieldStart(fieldPath.toString()); for (FieldPathUpdate update : fieldPathUpdates) { if (writeArithmeticFieldPathUpdate(update, generator)) continue; generator.writeFieldName(update.getUpdateType().name().toLowerCase()); if (update instanceof AssignFieldPathUpdate) { AssignFieldPathUpdate assignUp = (AssignFieldPathUpdate) update; if (assignUp.getExpression() != null) { throw new RuntimeException("Unable to parse expression: " + assignUp.getExpression()); } else { assignUp.getNewValue().serialize(null, this); } } else if (update instanceof AddFieldPathUpdate) { ((AddFieldPathUpdate) update).getNewValues().serialize(null, this); } else if (update instanceof RemoveFieldPathUpdate) { generator.writeNumber(0); } else { throw new RuntimeException("Unsupported fieldpath operation: " + update.getClass().getName()); } } generator.writeEndObject(); }
value.getClass().getName() + "."); out.addFieldPathUpdate(new AddFieldPathUpdate(update.getDocumentType(), new FieldPath(path).toString(), update.getOriginalWhereClause(), (Array)value)); } else if (update instanceof AssignFieldPathUpdate) {
public void read(AddFieldPathUpdate update) { DataType dt = update.getFieldPath().getResultingDataType(); FieldValue fv = dt.createFieldValue(); dt.createFieldValue(); fv.deserialize(this); if (!(fv instanceof Array)) { throw new DeserializationException("Add only applicable to array types"); } update.setNewValues((Array)fv); }