// Path: app/src/main/java/com/knight/arch/model/AccessTokenResponse.java
// public class AccessTokenResponse {
// 
//     private String access_token;
//     private String scope;
//     private String token_type;
// 
//     public String getAccess_token() {
//         return access_token;
//     }
// 
//     public void setAccess_token(String access_token) {
//         this.access_token = access_token;
//     }
// 
//     public String getScope() {
//         return scope;
//     }
// 
//     public void setScope(String scope) {
//         this.scope = scope;
//     }
// 
//     public String getToken_type() {
//         return token_type;
//     }
// 
//     public void setToken_type(String token_type) {
//         this.token_type = token_type;
//     }
// }
// 
// Path: app/src/main/java/com/knight/arch/module/AppModule.java
// @Module(
//         injects = {ClientApplication.class},
//         includes = {DataModule.class},
//         library = true
// )
// 
// public class AppModule {
//     Context ctx;
// 
//     public AppModule(Context context) {
//         this.ctx = context;
//     }
// 
//     @Provides
//     Context provideContexts() {
//         return this.ctx;
//     }
// 
//     @Provides
//     @Singleton
//     @Named("Root")
//     File provideCacheDir(Context ctx) {
//         return ctx.getCacheDir();
//     }
// 
//     @Provides
//     @Singleton
//     @Named("Http")
//     File provideHttpCacheDir(@Named("Root") File root) {
//         return new File(root, "http");
//     }
// 
//     @Provides
//     @Singleton
//     @Named("Data")
//     File provideDataCacheDir(@Named("Root") File data) {
//         return new File(data, "data");
//     }
// 
// }
// 
// Path: app/src/main/java/com/knight/arch/module/Injector.java
// public abstract interface Injector {
//   public abstract List<Object> getModules();
// 
//   public abstract void inject(Object target);
// 
//   public abstract ObjectGraph plus(Object[] modules);
// }


import android.app.Application;
import com.facebook.stetho.Stetho;
import com.knight.arch.model.AccessTokenResponse;
import com.knight.arch.module.AppModule;
import com.knight.arch.module.Injector;
import com.orhanobut.logger.LogLevel;
import com.orhanobut.logger.Logger;
import com.umeng.analytics.MobclickAgent;
import java.util.Arrays;
import java.util.List;
import dagger.ObjectGraph;
        initUmeng();
    }

    private void initUmeng() {
        MobclickAgent.openActivityDurationTrack(false);
    }


    private void initDagger() {
        objectGraph = ObjectGraph.create(getModules().toArray());
        objectGraph.inject(this);
    }

    private void initLogger() {
        Logger.init(LOGGER_TAG)               // default PRETTYLOGGER or use just init()
                .setMethodCount(4)            // default 2
                .setLogLevel(LogLevel.FULL)   // default LogLevel.FULL
                .setMethodOffset(2);          // default 0
               //.hideThreadInfo()             // default shown
    }

    private void initStetho() {
        Stetho.initialize(
                Stetho.newInitializerBuilder(this)
                        .enableDumpapp(Stetho.defaultDumperPluginsProvider(this))
                        .enableWebKitInspector(Stetho.defaultInspectorModulesProvider(this))
                        .build());
    }

    public List<Object> getModules() {
// Path: app/src/main/java/com/knight/arch/model/AccessTokenResponse.java
// public class AccessTokenResponse {
// 
//     private String access_token;
//     private String scope;
//     private String token_type;
// 
//     public String getAccess_token() {
//         return access_token;
//     }
// 
//     public void setAccess_token(String access_token) {
//         this.access_token = access_token;
//     }
// 
//     public String getScope() {
//         return scope;
//     }
// 
//     public void setScope(String scope) {
//         this.scope = scope;
//     }
// 
//     public String getToken_type() {
//         return token_type;
//     }
// 
//     public void setToken_type(String token_type) {
//         this.token_type = token_type;
//     }
// }
// 
// Path: app/src/main/java/com/knight/arch/module/AppModule.java
// @Module(
//         injects = {ClientApplication.class},
//         includes = {DataModule.class},
//         library = true
// )
// 
// public class AppModule {
//     Context ctx;
// 
//     public AppModule(Context context) {
//         this.ctx = context;
//     }
// 
//     @Provides
//     Context provideContexts() {
//         return this.ctx;
//     }
// 
//     @Provides
//     @Singleton
//     @Named("Root")
//     File provideCacheDir(Context ctx) {
//         return ctx.getCacheDir();
//     }
// 
//     @Provides
//     @Singleton
//     @Named("Http")
//     File provideHttpCacheDir(@Named("Root") File root) {
//         return new File(root, "http");
//     }
// 
//     @Provides
//     @Singleton
//     @Named("Data")
//     File provideDataCacheDir(@Named("Root") File data) {
//         return new File(data, "data");
//     }
// 
// }
// 
// Path: app/src/main/java/com/knight/arch/module/Injector.java
// public abstract interface Injector {
//   public abstract List<Object> getModules();
// 
//   public abstract void inject(Object target);
// 
//   public abstract ObjectGraph plus(Object[] modules);
// }


// Path: app/src/main/java/com/knight/arch/ClientApplication.java
import android.app.Application;
import com.facebook.stetho.Stetho;
import com.knight.arch.model.AccessTokenResponse;
import com.knight.arch.module.AppModule;
import com.knight.arch.module.Injector;
import com.orhanobut.logger.LogLevel;
import com.orhanobut.logger.Logger;
import com.umeng.analytics.MobclickAgent;
import java.util.Arrays;
import java.util.List;
import dagger.ObjectGraph;

        initUmeng();
    }

    private void initUmeng() {
        MobclickAgent.openActivityDurationTrack(false);
    }


    private void initDagger() {
        objectGraph = ObjectGraph.create(getModules().toArray());
        objectGraph.inject(this);
    }

    private void initLogger() {
        Logger.init(LOGGER_TAG)               // default PRETTYLOGGER or use just init()
                .setMethodCount(4)            // default 2
                .setLogLevel(LogLevel.FULL)   // default LogLevel.FULL
                .setMethodOffset(2);          // default 0
               //.hideThreadInfo()             // default shown
    }

    private void initStetho() {
        Stetho.initialize(
                Stetho.newInitializerBuilder(this)
                        .enableDumpapp(Stetho.defaultDumperPluginsProvider(this))
                        .enableWebKitInspector(Stetho.defaultInspectorModulesProvider(this))
                        .build());
    }

    public List<Object> getModules() {
        return Arrays.<Object>asList(new AppModule(this));