GitNex/app/src/main/java/org/mian/gitnex/database/api/BaseApi.java
M M Arif 1e7a0a20b2 Show labels in list / show draft status for release (#1083)
Closes #258
Closes #877

Co-authored-by: M M Arif <mmarif@swatian.com>
Reviewed-on: https://codeberg.org/gitnex/GitNex/pulls/1083
2022-03-28 19:57:47 +02:00

54 lines
1.3 KiB
Java

package org.mian.gitnex.database.api;
import android.content.Context;
import androidx.annotation.NonNull;
import org.mian.gitnex.database.db.GitnexDatabase;
import java.lang.reflect.InvocationTargetException;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
/**
* @author opyale
*/
public abstract class BaseApi {
private static final Map<Class<? extends BaseApi>, Object> instances = new HashMap<>();
protected static final ExecutorService executorService = Executors.newCachedThreadPool();
protected final GitnexDatabase gitnexDatabase;
protected BaseApi(Context context) {
gitnexDatabase = GitnexDatabase.getDatabaseInstance(context);
}
public static <T extends BaseApi> T getInstance(@NonNull Context context, @NonNull Class<T> clazz) {
try {
if(!instances.containsKey(clazz)) {
synchronized(BaseApi.class) {
if(!instances.containsKey(clazz)) {
T instance = clazz
.getDeclaredConstructor(Context.class)
.newInstance(context);
instances.put(clazz, instance);
return instance;
}
}
}
return (T) instances.get(clazz);
} catch(NoSuchMethodException | IllegalAccessException |
InvocationTargetException | InstantiationException ignored) {}
return null;
}
}