Java tutorial
/* * Copyright 2016 TIBCO Software,Inc.All rights reserved. * http://community.jaspersoft.com/project/jaspermobile-android * * Unless you have purchased a commercial license agreement from TIBCO Jaspersoft, * the following license terms apply: * * This program is part of TIBCO Jaspersoft Mobile for Android. * * TIBCO Jaspersoft Mobile is free software:you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation,either version 3of the License,or * (at your option)any later version. * * TIBCO Jaspersoft Mobile is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY;without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.See the * GNU Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with TIBCO Jaspersoft Mobile for Android.If not,see * <http://www.gnu.org/licenses/lgpl>. */ package com.jaspersoft.android.jaspermobile.internal.di.modules.app; import android.accounts.AccountManager; import android.app.Application; import android.content.Context; import com.jaspersoft.android.jaspermobile.Analytics; import com.jaspersoft.android.jaspermobile.AppConfigurator; import com.jaspersoft.android.jaspermobile.AppConfiguratorImpl; import com.jaspersoft.android.jaspermobile.BackgroundThread; import com.jaspersoft.android.jaspermobile.GraphObject; import com.jaspersoft.android.jaspermobile.JasperAnalytics; import com.jaspersoft.android.jaspermobile.JasperSecurityProviderUpdater; import com.jaspersoft.android.jaspermobile.UIThread; import com.jaspersoft.android.jaspermobile.activities.SecurityProviderUpdater; import com.jaspersoft.android.jaspermobile.data.ComponentManager; import com.jaspersoft.android.jaspermobile.data.cache.SecureCache; import com.jaspersoft.android.jaspermobile.data.cache.SecureStorage; import com.jaspersoft.android.jaspermobile.domain.executor.PostExecutionThread; import com.jaspersoft.android.jaspermobile.domain.executor.PreExecutionThread; import com.jaspersoft.android.jaspermobile.internal.di.ApplicationContext; import com.jaspersoft.android.jaspermobile.network.cookie.CookieAuthenticationHandler; import com.jaspersoft.android.jaspermobile.network.cookie.CookieHandlerFactory; import com.jaspersoft.android.jaspermobile.ui.component.ProfileActivationListener; import com.jaspersoft.android.jaspermobile.util.DefaultPrefHelper_; import com.jaspersoft.android.sdk.network.AuthenticationLifecycle; import com.jaspersoft.android.sdk.network.Server; import com.squareup.okhttp.Cache; import com.squareup.okhttp.OkHttpClient; import java.io.File; import java.net.CookieHandler; import java.net.CookieManager; import java.util.concurrent.TimeUnit; import javax.inject.Named; import javax.inject.Singleton; import dagger.Module; import dagger.Provides; /** * @author Tom Koptel * @since 2.3 */ @Module public final class AppModule { private final Application mApplication; public AppModule(Application application) { mApplication = application; } @Provides @Singleton @ApplicationContext Context provideApplicationContext() { return mApplication; } @Provides @Singleton CookieHandler provideCookieHandler(CookieHandlerFactory cookieHandlerFactory, @ApplicationContext Context context) { return cookieHandlerFactory.newStore(context); } @Provides @Singleton AuthenticationLifecycle providesAuthenticationHandler(CookieHandler cookieHandler) { CookieManager cookieManager = (CookieManager) cookieHandler; return new CookieAuthenticationHandler(cookieManager); } @Provides @Singleton PostExecutionThread providePostExecutionThread(UIThread uiThread) { return uiThread; } @Provides @Singleton PreExecutionThread providePreExecutionThread(BackgroundThread backgroundThread) { return backgroundThread; } @Provides @Singleton AccountManager providesAccountManager(@ApplicationContext Context context) { return AccountManager.get(context); } @Provides @Singleton Analytics providesAnalytics(@ApplicationContext Context context) { return new JasperAnalytics(context); } @Provides @Singleton SecurityProviderUpdater providesSecurityProviderUpdater() { return new JasperSecurityProviderUpdater(); } @Provides @Singleton AppConfigurator providesAppConfigurator() { return new AppConfiguratorImpl(); } @Provides @Singleton SecureCache provideSecureStorage(SecureStorage secureStorage) { return secureStorage; } @Provides Server.Builder provideServerBuilder() { DefaultPrefHelper_ helper = DefaultPrefHelper_.getInstance_(mApplication); return Server.builder().withConnectionTimeOut(helper.getConnectTimeoutValue(), TimeUnit.MILLISECONDS) .withReadTimeout(helper.getReadTimeoutValue(), TimeUnit.MILLISECONDS); } @Provides GraphObject providesGraphObject() { return GraphObject.Factory.from(mApplication); } @Singleton @Provides ComponentManager.Callback providesComponentCallback(ProfileActivationListener activationListener) { return activationListener; } @Singleton @Named("webview_client") @Provides OkHttpClient provideWebViewClient(@ApplicationContext Context context) { OkHttpClient client = new OkHttpClient(); File cacheDir = context.getApplicationContext().getCacheDir(); File okCache = new File(cacheDir, "ok-cache"); if (!okCache.exists()) { boolean cachedCreated = okCache.mkdirs(); if (cachedCreated) { int cacheSize = 50 * 1024 * 1024; Cache cache = new Cache(okCache, cacheSize); client.setCache(cache); } } return client; } }