下面列出了怎么用io.opentracing.contrib.jdbc.ConnectionInfo的API类实例代码及写法,或者点击链接到github查看源代码。
/**
* parse the url to the ConnectionInfo
*/
public static ConnectionInfo parse(String url) {
if (null == url) {
return ConnectionInfo.UNKNOWN_CONNECTION_INFO;
}
String lowerCaseUrl = url.toLowerCase();
ConnectionURLParser parser = findURLParser(lowerCaseUrl);
if (parser == null) {
return ConnectionInfo.UNKNOWN_CONNECTION_INFO;
}
try {
return parser.parse(url);
} catch (Exception e) {
log.log(Level.WARNING, "error occurs when parsing jdbc url");
}
return ConnectionInfo.UNKNOWN_CONNECTION_INFO;
}
@Override
public ConnectionInfo parse(final String url) {
if (url != null && (url.startsWith(PREFIX_THIN) || url.startsWith(PREFIX_OCI))) {
String trimmedURL;
if (url.startsWith(PREFIX_THIN)) {
trimmedURL = url.substring(PREFIX_THIN.length());
} else {
trimmedURL = url.substring(PREFIX_OCI.length());
}
OracleConnectionInfo connectionInfo = parseTnsName(trimmedURL);
if (connectionInfo == null) {
connectionInfo = parseEasyConnect(trimmedURL);
}
if (connectionInfo != null) {
return new ConnectionInfo.Builder(connectionInfo.getDbPeer()) //
.dbType(DB_TYPE) //
.dbInstance(connectionInfo.getDbInstance()) //
.build();
}
}
return null;
}
@Override
public ConnectionInfo parse(String url) {
URLLocation location = fetchDatabaseHostsIndexRange(url);
String hosts = url.substring(location.startIndex(), location.endIndex());
String[] hostSegment = hosts.split(",");
if (hostSegment.length > 1) {
StringBuilder sb = new StringBuilder();
for (String host : hostSegment) {
if (host.split(":").length == 1) {
sb.append(host + ":" + DEFAULT_PORT + ",");
} else {
sb.append(host + ",");
}
}
if (',' == sb.charAt(sb.length() - 1)) {
sb.deleteCharAt(sb.length() - 1);
}
return new ConnectionInfo.Builder(sb.toString()).dbType(dbType())
.dbInstance(fetchDatabaseNameFromURL(url)).build();
} else {
String[] hostAndPort = hostSegment[0].split(":");
if (hostAndPort.length != 1) {
return new ConnectionInfo.Builder(hostAndPort[0], Integer.valueOf(hostAndPort[1]))
.dbType(dbType()).dbInstance(fetchDatabaseNameFromURL(url, location.endIndex()))
.build();
} else {
return new ConnectionInfo.Builder(hostAndPort[0], DEFAULT_PORT).dbType(dbType())
.dbInstance(fetchDatabaseNameFromURL(url, location.endIndex())).build();
}
}
}
@Override
public ConnectionInfo parse(String url) {
URLLocation location = fetchDatabaseHostsIndexRange(url);
String hosts = url.substring(location.startIndex(), location.endIndex());
String[] hostSegment = hosts.split(",");
if (hostSegment.length > 1) {
StringBuilder sb = new StringBuilder();
for (String host : hostSegment) {
if (host.split(":").length == 1) {
sb.append(host + ":" + DEFAULT_PORT + ",");
} else {
sb.append(host + ",");
}
}
if (',' == sb.charAt(sb.length() - 1)) {
sb.deleteCharAt(sb.length() - 1);
}
return new ConnectionInfo.Builder(sb.toString()).dbType(DB_TYPE)
.dbInstance(fetchDatabaseNameFromURL(url)).build();
} else {
String[] hostAndPort = hostSegment[0].split(":");
if (hostAndPort.length != 1) {
return new ConnectionInfo.Builder(hostAndPort[0], Integer.valueOf(hostAndPort[1]))
.dbType(DB_TYPE).dbInstance(fetchDatabaseNameFromURL(url)).build();
} else {
return new ConnectionInfo.Builder(hostAndPort[0], DEFAULT_PORT).dbType(DB_TYPE)
.dbInstance(fetchDatabaseNameFromURL(url)).build();
}
}
}
@Override
public ConnectionInfo parse(String url) {
int[] databaseNameRangeIndex = fetchDatabaseNameRangeIndexFromURLForH2FileMode(url);
if (databaseNameRangeIndex != null) {
return new ConnectionInfo.Builder(LOCALHOST, -1).dbType(H2_DB_TYPE)
.dbInstance(fetchDatabaseNameFromURL(url, databaseNameRangeIndex)).build();
}
databaseNameRangeIndex = fetchDatabaseNameRangeIndexFromURLForH2MemMode(url);
if (databaseNameRangeIndex != null) {
return new ConnectionInfo.Builder(LOCALHOST, -1).dbType(H2_DB_TYPE)
.dbInstance(fetchDatabaseNameFromURL(url, databaseNameRangeIndex)).build();
}
databaseNameRangeIndex = fetchDatabaseNameRangeIndexFromURLForH2ImplicitFileMode(url);
if (databaseNameRangeIndex != null) {
return new ConnectionInfo.Builder(LOCALHOST, -1).dbType(H2_DB_TYPE)
.dbInstance(fetchDatabaseNameFromURL(url, databaseNameRangeIndex)).build();
}
String[] hostAndPort = fetchDatabaseHostsFromURL(url).split(":");
if (hostAndPort.length == 1) {
return new ConnectionInfo.Builder(hostAndPort[0], DEFAULT_PORT).dbType(H2_DB_TYPE)
.dbInstance(fetchDatabaseNameFromURL(url)).build();
} else {
return new ConnectionInfo.Builder(hostAndPort[0], Integer.valueOf(hostAndPort[1]))
.dbType(H2_DB_TYPE).dbInstance(fetchDatabaseNameFromURL(url)).build();
}
}
@Test
public void testParseMysqlJDBCURLWithHost() {
ConnectionInfo connectionInfo = URLParser.parse("jdbc:mysql//primaryhost/test");
assertEquals(MYSQL, connectionInfo.getDbType());
assertEquals("test", connectionInfo.getDbInstance());
assertEquals("primaryhost:3306", connectionInfo.getDbPeer());
assertEquals("test[mysql(primaryhost:3306)]", connectionInfo.getPeerService());
}
@Test
public void testParseMysqlJDBCURLWithoutDB() {
ConnectionInfo connectionInfo = URLParser.parse("jdbc:mysql//primaryhost?profileSQL=true");
assertEquals(MYSQL, connectionInfo.getDbType());
assertEquals("", connectionInfo.getDbInstance());
assertEquals("primaryhost:3306", connectionInfo.getDbPeer());
assertEquals("mysql(primaryhost:3306)", connectionInfo.getPeerService());
}
@Test
public void testParseMysqlURLWithoutExplicitDBOrQueryString() {
ConnectionInfo connectionInfo = URLParser.parse("jdbc:mysql://primaryhost");
assertEquals(MYSQL, connectionInfo.getDbType());
assertEquals("", connectionInfo.getDbInstance());
assertEquals("primaryhost:3306", connectionInfo.getDbPeer());
}
@Test
public void testParseMysqlJDBCURLWithHostAndPort() {
ConnectionInfo connectionInfo = URLParser
.parser("jdbc:mysql//primaryhost:3307/test?profileSQL=true");
assertEquals(MYSQL, connectionInfo.getDbType());
assertEquals("test", connectionInfo.getDbInstance());
assertEquals("primaryhost:3307", connectionInfo.getDbPeer());
assertEquals("test[mysql(primaryhost:3307)]", connectionInfo.getPeerService());
}
@Test
public void testParseMysqlJDBCURLWithMultiHost() {
ConnectionInfo connectionInfo = URLParser
.parser("jdbc:mysql//primaryhost:3307,secondaryhost1,secondaryhost2/test?profileSQL=true");
assertEquals(MYSQL, connectionInfo.getDbType());
assertEquals("test", connectionInfo.getDbInstance());
assertEquals("primaryhost:3307,secondaryhost1:3306,secondaryhost2:3306",
connectionInfo.getDbPeer());
assertEquals("test[mysql(primaryhost:3307,secondaryhost1:3306,secondaryhost2:3306)]",
connectionInfo.getPeerService());
}
@Test
public void testParseMysqlJDBCURLWithConnectorJs() {
ConnectionInfo connectionInfo = URLParser
.parser("jdbc:mysql:replication://master,slave1,slave2,slave3/test");
assertEquals(MYSQL, connectionInfo.getDbType());
assertEquals("test", connectionInfo.getDbInstance());
assertEquals("master:3306,slave1:3306,slave2:3306,slave3:3306", connectionInfo.getDbPeer());
assertEquals("test[mysql(master:3306,slave1:3306,slave2:3306,slave3:3306)]",
connectionInfo.getPeerService());
}
@Test
public void testParseOracleJDBCURLWithHost() {
ConnectionInfo connectionInfo = URLParser.parse("jdbc:oracle:thin:@localhost:orcl");
assertEquals(ORACLE, connectionInfo.getDbType());
assertEquals("orcl", connectionInfo.getDbInstance());
assertEquals("localhost:1521", connectionInfo.getDbPeer());
assertEquals("orcl[oracle(localhost:1521)]", connectionInfo.getPeerService());
}
@Test
public void testParseOracleJDBCURLWithHostAndPort() {
ConnectionInfo connectionInfo = URLParser.parse("jdbc:oracle:thin:@localhost:1522:orcl");
assertEquals(ORACLE, connectionInfo.getDbType());
assertEquals("orcl", connectionInfo.getDbInstance());
assertEquals("localhost:1522", connectionInfo.getDbPeer());
assertEquals("orcl[oracle(localhost:1522)]", connectionInfo.getPeerService());
}
@Test
public void testParseOracleServiceName() {
ConnectionInfo connectionInfo = URLParser.parse("jdbc:oracle:thin:@//localhost:1521/orcl");
assertEquals(ORACLE, connectionInfo.getDbType());
assertEquals("orcl", connectionInfo.getDbInstance());
assertEquals("localhost:1521", connectionInfo.getDbPeer());
assertEquals("orcl[oracle(localhost:1521)]", connectionInfo.getPeerService());
}
@Test
public void testParseOracleTNSName() {
ConnectionInfo connectionInfo = URLParser.parse(
"jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST= localhost )(PORT= 1521))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=orcl)))");
assertEquals(ORACLE, connectionInfo.getDbType());
assertEquals("orcl", connectionInfo.getDbInstance());
assertEquals("localhost:1521", connectionInfo.getDbPeer());
assertEquals("orcl[oracle(localhost:1521)]", connectionInfo.getPeerService());
}
@Test
public void testParseOracleTNSNameWithMultiAddress() {
ConnectionInfo connectionInfo = URLParser.parse(
"jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL= TCP)(HOST=hostA)(PORT= 1523 ))(ADDRESS=(PROTOCOL=TCP)(HOST=hostB)(PORT= 1521 )))(SOURCE_ROUTE=yes)(CONNECT_DATA=(SERVICE_NAME=orcl)))");
assertEquals(ORACLE, connectionInfo.getDbType());
assertEquals("orcl", connectionInfo.getDbInstance());
assertEquals("hostA:1523,hostB:1521", connectionInfo.getDbPeer());
assertEquals("orcl[oracle(hostA:1523,hostB:1521)]", connectionInfo.getPeerService());
}
@Test
public void testParseOracleJDBCURLWithUserNameAndPassword() {
ConnectionInfo connectionInfo = URLParser
.parser("jdbc:oracle:thin:scott/[email protected]:1521:orcl");
assertEquals(ORACLE, connectionInfo.getDbType());
assertEquals("orcl", connectionInfo.getDbInstance());
assertEquals("myhost:1521", connectionInfo.getDbPeer());
assertEquals("orcl[oracle(myhost:1521)]", connectionInfo.getPeerService());
}
@Test
public void testParseOracleJDBCURLWithSID() {
ConnectionInfo connectionInfo = URLParser
.parser("jdbc:oracle:thin:@orcl");
assertEquals(ORACLE, connectionInfo.getDbType());
assertEquals("orcl", connectionInfo.getDbInstance());
assertEquals("orcl:1521", connectionInfo.getDbPeer());
assertEquals("orcl[oracle(orcl:1521)]", connectionInfo.getPeerService());
}
@Test
public void testParseH2JDBCURLWithEmbedded() {
ConnectionInfo connectionInfo = URLParser.parse("jdbc:h2:file:/data/sample");
assertEquals(H2, connectionInfo.getDbType());
assertEquals("/data/sample", connectionInfo.getDbInstance());
assertEquals("localhost:-1", connectionInfo.getDbPeer());
assertEquals("/data/sample[h2(localhost:-1)]", connectionInfo.getPeerService());
}
@Test
public void testParseH2JDBCURLWithEmbeddedRunningInWindows() {
ConnectionInfo connectionInfo = URLParser.parse("jdbc:h2:file:c:/data/sample");
assertEquals(H2, connectionInfo.getDbType());
assertEquals("c:/data/sample", connectionInfo.getDbInstance());
assertEquals("localhost:-1", connectionInfo.getDbPeer());
assertEquals("c:/data/sample[h2(localhost:-1)]", connectionInfo.getPeerService());
}
@Test
public void testParseH2JDBCURLWithImplicitFile() {
ConnectionInfo connectionInfo = URLParser.parse("jdbc:h2:c:/data/sample");
assertEquals(H2, connectionInfo.getDbType());
assertEquals("c:/data/sample", connectionInfo.getDbInstance());
assertEquals("localhost:-1", connectionInfo.getDbPeer());
assertEquals("c:/data/sample[h2(localhost:-1)]", connectionInfo.getPeerService());
}
@Test
public void testParseH2JDBCURLWithMemoryMode() {
ConnectionInfo connectionInfo = URLParser.parse("jdbc:h2:mem:test_mem");
assertEquals(H2, connectionInfo.getDbType());
assertEquals("test_mem", connectionInfo.getDbInstance());
assertEquals("localhost:-1", connectionInfo.getDbPeer());
assertEquals("test_mem[h2(localhost:-1)]", connectionInfo.getPeerService());
}
@Test
public void testParseH2JDBCURL() {
ConnectionInfo connectionInfo = URLParser.parse("jdbc:h2:tcp://localhost:8084/~/sample");
assertEquals(H2, connectionInfo.getDbType());
assertEquals("sample", connectionInfo.getDbInstance());
assertEquals("localhost:8084", connectionInfo.getDbPeer());
assertEquals("sample[h2(localhost:8084)]", connectionInfo.getPeerService());
}
@Test
public void testParsePostgresqlJDBCURLWithHost() {
ConnectionInfo connectionInfo = URLParser.parse("jdbc:postgresql//primaryhost/test");
assertEquals(POSTGRESQL, connectionInfo.getDbType());
assertEquals("test", connectionInfo.getDbInstance());
assertEquals("primaryhost:5432", connectionInfo.getDbPeer());
assertEquals("test[postgresql(primaryhost:5432)]", connectionInfo.getPeerService());
}
@Test
public void testParsePostgresqlJDBCURLWithHostAndPort() {
ConnectionInfo connectionInfo = URLParser
.parser("jdbc:postgresql//primaryhost:3307/test?profileSQL=true");
assertEquals(POSTGRESQL, connectionInfo.getDbType());
assertEquals("test", connectionInfo.getDbInstance());
assertEquals("primaryhost:3307", connectionInfo.getDbPeer());
assertEquals("test[postgresql(primaryhost:3307)]", connectionInfo.getPeerService());
}
@Test
public void testParsePostgresqlJDBCURLWithMultiHost() {
ConnectionInfo connectionInfo = URLParser.parse(
"jdbc:postgresql//primaryhost:3307,secondaryhost1,secondaryhost2/test?profileSQL=true");
assertEquals(POSTGRESQL, connectionInfo.getDbType());
assertEquals("test", connectionInfo.getDbInstance());
assertEquals("primaryhost:3307,secondaryhost1:5432,secondaryhost2:5432",
connectionInfo.getDbPeer());
assertEquals("test[postgresql(primaryhost:3307,secondaryhost1:5432,secondaryhost2:5432)]",
connectionInfo.getPeerService());
}
@Test
public void testParsePostgresqlJDBCURLWithConnectorJs() {
ConnectionInfo connectionInfo = URLParser
.parser("jdbc:postgresql:replication://master,slave1,slave2,slave3/test");
assertEquals(POSTGRESQL, connectionInfo.getDbType());
assertEquals("test", connectionInfo.getDbInstance());
assertEquals("master:5432,slave1:5432,slave2:5432,slave3:5432", connectionInfo.getDbPeer());
assertEquals("test[postgresql(master:5432,slave1:5432,slave2:5432,slave3:5432)]",
connectionInfo.getPeerService());
}
@ParameterizedTest(name = "[{0}]")
@MethodSource("easyConnectUrls")
void parseEasyConnect(final String url, final String dbPeer, final String dbInstance) {
final ConnectionInfo result = testee.parse(url);
assertThat(result.getDbType()).isEqualTo(ORACLE);
assertThat(result.getDbPeer()).isEqualTo(dbPeer);
assertThat(result.getDbInstance()).isEqualTo(dbInstance);
}
@ParameterizedTest(name = "[{0}]")
@MethodSource("tnsNameUrls")
void parseTnsName(final String url, final String dbPeer, final String dbInstance) {
final ConnectionInfo result = testee.parse(url);
assertThat(result.getDbType()).isEqualTo(ORACLE);
assertThat(result.getDbPeer()).isEqualTo(dbPeer);
assertThat(result.getDbInstance()).isEqualTo(dbInstance);
}
@ParameterizedTest(name = "[{0}]")
@MethodSource("otherUrls")
void parseOther(final String url, final String dbPeer, final String dbInstance) {
final ConnectionInfo result = testee.parse(url);
assertThat(result.getDbType()).isEqualTo(ORACLE);
assertThat(result.getDbPeer()).isEqualTo(dbPeer);
assertThat(result.getDbInstance()).isEqualTo(dbInstance);
}