Skip to content

Commit 09e5693

Browse files
authored
fix(logging): Fixes issue of logging category not initializing properly using gen2 config (#3022)
1 parent fb4b15b commit 09e5693

File tree

3 files changed

+28
-2
lines changed

3 files changed

+28
-2
lines changed

core/src/main/java/com/amplifyframework/core/category/Category.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -149,13 +149,13 @@ public synchronized CategoryInitializationResult initialize(@NonNull Context con
149149
if (!State.CONFIGURED.equals(state.get())) {
150150
for (P plugin : getPlugins()) {
151151
InitializationResult result = InitializationResult.failure(new AmplifyException(
152-
"Tried to init before category was not configured.",
152+
"Tried to init before category was configured.",
153153
"Call configure() on category, first."
154154
));
155155
pluginInitializationResults.put(plugin.getPluginKey(), result);
156156
}
157157
} else {
158-
state.set(State.CONFIGURING);
158+
state.set(State.INITIALIZING);
159159
for (P plugin : getPlugins()) {
160160
InitializationResult result;
161161
try {

core/src/main/java/com/amplifyframework/logging/LoggingCategory.java

+1
Original file line numberDiff line numberDiff line change
@@ -138,6 +138,7 @@ public synchronized void configure(@NonNull CategoryConfiguration configuration,
138138
@InternalAmplifyApi
139139
public synchronized void configure(@NonNull AmplifyOutputsData configuration, @NonNull Context context)
140140
throws AmplifyException {
141+
super.configure(configuration, context);
141142
// Logging plugin config is read from a separate file
142143
configure(context);
143144
}

core/src/test/java/com/amplifyframework/logging/LoggingCategoryTest.java

+25
Original file line numberDiff line numberDiff line change
@@ -20,13 +20,16 @@
2020

2121
import com.amplifyframework.AmplifyException;
2222
import com.amplifyframework.core.category.CategoryConfiguration;
23+
import com.amplifyframework.core.category.CategoryInitializationResult;
24+
import com.amplifyframework.core.configuration.AmplifyOutputsData;
2325
import com.amplifyframework.testutils.random.RandomString;
2426

2527
import org.json.JSONException;
2628
import org.json.JSONObject;
2729
import org.junit.Before;
2830
import org.junit.Test;
2931
import org.junit.runner.RunWith;
32+
import org.mockito.Mockito;
3033
import org.robolectric.RobolectricTestRunner;
3134

3235
import java.util.List;
@@ -135,6 +138,28 @@ public void configuredPluginUsedWhenProvided() throws AmplifyException {
135138
firstLog.assertEquals(LogLevel.WARN, message, issue);
136139
}
137140

141+
/**
142+
* Category should initialize as normal when using a Gen2 configuration.
143+
* @throws AmplifyException Not expected; possible from addPlugin() call
144+
*/
145+
@Test
146+
public void initializationSucceedsForGen2() throws AmplifyException {
147+
FakeLogger userLogger = FakeLogger.instance(RandomString.string(), LogLevel.VERBOSE);
148+
FakeLoggingPlugin<Void> userPlugin = FakeLoggingPlugin.instance(userLogger);
149+
realLoggingCategory.addPlugin(userPlugin);
150+
151+
AmplifyOutputsData data = Mockito.mock(AmplifyOutputsData.class);
152+
realLoggingCategory.configure(data, getApplicationContext());
153+
154+
// Ensure initialization succeeds
155+
CategoryInitializationResult result = realLoggingCategory.initialize(getApplicationContext());
156+
assertTrue(result.isSuccess());
157+
158+
// Ensure we can fetch the plugin
159+
LoggingPlugin<?> plugin = realLoggingCategory.getPlugin(userPlugin.getPluginKey());
160+
assertEquals(userPlugin, plugin);
161+
}
162+
138163
private static LoggingCategoryConfiguration loggingConfiguration() {
139164
LoggingCategoryConfiguration configuration = new LoggingCategoryConfiguration();
140165
try {

0 commit comments

Comments
 (0)