Skip to content

Commit c2d3f31

Browse files
committed
feat: Performance logging
1 parent 5a6d51c commit c2d3f31

14 files changed

+223
-49
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
package it.gov.pagopa.pu.fileshare.connector.organization;
2+
3+
import it.gov.pagopa.pu.p4paorganization.dto.generated.Organization;
4+
5+
public interface OrganizationService {
6+
Organization getOrganizationById(Long organizationId, String accessToken);
7+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
package it.gov.pagopa.pu.fileshare.connector.organization;
2+
3+
import it.gov.pagopa.pu.fileshare.connector.organization.client.OrganizationClient;
4+
import it.gov.pagopa.pu.p4paorganization.dto.generated.Organization;
5+
import org.springframework.stereotype.Service;
6+
7+
@Service
8+
public class OrganizationServiceImpl implements OrganizationService {
9+
10+
private final OrganizationClient client;
11+
12+
public OrganizationServiceImpl(OrganizationClient client) {
13+
this.client = client;
14+
}
15+
16+
@Override
17+
public Organization getOrganizationById(Long organizationId, String accessToken) {
18+
return client.getOrganizationById(organizationId, accessToken);
19+
}
20+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
package it.gov.pagopa.pu.fileshare.connector.processexecutions;
2+
3+
import it.gov.pagopa.pu.p4paprocessexecutions.dto.generated.IngestionFlowFile;
4+
import it.gov.pagopa.pu.p4paprocessexecutions.dto.generated.IngestionFlowFileRequestDTO;
5+
6+
public interface IngestionFlowFileService {
7+
Long createIngestionFlowFile(IngestionFlowFileRequestDTO ingestionFlowFileDTO, String accessToken);
8+
IngestionFlowFile getIngestionFlowFile(Long ingestionFlowFileId, String accessToken);
9+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
package it.gov.pagopa.pu.fileshare.connector.processexecutions;
2+
3+
import it.gov.pagopa.pu.fileshare.connector.processexecutions.client.IngestionFlowFileClient;
4+
import it.gov.pagopa.pu.p4paprocessexecutions.dto.generated.IngestionFlowFile;
5+
import it.gov.pagopa.pu.p4paprocessexecutions.dto.generated.IngestionFlowFileRequestDTO;
6+
import org.springframework.stereotype.Service;
7+
8+
@Service
9+
public class IngestionFlowFileServiceImpl implements IngestionFlowFileService {
10+
11+
private final IngestionFlowFileClient client;
12+
13+
public IngestionFlowFileServiceImpl(IngestionFlowFileClient client) {
14+
this.client = client;
15+
}
16+
17+
@Override
18+
public Long createIngestionFlowFile(IngestionFlowFileRequestDTO ingestionFlowFileDTO, String accessToken) {
19+
return client.createIngestionFlowFile(ingestionFlowFileDTO, accessToken);
20+
}
21+
22+
@Override
23+
public IngestionFlowFile getIngestionFlowFile(Long ingestionFlowFileId, String accessToken) {
24+
return client.getIngestionFlowFile(ingestionFlowFileId, accessToken);
25+
}
26+
}

src/main/java/it/gov/pagopa/pu/fileshare/controller/IngestionFlowFilesController.java

+6-6
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
import it.gov.pagopa.pu.fileshare.dto.generated.IngestionFlowFileType;
77
import it.gov.pagopa.pu.fileshare.dto.generated.UploadIngestionFlowFileResponseDTO;
88
import it.gov.pagopa.pu.fileshare.security.SecurityUtils;
9-
import it.gov.pagopa.pu.fileshare.service.ingestion.IngestionFlowFileService;
9+
import it.gov.pagopa.pu.fileshare.service.ingestion.IngestionFlowFileFacadeService;
1010
import org.springframework.core.io.InputStreamResource;
1111
import org.springframework.core.io.Resource;
1212
import org.springframework.http.ContentDisposition;
@@ -19,24 +19,24 @@
1919
@RestController
2020
public class IngestionFlowFilesController implements IngestionFlowFileApi {
2121

22-
private final IngestionFlowFileService ingestionFlowFileService;
22+
private final IngestionFlowFileFacadeService ingestionFlowFileFacadeService;
2323

2424
public IngestionFlowFilesController(
25-
IngestionFlowFileService ingestionFlowFileService) {
26-
this.ingestionFlowFileService = ingestionFlowFileService;
25+
IngestionFlowFileFacadeService ingestionFlowFileFacadeService) {
26+
this.ingestionFlowFileFacadeService = ingestionFlowFileFacadeService;
2727
}
2828

2929
@Override
3030
public ResponseEntity<UploadIngestionFlowFileResponseDTO> uploadIngestionFlowFile(Long organizationId, IngestionFlowFileType ingestionFlowFileType, FileOrigin fileOrigin, String fileName, MultipartFile ingestionFlowFile) {
31-
Long ingestionFlowFileId = ingestionFlowFileService.uploadIngestionFlowFile(organizationId, ingestionFlowFileType, fileOrigin, fileName, ingestionFlowFile, SecurityUtils.getLoggedUser(),
31+
Long ingestionFlowFileId = ingestionFlowFileFacadeService.uploadIngestionFlowFile(organizationId, ingestionFlowFileType, fileOrigin, fileName, ingestionFlowFile, SecurityUtils.getLoggedUser(),
3232
SecurityUtils.getAccessToken());
3333
return ResponseEntity.ok(new UploadIngestionFlowFileResponseDTO(ingestionFlowFileId));
3434
}
3535

3636

3737
@Override
3838
public ResponseEntity<Resource> downloadIngestionFlowFile(Long organizationId, Long ingestionFlowFileId) {
39-
FileResourceDTO fileResourceDTO = ingestionFlowFileService.downloadIngestionFlowFile(organizationId, ingestionFlowFileId, SecurityUtils.getLoggedUser(), SecurityUtils.getAccessToken());
39+
FileResourceDTO fileResourceDTO = ingestionFlowFileFacadeService.downloadIngestionFlowFile(organizationId, ingestionFlowFileId, SecurityUtils.getLoggedUser(), SecurityUtils.getAccessToken());
4040

4141
Resource fileResource = new InputStreamResource(fileResourceDTO.getResourceStream());
4242

src/main/java/it/gov/pagopa/pu/fileshare/service/UserAuthorizationService.java

+5-5
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package it.gov.pagopa.pu.fileshare.service;
22

3-
import it.gov.pagopa.pu.fileshare.connector.organization.client.OrganizationClient;
3+
import it.gov.pagopa.pu.fileshare.connector.organization.OrganizationService;
44
import it.gov.pagopa.pu.p4paauth.dto.generated.UserInfo;
55
import it.gov.pagopa.pu.p4paorganization.dto.generated.Organization;
66
import lombok.extern.slf4j.Slf4j;
@@ -11,14 +11,14 @@
1111
@Slf4j
1212
@Service
1313
public class UserAuthorizationService {
14-
private final OrganizationClient organizationClient;
14+
private final OrganizationService organizationService;
1515

16-
public UserAuthorizationService(OrganizationClient organizationClient) {
17-
this.organizationClient = organizationClient;
16+
public UserAuthorizationService(OrganizationService organizationService) {
17+
this.organizationService = organizationService;
1818
}
1919

2020
public void checkUserAuthorization(Long organizationId, UserInfo user, String accessToken) {
21-
Organization organization = organizationClient.getOrganizationById(organizationId, accessToken);
21+
Organization organization = organizationService.getOrganizationById(organizationId, accessToken);
2222
boolean isAuthorized = user.getOrganizations().stream()
2323
.anyMatch(o -> o.getOrganizationIpaCode().equals(organization.getIpaCode())
2424
&& !CollectionUtils.isEmpty(o.getRoles()));

src/main/java/it/gov/pagopa/pu/fileshare/service/ingestion/IngestionFlowFileService.java src/main/java/it/gov/pagopa/pu/fileshare/service/ingestion/IngestionFlowFileFacadeService.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
import it.gov.pagopa.pu.p4paauth.dto.generated.UserInfo;
77
import org.springframework.web.multipart.MultipartFile;
88

9-
public interface IngestionFlowFileService {
9+
public interface IngestionFlowFileFacadeService {
1010
Long uploadIngestionFlowFile(Long organizationId, IngestionFlowFileType ingestionFlowFileType,
1111
FileOrigin fileOrigin, String fileName, MultipartFile ingestionFlowFile,
1212
UserInfo user, String accessToken);

src/main/java/it/gov/pagopa/pu/fileshare/service/ingestion/IngestionFlowFileServiceImpl.java src/main/java/it/gov/pagopa/pu/fileshare/service/ingestion/IngestionFlowFileFacadeServiceImpl.java

+10-9
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package it.gov.pagopa.pu.fileshare.service.ingestion;
22

33
import it.gov.pagopa.pu.fileshare.config.FoldersPathsConfig;
4-
import it.gov.pagopa.pu.fileshare.connector.processexecutions.client.IngestionFlowFileClient;
4+
import it.gov.pagopa.pu.fileshare.connector.processexecutions.IngestionFlowFileService;
55
import it.gov.pagopa.pu.fileshare.dto.FileResourceDTO;
66
import it.gov.pagopa.pu.fileshare.dto.generated.FileOrigin;
77
import it.gov.pagopa.pu.fileshare.dto.generated.IngestionFlowFileType;
@@ -28,30 +28,31 @@
2828

2929
@Slf4j
3030
@Service
31-
public class IngestionFlowFileServiceImpl implements IngestionFlowFileService {
31+
public class IngestionFlowFileFacadeServiceImpl implements IngestionFlowFileFacadeService {
3232
private final UserAuthorizationService userAuthorizationService;
3333
private final FileService fileService;
3434
private final FileStorerService fileStorerService;
3535
private final FoldersPathsConfig foldersPathsConfig;
36-
private final IngestionFlowFileClient ingestionFlowFileClient;
36+
private final IngestionFlowFileService ingestionFlowFileService;
3737
private final IngestionFlowFileDTOMapper ingestionFlowFileDTOMapper;
3838
private final String validIngestionFlowFileExt;
3939
private final String archivedSubFolder;
4040

41-
public IngestionFlowFileServiceImpl(
41+
public IngestionFlowFileFacadeServiceImpl(
4242
UserAuthorizationService userAuthorizationService,
4343
FileService fileService,
4444
FileStorerService fileStorerService,
4545
FoldersPathsConfig foldersPathsConfig,
46-
IngestionFlowFileClient ingestionFlowFileClient,
46+
IngestionFlowFileService ingestionFlowFileService,
4747
IngestionFlowFileDTOMapper ingestionFlowFileDTOMapper,
4848
@Value("${uploads.ingestion-flow-file.valid-extension}") String validIngestionFlowFileExt,
49-
@Value("${folders.process-target-sub-folders.archive}") String archivedSubFolder) {
49+
@Value("${folders.process-target-sub-folders.archive}") String archivedSubFolder
50+
) {
5051
this.userAuthorizationService = userAuthorizationService;
5152
this.fileService = fileService;
5253
this.fileStorerService = fileStorerService;
5354
this.foldersPathsConfig = foldersPathsConfig;
54-
this.ingestionFlowFileClient = ingestionFlowFileClient;
55+
this.ingestionFlowFileService = ingestionFlowFileService;
5556
this.ingestionFlowFileDTOMapper = ingestionFlowFileDTOMapper;
5657
this.validIngestionFlowFileExt = validIngestionFlowFileExt;
5758
this.archivedSubFolder = archivedSubFolder;
@@ -73,7 +74,7 @@ public Long uploadIngestionFlowFile(Long organizationId, IngestionFlowFileType i
7374
String filePath = fileStorerService.saveToSharedFolder(organizationId, ingestionFlowFile,
7475
ingestionFlowFilePath, fileName);
7576

76-
return ingestionFlowFileClient.createIngestionFlowFile(
77+
return ingestionFlowFileService.createIngestionFlowFile(
7778
ingestionFlowFileDTOMapper.mapToIngestionFlowFileDTO(ingestionFlowFile,
7879
ingestionFlowFileType, fileOrigin, organizationId, filePath)
7980
, accessToken);
@@ -83,7 +84,7 @@ public Long uploadIngestionFlowFile(Long organizationId, IngestionFlowFileType i
8384
public FileResourceDTO downloadIngestionFlowFile(Long organizationId, Long ingestionFlowFileId, UserInfo user, String accessToken) {
8485
userAuthorizationService.checkUserAuthorization(organizationId, user, accessToken);
8586

86-
IngestionFlowFile ingestionFlowFile = ingestionFlowFileClient.getIngestionFlowFile(ingestionFlowFileId, accessToken);
87+
IngestionFlowFile ingestionFlowFile = ingestionFlowFileService.getIngestionFlowFile(ingestionFlowFileId, accessToken);
8788

8889
Path filePath = getFilePath(ingestionFlowFile);
8990

Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
package it.gov.pagopa.pu.fileshare.connector.organization;
2+
3+
import it.gov.pagopa.pu.fileshare.connector.organization.client.OrganizationClient;
4+
import it.gov.pagopa.pu.p4paorganization.dto.generated.Organization;
5+
import org.junit.jupiter.api.AfterEach;
6+
import org.junit.jupiter.api.Assertions;
7+
import org.junit.jupiter.api.BeforeEach;
8+
import org.junit.jupiter.api.Test;
9+
import org.junit.jupiter.api.extension.ExtendWith;
10+
import org.mockito.Mock;
11+
import org.mockito.Mockito;
12+
import org.mockito.junit.jupiter.MockitoExtension;
13+
14+
@ExtendWith(MockitoExtension.class)
15+
class OrganizationServiceTest {
16+
17+
@Mock
18+
private OrganizationClient clientMock;
19+
20+
private OrganizationService service;
21+
22+
@BeforeEach
23+
void init(){
24+
service = new OrganizationServiceImpl(clientMock);
25+
}
26+
27+
@AfterEach
28+
void verifyNoMoreInteractions(){
29+
Mockito.verifyNoMoreInteractions(clientMock);
30+
}
31+
32+
@Test
33+
void whenGetOrganizationByIdThenInvokeClient(){
34+
// Given
35+
Long organizationId = 1L;
36+
String accessToken = "ACCESSTOKEN";
37+
Organization expectedResult = new Organization();
38+
39+
Mockito.when(clientMock.getOrganizationById(Mockito.same(organizationId), Mockito.same(accessToken)))
40+
.thenReturn(expectedResult);
41+
42+
// When
43+
Organization result = service.getOrganizationById(organizationId, accessToken);
44+
45+
// Then
46+
Assertions.assertSame(expectedResult, result);
47+
}
48+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
package it.gov.pagopa.pu.fileshare.connector.processexecutions;
2+
3+
import it.gov.pagopa.pu.fileshare.connector.processexecutions.client.IngestionFlowFileClient;
4+
import it.gov.pagopa.pu.p4paprocessexecutions.dto.generated.IngestionFlowFile;
5+
import it.gov.pagopa.pu.p4paprocessexecutions.dto.generated.IngestionFlowFileRequestDTO;
6+
import org.junit.jupiter.api.AfterEach;
7+
import org.junit.jupiter.api.Assertions;
8+
import org.junit.jupiter.api.BeforeEach;
9+
import org.junit.jupiter.api.Test;
10+
import org.junit.jupiter.api.extension.ExtendWith;
11+
import org.mockito.Mock;
12+
import org.mockito.Mockito;
13+
import org.mockito.junit.jupiter.MockitoExtension;
14+
15+
@ExtendWith(MockitoExtension.class)
16+
class IngestionFlowFileServiceTest {
17+
18+
@Mock
19+
private IngestionFlowFileClient clientMock;
20+
21+
private IngestionFlowFileService service;
22+
23+
@BeforeEach
24+
void init(){
25+
service = new IngestionFlowFileServiceImpl(clientMock);
26+
}
27+
28+
@AfterEach
29+
void verifyNoMoreInteractions(){
30+
Mockito.verifyNoMoreInteractions(clientMock);
31+
}
32+
33+
@Test
34+
void whenGetIngestionFlowFileThenInvokeClient(){
35+
// Given
36+
Long organizationId = 1L;
37+
String accessToken = "ACCESSTOKEN";
38+
IngestionFlowFile expectedResult = new IngestionFlowFile();
39+
40+
Mockito.when(clientMock.getIngestionFlowFile(Mockito.same(organizationId), Mockito.same(accessToken)))
41+
.thenReturn(expectedResult);
42+
43+
// When
44+
IngestionFlowFile result = service.getIngestionFlowFile(organizationId, accessToken);
45+
46+
// Then
47+
Assertions.assertSame(expectedResult, result);
48+
}
49+
50+
@Test
51+
void whenCreateIngestionFlowFileThenInvokeClient(){
52+
// Given
53+
IngestionFlowFileRequestDTO requestDTO = new IngestionFlowFileRequestDTO();
54+
String accessToken = "ACCESSTOKEN";
55+
Long expectedResult = 2L;
56+
57+
Mockito.when(clientMock.createIngestionFlowFile(Mockito.same(requestDTO), Mockito.same(accessToken)))
58+
.thenReturn(expectedResult);
59+
60+
// When
61+
Long result = service.createIngestionFlowFile(requestDTO, accessToken);
62+
63+
// Then
64+
Assertions.assertSame(expectedResult, result);
65+
}
66+
}

src/test/java/it/gov/pagopa/pu/fileshare/controller/IngestionFlowFilesControllerTest.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
import it.gov.pagopa.pu.fileshare.dto.FileResourceDTO;
66
import it.gov.pagopa.pu.fileshare.dto.generated.IngestionFlowFileType;
77
import it.gov.pagopa.pu.fileshare.security.JwtAuthenticationFilter;
8-
import it.gov.pagopa.pu.fileshare.service.ingestion.IngestionFlowFileService;
8+
import it.gov.pagopa.pu.fileshare.service.ingestion.IngestionFlowFileFacadeService;
99
import it.gov.pagopa.pu.fileshare.util.TestUtils;
1010
import org.junit.jupiter.api.Test;
1111
import org.mockito.Mockito;
@@ -36,7 +36,7 @@ class IngestionFlowFilesControllerTest {
3636
private MockMvc mockMvc;
3737

3838
@MockitoBean
39-
private IngestionFlowFileService serviceMock;
39+
private IngestionFlowFileFacadeService serviceMock;
4040

4141
@Test
4242
void givenCorrectRequestWhenUploadIngestionFlowFileThenOk() throws Exception {

src/test/java/it/gov/pagopa/pu/fileshare/security/WebSecurityConfigTest.java

+4-8
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,7 @@
11
package it.gov.pagopa.pu.fileshare.security;
22

3-
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
4-
53
import it.gov.pagopa.pu.fileshare.service.AuthorizationService;
6-
import it.gov.pagopa.pu.fileshare.service.ingestion.IngestionFlowFileService;
4+
import it.gov.pagopa.pu.fileshare.service.ingestion.IngestionFlowFileFacadeService;
75
import org.junit.jupiter.api.Test;
86
import org.springframework.beans.factory.annotation.Autowired;
97
import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest;
@@ -13,7 +11,8 @@
1311
import org.springframework.test.context.bean.override.mockito.MockitoBean;
1412
import org.springframework.test.web.servlet.MockMvc;
1513
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;
16-
import org.springframework.web.context.WebApplicationContext;
14+
15+
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
1716

1817
@WebMvcTest(includeFilters = @ComponentScan.Filter(type = FilterType.ASSIGNABLE_TYPE,
1918
classes = JwtAuthenticationFilter.class) )
@@ -23,13 +22,10 @@ class WebSecurityConfigTest {
2322
@Autowired
2423
private MockMvc mockMvc;
2524

26-
@Autowired
27-
private WebApplicationContext context;
28-
2925
@MockitoBean
3026
private AuthorizationService authorizationServiceMock;
3127
@MockitoBean
32-
private IngestionFlowFileService ingestionFlowFileServiceMock;
28+
private IngestionFlowFileFacadeService ingestionFlowFileFacadeServiceMock;
3329

3430
@Test
3531
void givenURLWhenWithoutAccessTokenThenReturn403() throws Exception {

0 commit comments

Comments
 (0)