@Override protected EncodingMetadata encodeMessageBodyWithMetadata(final BsonOutput bsonOutput) { bsonOutput.writeInt32(0); // reserved bsonOutput.writeCString(getCollectionName()); int flags = 0; if (updateRequest.isUpsert()) { flags |= 1; } if (updateRequest.isMulti()) { flags |= 2; } bsonOutput.writeInt32(flags); int firstDocumentStartPosition = bsonOutput.getPosition(); addDocument(updateRequest.getFilter(), bsonOutput, new NoOpFieldNameValidator()); if (updateRequest.getType() == REPLACE) { addDocument(updateRequest.getUpdate(), bsonOutput, new CollectibleDocumentFieldNameValidator()); } else { int bufferPosition = bsonOutput.getPosition(); addDocument(updateRequest.getUpdate(), bsonOutput, new UpdateFieldNameValidator()); if (bsonOutput.getPosition() == bufferPosition + 5) { throw new IllegalArgumentException("Invalid BSON document for an update"); } } return new EncodingMetadata(firstDocumentStartPosition); }
writer.writeName("u"); if (update.getType() == WriteRequest.Type.UPDATE && update.getUpdate().isEmpty()) { throw new IllegalArgumentException("Invalid BSON document for an update");
/** {@inheritDoc} */ @Override public Object invoke(final Object proxy, final Method method, final Object[] args) throws Throwable { Object operation = args[0]; final String operationName; if (operation instanceof AggregateOperation<?>) { operationName = Joiner.on(",").join(((AggregateOperation<?>) operation).getPipeline()); } else if (operation instanceof ListIndexesOperation<?>) { operationName = "indexes"; } else if (operation instanceof FindOperation<?>) { FindOperation<?> findOperation = (FindOperation<?>) operation; operationName = "find(" + findOperation.getFilter().toJson() + ")"; } else if (operation instanceof CountOperation) { operationName = "count(" + ((CountOperation) operation).getFilter().toJson() + ")"; } else if (operation instanceof UpdateOperation) { UpdateOperation updateOperation = (UpdateOperation) operation; List<UpdateRequest> updateRequests = updateOperation.getUpdateRequests(); operationName = updateRequests.stream().map(ur -> "{" + ur.getType() + ur.getFilter() + "}").collect(Collectors.joining(",")); } else { operationName = operation.toString(); } return doInvoke(operationExecutor, method, args, operationName); } }
@Override protected EncodingMetadata encodeMessageBodyWithMetadata(final BsonOutput bsonOutput) { bsonOutput.writeInt32(0); // reserved bsonOutput.writeCString(getCollectionName()); int flags = 0; if (updateRequest.isUpsert()) { flags |= 1; } if (updateRequest.isMulti()) { flags |= 2; } bsonOutput.writeInt32(flags); int firstDocumentStartPosition = bsonOutput.getPosition(); addDocument(updateRequest.getFilter(), bsonOutput, new NoOpFieldNameValidator()); if (updateRequest.getType() == REPLACE) { addDocument(updateRequest.getUpdate(), bsonOutput, new CollectibleDocumentFieldNameValidator()); } else { int bufferPosition = bsonOutput.getPosition(); addDocument(updateRequest.getUpdate(), bsonOutput, new UpdateFieldNameValidator()); if (bsonOutput.getPosition() == bufferPosition + 5) { throw new IllegalArgumentException("Invalid BSON document for an update"); } } return new EncodingMetadata(firstDocumentStartPosition); }
writer.writeName("u"); if (update.getType() == WriteRequest.Type.UPDATE && update.getUpdate().isEmpty()) { throw new IllegalArgumentException("Invalid BSON document for an update");