diff --git a/firebase-database/CHANGELOG.md b/firebase-database/CHANGELOG.md index c04de4831c6..7b64dc16e32 100644 --- a/firebase-database/CHANGELOG.md +++ b/firebase-database/CHANGELOG.md @@ -1,5 +1,6 @@ # Unreleased - +- [changed] The SDK can now infer a default database URL if none is provided in + the config. - [changed] Added internal HTTP header to the WebChannel connection. - [feature] Realtime Database now supports connecting to a local emulator via `FirebaseDatabase#useEmulator()` diff --git a/firebase-database/src/androidTest/java/com/google/firebase/database/FirebaseDatabaseTest.java b/firebase-database/src/androidTest/java/com/google/firebase/database/FirebaseDatabaseTest.java index 7cdeba68132..8be25cd27ed 100644 --- a/firebase-database/src/androidTest/java/com/google/firebase/database/FirebaseDatabaseTest.java +++ b/firebase-database/src/androidTest/java/com/google/firebase/database/FirebaseDatabaseTest.java @@ -119,6 +119,21 @@ public void getInstanceForAppWithHttpsUrl() { assertEquals("https://tests.fblocal.com:9000", db.getReference().toString()); } + @Test + public void canInferDatabaseUrlFromProjectId() { + FirebaseApp app = + FirebaseApp.initializeApp( + InstrumentationRegistry.getInstrumentation().getTargetContext(), + new FirebaseOptions.Builder() + .setApplicationId("appid") + .setApiKey("apikey") + .setProjectId("abc123") + .build(), + "canInferDatabaseUrlFromProjectId"); + FirebaseDatabase db = FirebaseDatabase.getInstance(app); + assertEquals("https://abc123-default-rtdb.firebaseio.com", db.getReference().toString()); + } + @Test public void getDifferentInstanceForAppWithUrl() { FirebaseApp app = diff --git a/firebase-database/src/main/java/com/google/firebase/database/FirebaseDatabase.java b/firebase-database/src/main/java/com/google/firebase/database/FirebaseDatabase.java index f4263c92090..3756ee99469 100644 --- a/firebase-database/src/main/java/com/google/firebase/database/FirebaseDatabase.java +++ b/firebase-database/src/main/java/com/google/firebase/database/FirebaseDatabase.java @@ -83,7 +83,16 @@ public static FirebaseDatabase getInstance(@NonNull String url) { */ @NonNull public static FirebaseDatabase getInstance(@NonNull FirebaseApp app) { - return getInstance(app, app.getOptions().getDatabaseUrl()); + String databaseUrl = app.getOptions().getDatabaseUrl(); + if (databaseUrl == null) { + if (app.getOptions().getProjectId() == null) { + throw new DatabaseException( + "Failed to get FirebaseDatabase instance: Can't determine Firebase Database URL. " + + "Be sure to include a Project ID in your configuration."); + } + databaseUrl = "https://" + app.getOptions().getProjectId() + "-default-rtdb.firebaseio.com"; + } + return getInstance(app, databaseUrl); } /**