/*
 * Copyright 2008-present MongoDB, Inc.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *   http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.mongodb;

import com.mongodb.lang.Nullable;

import java.net.InetAddress;

import static com.mongodb.assertions.Assertions.notNull;

Represents a database address, which includes the properties of ServerAddress (host and port) and adds a database name.
@mongodb.driver.manualreference/default-mongodb-port/ MongoDB Ports
@mongodb.driver.manualreference/connection-string/ MongoDB Connection String
Deprecated:This class is no longer needed, as the driver does not rely on it for anything anymore. Use ServerAddress instead.
/** * Represents a database address, which includes the properties of ServerAddress (host and port) and adds a database name. * * @mongodb.driver.manual reference/default-mongodb-port/ MongoDB Ports * @mongodb.driver.manual reference/connection-string/ MongoDB Connection String * @deprecated This class is no longer needed, as the driver does not rely on it for anything anymore. Use {@link ServerAddress} instead. */
@Deprecated public class DBAddress extends ServerAddress { private static final long serialVersionUID = -813211264765778133L; private final String _db;
Creates a new address. Accepts as the parameter format:
  • name "mydb"
  • <host>/name "127.0.0.1/mydb"
  • <host>:<port>/name "127.0.0.1:8080/mydb"
Params:
  • urlFormat – the URL-formatted host and port
See Also:
@mongodb.driver.manualreference/connection-string/ MongoDB Connection String
/** * Creates a new address. Accepts as the parameter format: * * <ul> * <li><i>name</i> "mydb"</li> * <li><i>&lt;host&gt;/name</i> "127.0.0.1/mydb"</li> * <li><i>&lt;host&gt;:&lt;port&gt;/name</i> "127.0.0.1:8080/mydb"</li> * </ul> * * @param urlFormat the URL-formatted host and port * @mongodb.driver.manual reference/connection-string/ MongoDB Connection String * @see MongoClientURI */
public DBAddress(final String urlFormat) { super(_getHostSection(urlFormat)); _check(urlFormat, "urlFormat"); _db = _fixName(_getDBSection(urlFormat)); _check(getHost(), "host"); _check(_db, "db"); } @Nullable static String _getHostSection(final String urlFormat) { notNull("urlFormat", urlFormat); int idx = urlFormat.indexOf("/"); if (idx >= 0) { return urlFormat.substring(0, idx); } return null; } static String _getDBSection(final String urlFormat) { notNull("urlFormat", urlFormat); int idx = urlFormat.indexOf("/"); if (idx >= 0) { return urlFormat.substring(idx + 1); } return urlFormat; } static String _fixName(final String name) { return name.replace('.', '-'); }
Create a DBAddress using the host and port from an existing DBAddress, and connected to a given database.
Params:
  • other – an existing DBAddress that gives the host and port
  • databaseName – the database to which to connect
/** * Create a DBAddress using the host and port from an existing DBAddress, and connected to a given database. * * @param other an existing {@code DBAddress} that gives the host and port * @param databaseName the database to which to connect */
public DBAddress(final DBAddress other, final String databaseName) { this(other.getHost(), other.getPort(), databaseName); }
Creates a DBAddress for the given database on the given host.
Params:
  • host – host name
  • databaseName – database name
/** * Creates a DBAddress for the given database on the given host. * * @param host host name * @param databaseName database name */
public DBAddress(final String host, final String databaseName) { this(host, defaultPort(), databaseName); }
Creates a DBAddress for the given database on the given host at the given port.
Params:
  • host – host name
  • port – database port
  • databaseName – database name
/** * Creates a DBAddress for the given database on the given host at the given port. * * @param host host name * @param port database port * @param databaseName database name */
public DBAddress(final String host, final int port, final String databaseName) { super(host, port); _db = databaseName.trim(); }
Params:
  • inetAddress – host address
  • port – database port
  • databaseName – database name
/** * @param inetAddress host address * @param port database port * @param databaseName database name */
public DBAddress(final InetAddress inetAddress, final int port, final String databaseName) { super(inetAddress, port); _check(databaseName, "name"); _db = databaseName.trim(); } static void _check(final String thing, final String name) { notNull("thing", thing); String trimmedThing = thing.trim(); if (trimmedThing.length() == 0) { throw new IllegalArgumentException(name + " can't be empty"); } } @Override public int hashCode() { return super.hashCode() + _db.hashCode(); } @Override public boolean equals(final Object other) { if (other instanceof DBAddress) { DBAddress a = (DBAddress) other; return a.getPort() == getPort() && a._db.equals(_db) && a.getHost().equals(getHost()); } else if (other instanceof ServerAddress) { return other.equals(this); } return false; }
Creates a DBAddress pointing to a different database on the same server.
Params:
  • name – database name
Throws:
Returns:the DBAddress for the given name with the same host and port as this
/** * Creates a DBAddress pointing to a different database on the same server. * * @param name database name * @return the DBAddress for the given name with the same host and port as this * @throws MongoException if failed */
public DBAddress getSister(final String name) { return new DBAddress(getHost(), getPort(), name); }
Gets the database name
Returns:the database name
/** * Gets the database name * * @return the database name */
public String getDBName() { return _db; }
Gets a String representation of address as host:port/databaseName.
Returns:this address
/** * Gets a String representation of address as host:port/databaseName. * * @return this address */
@Override public String toString() { return super.toString() + "/" + _db; } }