001package com.gigya.android.sdk.interruption.tfa;
002
003import android.support.annotation.Nullable;
004
005import com.gigya.android.sdk.GigyaLoginCallback;
006import com.gigya.android.sdk.api.GigyaApiResponse;
007import com.gigya.android.sdk.containers.IoCContainer;
008
009public class TFAResolverFactory {
010
011    final private IoCContainer _container;
012    final private GigyaLoginCallback _loginCallback;
013    final private GigyaApiResponse _interruption;
014
015    public TFAResolverFactory(IoCContainer container, GigyaLoginCallback loginCallback, GigyaApiResponse interruption) {
016        _container = container;
017        _loginCallback = loginCallback;
018        _interruption = interruption;
019    }
020
021    @Nullable
022    public <T extends TFAResolver> T getResolverFor(Class<T> clazz) {
023
024        final IoCContainer resolverContainer = _container.clone();
025        resolverContainer
026                .bind(GigyaLoginCallback.class, _loginCallback)
027                .bind(GigyaApiResponse.class, _interruption);
028
029        try {
030            return resolverContainer.createInstance(clazz, true);
031        } catch (Exception ex) {
032            ex.printStackTrace();
033            return null;
034        } finally {
035            resolverContainer.dispose();
036        }
037    }
038}