@NonNull synchronized <Model, Data> List<ModelLoaderFactory<? extends Model, ? extends Data>> replace( @NonNull Class<Model> modelClass, @NonNull Class<Data> dataClass, @NonNull ModelLoaderFactory<? extends Model, ? extends Data> factory) { List<ModelLoaderFactory<? extends Model, ? extends Data>> removed = remove(modelClass, dataClass); append(modelClass, dataClass, factory); return removed; }
public synchronized <Model, Data> void remove(@NonNull Class<Model> modelClass, @NonNull Class<Data> dataClass) { tearDown(multiModelLoaderFactory.remove(modelClass, dataClass)); cache.clear(); }
@Test public void testRemove_returnsPreviouslyRegisteredFactories_withModelAndDataClasses() { ModelLoaderFactory<String, String> other = mockFactory(); multiFactory.append(String.class, String.class, other); multiFactory.append(String.class, String.class, firstFactory); List<ModelLoaderFactory<? extends String, ? extends String>> removed = multiFactory.remove(String.class, String.class); assertThat(removed).containsExactly(firstFactory, other); }
@Test public void testRemove_removesPreviouslyRegisteredFactories_withModelAndDataClasses() { appendFactoryFor(String.class, String.class); appendFactoryFor(String.class, String.class); multiFactory.remove(String.class, String.class); List<ModelLoader<String, ?>> modelLoaders = multiFactory.build(String.class); assertThat(modelLoaders).isEmpty(); }
synchronized <Model, Data> List<ModelLoaderFactory<Model, Data>> replace(Class<Model> modelClass, Class<Data> dataClass, ModelLoaderFactory<Model, Data> factory) { List<ModelLoaderFactory<Model, Data>> removed = remove(modelClass, dataClass); append(modelClass, dataClass, factory); return removed; }
public synchronized <Model, Data> void remove(Class<Model> modelClass, Class<Data> dataClass) { tearDown(multiModelLoaderFactory.remove(modelClass, dataClass)); cache.clear(); }