use of com.amplifyframework.core.InitializationResult in project amplify-android by aws-amplify.
the class Category method initialize.
/**
* Initialize the category. This asynchronous call is made only after
* the category has been successfully configured. Whereas configuration is a short-lived
* synchronous phase of setup, initialization may require disk/network resources, etc.
* @param context An Android Context
* @return A category initialization result
*/
@NonNull
@WorkerThread
public final synchronized CategoryInitializationResult initialize(@NonNull Context context) {
final Map<String, InitializationResult> pluginInitializationResults = new HashMap<>();
if (!State.CONFIGURED.equals(state.get())) {
for (P plugin : getPlugins()) {
InitializationResult result = InitializationResult.failure(new AmplifyException("Tried to init before category was not configured.", "Call configure() on category, first."));
pluginInitializationResults.put(plugin.getPluginKey(), result);
}
} else {
state.set(State.CONFIGURING);
for (P plugin : getPlugins()) {
InitializationResult result;
try {
plugin.initialize(context);
result = InitializationResult.success();
} catch (AmplifyException pluginInitializationFailure) {
result = InitializationResult.failure(pluginInitializationFailure);
}
pluginInitializationResults.put(plugin.getPluginKey(), result);
}
}
final CategoryInitializationResult result = CategoryInitializationResult.with(pluginInitializationResults);
categoryInitializationResult.set(result);
if (result.isFailure()) {
state.set(State.INITIALIZATION_FAILED);
} else {
state.set(State.INITIALIZED);
}
HubChannel hubChannel = HubChannel.forCategoryType(getCategoryType());
InitializationStatus status = result.isFailure() ? InitializationStatus.FAILED : InitializationStatus.SUCCEEDED;
Amplify.Hub.publish(hubChannel, HubEvent.create(status, result));
return result;
}
Aggregations