private static boolean isRetryable(final WriteRequest writeRequest) { if (writeRequest.getType() == UPDATE || writeRequest.getType() == REPLACE) { return !((UpdateRequest) writeRequest).isMulti(); } else if (writeRequest.getType() == DELETE) { return !((DeleteRequest) writeRequest).isMulti(); } return true; }
@Override protected BsonDocument getAsWriteCommand(final ByteBufferBsonOutput bsonOutput, final int firstDocumentPosition) { BsonDocument deleteDocument = new BsonDocument("q", createOne(bsonOutput, firstDocumentPosition)) .append("limit", deleteRequest.isMulti() ? new BsonInt32(0) : new BsonInt32(1)); return getBaseCommandDocument("delete").append("deletes", new BsonArray(singletonList(deleteDocument))); }
@Override protected EncodingMetadata encodeMessageBodyWithMetadata(final BsonOutput bsonOutput) { bsonOutput.writeInt32(0); // reserved bsonOutput.writeCString(getCollectionName()); if (deleteRequest.isMulti()) { bsonOutput.writeInt32(0); } else { bsonOutput.writeInt32(1); } int firstDocumentStartPosition = bsonOutput.getPosition(); addDocument(deleteRequest.getFilter(), bsonOutput, new NoOpFieldNameValidator()); return new EncodingMetadata(firstDocumentStartPosition); } }
writer.writeName("q"); getCodec(deleteRequest.getFilter()).encode(writer, deleteRequest.getFilter(), EncoderContext.builder().build()); writer.writeInt32("limit", deleteRequest.isMulti() ? 0 : 1); if (deleteRequest.getCollation() != null) { writer.writeName("collation");
private static boolean isRetryable(final WriteRequest writeRequest) { if (writeRequest.getType() == UPDATE || writeRequest.getType() == REPLACE) { return !((UpdateRequest) writeRequest).isMulti(); } else if (writeRequest.getType() == DELETE) { return !((DeleteRequest) writeRequest).isMulti(); } return true; }
@Override protected BsonDocument getAsWriteCommand(final ByteBufferBsonOutput bsonOutput, final int firstDocumentPosition) { BsonDocument deleteDocument = new BsonDocument("q", createOne(bsonOutput, firstDocumentPosition)) .append("limit", deleteRequest.isMulti() ? new BsonInt32(0) : new BsonInt32(1)); return getBaseCommandDocument("delete").append("deletes", new BsonArray(singletonList(deleteDocument))); }
@Override protected EncodingMetadata encodeMessageBodyWithMetadata(final BsonOutput bsonOutput) { bsonOutput.writeInt32(0); // reserved bsonOutput.writeCString(getCollectionName()); if (deleteRequest.isMulti()) { bsonOutput.writeInt32(0); } else { bsonOutput.writeInt32(1); } int firstDocumentStartPosition = bsonOutput.getPosition(); addDocument(deleteRequest.getFilter(), bsonOutput, new NoOpFieldNameValidator()); return new EncodingMetadata(firstDocumentStartPosition); } }
writer.writeName("q"); getCodec(deleteRequest.getFilter()).encode(writer, deleteRequest.getFilter(), EncoderContext.builder().build()); writer.writeInt32("limit", deleteRequest.isMulti() ? 0 : 1); if (deleteRequest.getCollation() != null) { writer.writeName("collation");