package org.wordpress.android; import org.wordpress.android.mocks.RestClientFactoryTest; import org.wordpress.android.mocks.SystemServiceFactoryTest; import org.wordpress.android.networking.RestClientFactory; import org.wordpress.android.util.AppLog; import org.wordpress.android.util.AppLog.T; import org.wordpress.android.util.SystemServiceFactory; import java.lang.reflect.Field; public class FactoryUtils { public static void clearFactories() { // clear factories forceFactoryInjection(RestClientFactory.class, null); forceFactoryInjection(SystemServiceFactory.class, null); AppLog.v(T.TESTS, "Null factories set"); } public static void initWithTestFactories() { // create test factories forceFactoryInjection(RestClientFactory.class, new RestClientFactoryTest()); forceFactoryInjection(SystemServiceFactory.class, new SystemServiceFactoryTest()); AppLog.v(T.TESTS, "Mocks factories instantiated"); } private static void forceFactoryInjection(Class klass, Object factory) { try { Field field = klass.getDeclaredField("sFactory"); field.setAccessible(true); field.set(null, factory); AppLog.v(T.TESTS, "Factory " + klass + " injected"); } catch (Exception e) { AppLog.e(T.TESTS, "Can't inject test factory " + klass); } } }