package inject;
import com.google.inject.Provider;
import io.sphere.sdk.categories.Category;
import io.sphere.sdk.categories.CategoryTree;
import io.sphere.sdk.categories.queries.CategoryQuery;
import io.sphere.sdk.client.SphereClient;
import io.sphere.sdk.queries.QueryAll;
import play.Logger;
import javax.inject.Inject;
import javax.inject.Singleton;
import java.util.List;
import java.util.concurrent.ExecutionException;
@Singleton
class CategoryTreeProvider implements Provider<CategoryTree> {
private final SphereClient client;
@Inject
private CategoryTreeProvider(final SphereClient client) {
this.client = client;
}
@Override
public CategoryTree get() {
try {
final QueryAll<Category, CategoryQuery> query = QueryAll.of(CategoryQuery.of());
final List<Category> categories = query.run(client).toCompletableFuture().get();
Logger.debug("Provide CategoryTree with " + categories.size() + " categories");
return CategoryTree.of(categories);
} catch (InterruptedException | ExecutionException e) {
throw new SunriseInitializationException("Could not fetch categories", e);
}
}
}