I want to build simple app that sets some key in a firebase database to some value. Because it is async, I create CountDownLatch
and wait for it to complete, but it never completes.
Here is my code:
package me.ibrohim.adler;
import com.google.firebase.FirebaseApp;
import com.google.firebase.FirebaseOptions;
import com.google.firebase.auth.FirebaseCredentials;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.tasks.OnCompleteListener;
import com.google.firebase.tasks.Task;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.Set;
import java.util.concurrent.CountDownLatch;
import java.util.function.Consumer;
public class Main {
public static void main(String [] args) throws InterruptedException {
FileInputStream serviceAccount = null;
try {
serviceAccount = new FileInputStream("/home/ibrohim/.adler/adminsdk.json");
FirebaseOptions options = new FirebaseOptions.Builder()
.setCredential(FirebaseCredentials.fromCertificate(serviceAccount))
.setDatabaseUrl("https://[my app].firebaseio.com/")
.build();
FirebaseApp.initializeApp(options);
} catch (IOException e) {
e.printStackTrace();
} finally {
if (serviceAccount != null) try {
serviceAccount.close();
} catch (IOException e) {
e.printStackTrace();
}
}
CountDownLatch done = new CountDownLatch(1);
// new Thread(() -> {
// try {
// Thread.sleep(1000);
// done.countDown();
// }
// catch (Exception e){
// System.err.println(e);
// }
// }).start();
FirebaseDatabase
.getInstance()
.getReference("[some path]")
.setValue("[some value]")
.addOnCompleteListener(task -> done.countDown());
done.await();
}
}