From c63daf2c52e5c3753edc9d9f25844920b755cf78 Mon Sep 17 00:00:00 2001 From: Lahiru Maramba Date: Thu, 12 Nov 2020 17:11:04 -0500 Subject: [PATCH 1/3] Add Pubish, Validate, and GetTemplateAtVersion operations --- .../remoteconfig/FirebaseRemoteConfig.java | 149 +++++ .../FirebaseRemoteConfigClient.java | 5 + .../FirebaseRemoteConfigClientImpl.java | 42 ++ .../FirebaseRemoteConfigClientImplTest.java | 549 ++++++++++++++++-- .../FirebaseRemoteConfigTest.java | 242 ++++++++ .../remoteconfig/MockRemoteConfigClient.java | 17 + src/test/resources/getRemoteConfig.json | 2 +- 7 files changed, 947 insertions(+), 59 deletions(-) diff --git a/src/main/java/com/google/firebase/remoteconfig/FirebaseRemoteConfig.java b/src/main/java/com/google/firebase/remoteconfig/FirebaseRemoteConfig.java index f910d3970..17c8f6d1b 100644 --- a/src/main/java/com/google/firebase/remoteconfig/FirebaseRemoteConfig.java +++ b/src/main/java/com/google/firebase/remoteconfig/FirebaseRemoteConfig.java @@ -24,6 +24,7 @@ import com.google.firebase.ImplFirebaseTrampolines; import com.google.firebase.internal.CallableOperation; import com.google.firebase.internal.FirebaseService; +import com.google.firebase.internal.NonNull; /** * This class is the entry point for all server-side Firebase Remote Config actions. @@ -100,6 +101,154 @@ protected Template execute() throws FirebaseRemoteConfigException { }; } + /** + * Gets the requested version of the of the Remote Config template. + * + * @param versionNumber The version number of the Remote Config template to look up. + * @return A {@link Template}. + * @throws FirebaseRemoteConfigException If an error occurs while getting the template. + */ + public Template getTemplateAtVersion( + @NonNull String versionNumber) throws FirebaseRemoteConfigException { + return getTemplateAtVersionOp(versionNumber).call(); + } + + /** + * Gets the requested version of the of the Remote Config template. + * + * @param versionNumber The version number of the Remote Config template to look up. + * @return A {@link Template}. + * @throws FirebaseRemoteConfigException If an error occurs while getting the template. + */ + public Template getTemplateAtVersion(long versionNumber) throws FirebaseRemoteConfigException { + String versionNumberString = String.valueOf(versionNumber); + return getTemplateAtVersionOp(versionNumberString).call(); + } + + /** + * Similar to {@link #getTemplateAtVersion(String versionNumber)} but performs the operation + * asynchronously. + * + * @param versionNumber The version number of the Remote Config template to look up. + * @return An {@code ApiFuture} that completes with a {@link Template} when + * the requested template is available. + */ + public ApiFuture