package com.mongodb.internal.connection;
import com.mongodb.ReadConcernLevel;
import com.mongodb.session.SessionContext;
import org.bson.BsonDocument;
import org.bson.BsonString;
import static com.mongodb.assertions.Assertions.notNull;
public final class ReadConcernHelper {
public static BsonDocument getReadConcernDocument(final SessionContext sessionContext) {
notNull("sessionContext", sessionContext);
BsonDocument readConcernDocument = new BsonDocument();
ReadConcernLevel level = sessionContext.getReadConcern().getLevel();
if (level != null) {
readConcernDocument.append("level", new BsonString(level.getValue()));
}
if (shouldAddAfterClusterTime(sessionContext)) {
readConcernDocument.append("afterClusterTime", sessionContext.getOperationTime());
}
return readConcernDocument;
}
private static boolean shouldAddAfterClusterTime(final SessionContext sessionContext) {
return sessionContext.isCausallyConsistent() && sessionContext.getOperationTime() != null;
}
private ReadConcernHelper() {
}
}