/** * Gets the credential that this client authenticates all connections with * * @return the credential, which may be null in unsecured deployments * @since 3.9 */ @Nullable public MongoCredential getCredential() { if (getCredentialsList().size() > 1) { throw new IllegalStateException("Instance constructed with more than one MongoCredential"); } else if (getCredentialsList().isEmpty()) { return null; } else { return getCredentialsList().get(0); } }
/** * Gets the credential that this client authenticates all connections with * * @return the credential, which may be null in unsecured deployments * @since 3.9 */ @Nullable public MongoCredential getCredential() { if (getCredentialsList().size() > 1) { throw new IllegalStateException("Instance constructed with more than one MongoCredential"); } else if (getCredentialsList().isEmpty()) { return null; } else { return getCredentialsList().get(0); } }
@Override public Map<String, ?> properties(RequestContext ctx) throws Exception { Map properties = new HashMap<>(); List<Resource> addressStates = new ArrayList<>(); for (ServerAddress serverAddress : mongoClient.getAllAddress()) { addressStates.add(new ServerAddressState(this, serverAddress)); } properties.put(SERVERS, addressStates); List<Resource> credentialStates = new ArrayList<>(); for (MongoCredential mongoCredential: mongoClient.getCredentialsList()) { credentialStates.add(new CredentialState(this, mongoCredential)); } properties.put(CredentialState.ID, credentialStates); WriteConcernState writeConcern = new WriteConcernState(this, mongoClient.getWriteConcern()); properties.put(WriteConcernState.ID, writeConcern); ReadPreferenceState readPreference = new ReadPreferenceState(this, mongoClient.getReadPreference()); properties.put(ReadPreferenceState.ID, readPreference); MongoClientOptionsState mongoClientOptions = new MongoClientOptionsState(this, mongoClient.getMongoClientOptions()); properties.put(MongoClientOptionsState.ID, mongoClientOptions); return properties; }
@Test public void cloudMongoCreationWithMultipleHostsByUri() throws Exception { String uri = String.format("%s://%s:%s@%s:%s/%s", MONGODB_SCHEME, TEST_USERNAME, TEST_PASSWORD, StringUtils.arrayToDelimitedString(TEST_HOSTS, ","), TEST_PORT, TEST_DB); MongoServiceInfo serviceInfo = new MongoServiceInfo("id", uri); MongoDbFactory mongoDbFactory = testCreator.create(serviceInfo, null); assertNotNull(mongoDbFactory); MongoClient mongoClient = getMongoClientField(mongoDbFactory); List<ServerAddress> addresses = extractServerAddresses(mongoClient); assertEquals(3, addresses.size()); MongoCredential credentials = mongoClient.getCredentialsList().get(0); assertEquals(TEST_USERNAME, credentials.getUserName()); assertNotNull(credentials.getPassword()); // Don't do connector.getDatabase().getName() as that will try to initiate the connection assertEquals(TEST_DB, ReflectionTestUtils.getField(mongoDbFactory, "databaseName")); ServerAddress address1 = addresses.get(0); assertEquals(TEST_HOST, address1.getHost()); assertEquals(TEST_PORT_DEFAULT, address1.getPort()); ServerAddress address2 = addresses.get(1); assertEquals(TEST_HOST_1, address2.getHost()); assertEquals(TEST_PORT_DEFAULT, address2.getPort()); ServerAddress address3 = addresses.get(2); assertEquals(TEST_HOST_2, address3.getHost()); assertEquals(TEST_PORT, address3.getPort()); }
@Test public void cloudMongoCreationNoConfig() throws Exception { MongoServiceInfo serviceInfo = new MongoServiceInfo("id", TEST_HOST, TEST_PORT, TEST_USERNAME, TEST_PASSWORD, TEST_DB); MongoDbFactory mongoDbFactory = testCreator.create(serviceInfo, null); assertNotNull(mongoDbFactory); MongoClient mongoClient = getMongoClientField(mongoDbFactory); MongoCredential credentials = mongoClient.getCredentialsList().get(0); List<ServerAddress> addresses = extractServerAddresses(mongoClient); assertEquals(1, addresses.size()); ServerAddress address = addresses.get(0); assertEquals(serviceInfo.getHost(), address.getHost()); assertEquals(serviceInfo.getPort(), address.getPort()); assertEquals(serviceInfo.getUserName(), credentials.getUserName()); assertNotNull(credentials.getPassword()); // Don't do connector.getDatabase().getName() as that will try to initiate the connection assertEquals(serviceInfo.getDatabase(), ReflectionTestUtils.getField(mongoDbFactory, "databaseName")); }