Skip to content

Commit 77c9aca

Browse files
authored
Merge pull request #56 from juherr/features/remove-joda
Features/remove joda
2 parents 6aef29c + bef391a commit 77c9aca

153 files changed

Lines changed: 2652 additions & 2042 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

pom.xml

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -153,6 +153,21 @@
153153
<artifactId>annotations</artifactId>
154154
<version>26.0.2</version>
155155
</dependency>
156+
<dependency>
157+
<groupId>org.assertj</groupId>
158+
<artifactId>assertj-core</artifactId>
159+
<version>3.27.3</version>
160+
</dependency>
161+
<dependency>
162+
<groupId>org.mockito</groupId>
163+
<artifactId>mockito-junit-jupiter</artifactId>
164+
<version>5.19.0</version>
165+
</dependency>
166+
<dependency>
167+
<groupId>com.jayway.jsonpath</groupId>
168+
<artifactId>json-path</artifactId>
169+
<version>2.9.0</version>
170+
</dependency>
156171
</dependencies>
157172
</dependencyManagement>
158173

@@ -184,7 +199,7 @@
184199
<version>[17,)</version>
185200
</requireJavaVersion>
186201
<requireMavenVersion>
187-
<version>[3.3.9,)</version>
202+
<version>[3.9.0,)</version>
188203
</requireMavenVersion>
189204
</rules>
190205
</configuration>

steve-api/pom.xml

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,5 +32,36 @@
3232
<artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>
3333
<version>2.8.10</version>
3434
</dependency>
35+
36+
<dependency>
37+
<groupId>org.springframework</groupId>
38+
<artifactId>spring-test</artifactId>
39+
<scope>test</scope>
40+
</dependency>
41+
<dependency>
42+
<groupId>com.jayway.jsonpath</groupId>
43+
<artifactId>json-path</artifactId>
44+
<scope>test</scope>
45+
</dependency>
46+
<dependency>
47+
<groupId>org.junit.jupiter</groupId>
48+
<artifactId>junit-jupiter-engine</artifactId>
49+
<scope>test</scope>
50+
</dependency>
51+
<dependency>
52+
<groupId>org.junit.jupiter</groupId>
53+
<artifactId>junit-jupiter-params</artifactId>
54+
<scope>test</scope>
55+
</dependency>
56+
<dependency>
57+
<groupId>org.mockito</groupId>
58+
<artifactId>mockito-junit-jupiter</artifactId>
59+
<scope>test</scope>
60+
</dependency>
61+
<dependency>
62+
<groupId>org.assertj</groupId>
63+
<artifactId>assertj-core</artifactId>
64+
<scope>test</scope>
65+
</dependency>
3566
</dependencies>
3667
</project>

steve-api/src/main/java/de/rwth/idsg/steve/web/api/ApiControllerAdvice.java

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -19,13 +19,10 @@
1919
package de.rwth.idsg.steve.web.api;
2020

2121
import de.rwth.idsg.steve.SteveException;
22-
import de.rwth.idsg.steve.web.LocalDateTimeEditor;
2322
import de.rwth.idsg.steve.web.api.exception.BadRequestException;
2423
import de.rwth.idsg.steve.web.api.exception.NotFoundException;
2524
import lombok.Data;
2625
import lombok.extern.slf4j.Slf4j;
27-
import org.joda.time.DateTime;
28-
import org.joda.time.LocalDateTime;
2926
import org.springframework.beans.propertyeditors.StringTrimmerEditor;
3027
import org.springframework.http.HttpStatus;
3128
import org.springframework.validation.BindException;
@@ -38,6 +35,8 @@
3835

3936
import jakarta.servlet.http.HttpServletRequest;
4037

38+
import java.time.Instant;
39+
4140
/**
4241
* @author Sevket Goekay <sevketgokay@gmail.com>
4342
* @since 13.09.2022
@@ -49,7 +48,7 @@ public class ApiControllerAdvice {
4948
@InitBinder
5049
public void binder(WebDataBinder binder) {
5150
binder.registerCustomEditor(String.class, new StringTrimmerEditor(true));
52-
binder.registerCustomEditor(LocalDateTime.class, LocalDateTimeEditor.forApi());
51+
binder.registerCustomEditor(Instant.class, new InstantEditor());
5352
}
5453

5554
@ExceptionHandler(BindException.class)
@@ -103,7 +102,7 @@ public ApiErrorResponse handleException(HttpServletRequest req, Exception except
103102
public static ApiErrorResponse createResponse(String url, HttpStatus status, String message) {
104103
ApiErrorResponse result = new ApiErrorResponse();
105104

106-
result.setTimestamp(DateTime.now());
105+
result.setTimestamp(Instant.now());
107106
result.setStatus(status.value());
108107
result.setError(status.getReasonPhrase());
109108
result.setMessage(message);
@@ -114,11 +113,10 @@ public static ApiErrorResponse createResponse(String url, HttpStatus status, Str
114113

115114
@Data
116115
public static class ApiErrorResponse {
117-
private DateTime timestamp;
116+
private Instant timestamp;
118117
private int status;
119118
private String error;
120119
private String message;
121120
private String path;
122121
}
123-
124122
}

steve-api/src/main/java/de/rwth/idsg/steve/web/api/ConnectorsRestController.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
import io.swagger.v3.oas.annotations.tags.Tag;
3030
import org.springframework.web.bind.annotation.RequestMapping;
3131

32+
import java.time.ZoneOffset;
3233
import java.util.List;
3334

3435
import jakarta.validation.Valid;
@@ -78,7 +79,7 @@ public ApiConnectorList getConnectors(@Valid ConnectorStatusForm queryParams) {
7879
@StandardApiResponses
7980
@GetMapping(value = "OCPP_JSON_STATUS")
8081
public List<OcppJsonStatus> getOcppJsonStatus() {
81-
return chargePointHelperService.getOcppJsonStatus();
82+
return chargePointHelperService.getOcppJsonStatus(ZoneOffset.UTC);
8283
}
8384

8485
// -------------------------------------------------------------------------

steve-core/src/main/java/de/rwth/idsg/steve/web/LocalDateTimeEditor.java renamed to steve-api/src/main/java/de/rwth/idsg/steve/web/api/InstantEditor.java

Lines changed: 11 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -16,51 +16,41 @@
1616
* You should have received a copy of the GNU General Public License
1717
* along with this program. If not, see <https://www.gnu.org/licenses/>.
1818
*/
19-
package de.rwth.idsg.steve.web;
19+
package de.rwth.idsg.steve.web.api;
2020

2121
import com.google.common.base.Strings;
22-
import lombok.AccessLevel;
2322
import lombok.RequiredArgsConstructor;
24-
import org.joda.time.LocalDateTime;
25-
import org.joda.time.format.DateTimeFormat;
26-
import org.joda.time.format.DateTimeFormatter;
27-
import org.joda.time.format.ISODateTimeFormat;
23+
import lombok.extern.slf4j.Slf4j;
2824

2925
import java.beans.PropertyEditorSupport;
26+
import java.time.Instant;
3027

3128
/**
3229
* @author Sevket Goekay <sevketgokay@gmail.com>
3330
* @since 04.01.2015
3431
*/
35-
@RequiredArgsConstructor(access = AccessLevel.PRIVATE)
36-
public class LocalDateTimeEditor extends PropertyEditorSupport {
37-
38-
private final DateTimeFormatter dateTimeFormatter;
39-
40-
public static LocalDateTimeEditor forMvc() {
41-
return new LocalDateTimeEditor(DateTimeFormat.forPattern("yyyy-MM-dd HH:mm"));
42-
}
43-
44-
public static LocalDateTimeEditor forApi() {
45-
return new LocalDateTimeEditor(ISODateTimeFormat.localDateOptionalTimeParser());
46-
}
32+
@Slf4j
33+
@RequiredArgsConstructor
34+
public class InstantEditor extends PropertyEditorSupport {
4735

4836
@Override
4937
public String getAsText() {
5038
Object value = getValue();
5139
if (value == null) {
5240
return null;
53-
} else {
54-
return dateTimeFormatter.print((LocalDateTime) value);
5541
}
42+
if (value instanceof Instant instant) {
43+
return instant.toString();
44+
}
45+
throw new IllegalArgumentException("Cannot convert " + value.getClass() + " to Instant");
5646
}
5747

5848
@Override
5949
public void setAsText(String text) {
6050
if (Strings.isNullOrEmpty(text)) {
6151
setValue(null);
6252
} else {
63-
setValue(dateTimeFormatter.parseLocalDateTime(text));
53+
setValue(Instant.parse(text));
6454
}
6555
}
6656
}

steve-api/src/main/java/de/rwth/idsg/steve/web/api/dto/ApiTaskInfo.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,17 +23,17 @@
2323
import de.rwth.idsg.steve.ocpp.RequestResult;
2424
import de.rwth.idsg.steve.ocpp.TaskOrigin;
2525
import io.swagger.v3.oas.annotations.media.Schema;
26+
27+
import java.time.OffsetDateTime;
2628
import java.util.Map;
2729

2830
import lombok.Getter;
2931
import lombok.Setter;
30-
import org.joda.time.DateTime;
3132

3233
/**
3334
* @author fnkbsi
3435
* @since 18.10.2023
3536
*/
36-
3737
@Getter
3838
@Setter
3939
public class ApiTaskInfo {
@@ -54,9 +54,9 @@ public class ApiTaskInfo {
5454
private int resultSize;
5555

5656
@Schema(description = "Starttime")
57-
private DateTime startTimestamp;
57+
private OffsetDateTime startTimestamp;
5858
@Schema(description = "Endtime")
59-
private DateTime endTimestamp;
59+
private OffsetDateTime endTimestamp;
6060

6161
@Schema(description = "Error count")
6262
private int errorCount;

steve/src/test/java/de/rwth/idsg/steve/web/api/AbstractControllerTest.java renamed to steve-api/src/test/java/de/rwth/idsg/steve/web/api/AbstractControllerTest.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525
import org.springframework.http.MediaType;
2626
import org.springframework.http.converter.json.Jackson2ObjectMapperBuilder;
2727
import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
28-
import org.springframework.test.web.servlet.MockMvc;
28+
import org.springframework.test.web.servlet.assertj.MockMvcTester;
2929
import org.springframework.test.web.servlet.setup.StandaloneMockMvcBuilder;
3030

3131
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content;
@@ -48,10 +48,10 @@ public abstract class AbstractControllerTest {
4848
return objectMapper;
4949
}
5050

51-
protected MockMvc buildMockMvc(StandaloneMockMvcBuilder builder) {
52-
return builder.setControllerAdvice(new ApiControllerAdvice())
51+
protected MockMvcTester buildMockMvc(StandaloneMockMvcBuilder builder) {
52+
return MockMvcTester.create(builder.setControllerAdvice(new ApiControllerAdvice())
5353
.setMessageConverters(new MappingJackson2HttpMessageConverter(objectMapper))
5454
.alwaysExpect(content().contentTypeCompatibleWith(MediaType.APPLICATION_JSON))
55-
.build();
55+
.build());
5656
}
5757
}

0 commit comments

Comments
 (0)