Skip to content
This repository was archived by the owner on Oct 6, 2023. It is now read-only.

Commit af62e4d

Browse files
author
sowerstl
committed
Force mapper to use JVM timezone, to avoid JDBC layer from butchering the dates between JPA and the DB; (DOECODE-483)
1 parent cb01629 commit af62e4d

File tree

17 files changed

+61
-25
lines changed

17 files changed

+61
-25
lines changed

src/main/java/gov/osti/connectors/BitBucket.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
import java.net.URISyntaxException;
1515
import java.util.ArrayList;
1616
import java.util.List;
17+
import java.util.TimeZone;
1718
import org.apache.http.client.methods.HttpGet;
1819
import org.slf4j.Logger;
1920
import org.slf4j.LoggerFactory;
@@ -85,7 +86,7 @@ private static String getProjectNameFromUrl(String url) {
8586
@Override
8687
public JsonNode read(String url) {
8788
DOECodeMetadata md = new DOECodeMetadata();
88-
ObjectMapper mapper = new ObjectMapper();
89+
ObjectMapper mapper = new ObjectMapper().setTimeZone(TimeZone.getDefault());;
8990

9091
String name = getProjectNameFromUrl(url);
9192
if (null==name)

src/main/java/gov/osti/connectors/GitHub.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
import java.nio.charset.Charset;
1616
import java.util.ArrayList;
1717
import java.util.List;
18+
import java.util.TimeZone;
1819
import org.apache.commons.codec.binary.Base64;
1920
import org.apache.commons.lang3.StringUtils;
2021
import org.apache.http.HttpHeaders;
@@ -120,7 +121,7 @@ private static String getProjectFromUrl(String url) {
120121
@Override
121122
public JsonNode read(String url) {
122123
DOECodeMetadata md = new DOECodeMetadata();
123-
ObjectMapper mapper = new ObjectMapper();
124+
ObjectMapper mapper = new ObjectMapper().setTimeZone(TimeZone.getDefault());;
124125

125126
try {
126127
// try to identify the NAME of the project

src/main/java/gov/osti/connectors/HttpUtil.java

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
import com.fasterxml.jackson.dataformat.yaml.YAMLFactory;
1313
import gov.osti.entity.DOECodeMetadata;
1414
import java.io.IOException;
15+
import java.util.TimeZone;
1516
import javax.servlet.http.HttpServletResponse;
1617
import org.apache.http.HttpResponse;
1718
import org.apache.http.client.config.RequestConfig;
@@ -35,13 +36,16 @@ public class HttpUtil {
3536
// jackson mappers
3637
protected static final ObjectMapper YAML_MAPPER = new ObjectMapper(new YAMLFactory())
3738
.setPropertyNamingStrategy(PropertyNamingStrategy.SNAKE_CASE)
38-
.setSerializationInclusion(Include.NON_NULL);
39+
.setSerializationInclusion(Include.NON_NULL)
40+
.setTimeZone(TimeZone.getDefault());
3941
protected static final ObjectMapper XML_MAPPER = new XmlMapper()
4042
.setSerializationInclusion(Include.NON_NULL)
41-
.enable(SerializationFeature.INDENT_OUTPUT);
43+
.enable(SerializationFeature.INDENT_OUTPUT)
44+
.setTimeZone(TimeZone.getDefault());
4245
protected static final ObjectMapper JSON_MAPPER = new ObjectMapper()
4346
.setPropertyNamingStrategy(PropertyNamingStrategy.SNAKE_CASE)
44-
.setSerializationInclusion(JsonInclude.Include.NON_NULL);
47+
.setSerializationInclusion(JsonInclude.Include.NON_NULL)
48+
.setTimeZone(TimeZone.getDefault());
4549
/**
4650
* Retrieve just the String content from a given HttpGet request.
4751
*

src/main/java/gov/osti/connectors/SourceForge.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
import java.net.URISyntaxException;
1414
import java.util.ArrayList;
1515
import java.util.List;
16+
import java.util.TimeZone;
1617
import java.util.regex.Matcher;
1718
import java.util.regex.Pattern;
1819
import org.apache.http.client.methods.HttpGet;
@@ -90,7 +91,7 @@ protected static String getProjectNameFromUrl(String url) {
9091
@Override
9192
public JsonNode read(String url) {
9293
DOECodeMetadata md = new DOECodeMetadata();
93-
ObjectMapper mapper = new ObjectMapper();
94+
ObjectMapper mapper = new ObjectMapper().setTimeZone(TimeZone.getDefault());
9495

9596
// attempt to identify the project name
9697
String name = getProjectNameFromUrl(url);

src/main/java/gov/osti/connectors/api/GitLabAPI.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
import java.util.Map;
2626
import java.util.Map.Entry;
2727
import java.util.Set;
28+
import java.util.TimeZone;
2829
import javax.servlet.http.HttpServletResponse;
2930
import org.apache.commons.lang3.StringUtils;
3031
import org.apache.http.HttpEntity;
@@ -59,7 +60,7 @@ public final class GitLabAPI {
5960
private static final String API_PATH = "/api/v4/";
6061

6162
private static final JsonNodeFactory FACTORY_INSTANCE = JsonNodeFactory.instance;
62-
private static final ObjectMapper MAPPER = new ObjectMapper();
63+
private static final ObjectMapper MAPPER = new ObjectMapper().setTimeZone(TimeZone.getDefault());
6364

6465
private String currentProjectName = "";
6566
private String currentApiBase = "";

src/main/java/gov/osti/doi/DataCite.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
import java.time.LocalDate;
1919
import java.time.format.DateTimeFormatter;
2020
import java.util.List;
21+
import java.util.TimeZone;
2122
import javax.persistence.EntityManager;
2223
import javax.persistence.TypedQuery;
2324
import javax.ws.rs.core.HttpHeaders;
@@ -55,7 +56,8 @@ public class DataCite {
5556
// Jackson object mapper
5657
private static final ObjectMapper mapper = new ObjectMapper()
5758
.setPropertyNamingStrategy(PropertyNamingStrategy.SNAKE_CASE)
58-
.setSerializationInclusion(JsonInclude.Include.NON_NULL);
59+
.setSerializationInclusion(JsonInclude.Include.NON_NULL)
60+
.setTimeZone(TimeZone.getDefault());
5961

6062
/**
6163
* Convert a List of Developers into something DataCite can understand.

src/main/java/gov/osti/entity/DOECodeMetadata.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
import java.io.IOException;
2525
import java.io.Serializable;
2626
import java.util.Date;
27+
import java.util.TimeZone;
2728
import javax.persistence.Basic;
2829
import javax.persistence.CascadeType;
2930
import javax.persistence.CollectionTable;
@@ -54,8 +55,9 @@
5455
@XmlRootElement (name = "metadata")
5556
@JsonRootName (value = "metadata")
5657
public class DOECodeMetadata implements Serializable {
58+
5759
/**
58-
*
60+
*
5961
*/
6062
private static final long serialVersionUID = -909574677603914304L;
6163
private static final Logger log = LoggerFactory.getLogger(DOECodeMetadata.class.getName());
@@ -228,7 +230,8 @@ public String label() {
228230
// Jackson object mapper
229231
private static final ObjectMapper mapper = new ObjectMapper()
230232
.setPropertyNamingStrategy(PropertyNamingStrategy.SNAKE_CASE)
231-
.setSerializationInclusion(Include.NON_NULL);
233+
.setSerializationInclusion(Include.NON_NULL)
234+
.setTimeZone(TimeZone.getDefault());
232235

233236
//for Gson
234237
public DOECodeMetadata() {

src/main/java/gov/osti/entity/OstiMetadata.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
import java.io.Reader;
1515
import java.util.Date;
1616
import java.util.List;
17+
import java.util.TimeZone;
1718
import java.util.regex.Pattern;
1819
import org.apache.commons.lang3.StringUtils;
1920

@@ -54,7 +55,8 @@ public class OstiMetadata {
5455
// Jackson object mapper
5556
private static final ObjectMapper mapper = new ObjectMapper()
5657
.setPropertyNamingStrategy(PropertyNamingStrategy.SNAKE_CASE)
57-
.setSerializationInclusion(JsonInclude.Include.NON_NULL);
58+
.setSerializationInclusion(JsonInclude.Include.NON_NULL)
59+
.setTimeZone(TimeZone.getDefault());
5860

5961
public OstiMetadata() {
6062

src/main/java/gov/osti/search/SearchData.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
import com.fasterxml.jackson.databind.PropertyNamingStrategy;
1515
import java.time.ZoneOffset;
1616
import java.time.format.DateTimeFormatter;
17+
import java.util.TimeZone;
1718
import java.util.regex.Pattern;
1819
import org.apache.commons.lang3.StringUtils;
1920

@@ -25,7 +26,8 @@ public class SearchData implements Serializable {
2526

2627
private static final ObjectMapper mapper = new ObjectMapper()
2728
.setPropertyNamingStrategy(PropertyNamingStrategy.SNAKE_CASE)
28-
.setSerializationInclusion(Include.NON_NULL);
29+
.setSerializationInclusion(Include.NON_NULL)
30+
.setTimeZone(TimeZone.getDefault());
2931

3032
// set of special characters to be escaped before sending to SOLR
3133
protected static Pattern TEXT_REGEX_CHARACTERS = Pattern.compile("[{}()\\[\\].+*?^$\\\\|]");

src/main/java/gov/osti/services/ErrorResponse.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
import com.fasterxml.jackson.databind.PropertyNamingStrategy;
1010
import java.util.ArrayList;
1111
import java.util.List;
12+
import java.util.TimeZone;
1213
import javax.ws.rs.core.MediaType;
1314
import javax.ws.rs.core.Response;
1415
import org.apache.commons.lang3.StringUtils;
@@ -41,7 +42,8 @@ public class ErrorResponse {
4142
// XML/JSON mapper reference
4243
private static final ObjectMapper mapper = new ObjectMapper()
4344
.setPropertyNamingStrategy(PropertyNamingStrategy.SNAKE_CASE)
44-
.setSerializationInclusion(JsonInclude.Include.NON_NULL);
45+
.setSerializationInclusion(JsonInclude.Include.NON_NULL)
46+
.setTimeZone(TimeZone.getDefault());;
4547

4648
protected ErrorResponse() {
4749

0 commit comments

Comments
 (0)