private static DocumentMessage newMessage(DocumentOperation documentOperation) { final TestAndSetMessage message; if (documentOperation instanceof DocumentPut) { message = new PutDocumentMessage(((DocumentPut)documentOperation)); } else if (documentOperation instanceof DocumentUpdate) { message = new UpdateDocumentMessage((DocumentUpdate)documentOperation); } else if (documentOperation instanceof DocumentRemove) { message = new RemoveDocumentMessage(documentOperation.getId()); } else { throw new UnsupportedOperationException(documentOperation.getClass().getName()); } message.setCondition(documentOperation.getCondition()); return message; }
public Object evaluate(Context context) { return distribution.getColumn(factory.getBucketId(context.getDocumentOperation().getId())); }
private VespaXMLFeedReader.Operation parse(InputStream inputStream, String docId, DocumentParser.SupportedOperation supportedOperation) { final JsonReader reader = new JsonReader(docMan, inputStream, jsonFactory); final DocumentOperation documentOperation = reader.readSingleDocument(supportedOperation, docId); VespaXMLFeedReader.Operation operation = new VespaXMLFeedReader.Operation(); try { inputStream.close(); } catch (IOException e) { throw new RuntimeException(e); } if (supportedOperation == DocumentParser.SupportedOperation.PUT) { operation.setDocument(((DocumentPut) documentOperation).getDocument()); } else { operation.setDocumentUpdate((DocumentUpdate) documentOperation); } // (A potentially empty) test-and-set condition is always set by JsonReader operation.setCondition(documentOperation.getCondition()); return operation; } }
getDocumentTypeFromString(documentParseInfo.get().documentId.getDocType(), typeManager), documentParseInfo.get()); operation.setCondition(TestAndSetCondition.fromConditionString(documentParseInfo.get().condition)); return operation;
public Object evaluate(Context context) { DocumentId id = context.getDocumentOperation().getId(); if (id == null) { throw new IllegalStateException("Document has no identifier.");
/** * Reads a single operation. The operation is not expected to be part of an array. * @param operationType the type of operation (update or put) * @param docIdString document ID. * @return the document */ public DocumentOperation readSingleDocument(DocumentParser.SupportedOperation operationType, String docIdString) { DocumentId docId = new DocumentId(docIdString); final DocumentParseInfo documentParseInfo; try { DocumentParser documentParser = new DocumentParser(parser); documentParseInfo = documentParser.parse(Optional.of(docId)).get(); } catch (IOException e) { state = END_OF_FEED; throw new RuntimeException(e); } documentParseInfo.operationType = operationType; VespaJsonDocumentReader vespaJsonDocumentReader = new VespaJsonDocumentReader(); DocumentOperation operation = vespaJsonDocumentReader.createDocumentOperation( getDocumentTypeFromString(documentParseInfo.documentId.getDocType(), typeManager), documentParseInfo); operation.setCondition(TestAndSetCondition.fromConditionString(documentParseInfo.condition)); return operation; }
@Override public void read(Operation operation) throws Exception { DocumentOperation documentOperation = reader.next(); if (documentOperation == null) { stream.close(); operation.setInvalid(); return; } if (documentOperation instanceof DocumentUpdate) { operation.setDocumentUpdate((DocumentUpdate) documentOperation); } else if (documentOperation instanceof DocumentRemove) { operation.setRemove(documentOperation.getId()); } else if (documentOperation instanceof DocumentPut) { operation.setDocument(((DocumentPut) documentOperation).getDocument()); } else { throw new IllegalStateException("Got unknown class from JSON reader: " + documentOperation.getClass().getName()); } operation.setCondition(documentOperation.getCondition()); }