Skip to content

Commit 36be493

Browse files
committed
prepare okHttpPlugin for BuildCache
1 parent 661418c commit 36be493

File tree

8 files changed

+69
-63
lines changed

8 files changed

+69
-63
lines changed

github-plugin/src/main/java/io/freefair/gradle/plugins/github/GithubBasePlugin.java

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@
22

33
import io.freefair.gradle.plugins.github.internal.GitUtils;
44
import io.freefair.gradle.plugins.github.internal.GithubClient;
5-
import io.freefair.gradle.plugins.okhttp.OkHttpPlugin;
65
import io.freefair.gradle.util.GitUtil;
76
import lombok.Getter;
7+
import okhttp3.OkHttpClient;
88
import org.gradle.api.Plugin;
99
import org.gradle.api.Project;
1010

@@ -41,9 +41,7 @@ public void apply(Project project) {
4141
githubExtension.getUsername().convention(project.provider(() -> GitUtils.findGithubUsername(project)));
4242
githubExtension.getToken().convention(project.provider(() -> GitUtils.findGithubToken(project)));
4343

44-
OkHttpPlugin okHttpPlugin = project.getPlugins().apply(OkHttpPlugin.class);
45-
46-
githubClient = new GithubClient(githubExtension, okHttpPlugin.getOkHttpClient());
44+
githubClient = new GithubClient(githubExtension, new OkHttpClient.Builder().build());
4745
}
4846

4947
private boolean isTravis() {

maven-plugin/src/main/java/io/freefair/gradle/plugins/maven/javadoc/JavadocLinksPlugin.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,13 +19,12 @@
1919
public class JavadocLinksPlugin implements Plugin<Project> {
2020

2121
private Project project;
22-
private OkHttpPlugin okHttpPlugin;
2322

2423
@Override
2524
public void apply(Project project) {
2625
this.project = project;
2726

28-
okHttpPlugin = project.getPlugins().apply(OkHttpPlugin.class);
27+
project.getPlugins().apply(OkHttpPlugin.class);
2928

3029
project.getPlugins().withType(AggregateJavadocPlugin.class, ajp -> {
3130

@@ -50,7 +49,7 @@ public void apply(Project project) {
5049

5150
public void addLinks(TaskProvider<Javadoc> javadocTaskProvider, Configuration classpath) {
5251

53-
TaskProvider<ResolveJavadocLinks> resolveJavadocLinks = project.getTasks().register("resolveJavadocLinks", ResolveJavadocLinks.class, okHttpPlugin.getOkHttpClient());
52+
TaskProvider<ResolveJavadocLinks> resolveJavadocLinks = project.getTasks().register("resolveJavadocLinks", ResolveJavadocLinks.class);
5453

5554
resolveJavadocLinks.configure(rjd -> {
5655
rjd.getJavadocTool().convention(javadocTaskProvider.get().getJavadocTool());

maven-plugin/src/main/java/io/freefair/gradle/plugins/maven/javadoc/ResolveJavadocLinks.java

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,12 @@
11
package io.freefair.gradle.plugins.maven.javadoc;
22

3+
import io.freefair.gradle.plugins.okhttp.tasks.OkHttpTask;
34
import okhttp3.OkHttpClient;
45
import okhttp3.Request;
56
import okhttp3.Response;
6-
import org.gradle.api.DefaultTask;
77
import org.gradle.api.NonNullApi;
88
import org.gradle.api.artifacts.Configuration;
99
import org.gradle.api.artifacts.component.ComponentArtifactIdentifier;
10-
import org.gradle.api.artifacts.component.ComponentIdentifier;
1110
import org.gradle.api.artifacts.component.ModuleComponentIdentifier;
1211
import org.gradle.api.artifacts.result.ResolvedArtifactResult;
1312
import org.gradle.api.file.RegularFileProperty;
@@ -34,7 +33,7 @@
3433
*/
3534
@NonNullApi
3635
@CacheableTask
37-
public abstract class ResolveJavadocLinks extends DefaultTask {
36+
public abstract class ResolveJavadocLinks extends OkHttpTask {
3837

3938
@OutputFile
4039
public abstract RegularFileProperty getOutputFile();
@@ -45,13 +44,10 @@ public abstract class ResolveJavadocLinks extends DefaultTask {
4544
@Input
4645
public abstract ListProperty<ComponentArtifactIdentifier> getArtifactIds();
4746

48-
private final OkHttpClient okHttpClient;
49-
5047
private final List<JavadocLinkProvider> javadocLinkProviders;
5148

5249
@Inject
53-
public ResolveJavadocLinks(OkHttpClient okHttpClient) {
54-
this.okHttpClient = okHttpClient;
50+
public ResolveJavadocLinks() {
5551

5652
this.javadocLinkProviders = new ArrayList<>();
5753
for (JavadocLinkProvider javadocLinkProvider : ServiceLoader.load(JavadocLinkProvider.class, this.getClass().getClassLoader())) {
@@ -140,7 +136,7 @@ private boolean checkLink(String link) {
140136
.get()
141137
.build();
142138

143-
try (Response response = okHttpClient.newCall(request).execute()) {
139+
try (Response response = getOkHttpClient().newCall(request).execute()) {
144140
if (response.isSuccessful()) {
145141
return true;
146142
}

okhttp-plugin/src/main/java/io/freefair/gradle/plugins/okhttp/OkHttpCacheExtension.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import javax.inject.Inject;
99

1010
@Data
11+
@Deprecated
1112
public class OkHttpCacheExtension {
1213

1314
private final DirectoryProperty directory;

okhttp-plugin/src/main/java/io/freefair/gradle/plugins/okhttp/OkHttpCachePlugin.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
/**
1313
* @author Lars Grefer
1414
*/
15+
@Deprecated
1516
public class OkHttpCachePlugin implements Plugin<Project> {
1617

1718
@Getter

okhttp-plugin/src/main/java/io/freefair/gradle/plugins/okhttp/OkHttpPlugin.java

Lines changed: 4 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -1,56 +1,28 @@
11
package io.freefair.gradle.plugins.okhttp;
22

3-
import io.freefair.gradle.plugins.okhttp.internal.CacheControlInterceptor;
4-
import okhttp3.CacheControl;
5-
import okhttp3.OkHttpClient;
3+
import io.freefair.gradle.plugins.okhttp.tasks.OkHttpTask;
64
import okhttp3.logging.HttpLoggingInterceptor;
75
import org.gradle.api.Plugin;
86
import org.gradle.api.Project;
97

10-
import javax.annotation.Nullable;
11-
128
/**
139
* @author Lars Grefer
1410
*/
1511
public class OkHttpPlugin implements Plugin<Project> {
1612

17-
@Nullable
18-
private OkHttpClient okHttpClient;
19-
private OkHttpCachePlugin okHttpCachePlugin;
2013
private Project project;
2114
private OkHttpExtension okHttpExtension;
2215

2316
@Override
2417
public void apply(Project project) {
2518
this.project = project;
2619

27-
okHttpCachePlugin = project.getRootProject().getPlugins().apply(OkHttpCachePlugin.class);
28-
2920
okHttpExtension = project.getExtensions().create("okHttp", OkHttpExtension.class);
3021
okHttpExtension.getLoggingLevel().convention(project.provider(this::getLevel));
3122

32-
}
33-
34-
public OkHttpClient getOkHttpClient() {
35-
if (okHttpClient == null) {
36-
37-
OkHttpClient.Builder builder = new OkHttpClient.Builder()
38-
.cache(okHttpCachePlugin.getCache());
39-
40-
if (project.getGradle().getStartParameter().isOffline()) {
41-
builder = builder.addInterceptor(new CacheControlInterceptor(CacheControl.FORCE_CACHE));
42-
}
43-
else if (project.getGradle().getStartParameter().isRefreshDependencies()) {
44-
builder = builder.addInterceptor(new CacheControlInterceptor(CacheControl.FORCE_NETWORK));
45-
}
46-
47-
HttpLoggingInterceptor loggingInterceptor = new HttpLoggingInterceptor(project.getLogger()::info);
48-
loggingInterceptor.level(okHttpExtension.getLoggingLevel().get());
49-
builder = builder.addInterceptor(loggingInterceptor);
50-
51-
okHttpClient = builder.build();
52-
}
53-
return okHttpClient;
23+
project.getTasks().withType(OkHttpTask.class).configureEach(okHttpTask -> {
24+
okHttpTask.getLoggingLevel().convention(okHttpExtension.getLoggingLevel());
25+
});
5426
}
5527

5628
private HttpLoggingInterceptor.Level getLevel() {

okhttp-plugin/src/main/java/io/freefair/gradle/plugins/okhttp/tasks/OkHttpRequestTask.java

Lines changed: 5 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,16 @@
11
package io.freefair.gradle.plugins.okhttp.tasks;
22

3-
import io.freefair.gradle.plugins.okhttp.OkHttpPlugin;
3+
import io.freefair.gradle.plugins.okhttp.internal.CacheControlInterceptor;
44
import io.freefair.gradle.plugins.okhttp.internal.ProgressInterceptor;
55
import io.freefair.gradle.plugins.okhttp.internal.ProgressListener;
66
import lombok.RequiredArgsConstructor;
77
import okhttp3.*;
8+
import okhttp3.logging.HttpLoggingInterceptor;
89
import org.gradle.api.DefaultTask;
910
import org.gradle.api.GradleException;
1011
import org.gradle.api.provider.MapProperty;
1112
import org.gradle.api.provider.Property;
13+
import org.gradle.api.tasks.Console;
1214
import org.gradle.api.tasks.Input;
1315
import org.gradle.api.tasks.Optional;
1416
import org.gradle.api.tasks.TaskAction;
@@ -22,7 +24,7 @@
2224
/**
2325
* @author Lars Grefer
2426
*/
25-
public abstract class OkHttpRequestTask extends DefaultTask {
27+
public abstract class OkHttpRequestTask extends OkHttpTask {
2628

2729
@Inject
2830
protected abstract ProgressLoggerFactory getProgressLoggerFactory();
@@ -66,19 +68,6 @@ public void executeRequest() throws IOException {
6668

6769
}
6870

69-
private OkHttpClient getOkHttpClient() {
70-
OkHttpPlugin plugin = getProject().getPlugins().findPlugin(OkHttpPlugin.class);
71-
72-
OkHttpClient client;
73-
if (plugin != null) {
74-
client = plugin.getOkHttpClient();
75-
}
76-
else {
77-
client = new OkHttpClient();
78-
}
79-
return client;
80-
}
81-
8271
public Request.Builder buildRequest(Request.Builder builder) {
8372

8473
getHeaders().get().forEach(builder::header);
@@ -120,7 +109,7 @@ public void readUpdate(long bytesRead, long contentLength) {
120109

121110
@Override
122111
public void writeUpdate(long bytesWritten, long contentLength) {
123-
if(uploadStart == 0) {
112+
if (uploadStart == 0) {
124113
uploadStart = System.nanoTime();
125114
}
126115
update("Upload", bytesWritten, contentLength, uploadStart);
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
package io.freefair.gradle.plugins.okhttp.tasks;
2+
3+
import io.freefair.gradle.plugins.okhttp.internal.CacheControlInterceptor;
4+
import okhttp3.Cache;
5+
import okhttp3.CacheControl;
6+
import okhttp3.OkHttpClient;
7+
import okhttp3.logging.HttpLoggingInterceptor;
8+
import org.gradle.api.DefaultTask;
9+
import org.gradle.api.provider.Property;
10+
import org.gradle.api.tasks.Console;
11+
import org.gradle.api.tasks.Internal;
12+
13+
public abstract class OkHttpTask extends DefaultTask {
14+
15+
@Console
16+
public abstract Property<HttpLoggingInterceptor.Level> getLoggingLevel();
17+
18+
@Internal
19+
private OkHttpClient okHttpClient;
20+
21+
protected OkHttpClient getOkHttpClient() {
22+
if(okHttpClient == null) {
23+
okHttpClient = buildOkHttpClient();
24+
}
25+
26+
return okHttpClient;
27+
}
28+
29+
protected OkHttpClient buildOkHttpClient() {
30+
OkHttpClient.Builder builder = new OkHttpClient.Builder();
31+
32+
builder = builder.cache(new Cache(getTemporaryDir(), 10 * 1024 * 1024));
33+
34+
if (getProject().getGradle().getStartParameter().isOffline()) {
35+
builder = builder.addInterceptor(new CacheControlInterceptor(CacheControl.FORCE_CACHE));
36+
}
37+
else if (getProject().getGradle().getStartParameter().isRefreshDependencies()) {
38+
builder = builder.addInterceptor(new CacheControlInterceptor(CacheControl.FORCE_NETWORK));
39+
}
40+
41+
if (getLoggingLevel().isPresent()) {
42+
HttpLoggingInterceptor loggingInterceptor = new HttpLoggingInterceptor(s -> getLogger().lifecycle(s));
43+
loggingInterceptor.level(getLoggingLevel().get());
44+
builder = builder.addInterceptor(loggingInterceptor);
45+
}
46+
47+
return builder.build();
48+
49+
}
50+
}

0 commit comments

Comments
 (0)