protected boolean assignCollections() { DB adminDb = mongo.getDB(MongoDBRiver.MONGODB_ADMIN_DATABASE); oplogDb = mongo.getDB(MongoDBRiver.MONGODB_LOCAL_DATABASE); if (!definition.getMongoAdminUser().isEmpty() && !definition.getMongoAdminPassword().isEmpty()) { logger.info( "Authenticate {} with {}", MongoDBRiver.MONGODB_ADMIN_DATABASE, definition.getMongoAdminUser()); CommandResult cmd = adminDb.authenticateCommand( definition.getMongoAdminUser(), definition.getMongoAdminPassword().toCharArray()); if (!cmd.ok()) { logger.error( "Autenticatication failed for {}: {}", MongoDBRiver.MONGODB_ADMIN_DATABASE, cmd.getErrorMessage()); // Can still try with mongoLocal credential if provided. // return false; } oplogDb = adminDb.getMongo().getDB(MongoDBRiver.MONGODB_LOCAL_DATABASE); } if (!definition.getMongoLocalUser().isEmpty() && !definition.getMongoLocalPassword().isEmpty() && !oplogDb.isAuthenticated()) { logger.info( "Authenticate {} with {}", MongoDBRiver.MONGODB_LOCAL_DATABASE, definition.getMongoLocalUser()); CommandResult cmd = oplogDb.authenticateCommand( definition.getMongoLocalUser(), definition.getMongoLocalPassword().toCharArray()); if (!cmd.ok()) { logger.error( "Autenticatication failed for {}: {}", MongoDBRiver.MONGODB_LOCAL_DATABASE, cmd.getErrorMessage()); return false; } } Set<String> collections = oplogDb.getCollectionNames(); if (!collections.contains(MongoDBRiver.OPLOG_COLLECTION)) { logger.error( "Cannot find " + MongoDBRiver.OPLOG_COLLECTION + " collection. Please check this link: http://goo.gl/2x5IW"); return false; } oplogCollection = oplogDb.getCollection(MongoDBRiver.OPLOG_COLLECTION); slurpedDb = mongo.getDB(definition.getMongoDb()); if (!definition.getMongoAdminUser().isEmpty() && !definition.getMongoAdminPassword().isEmpty() && adminDb.isAuthenticated()) { slurpedDb = adminDb.getMongo().getDB(definition.getMongoDb()); } // Not necessary as local user has access to all databases. // http://docs.mongodb.org/manual/reference/local-database/ // if (!mongoDbUser.isEmpty() && !mongoDbPassword.isEmpty() // && !slurpedDb.isAuthenticated()) { // logger.info("Authenticate {} with {}", mongoDb, mongoDbUser); // CommandResult cmd = slurpedDb.authenticateCommand(mongoDbUser, // mongoDbPassword.toCharArray()); // if (!cmd.ok()) { // logger.error("Authentication failed for {}: {}", // mongoDb, cmd.getErrorMessage()); // return false; // } // } // slurpedCollection = // slurpedDb.getCollection(definition.getMongoCollection()); // if (definition.isImportAllCollections()) { // for (String collection : slurpedDb.getCollectionNames()) { // slurpedCollections.put(collection, // slurpedDb.getCollection(collection)); // } // } else { // slurpedCollections.put(definition.getMongoCollection(), // slurpedDb.getCollection(definition.getMongoCollection())); // } return true; }