@Override public void delete(DeleteMessage deleteMessage, MessageReplier messageReplier) { C connection = getConnection(messageReplier); try { Request req = new Request( deleteMessage.getDatabase(), new ExternalClientInfo(deleteMessage.getClientAddress(), deleteMessage.getRequestId()), false, null //Set the requested timeout ); safeRequestProcessor.delete(connection, req, deleteMessage); } catch (MongoException ex) { errorHandler.handleMongodbException(connection, messageReplier.getRequestId(), false, ex); } }
@Override public String toString() { //TODO: This must be changed to preserve privacy on logs return "DeleteMessage{" + super.toString() + ", database='" + database + '\'' + ", collection='" + collection + '\'' + ", document=" + (getDataContext().isValid() ? document : "<not available>") + '}'; } }
@Override @Nonnegative public DeleteMessage decode(ByteBuf buffer, RequestBaseMessage requestBaseMessage) throws InvalidNamespaceException, InvalidBsonException { try { MyBsonContext context = new MyBsonContext(buffer); buffer.skipBytes(4); String fullCollectionName = stringReader.readCString(buffer, true); int flags = buffer.readInt(); BsonDocument document = docReader.readDocument(HEAP, buffer); //TODO: improve the way database and cache are pooled String database = getDatabase(fullCollectionName).intern(); String collection = getCollection(fullCollectionName).intern(); return new DeleteMessage( requestBaseMessage, context, database, collection, document, EnumInt32FlagsUtil.isActive(Flag.SINGLE_REMOVE, flags) ); } catch (NettyBsonReaderException ex) { throw new InvalidBsonException(ex); } }