// Path: app/src/main/java/com/xurxodev/moviesandroidkata/di/component/ApplicationComponent.java
// @Singleton
// @Component(modules = {AppModule.class, DataModule.class})
// public interface ApplicationComponent {
//     ActivityComponent.Builder activityComponent();
// }
// 
// Path: app/src/main/java/com/xurxodev/moviesandroidkata/di/module/AppModule.java
// @Module
// public class AppModule {
// 
//     Application mApplication;
// 
//     public AppModule(Application application) {
//         mApplication = application;
//     }
// 
//     @Provides
//     @Singleton
//     Application providesApplication() {
//         return mApplication;
//     }
// 
//     @Provides
//     @Singleton
//     public AsyncExecutor provideAsyncExecutor() {
//         return new ThreadExecutor();
//     }
// 
//     @Provides
//     @Singleton
//     public MainExecutor provideMainExecutor() {
//         return new UIThreadExecutor();
//     }
// }
// 
// Path: app/src/main/java/com/xurxodev/moviesandroidkata/di/module/DataModule.java
// @Module
// public class DataModule {
//     @Provides
//     @Singleton
//     Gson provideGson() {
//         GsonBuilder gsonBuilder = new GsonBuilder();
//         gsonBuilder.setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES);
//         return gsonBuilder.create();
//     }
// 
//     @Provides
//     @Singleton
//     MovieRepository provideMovieRepository(Application applicationContext, Gson gson) {
//         MovieRepository diskMovieRepository = new DiskMovieRepository(applicationContext, gson);
//         return diskMovieRepository;
//     }
// 
//     @Provides
//     @Singleton
//     GetMoviesUseCase provideGetMoviesUseCase(MovieRepository movieRepository,
//             AsyncExecutor asyncExecutor, MainExecutor mainExecutor) {
//         GetMoviesUseCase getMoviesUseCase = new GetMoviesUseCase(movieRepository, asyncExecutor,
//                 mainExecutor);
//         return getMoviesUseCase;
//     }
// 
//     @Provides
//     @Singleton
//     GetMovieDetailUseCase provideGetMovieDetailUseCase(MovieRepository movieRepository,
//             AsyncExecutor asyncExecutor, MainExecutor mainExecutor) {
//         GetMovieDetailUseCase getMovieDetailUseCase = new GetMovieDetailUseCase(movieRepository,
//                 asyncExecutor,
//                 mainExecutor);
//         return getMovieDetailUseCase;
//     }
// }


import android.app.Application;
import com.xurxodev.moviesandroidkata.di.component.ApplicationComponent;
import com.xurxodev.moviesandroidkata.di.component.DaggerApplicationComponent;
import com.xurxodev.moviesandroidkata.di.module.AppModule;
import com.xurxodev.moviesandroidkata.di.module.DataModule;
package com.xurxodev.moviesandroidkata;



public class MoviesApplication extends Application {
    private ApplicationComponent appComponent;

    @Override
    public void onCreate() {
// Path: app/src/main/java/com/xurxodev/moviesandroidkata/di/component/ApplicationComponent.java
// @Singleton
// @Component(modules = {AppModule.class, DataModule.class})
// public interface ApplicationComponent {
//     ActivityComponent.Builder activityComponent();
// }
// 
// Path: app/src/main/java/com/xurxodev/moviesandroidkata/di/module/AppModule.java
// @Module
// public class AppModule {
// 
//     Application mApplication;
// 
//     public AppModule(Application application) {
//         mApplication = application;
//     }
// 
//     @Provides
//     @Singleton
//     Application providesApplication() {
//         return mApplication;
//     }
// 
//     @Provides
//     @Singleton
//     public AsyncExecutor provideAsyncExecutor() {
//         return new ThreadExecutor();
//     }
// 
//     @Provides
//     @Singleton
//     public MainExecutor provideMainExecutor() {
//         return new UIThreadExecutor();
//     }
// }
// 
// Path: app/src/main/java/com/xurxodev/moviesandroidkata/di/module/DataModule.java
// @Module
// public class DataModule {
//     @Provides
//     @Singleton
//     Gson provideGson() {
//         GsonBuilder gsonBuilder = new GsonBuilder();
//         gsonBuilder.setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES);
//         return gsonBuilder.create();
//     }
// 
//     @Provides
//     @Singleton
//     MovieRepository provideMovieRepository(Application applicationContext, Gson gson) {
//         MovieRepository diskMovieRepository = new DiskMovieRepository(applicationContext, gson);
//         return diskMovieRepository;
//     }
// 
//     @Provides
//     @Singleton
//     GetMoviesUseCase provideGetMoviesUseCase(MovieRepository movieRepository,
//             AsyncExecutor asyncExecutor, MainExecutor mainExecutor) {
//         GetMoviesUseCase getMoviesUseCase = new GetMoviesUseCase(movieRepository, asyncExecutor,
//                 mainExecutor);
//         return getMoviesUseCase;
//     }
// 
//     @Provides
//     @Singleton
//     GetMovieDetailUseCase provideGetMovieDetailUseCase(MovieRepository movieRepository,
//             AsyncExecutor asyncExecutor, MainExecutor mainExecutor) {
//         GetMovieDetailUseCase getMovieDetailUseCase = new GetMovieDetailUseCase(movieRepository,
//                 asyncExecutor,
//                 mainExecutor);
//         return getMovieDetailUseCase;
//     }
// }


// Path: app/src/main/java/com/xurxodev/moviesandroidkata/MoviesApplication.java
import android.app.Application;
import com.xurxodev.moviesandroidkata.di.component.ApplicationComponent;
import com.xurxodev.moviesandroidkata.di.component.DaggerApplicationComponent;
import com.xurxodev.moviesandroidkata.di.module.AppModule;
import com.xurxodev.moviesandroidkata.di.module.DataModule;

package com.xurxodev.moviesandroidkata;



public class MoviesApplication extends Application {
    private ApplicationComponent appComponent;

    @Override
    public void onCreate() {
        super.onCreate();