Skip to content

Commit cc5108a

Browse files
committed
Remove the builder in RemoteConfig.java
1 parent be1d9a4 commit cc5108a

File tree

2 files changed

+24
-59
lines changed

2 files changed

+24
-59
lines changed

src/main/java/com/google/firebase/remoteconfig/FirebaseRemoteConfig.java

Lines changed: 11 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,6 @@
2020

2121
import com.google.api.core.ApiFuture;
2222
import com.google.common.annotations.VisibleForTesting;
23-
import com.google.common.base.Supplier;
24-
import com.google.common.base.Suppliers;
2523
import com.google.firebase.FirebaseApp;
2624
import com.google.firebase.ImplFirebaseTrampolines;
2725
import com.google.firebase.internal.CallableOperation;
@@ -37,11 +35,16 @@ public final class FirebaseRemoteConfig {
3735

3836
private static final String SERVICE_ID = FirebaseRemoteConfig.class.getName();
3937
private final FirebaseApp app;
40-
private final Supplier<? extends FirebaseRemoteConfigClient> remoteConfigClient;
38+
private final FirebaseRemoteConfigClient remoteConfigClient;
4139

42-
private FirebaseRemoteConfig(Builder builder) {
43-
this.app = checkNotNull(builder.firebaseApp);
44-
this.remoteConfigClient = Suppliers.memoize(builder.remoteConfigClient);
40+
@VisibleForTesting
41+
FirebaseRemoteConfig(FirebaseApp app, FirebaseRemoteConfigClient client) {
42+
this.app = checkNotNull(app);
43+
this.remoteConfigClient = checkNotNull(client);
44+
}
45+
46+
private FirebaseRemoteConfig(FirebaseApp app) {
47+
this(app, FirebaseRemoteConfigClientImpl.fromApp(app));
4548
}
4649

4750
/**
@@ -99,23 +102,11 @@ protected RemoteConfigTemplate execute() throws FirebaseRemoteConfigException {
99102

100103
@VisibleForTesting
101104
FirebaseRemoteConfigClient getRemoteConfigClient() {
102-
return remoteConfigClient.get();
105+
return remoteConfigClient;
103106
}
104107

105108
private static FirebaseRemoteConfig fromApp(final FirebaseApp app) {
106-
return FirebaseRemoteConfig.builder()
107-
.setFirebaseApp(app)
108-
.setRemoteConfigClient(new Supplier<FirebaseRemoteConfigClient>() {
109-
@Override
110-
public FirebaseRemoteConfigClient get() {
111-
return FirebaseRemoteConfigClientImpl.fromApp(app);
112-
}
113-
})
114-
.build();
115-
}
116-
117-
static Builder builder() {
118-
return new Builder();
109+
return new FirebaseRemoteConfig(app);
119110
}
120111

121112
private static class FirebaseRemoteConfigService extends FirebaseService<FirebaseRemoteConfig> {
@@ -131,27 +122,4 @@ public void destroy() {
131122
// will hit FirebaseApp, which will throw once the app is deleted.
132123
}
133124
}
134-
135-
static class Builder {
136-
137-
private FirebaseApp firebaseApp;
138-
private Supplier<? extends FirebaseRemoteConfigClient> remoteConfigClient;
139-
140-
private Builder() { }
141-
142-
FirebaseRemoteConfig.Builder setFirebaseApp(FirebaseApp firebaseApp) {
143-
this.firebaseApp = firebaseApp;
144-
return this;
145-
}
146-
147-
FirebaseRemoteConfig.Builder setRemoteConfigClient(
148-
Supplier<? extends FirebaseRemoteConfigClient> remoteConfigClient) {
149-
this.remoteConfigClient = remoteConfigClient;
150-
return this;
151-
}
152-
153-
FirebaseRemoteConfig build() {
154-
return new FirebaseRemoteConfig(this);
155-
}
156-
}
157125
}

src/test/java/com/google/firebase/remoteconfig/FirebaseRemoteConfigTest.java

Lines changed: 13 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -17,12 +17,11 @@
1717
package com.google.firebase.remoteconfig;
1818

1919
import static org.junit.Assert.assertEquals;
20+
import static org.junit.Assert.assertNotNull;
2021
import static org.junit.Assert.assertSame;
2122
import static org.junit.Assert.assertTrue;
2223
import static org.junit.Assert.fail;
2324

24-
import com.google.common.base.Supplier;
25-
import com.google.common.base.Suppliers;
2625
import com.google.firebase.ErrorCode;
2726
import com.google.firebase.FirebaseApp;
2827
import com.google.firebase.FirebaseOptions;
@@ -33,6 +32,7 @@
3332
import org.junit.Test;
3433

3534
public class FirebaseRemoteConfigTest {
35+
3636
private static final FirebaseOptions TEST_OPTIONS = FirebaseOptions.builder()
3737
.setCredentials(new MockGoogleCredentials("test-token"))
3838
.setProjectId("test-project")
@@ -77,14 +77,16 @@ public void testDefaultRemoteConfigClient() {
7777
}
7878

7979
@Test
80-
public void testPostDeleteApp() {
80+
public void testAppDelete() {
8181
FirebaseApp app = FirebaseApp.initializeApp(TEST_OPTIONS, "custom-app");
82+
FirebaseRemoteConfig remoteConfig = FirebaseRemoteConfig.getInstance(app);
83+
assertNotNull(remoteConfig);
8284

8385
app.delete();
8486

8587
try {
8688
FirebaseRemoteConfig.getInstance(app);
87-
fail("No error thrown for deleted app");
89+
fail("No error thrown when getting remote config instance after deleting app");
8890
} catch (IllegalStateException expected) {
8991
// expected
9092
}
@@ -96,10 +98,9 @@ public void testRemoteConfigClientWithoutProjectId() {
9698
.setCredentials(new MockGoogleCredentials("test-token"))
9799
.build();
98100
FirebaseApp.initializeApp(options);
99-
FirebaseRemoteConfig remoteConfig = FirebaseRemoteConfig.getInstance();
100101

101102
try {
102-
remoteConfig.getRemoteConfigClient();
103+
FirebaseRemoteConfig.getInstance();
103104
fail("No error thrown for missing project ID");
104105
} catch (IllegalArgumentException expected) {
105106
String message = "Project ID is required to access Remote Config service. Use a service "
@@ -116,7 +117,7 @@ public void testRemoteConfigClientWithoutProjectId() {
116117
public void testGetTemplate() throws FirebaseRemoteConfigException {
117118
MockRemoteConfigClient client = MockRemoteConfigClient.fromTemplate(
118119
new RemoteConfigTemplate().setETag(TEST_ETAG));
119-
FirebaseRemoteConfig remoteConfig = getRemoteConfig(Suppliers.ofInstance(client));
120+
FirebaseRemoteConfig remoteConfig = getRemoteConfig(client);
120121

121122
RemoteConfigTemplate template = remoteConfig.getTemplate();
122123

@@ -126,7 +127,7 @@ public void testGetTemplate() throws FirebaseRemoteConfigException {
126127
@Test
127128
public void testGetTemplateFailure() {
128129
MockRemoteConfigClient client = MockRemoteConfigClient.fromException(TEST_EXCEPTION);
129-
FirebaseRemoteConfig remoteConfig = getRemoteConfig(Suppliers.ofInstance(client));
130+
FirebaseRemoteConfig remoteConfig = getRemoteConfig(client);
130131

131132
try {
132133
remoteConfig.getTemplate();
@@ -139,7 +140,7 @@ public void testGetTemplateFailure() {
139140
public void testGetTemplateAsync() throws Exception {
140141
MockRemoteConfigClient client = MockRemoteConfigClient.fromTemplate(
141142
new RemoteConfigTemplate().setETag(TEST_ETAG));
142-
FirebaseRemoteConfig remoteConfig = getRemoteConfig(Suppliers.ofInstance(client));
143+
FirebaseRemoteConfig remoteConfig = getRemoteConfig(client);
143144

144145
RemoteConfigTemplate template = remoteConfig.getTemplateAsync().get();
145146

@@ -149,7 +150,7 @@ public void testGetTemplateAsync() throws Exception {
149150
@Test
150151
public void testGetTemplateAsyncFailure() throws InterruptedException {
151152
MockRemoteConfigClient client = MockRemoteConfigClient.fromException(TEST_EXCEPTION);
152-
FirebaseRemoteConfig remoteConfig = getRemoteConfig(Suppliers.ofInstance(client));
153+
FirebaseRemoteConfig remoteConfig = getRemoteConfig(client);
153154

154155
try {
155156
remoteConfig.getTemplateAsync().get();
@@ -158,12 +159,8 @@ public void testGetTemplateAsyncFailure() throws InterruptedException {
158159
}
159160
}
160161

161-
private FirebaseRemoteConfig getRemoteConfig(
162-
Supplier<? extends FirebaseRemoteConfigClient> supplier) {
162+
private FirebaseRemoteConfig getRemoteConfig(FirebaseRemoteConfigClient client) {
163163
FirebaseApp app = FirebaseApp.initializeApp(TEST_OPTIONS);
164-
return FirebaseRemoteConfig.builder()
165-
.setFirebaseApp(app)
166-
.setRemoteConfigClient(supplier)
167-
.build();
164+
return new FirebaseRemoteConfig(app, client);
168165
}
169166
}

0 commit comments

Comments
 (0)