Skip to content

Commit 69a2878

Browse files
authored
Merge pull request #12 from slonopotamus/singleton-object-mapper
Use a single ObjectMapper instance because it is thread-safe
2 parents bb15966 + 78b1cb4 commit 69a2878

File tree

6 files changed

+13
-27
lines changed

6 files changed

+13
-27
lines changed

gitlfs-client/src/main/java/ru/bozaro/gitlfs/client/Client.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ public Client(@NotNull AuthProvider authProvider, @NotNull final HttpClient http
6060

6161
public Client(@NotNull AuthProvider authProvider, @NotNull HttpExecutor http) {
6262
this.authProvider = authProvider;
63-
this.mapper = JsonHelper.createMapper();
63+
this.mapper = JsonHelper.mapper;
6464
this.http = http;
6565
}
6666

gitlfs-client/src/main/java/ru/bozaro/gitlfs/client/auth/ExternalAuthProvider.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ protected Link getAuthUncached(@NotNull Operation operation) throws IOException,
8181
if (exitValue != 0) {
8282
throw new IOException("Command returned with non-zero exit code " + exitValue + ": " + Arrays.toString(builder.command().toArray()));
8383
}
84-
return JsonHelper.createMapper().readValue(stdoutData.toByteArray(), Link.class);
84+
return JsonHelper.mapper.readValue(stdoutData.toByteArray(), Link.class);
8585
}
8686

8787
@NotNull

gitlfs-client/src/test/java/ru/bozaro/gitlfs/client/ClientBatchTest.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@
55
import org.testng.Assert;
66
import org.testng.annotations.Test;
77
import ru.bozaro.gitlfs.common.JsonHelper;
8-
import ru.bozaro.gitlfs.common.data.*;
98
import ru.bozaro.gitlfs.common.data.Error;
9+
import ru.bozaro.gitlfs.common.data.*;
1010

1111
import java.io.IOException;
1212
import java.net.URI;
@@ -44,7 +44,7 @@ private void batchUpload(@NotNull String path) throws IOException {
4444
new Meta("1cbec737f863e4922cee63cc2ebbfaafcd1cff8b790d8cfd2e6a5d550b648afa", 3)
4545
)
4646
));
47-
Assert.assertEquals(JsonHelper.toString(result), JsonHelper.toString(new BatchRes(
47+
Assert.assertEquals(JsonHelper.mapper.writeValueAsString(result), JsonHelper.mapper.writeValueAsString(new BatchRes(
4848
Arrays.asList(
4949
new BatchItem(
5050
new Meta("b810bbe954d51e380f395de0c301a0a42d16f115453f2feb4188ca9f7189074e", 28),
@@ -104,7 +104,7 @@ private void batchDownload(@NotNull String path) throws IOException {
104104
new Meta("1cbec737f863e4922cee63cc2ebbfaafcd1cff8b790d8cfd2e6a5d550b648afa", 3)
105105
)
106106
));
107-
Assert.assertEquals(JsonHelper.toString(result), JsonHelper.toString(new BatchRes(
107+
Assert.assertEquals(JsonHelper.mapper.writeValueAsString(result), JsonHelper.mapper.writeValueAsString(new BatchRes(
108108
Arrays.asList(
109109
new BatchItem(
110110
new Meta("b810bbe954d51e380f395de0c301a0a42d16f115453f2feb4188ca9f7189074e", 28),
Lines changed: 4 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package ru.bozaro.gitlfs.common;
22

33
import com.fasterxml.jackson.annotation.JsonInclude;
4-
import com.fasterxml.jackson.core.JsonProcessingException;
54
import com.fasterxml.jackson.core.util.DefaultIndenter;
65
import com.fasterxml.jackson.core.util.DefaultPrettyPrinter;
76
import com.fasterxml.jackson.databind.ObjectMapper;
@@ -17,15 +16,11 @@
1716
* @author Artem V. Navrotskiy
1817
*/
1918
public final class JsonHelper {
20-
private JsonHelper() {
21-
}
2219

23-
/**
24-
* Creating mapper for serialize/deserialize data to JSON.
25-
*/
2620
@NotNull
27-
public static ObjectMapper createMapper() {
28-
final ObjectMapper mapper = new ObjectMapper();
21+
public static final ObjectMapper mapper = new ObjectMapper();
22+
23+
static {
2924
mapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
3025
mapper.enable(SerializationFeature.INDENT_OUTPUT);
3126
mapper.setDateFormat(new StdDateFormat());
@@ -36,17 +31,8 @@ public static ObjectMapper createMapper() {
3631
.withObjectIndenter(new DefaultIndenter(" ", "\n")));
3732

3833
mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
39-
return mapper;
4034
}
4135

42-
/**
43-
* Convert object to string.
44-
*
45-
* @param data Object.
46-
* @return JSON data.
47-
*/
48-
@NotNull
49-
public static String toString(@NotNull Object data) throws JsonProcessingException {
50-
return createMapper().writeValueAsString(data);
36+
private JsonHelper() {
5137
}
5238
}

gitlfs-server/src/main/java/ru/bozaro/gitlfs/server/PointerServlet.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@
55
import org.jetbrains.annotations.Nullable;
66
import ru.bozaro.gitlfs.common.Constants;
77
import ru.bozaro.gitlfs.common.JsonHelper;
8-
import ru.bozaro.gitlfs.common.data.*;
98
import ru.bozaro.gitlfs.common.data.Error;
9+
import ru.bozaro.gitlfs.common.data.*;
1010
import ru.bozaro.gitlfs.server.internal.ObjectResponse;
1111
import ru.bozaro.gitlfs.server.internal.ResponseWriter;
1212

@@ -60,7 +60,7 @@ public PointerServlet(@NotNull ContentManager manager, @NotNull String contentLo
6060

6161
public PointerServlet(@NotNull PointerManager manager) {
6262
this.manager = manager;
63-
this.mapper = JsonHelper.createMapper();
63+
this.mapper = JsonHelper.mapper;
6464
this.accessCheckerVisitor = new AccessCheckerVisitor(manager);
6565
}
6666

@@ -135,7 +135,7 @@ protected void doPost(@NotNull HttpServletRequest req, @NotNull HttpServletRespo
135135
} catch (ServerError e) {
136136
resp.setStatus(e.getStatusCode());
137137
resp.setContentType(Constants.MIME_LFS_JSON);
138-
JsonHelper.createMapper().writeValue(resp.getOutputStream(), new Error(e.getStatusCode(), e.getMessage()));
138+
JsonHelper.mapper.writeValue(resp.getOutputStream(), new Error(e.getStatusCode(), e.getMessage()));
139139
return;
140140
}
141141
super.doPost(req, resp);

gitlfs-server/src/main/java/ru/bozaro/gitlfs/server/internal/ObjectResponse.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,6 @@ public ObjectResponse(int status, @NotNull Object value) {
2727
public void write(@NotNull HttpServletResponse response) throws IOException {
2828
response.setStatus(status);
2929
response.setContentType(MIME_LFS_JSON);
30-
JsonHelper.createMapper().writeValue(response.getOutputStream(), value);
30+
JsonHelper.mapper.writeValue(response.getOutputStream(), value);
3131
}
3232
}

0 commit comments

Comments
 (0)