Skip to content

Commit 8d22c45

Browse files
author
Dennis Labordus
committed
Refactor Rest Interface, added UUID to entry for retrieval.
Signed-off-by: Dennis Labordus <[email protected]>
1 parent e03bdb4 commit 8d22c45

File tree

16 files changed

+164
-85
lines changed

16 files changed

+164
-85
lines changed

app/src/main/java/org/lfenergy/compas/scl/validator/rest/SclResourceConstants.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,4 +9,5 @@ public final class SclResourceConstants {
99
}
1010

1111
public static final String TYPE_PATH_PARAM = "type";
12+
public static final String ID_PARAM = "id";
1213
}

app/src/main/java/org/lfenergy/compas/scl/validator/rest/v1/NsdocResource.java

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -4,17 +4,15 @@
44
package org.lfenergy.compas.scl.validator.rest.v1;
55

66
import io.quarkus.security.Authenticated;
7-
import org.lfenergy.compas.scl.validator.rest.v1.model.NsdocGetRequest;
87
import org.lfenergy.compas.scl.validator.rest.v1.model.NsdocListResponse;
98
import org.lfenergy.compas.scl.validator.service.NsdocService;
109

1110
import javax.enterprise.context.RequestScoped;
12-
import javax.validation.Valid;
13-
import javax.ws.rs.Consumes;
14-
import javax.ws.rs.GET;
15-
import javax.ws.rs.Path;
16-
import javax.ws.rs.Produces;
11+
import javax.ws.rs.*;
1712
import javax.ws.rs.core.MediaType;
13+
import java.util.UUID;
14+
15+
import static org.lfenergy.compas.scl.validator.rest.SclResourceConstants.ID_PARAM;
1816

1917
@Authenticated
2018
@RequestScoped
@@ -27,7 +25,6 @@ public NsdocResource(NsdocService nsdocService) {
2725
}
2826

2927
@GET
30-
@Path("list")
3128
@Consumes(MediaType.APPLICATION_XML)
3229
@Produces(MediaType.APPLICATION_XML)
3330
public NsdocListResponse list() {
@@ -37,10 +34,10 @@ public NsdocListResponse list() {
3734
}
3835

3936
@GET
40-
@Path("get")
37+
@Path("{" + ID_PARAM + "}")
4138
@Consumes(MediaType.APPLICATION_XML)
4239
@Produces(MediaType.APPLICATION_XML)
43-
public String get(@Valid NsdocGetRequest request) {
44-
return nsdocService.get(request.getId());
40+
public String get(@PathParam(ID_PARAM) UUID id) {
41+
return nsdocService.get(id);
4542
}
4643
}

app/src/main/java/org/lfenergy/compas/scl/validator/rest/v1/model/NsdocGetRequest.java

Lines changed: 0 additions & 32 deletions
This file was deleted.

app/src/test/java/org/lfenergy/compas/scl/validator/rest/v1/NsdocResourceTest.java

Lines changed: 9 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -13,16 +13,17 @@
1313
import org.lfenergy.compas.scl.validator.exception.NsdocFileNotFoundException;
1414
import org.lfenergy.compas.scl.validator.exception.SclValidatorErrorCode;
1515
import org.lfenergy.compas.scl.validator.model.NsdocFile;
16-
import org.lfenergy.compas.scl.validator.rest.v1.model.NsdocGetRequest;
1716
import org.lfenergy.compas.scl.validator.service.NsdocService;
1817

1918
import java.util.List;
19+
import java.util.UUID;
2020

2121
import static io.restassured.RestAssured.given;
2222
import static io.restassured.path.xml.config.XmlPathConfig.xmlPathConfig;
2323
import static org.junit.jupiter.api.Assertions.assertEquals;
2424
import static org.junit.jupiter.api.Assertions.assertNotNull;
2525
import static org.lfenergy.compas.scl.validator.SclValidatorConstants.SCL_VALIDATOR_SERVICE_V1_NS_URI;
26+
import static org.lfenergy.compas.scl.validator.rest.SclResourceConstants.ID_PARAM;
2627
import static org.mockito.Mockito.*;
2728

2829
@QuarkusTest
@@ -40,7 +41,7 @@ void list_WhenCalled_ThenListReturned() {
4041
var response = given()
4142
.contentType(ContentType.XML)
4243
.when()
43-
.get("/list")
44+
.get()
4445
.then()
4546
.statusCode(200)
4647
.extract()
@@ -56,20 +57,17 @@ void list_WhenCalled_ThenListReturned() {
5657

5758
@Test
5859
void get_WhenCalled_ThenContentReturned() {
59-
String id = "IEC 61850-7-3";
60+
UUID id = UUID.randomUUID();
6061
String result = "<some><xml></xml></some>";
6162

62-
NsdocGetRequest request = new NsdocGetRequest();
63-
request.setId(id);
64-
6563
when(nsdocService.get(id))
6664
.thenReturn(result);
6765

6866
var response = given()
67+
.pathParam(ID_PARAM, id)
6968
.contentType(ContentType.XML)
70-
.body(request)
7169
.when()
72-
.get("/get")
70+
.get("/{" + ID_PARAM + "}")
7371
.then()
7472
.statusCode(200)
7573
.extract()
@@ -83,19 +81,16 @@ void get_WhenCalled_ThenContentReturned() {
8381

8482
@Test
8583
void get_WhenCalledWithUnknownFile_Then404Returned() {
86-
String id = "IEC 61850-7-3";
87-
88-
NsdocGetRequest request = new NsdocGetRequest();
89-
request.setId(id);
84+
UUID id = UUID.randomUUID();
9085

9186
when(nsdocService.get(id))
9287
.thenThrow(new NsdocFileNotFoundException("Some Message"));
9388

9489
var response = given()
90+
.pathParam(ID_PARAM, id)
9591
.contentType(ContentType.XML)
96-
.body(request)
9792
.when()
98-
.get("/get")
93+
.get("/{" + ID_PARAM + "}")
9994
.then()
10095
.statusCode(404)
10196
.extract()

app/src/test/java/org/lfenergy/compas/scl/validator/rest/v1/model/NsdocGetRequestTest.java

Lines changed: 0 additions & 13 deletions
This file was deleted.

service/src/main/java/org/lfenergy/compas/scl/validator/common/NsdocFinder.java

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -25,14 +25,14 @@ public class NsdocFinder {
2525
private static final Logger LOGGER = LoggerFactory.getLogger(NsdocFinder.class);
2626

2727
private final String nsdocDirectory;
28-
private final Map<String, NsdocFile> nsdocFiles;
28+
private final Map<UUID, NsdocFile> nsdocFiles;
2929

3030
public NsdocFinder(String nsdocDirectory) {
3131
this.nsdocDirectory = nsdocDirectory;
3232
this.nsdocFiles = getFilesFromDirectory(nsdocDirectory);
3333
}
3434

35-
private Map<String, NsdocFile> getFilesFromDirectory(String directoryName) {
35+
private Map<UUID, NsdocFile> getFilesFromDirectory(String directoryName) {
3636
File directory = new File(directoryName);
3737
if (directory.exists() && directory.isDirectory()) {
3838
var files = directory.listFiles();
@@ -51,7 +51,8 @@ private NsdocFile convertToNsdocFile(File file) {
5151
try {
5252
var nsdocInfo = new NsdocInfo(file);
5353
var nsdocFile = new NsdocFile();
54-
nsdocFile.setId(nsdocInfo.getId());
54+
nsdocFile.setId(UUID.randomUUID());
55+
nsdocFile.setNsDocId(nsdocInfo.getId());
5556
nsdocFile.setFilename(file.getName());
5657
nsdocFile.setChecksum(calculateChecksum(file));
5758
return nsdocFile;
@@ -73,11 +74,11 @@ private String calculateChecksum(File file) {
7374
public Collection<NsdocFile> getNsdocFiles() {
7475
return nsdocFiles.values()
7576
.stream()
76-
.sorted(Comparator.comparing(NsdocFile::getId))
77+
.sorted(Comparator.comparing(NsdocFile::getNsDocId))
7778
.collect(Collectors.toList());
7879
}
7980

80-
public String getNsdocFile(String id) {
81+
public String getNsdocFile(UUID id) {
8182
try {
8283
if (nsdocFiles.containsKey(id)) {
8384
var nsdocFile = nsdocFiles.get(id);

service/src/main/java/org/lfenergy/compas/scl/validator/common/NsdocInfo.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55

66
import org.lfenergy.compas.scl.validator.exception.SclValidatorException;
77

8-
import javax.xml.stream.XMLEventReader;
98
import javax.xml.stream.XMLInputFactory;
109
import javax.xml.stream.XMLStreamException;
1110
import javax.xml.stream.events.StartElement;
@@ -25,8 +24,8 @@ public class NsdocInfo {
2524

2625
public NsdocInfo(File file) {
2726
try (var fis = new FileInputStream(file)) {
28-
XMLInputFactory xmlInputFactory = XMLInputFactory.newInstance();
29-
XMLEventReader reader = xmlInputFactory.createXMLEventReader(fis);
27+
var xmlInputFactory = XMLInputFactory.newInstance();
28+
var reader = xmlInputFactory.createXMLEventReader(fis);
3029

3130
while (id == null && reader.hasNext()) {
3231
processEvent(reader.nextEvent());

service/src/main/java/org/lfenergy/compas/scl/validator/service/NsdocService.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
import javax.enterprise.context.ApplicationScoped;
1010
import javax.inject.Inject;
1111
import java.util.Collection;
12+
import java.util.UUID;
1213

1314
@ApplicationScoped
1415
public class NsdocService {
@@ -23,7 +24,7 @@ public Collection<NsdocFile> list() {
2324
return nsdocFinder.getNsdocFiles();
2425
}
2526

26-
public String get(String id) {
27+
public String get(UUID id) {
2728
return nsdocFinder.getNsdocFile(id);
2829
}
2930
}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
// SPDX-FileCopyrightText: 2022 Alliander N.V.
2+
//
3+
// SPDX-License-Identifier: Apache-2.0
4+
package org.lfenergy.compas.scl.validator.common;
5+
6+
class NsdocInfoTest {
7+
8+
}

service/src/test/java/org/lfenergy/compas/scl/validator/service/NsdocServiceTest.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
import org.mockito.junit.jupiter.MockitoExtension;
1313

1414
import java.util.List;
15+
import java.util.UUID;
1516

1617
import static org.junit.jupiter.api.Assertions.assertEquals;
1718
import static org.junit.jupiter.api.Assertions.assertNotNull;
@@ -44,7 +45,7 @@ void list_WhenCalled_ThenEmptyListReturned() {
4445

4546
@Test
4647
void get_WhenCalled_ThenContentReturned() {
47-
String id = "IEC 61850-7-3";
48+
UUID id = UUID.randomUUID();
4849
String content = "<some><content/></some>";
4950

5051
when(nsdocFinder.getNsdocFile(id)).thenReturn(content);

0 commit comments

Comments
 (0)