All Downloads are FREE. Search and download functionalities are using the official Maven repository.

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