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}