diff --git a/okhttp-plugin/src/main/java/io/freefair/gradle/plugins/okhttp/OkHttpCachePlugin.java b/okhttp-plugin/src/main/java/io/freefair/gradle/plugins/okhttp/OkHttpCachePlugin.java index a8722bb8..64b331e1 100644 --- a/okhttp-plugin/src/main/java/io/freefair/gradle/plugins/okhttp/OkHttpCachePlugin.java +++ b/okhttp-plugin/src/main/java/io/freefair/gradle/plugins/okhttp/OkHttpCachePlugin.java @@ -12,6 +12,7 @@ /** * @author Lars Grefer */ +@SuppressWarnings("LombokGetterMayBeUsed") @Deprecated public class OkHttpCachePlugin implements Plugin { diff --git a/okhttp-plugin/src/main/java/io/freefair/gradle/plugins/okhttp/OkHttpExtension.java b/okhttp-plugin/src/main/java/io/freefair/gradle/plugins/okhttp/OkHttpExtension.java index 2e827ad0..9d0f3619 100644 --- a/okhttp-plugin/src/main/java/io/freefair/gradle/plugins/okhttp/OkHttpExtension.java +++ b/okhttp-plugin/src/main/java/io/freefair/gradle/plugins/okhttp/OkHttpExtension.java @@ -3,8 +3,21 @@ import okhttp3.logging.HttpLoggingInterceptor; import org.gradle.api.provider.Property; +/** + * @author Lars Grefer + */ public abstract class OkHttpExtension { public abstract Property getLoggingLevel(); + /** + * Size in bytes for the internal {@link okhttp3.Cache HTTP cache}. + * Setting this to 0 disables the cache. + */ + public abstract Property getCacheSize(); + + public abstract Property getForceCache(); + + public abstract Property getForceNetwork(); + } diff --git a/okhttp-plugin/src/main/java/io/freefair/gradle/plugins/okhttp/OkHttpPlugin.java b/okhttp-plugin/src/main/java/io/freefair/gradle/plugins/okhttp/OkHttpPlugin.java index 65623ee3..1d6a1bd8 100644 --- a/okhttp-plugin/src/main/java/io/freefair/gradle/plugins/okhttp/OkHttpPlugin.java +++ b/okhttp-plugin/src/main/java/io/freefair/gradle/plugins/okhttp/OkHttpPlugin.java @@ -20,8 +20,21 @@ public void apply(Project project) { okHttpExtension = project.getExtensions().create("okHttp", OkHttpExtension.class); okHttpExtension.getLoggingLevel().convention(project.provider(this::getLevel)); + okHttpExtension.getCacheSize().convention(10 * 1024 * 1024); + + okHttpExtension.getForceCache().convention( + project.getGradle().getStartParameter().isOffline() + ); + + okHttpExtension.getForceNetwork().convention( + project.getGradle().getGradle().getStartParameter().isRefreshDependencies() + ); + project.getTasks().withType(OkHttpTask.class).configureEach(okHttpTask -> { okHttpTask.getLoggingLevel().convention(okHttpExtension.getLoggingLevel()); + okHttpTask.getCacheSize().convention(okHttpExtension.getCacheSize()); + okHttpTask.getForceCache().convention(okHttpExtension.getForceCache()); + okHttpTask.getForceNetwork().convention(okHttpExtension.getForceNetwork()); }); } diff --git a/okhttp-plugin/src/main/java/io/freefair/gradle/plugins/okhttp/tasks/OkHttpRequestTask.java b/okhttp-plugin/src/main/java/io/freefair/gradle/plugins/okhttp/tasks/OkHttpRequestTask.java index 33693005..e6061fa3 100644 --- a/okhttp-plugin/src/main/java/io/freefair/gradle/plugins/okhttp/tasks/OkHttpRequestTask.java +++ b/okhttp-plugin/src/main/java/io/freefair/gradle/plugins/okhttp/tasks/OkHttpRequestTask.java @@ -1,16 +1,15 @@ package io.freefair.gradle.plugins.okhttp.tasks; -import io.freefair.gradle.plugins.okhttp.internal.CacheControlInterceptor; import io.freefair.gradle.plugins.okhttp.internal.ProgressInterceptor; import io.freefair.gradle.plugins.okhttp.internal.ProgressListener; import lombok.RequiredArgsConstructor; -import okhttp3.*; -import okhttp3.logging.HttpLoggingInterceptor; -import org.gradle.api.DefaultTask; +import okhttp3.Credentials; +import okhttp3.OkHttpClient; +import okhttp3.Request; +import okhttp3.Response; import org.gradle.api.GradleException; import org.gradle.api.provider.MapProperty; import org.gradle.api.provider.Property; -import org.gradle.api.tasks.Console; import org.gradle.api.tasks.Input; import org.gradle.api.tasks.Optional; import org.gradle.api.tasks.TaskAction; @@ -22,6 +21,8 @@ import java.time.Duration; /** + * Base class for tasks which execute exactly one {@link Request HTTP Request}. + * * @author Lars Grefer */ public abstract class OkHttpRequestTask extends OkHttpTask { @@ -50,17 +51,14 @@ public void executeRequest() throws IOException { Request request = buildRequest(new Request.Builder()).build(); - OkHttpClient client = getOkHttpClient(); - - client = client.newBuilder() + OkHttpClient client = getOkHttpClient() + .newBuilder() .addNetworkInterceptor(new ProgressInterceptor(new GradleProcessListener(progressLogger))) .build(); progressLogger.start(request.toString(), "Call"); - Call call = client.newCall(request); - - try (Response response = call.execute()) { + try (Response response = client.newCall(request).execute()) { handleResponse(response); } finally { progressLogger.completed(); diff --git a/okhttp-plugin/src/main/java/io/freefair/gradle/plugins/okhttp/tasks/OkHttpTask.java b/okhttp-plugin/src/main/java/io/freefair/gradle/plugins/okhttp/tasks/OkHttpTask.java index 772bc8f6..2985a980 100644 --- a/okhttp-plugin/src/main/java/io/freefair/gradle/plugins/okhttp/tasks/OkHttpTask.java +++ b/okhttp-plugin/src/main/java/io/freefair/gradle/plugins/okhttp/tasks/OkHttpTask.java @@ -12,6 +12,11 @@ import java.io.File; +/** + * Base class for tasks using an {@link OkHttpClient}. + * + * @author Lars Grefer + */ public abstract class OkHttpTask extends DefaultTask { @Console @@ -58,20 +63,20 @@ protected OkHttpClient buildOkHttpClient() { if (cacheDir != null && cacheSize > 1) { Cache cache = new Cache(cacheDir, cacheSize); - builder = builder.cache(cache); + builder.cache(cache); } if (getForceCache().getOrElse(false)) { - builder = builder.addInterceptor(new CacheControlInterceptor(CacheControl.FORCE_CACHE)); + builder.addInterceptor(new CacheControlInterceptor(CacheControl.FORCE_CACHE)); } else if (getForceNetwork().getOrElse(false)) { - builder = builder.addInterceptor(new CacheControlInterceptor(CacheControl.FORCE_NETWORK)); + builder.addInterceptor(new CacheControlInterceptor(CacheControl.FORCE_NETWORK)); } if (getLoggingLevel().isPresent()) { HttpLoggingInterceptor loggingInterceptor = new HttpLoggingInterceptor(s -> getLogger().lifecycle(s)); loggingInterceptor.level(getLoggingLevel().get()); - builder = builder.addInterceptor(loggingInterceptor); + builder.addInterceptor(loggingInterceptor); } return builder.build();