package org.wikipedia.dataclient.retrofit;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import org.wikipedia.dataclient.WikiSite;
import retrofit2.Retrofit;
public abstract class WikiCachedService<T> extends CachedService<T> {
@Nullable private WikiSite wiki;
public WikiCachedService(@NonNull Class<T> clazz) {
super(clazz);
}
@Nullable public WikiSite wiki() {
return wiki;
}
@NonNull public T service(@NonNull WikiSite wiki) {
update(wiki);
//noinspection ConstantConditions
return super.service();
}
@NonNull public Retrofit retrofit(@NonNull WikiSite wiki) {
update(wiki);
//noinspection ConstantConditions
return super.retrofit();
}
private void update(@NonNull WikiSite wiki) {
if (outdated(wiki)) {
this.wiki = wiki;
super.update();
}
}
private boolean outdated(@NonNull WikiSite wiki) {
return super.outdated() || !wiki.equals(this.wiki);
}
}