
io.relayr.java.RelayrJavaApp Maven / Gradle / Ivy
package io.relayr.java;
import dagger.ObjectGraph;
import retrofit.RestAdapter;
import retrofit.RestAdapter.LogLevel;
import static retrofit.RestAdapter.LogLevel.BASIC;
import static retrofit.RestAdapter.LogLevel.NONE;
public class RelayrJavaApp {
private static final RestAdapter.LogLevel PRODUCTION_LEVEL = NONE;
private static final RestAdapter.LogLevel DEVELOPMENT_LEVEL = BASIC;
public static boolean PRODUCTION = true;
protected static String mToken;
protected static RelayrJavaApp sApp;
protected static ObjectGraph sObjectGraph;
protected static LogLevel sLogLevel;
protected static boolean sCacheModels;
protected RelayrJavaApp(boolean mockMode) {
sApp = this;
buildObjectGraphAndInject(mockMode);
}
/**
* Condition (sApp == null || mockMode) is used when Relayr app is already initialized
* but you need to recreate it with another set of Dagger modules (e.g. while testing)
* @param mockMode true for debug mode and tests
*/
private static void init(String token, boolean mockMode) {
reset();
mToken = token;
if (sApp == null || mockMode) {
synchronized (new Object()) {
if (sApp == null || mockMode) {
new RelayrJavaApp(mockMode);
}
}
}
}
/**
* Initializes Relayr SDK
* @param mockMode true for debug mode and tests
* @param production if true production API is used, if false it uses development environment
* @param level defines log level for all API calls - {@link LogLevel#NONE} by default for production, {@link LogLevel#BASIC} for development
*/
public static void init(String token, boolean mockMode, boolean production, boolean cacheModels, LogLevel level) {
PRODUCTION = production;
setLogLevel(level);
setModelsCache(cacheModels);
init(token, mockMode);
}
protected static void buildObjectGraphAndInject(boolean mockMode) {
sObjectGraph = mockMode ? ObjectGraph.create(DebugModules.list()) :
ObjectGraph.create(Modules.list());
sObjectGraph.injectStatics();
sObjectGraph.inject(sApp);
}
protected static void reset() {
mToken = null;
sApp = null;
sObjectGraph = null;
}
public static void inject(Object o) {
sObjectGraph.inject(o);
}
public static String getToken() {
return mToken;
}
public static void setToken(String token) {
mToken = token;
}
public static void setLogLevel(LogLevel logLevel) {
if (logLevel == null) sLogLevel = PRODUCTION ? PRODUCTION_LEVEL : DEVELOPMENT_LEVEL;
else sLogLevel = logLevel;
}
public static LogLevel getLogLevel() {
return sLogLevel;
}
public static void setModelsCache(boolean caching) {sCacheModels = caching;}
public static boolean isCachingModels() {return sCacheModels;}
public static boolean isProduction() {
return PRODUCTION;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy