java类com.mongodb.client.model.ReturnDocument的实例源码

SyncEventDao.java 文件源码 项目:mongodb-rdbms-sync 阅读 32 收藏 0 点赞 0 评论 0
public O2MSyncDataLoader getPendingDataLoader() {
    O2MSyncDataLoader loader = null;
    Document document = syncEventDoc.findOneAndUpdate(
            Filters.and(Filters.eq(SyncAttrs.STATUS, SyncStatus.PENDING),
                    Filters.eq(SyncAttrs.EVENT_TYPE, String.valueOf(EventType.System))),
            Updates.set(SyncAttrs.STATUS, SyncStatus.IN_PROGRESS),
            new FindOneAndUpdateOptions().returnDocument(ReturnDocument.AFTER)
                    .projection(Projections.include(SyncAttrs.SOURCE_DB_NAME, SyncAttrs.SOURCE_USER_NAME)));
    if (document != null && !document.isEmpty()) {
        Object interval = document.get(SyncAttrs.INTERVAL);
        String appName = document.getString(SyncAttrs.APPLICATION_NAME);
        if(interval!=null && interval instanceof Long){
            loader = new O2MSyncDataLoader((Long)interval, appName);
        }else{
            loader = new O2MSyncDataLoader(120000, appName);
        }
        loader.setEventId(document.getObjectId(SyncAttrs.ID));
        loader.setDbName(document.getString(SyncAttrs.SOURCE_DB_NAME));
        loader.setDbUserName(document.getString(SyncAttrs.SOURCE_USER_NAME));
        loader.setStatus(document.getString(SyncAttrs.STATUS));
    }
    return loader;
}
MongoDatasetDao.java 文件源码 项目:dragoman 阅读 31 收藏 0 点赞 0 评论 0
@Override
public Dataset write(Dataset dataset) {
  // we populate this on first write and retain it thereafter
  if (isBlank(dataset.getId())) {
    dataset.setId(ObjectId.get().toString());
  }

  Observable<Document> observable =
      getCollection()
          .findOneAndReplace(
              Filters.eq("id", dataset.getId()),
              documentTransformer.transform(dataset),
              new FindOneAndReplaceOptions().upsert(true).returnDocument(ReturnDocument.AFTER));

  return documentTransformer.transform(Dataset.class, observable.toBlocking().single());
}
OkraSyncImpl.java 文件源码 项目:OkraSync 阅读 41 收藏 0 点赞 0 评论 0
@Override
public Optional<T> peek() {
    final Bson peekQuery = QueryUtil.generatePeekQuery(defaultHeartbeatExpirationMillis);

    final Document update = new Document();
    update.put("heartbeat", new Date());
    update.put("status", OkraStatus.PROCESSING.name());

    final FindOneAndUpdateOptions options = new FindOneAndUpdateOptions();
    options.returnDocument(ReturnDocument.AFTER);

    final Document document = client
            .getDatabase(getDatabase())
            .getCollection(getCollection())
            .findOneAndUpdate(peekQuery, new Document("$set", update), options);

    if (document == null) {
        return Optional.empty();
    }

    return Optional.ofNullable(serializer.fromDocument(scheduleItemClass, document));
}
UpdateTest.java 文件源码 项目:polymorphia 阅读 36 收藏 0 点赞 0 评论 0
@Test
public void updatePojoTest() {

    Bson update = combine(set("user", "Jim"),
            set("action", Action.DELETE),
            // unfortunately at this point we need to provide a non generic class, so the codec is able to determine all types
            // remember: type erasure makes it impossible to retrieve type argument values at runtime
            // @todo provide a mechanism to generate non-generic class on the fly. Is that even possible ?
            // set("listOfPolymorphicTypes", buildNonGenericClassOnTheFly(Arrays.asList(new A(123), new B(456f)), List.class, Type.class),
            set("listOfPolymorphicTypes", new PolymorphicTypeList(Arrays.asList(new A(123), new B(456f)))),
            currentDate("creationDate"),
            currentTimestamp("_id"));

    FindOneAndUpdateOptions findOptions = new FindOneAndUpdateOptions();
    findOptions.upsert(true);
    findOptions.returnDocument(ReturnDocument.AFTER);

    MongoCollection<Pojo> pojoMongoCollection = mongoClient.getDatabase("test").getCollection("documents").withDocumentClass(Pojo.class);

    Pojo pojo = pojoMongoCollection.findOneAndUpdate(Filters.and(Filters.lt(DBCollection.ID_FIELD_NAME, 0),
            Filters.gt(DBCollection.ID_FIELD_NAME, 0)), update, findOptions);

    assertNotNull(pojo.id);
}
SmofCollectionImpl.java 文件源码 项目:mongo-obj-framework 阅读 30 收藏 0 点赞 0 评论 0
private SmofInsertResult replace(T element, SmofOpOptions options) {
    final SmofInsertResult result = new SmofInsertResultImpl();
    result.setSuccess(true);
    options.upsert(true);
    if(options.isBypassCache() || !cache.asMap().containsValue(element)) {
        final BsonDocument document = parser.toBson(element);
        final Bson query = createUniquenessQuery(document);
        result.setPostInserts(BsonUtils.extrackPosInsertions(document));
        options.setReturnDocument(ReturnDocument.AFTER);
        document.remove(Element.ID);
        final BsonDocument resDoc = collection.findOneAndReplace(query, document, options.toFindOneAndReplace());
        element.setId(resDoc.get(Element.ID).asObjectId().getValue());
        cache.put(element.getId(), element);
    }
    return result;
}
IdGenMongoStore.java 文件源码 项目:Rapture 阅读 32 收藏 0 点赞 0 评论 0
@Override
public Long getNextIdGen(Long interval) {
    Document realUpdate = getIncUpdateObject(getUpdateObject(interval));
    FindOneAndUpdateOptions options = new FindOneAndUpdateOptions()
            .upsert(true)
            .returnDocument(ReturnDocument.AFTER);

    Document ret = getIdGenCollection().findOneAndUpdate(getQueryObject(), realUpdate, options);
    if (ret == null) return null;

    Boolean valid = (Boolean) ret.get(VALID);
    if (valid != null && !valid) {
        throw RaptureExceptionFactory.create(HttpURLConnection.HTTP_BAD_REQUEST,
                mongoMsgCatalog.getMessage("IdGenerator"));
    }
    return (Long) ret.get(SEQ);
}
MongoIndexHandler.java 文件源码 项目:Rapture 阅读 31 收藏 0 点赞 0 评论 0
@Override
public void updateRow(String rowId, Map<String, Object> recordValues) {
    String key = getKey(rowId); // stupid key is row id plus "l/" prepended
                                // to it

    MongoCollection<Document> collection = MongoDBFactory.getCollection(instanceName, tableName);
    Document query = new Document();
    query.put(KEY, key);
    Document toPut = new Document();
    toPut.put(KEY, key);
    toPut.put(ROWID, rowId);
    toPut.put(EPOCH, EpochManager.nextEpoch(collection));
    toPut.putAll(recordValues);

    FindOneAndUpdateOptions options = new FindOneAndUpdateOptions().upsert(true).returnDocument(ReturnDocument.AFTER);

    @SuppressWarnings("unused")
    Document ret = collection.findOneAndUpdate(query, new Document($SET, toPut), options);
}
SecurityService.java 文件源码 项目:eds-starter6-mongodb 阅读 27 收藏 0 点赞 0 评论 0
@ExtDirectMethod(ExtDirectMethodType.FORM_POST)
public ExtDirectFormPostResult resetRequest(
        @RequestParam("email") String emailOrLoginName) {

    String token = UUID.randomUUID().toString();

    User user = this.mongoDb.getCollection(User.class).findOneAndUpdate(
            Filters.and(
                    Filters.or(Filters.eq(CUser.email, emailOrLoginName),
                            Filters.eq(CUser.loginName, emailOrLoginName)),
                    Filters.eq(CUser.deleted, false)),
            Updates.combine(
                    Updates.set(CUser.passwordResetTokenValidUntil,
                            Date.from(ZonedDateTime.now(ZoneOffset.UTC).plusHours(4)
                                    .toInstant())),
                    Updates.set(CUser.passwordResetToken, token)),
            new FindOneAndUpdateOptions().returnDocument(ReturnDocument.AFTER)
                    .upsert(false));

    if (user != null) {
        this.mailService.sendPasswortResetEmail(user);
    }

    return new ExtDirectFormPostResult();
}
RegionStorageAdapter.java 文件源码 项目:mongowg 阅读 35 收藏 0 点赞 0 评论 0
/**
 * Saves a set of {@link ProtectedRegion} for the specified world to database.
 *
 * @param world The name of the world
 * @param set The {@link Set} of regions
 * @throws StorageException Thrown if something goes wrong during database query
 */
public void saveAll(final String world, Set<ProtectedRegion> set) throws StorageException {
    MongoCollection<ProcessingProtectedRegion> collection = getCollection();
    final AtomicReference<Throwable> lastError = new AtomicReference<>();
    final CountDownLatch waiter = new CountDownLatch(set.size());
    for (final ProtectedRegion region : set) {
        if (listener != null)
            listener.beforeDatabaseUpdate(world, region);
        collection.findOneAndUpdate(
                Filters.and(Filters.eq("name", region.getId()), Filters.eq("world", world)),
                new Document("$set", new ProcessingProtectedRegion(region, world)),
                new FindOneAndUpdateOptions().upsert(true).returnDocument(ReturnDocument.AFTER),
                OperationResultCallback.create(lastError, waiter, new UpdateCallback(world))
        );
    }
    ConcurrentUtils.safeAwait(waiter);
    Throwable realLastError = lastError.get();
    if (realLastError != null)
        throw new StorageException("An error occurred while saving or updating in MongoDB.", realLastError);
}
MongoClientImpl.java 文件源码 项目:vertx-mongo-client 阅读 36 收藏 0 点赞 0 评论 0
@Override
public io.vertx.ext.mongo.MongoClient findOneAndUpdateWithOptions(String collection, JsonObject query, JsonObject update, FindOptions findOptions, UpdateOptions updateOptions, Handler<AsyncResult<JsonObject>> resultHandler) {
  requireNonNull(collection, "collection cannot be null");
  requireNonNull(query, "query cannot be null");
  requireNonNull(update, "update cannot be null");
  requireNonNull(findOptions, "find options cannot be null");
  requireNonNull(updateOptions, "update options cannot be null");
  requireNonNull(resultHandler, "resultHandler cannot be null");

  JsonObject encodedQuery = encodeKeyWhenUseObjectId(query);

  Bson bquery = wrap(encodedQuery);
  Bson bupdate = wrap(update);
  FindOneAndUpdateOptions foauOptions = new FindOneAndUpdateOptions();
  foauOptions.sort(wrap(findOptions.getSort()));
  foauOptions.projection(wrap(findOptions.getFields()));
  foauOptions.upsert(updateOptions.isUpsert());
  foauOptions.returnDocument(updateOptions.isReturningNewDocument() ? ReturnDocument.AFTER : ReturnDocument.BEFORE);

  MongoCollection<JsonObject> coll = getCollection(collection);
  coll.findOneAndUpdate(bquery, bupdate, foauOptions, wrapCallback(resultHandler));
  return this;
}
MongoClientImpl.java 文件源码 项目:vertx-mongo-client 阅读 37 收藏 0 点赞 0 评论 0
@Override
public io.vertx.ext.mongo.MongoClient findOneAndReplaceWithOptions(String collection, JsonObject query, JsonObject replace, FindOptions findOptions, UpdateOptions updateOptions, Handler<AsyncResult<JsonObject>> resultHandler) {
  requireNonNull(collection, "collection cannot be null");
  requireNonNull(query, "query cannot be null");
  requireNonNull(findOptions, "find options cannot be null");
  requireNonNull(updateOptions, "update options cannot be null");
  requireNonNull(resultHandler, "resultHandler cannot be null");

  JsonObject encodedQuery = encodeKeyWhenUseObjectId(query);

  Bson bquery = wrap(encodedQuery);
  FindOneAndReplaceOptions foarOptions = new FindOneAndReplaceOptions();
  foarOptions.sort(wrap(findOptions.getSort()));
  foarOptions.projection(wrap(findOptions.getFields()));
  foarOptions.upsert(updateOptions.isUpsert());
  foarOptions.returnDocument(updateOptions.isReturningNewDocument() ? ReturnDocument.AFTER : ReturnDocument.BEFORE);

  MongoCollection<JsonObject> coll = getCollection(collection);
  coll.findOneAndReplace(bquery, replace, foarOptions, wrapCallback(resultHandler));
  return this;
}
Repositories.java 文件源码 项目:GitHub 阅读 30 收藏 0 点赞 0 评论 0
/**
 * Configures this modifier so that new (updated) version of document will be returned in
 * case of successful update.
 * @see #returningOld()
 * @return {@code this} modifier for chained invocation
 */
// safe unchecked: we expect I to be a self type
@SuppressWarnings("unchecked")
public final M returningNew() {
  options.returnDocument(ReturnDocument.AFTER);
  return (M) this;
}
Repositories.java 文件源码 项目:GitHub 阅读 38 收藏 0 点赞 0 评论 0
/**
 * Configures this modifier so that new (updated) version of document will be returned in
 * case of successful update.
 * @see #returningOld()
 * @return {@code this} modifier for chained invocation
 */
// safe unchecked: we expect I to be a self type
@SuppressWarnings("unchecked")
public final M returningNew() {
  options.returnDocument(ReturnDocument.AFTER);
  return (M) this;
}
OkraSyncImpl.java 文件源码 项目:OkraSync 阅读 33 收藏 0 点赞 0 评论 0
@Override
public Optional<T> reschedule(final T item) {
    validateReschedule(item);

    final Document query = new Document();
    query.put("_id", new ObjectId(item.getId()));
    query.put("heartbeat", DateUtil.toDate(item.getHeartbeat()));

    final Document setDoc = new Document();
    setDoc.put("heartbeat", null);
    setDoc.put("runDate", DateUtil.toDate(item.getRunDate()));
    setDoc.put("status", OkraStatus.PENDING.name());

    final Document update = new Document();
    update.put("$set", setDoc);

    final FindOneAndUpdateOptions options = new FindOneAndUpdateOptions();
    options.returnDocument(ReturnDocument.AFTER);

    final Document document = client
            .getDatabase(getDatabase())
            .getCollection(getCollection())
            .findOneAndUpdate(query, update, options);

    if (document == null) {
        return Optional.empty();
    }

    return Optional.ofNullable(serializer.fromDocument(scheduleItemClass, document));
}
OkraSyncImpl.java 文件源码 项目:OkraSync 阅读 29 收藏 0 点赞 0 评论 0
@Override
public Optional<T> heartbeatAndUpdateCustomAttrs(final T item, final Map<String, Object> attrs) {
    validateHeartbeat(item);

    final Document query = new Document();
    query.put("_id", new ObjectId(item.getId()));
    query.put("status", OkraStatus.PROCESSING.name());
    query.put("heartbeat", DateUtil.toDate(item.getHeartbeat()));

    final Document update = new Document();
    update.put("$set", new Document("heartbeat", new Date()));

    if (attrs != null && !attrs.isEmpty()) {
        attrs.forEach((key, value) -> update.append("$set", new Document(key, value)));
    }

    final FindOneAndUpdateOptions options = new FindOneAndUpdateOptions();
    options.returnDocument(ReturnDocument.AFTER);

    final Document result = client
            .getDatabase(getDatabase())
            .getCollection(getCollection())
            .findOneAndUpdate(query, update, options);

    if (result == null) {
        return Optional.empty();
    }

    return Optional.ofNullable(serializer.fromDocument(scheduleItemClass, result));
}
SyncMapDao.java 文件源码 项目:mongodb-rdbms-sync 阅读 34 收藏 0 点赞 0 评论 0
public SyncMap saveMapping(SyncMap map) {
    // TODO : check why this is needed
    if (map.getMapId() == null) {
        map.setMapId(new ObjectId());
    }
    return syncMappings.findOneAndReplace(Filters.eq(SyncAttrs.ID, map.getMapId()), map,
            new FindOneAndReplaceOptions().returnDocument(ReturnDocument.AFTER).upsert(true));
}
SyncEventDao.java 文件源码 项目:mongodb-rdbms-sync 阅读 35 收藏 0 点赞 0 评论 0
public SyncEvent getPendingEvent(List<String> eventTypes) {
    return syncEvents.findOneAndUpdate(
            Filters.and(Filters.eq(SyncAttrs.STATUS, SyncStatus.PENDING),
                    Filters.in(SyncAttrs.EVENT_TYPE, eventTypes)),
            Updates.set(SyncAttrs.STATUS, SyncStatus.IN_PROGRESS),
            new FindOneAndUpdateOptions().returnDocument(ReturnDocument.AFTER));
}
SyncEventDao.java 文件源码 项目:mongodb-rdbms-sync 阅读 31 收藏 0 点赞 0 评论 0
public SyncEvent saveEvent(SyncEvent event) {
    if (event.getEventId() == null) {
        event.setEventId(new ObjectId());
    }
    return syncEvents.findOneAndReplace(Filters.eq(SyncAttrs.ID, event.getEventId()), event,
            new FindOneAndReplaceOptions().returnDocument(ReturnDocument.AFTER).upsert(true));
}
SyncConnectionDao.java 文件源码 项目:mongodb-rdbms-sync 阅读 34 收藏 0 点赞 0 评论 0
public SyncConnectionInfo updateConnection(SyncConnectionInfo connInfo) {
    if(connInfo.getConnectionId() == null){
        connInfo.setConnectionId(new ObjectId());
    }
    return connectionInfo.findOneAndReplace(
            Filters.eq(String.valueOf(ConnectionInfoAttributes._id), connInfo.getConnectionId()), connInfo,
            new FindOneAndReplaceOptions().returnDocument(ReturnDocument.AFTER).upsert(true));
}
SyncNodeDao.java 文件源码 项目:mongodb-rdbms-sync 阅读 27 收藏 0 点赞 0 评论 0
public SyncNode getFailedNode(long lastPingTime) {
    SyncNode failedNode = syncNodeMapping.findOneAndUpdate(
            Filters.and(Filters.lte(SyncAttrs.LAST_PING_TIME, lastPingTime),
                    Filters.eq(SyncAttrs.LIFE_CYCLE, SyncConfig.INSTANCE.getDbProperty(SyncConstants.LIFE))),
            Updates.set(SyncAttrs.LAST_PING_TIME, System.currentTimeMillis()),
            new FindOneAndUpdateOptions().upsert(false).returnDocument(ReturnDocument.BEFORE));
    if (failedNode != null && failedNode.getFailureTime() == 0) {
        syncNodeMapping.findOneAndUpdate(Filters.eq(SyncAttrs.ID, failedNode.getId()),
                Updates.set(SyncAttrs.FAILURE_TIME, failedNode.getLastPingTime()));
    }
    return failedNode;
}
MngToOrclSyncWriter.java 文件源码 项目:mongodb-rdbms-sync 阅读 29 收藏 0 点赞 0 评论 0
public MngToOrclSyncWriter(BlockingQueue<Document> dataBuffer, MongoToOracleMap map, SyncMarker marker,
        CountDownLatch latch, boolean isRestrictedSyncEnabled, ObjectId eventId) {
    super();
    this.dataBuffer = dataBuffer;
    this.map = map;
    this.marker = marker;
    this.latch = latch;
    this.isRestrictedSyncEnabled = isRestrictedSyncEnabled;
    this.eventId = eventId;
    this.options = new FindOneAndUpdateOptions();
    options.returnDocument(ReturnDocument.BEFORE);
}
LaboratoryConfigurationDaoBean.java 文件源码 项目:otus-api 阅读 32 收藏 0 点赞 0 评论 0
public String createNewLotCodeForTransportation() {
    Document updateLotCode = collection.findOneAndUpdate(exists("lotConfiguration.lastInsertionTransportation"),
            new Document("$inc", new Document("lotConfiguration.lastInsertionTransportation", 1)),
            new FindOneAndUpdateOptions().returnDocument(ReturnDocument.AFTER));

    LaboratoryConfiguration laboratoryConfiguration = LaboratoryConfiguration.deserialize(updateLotCode.toJson());

    return laboratoryConfiguration.getLotConfiguration().getLastInsertionTransportation().toString();
}
LaboratoryConfigurationDaoBean.java 文件源码 项目:otus-api 阅读 25 收藏 0 点赞 0 评论 0
public String createNewLotCodeForExam() {
    Document updateLotCode = collection.findOneAndUpdate(exists("lotConfiguration.lastInsertionExam"),
            new Document("$inc", new Document("lotConfiguration.lastInsertionExam", 1)),
            new FindOneAndUpdateOptions().returnDocument(ReturnDocument.AFTER));

    LaboratoryConfiguration laboratoryConfiguration = LaboratoryConfiguration.deserialize(updateLotCode.toJson());

    return laboratoryConfiguration.getLotConfiguration().getLastInsertionExam().toString();
}
SmofCollectionImpl.java 文件源码 项目:mongo-obj-framework 阅读 29 收藏 0 点赞 0 评论 0
@Override
public void execUpdate(Bson filter, Bson update, SmofOpOptions options) {
    options.setReturnDocument(ReturnDocument.AFTER);
    final BsonDocument result = collection.findOneAndUpdate(filter, update, options.toFindOneAndUpdateOptions());
    final T element = parser.fromBson(result, type);
    cache.put(result.getObjectId(Element.ID).getValue(), element);
}
MongoDbDataStore.java 文件源码 项目:Rapture 阅读 31 收藏 0 点赞 0 评论 0
@Override
public void put(String key, String value) {
    MongoCollection<Document> collection = getCollection();
    Document query = new Document(KEY, key);
    Document toPut = new Document($SET, new Document(KEY, key).append(VALUE, value));

    FindOneAndUpdateOptions options = new FindOneAndUpdateOptions().upsert(true).returnDocument(ReturnDocument.BEFORE);
    Document result = collection.findOneAndUpdate(query, toPut, options);

    if (needsFolderHandling && result == null) {
        dirRepo.registerParentage(key);
    }
}
MongoSeriesStore.java 文件源码 项目:Rapture 阅读 36 收藏 0 点赞 0 评论 0
private void saveDocument(String key, String column, Object val) {
    registerKey(key);
    MongoCollection<Document> collection = getCollection(key);
    Document dbkey = new Document(ROWKEY, key).append(COLKEY, column);
    Document dbval = new Document($SET, new Document(ROWKEY, key).append(COLKEY, column).append(VALKEY, val));
    FindOneAndUpdateOptions options = new FindOneAndUpdateOptions().upsert(true).returnDocument(ReturnDocument.AFTER);
    try {
        @SuppressWarnings("unused")
        Document ret = collection.findOneAndUpdate(dbkey, dbval, options);
    } catch (MongoException me) {
        throw RaptureExceptionFactory.create(HttpURLConnection.HTTP_INTERNAL_ERROR, new ExceptionToString(me));
    }
}
EpochManager.java 文件源码 项目:Rapture 阅读 29 收藏 0 点赞 0 评论 0
/**
 * Returns the next epoch available and advances the counter. Guaranteed to
 * be unique for the given collection. If the epoch document does not
 * already exist a new one is created and the first epoch returned will be
 * 1L.
 * 
 * @param collection
 *            - the MongoCollection to the get next epoch for
 * @return Long - a unique epoch value for this collection
 */
public static Long nextEpoch(final MongoCollection<Document> collection) {
    final FindOneAndUpdateOptions options = new FindOneAndUpdateOptions().upsert(true).returnDocument(ReturnDocument.AFTER);

    MongoRetryWrapper<Long> wrapper = new MongoRetryWrapper<Long>() {
        public Long action(FindIterable<Document> cursor) {
            Document ret = collection.findOneAndUpdate(getEpochQueryObject(), getIncUpdateObject(getUpdateObject()), options);
            return (Long) ret.get(SEQ);
        }
    };
    return wrapper.doAction();
}
UserService.java 文件源码 项目:eds-starter6-mongodb 阅读 33 收藏 0 点赞 0 评论 0
@ExtDirectMethod
public void sendPassordResetEmail(String userId) {
    String token = UUID.randomUUID().toString();

    User user = this.mongoDb.getCollection(User.class).findOneAndUpdate(
            Filters.eq(CUser.id, userId),
            Updates.combine(
                    Updates.set(CUser.passwordResetTokenValidUntil,
                            Date.from(ZonedDateTime.now(ZoneOffset.UTC).plusHours(4)
                                    .toInstant())),
                    Updates.set(CUser.passwordResetToken, token)),
            new FindOneAndUpdateOptions().returnDocument(ReturnDocument.AFTER));

    this.mailService.sendPasswortResetEmail(user);
}
JsonAuthSuccessHandler.java 文件源码 项目:eds-starter6-mongodb 阅读 36 收藏 0 点赞 0 评论 0
@Override
public void onAuthenticationSuccess(HttpServletRequest request,
        HttpServletResponse response, Authentication authentication)
        throws IOException, ServletException {

    Map<String, Object> result = new HashMap<>();
    result.put("success", true);

    MongoUserDetails userDetails = (MongoUserDetails) authentication.getPrincipal();
    if (userDetails != null) {
        User user;
        if (!userDetails.isPreAuth()) {

            user = this.mongoDb.getCollection(User.class).findOneAndUpdate(
                    Filters.eq(CUser.id, userDetails.getUserDbId()),
                    Updates.set(CUser.lastAccess, new Date()),
                    new FindOneAndUpdateOptions()
                            .returnDocument(ReturnDocument.AFTER));
        }
        else {
            user = this.mongoDb.getCollection(User.class)
                    .find(Filters.eq(CUser.id, userDetails.getUserDbId())).first();
        }
        result.put(SecurityService.AUTH_USER, new UserDetailDto(userDetails, user,
                CsrfController.getCsrfToken(request)));
    }
    response.setCharacterEncoding("UTF-8");
    response.getWriter().print(this.objectMapper.writeValueAsString(result));
    response.getWriter().flush();
}
Repositories.java 文件源码 项目:immutables 阅读 35 收藏 0 点赞 0 评论 0
/**
 * Configures this modifier so that new (updated) version of document will be returned in
 * case of successful update.
 * @see #returningOld()
 * @return {@code this} modifier for chained invocation
 */
// safe unchecked: we expect I to be a self type
@SuppressWarnings("unchecked")
public final M returningNew() {
  options.returnDocument(ReturnDocument.AFTER);
  return (M) this;
}


问题


面经


文章

微信
公众号

扫码关注公众号