Skip to content
Snippets Groups Projects
Commit fefaf2ee authored by Jitka Viceníková's avatar Jitka Viceníková
Browse files

Merge branch 'feat-01' into 'develop'

feat: send request to visualization if getDriver is called

See merge request !39
parents d5e2c5a7 e7964de3
No related branches found
No related tags found
2 merge requests!54Merge develop into main,!39feat: send request to visualization if getDriver is called
Pipeline #
...@@ -4,11 +4,20 @@ import cz.muni.pa165.data.model.Driver; ...@@ -4,11 +4,20 @@ import cz.muni.pa165.data.model.Driver;
import cz.muni.pa165.data.repository.DriverRepository; import cz.muni.pa165.data.repository.DriverRepository;
import cz.muni.pa165.exceptions.BadRequestException; import cz.muni.pa165.exceptions.BadRequestException;
import cz.muni.pa165.exceptions.ResourceNotFoundException; import cz.muni.pa165.exceptions.ResourceNotFoundException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.client.RestClientException;
import org.springframework.web.client.RestTemplate;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map;
import java.util.Optional; import java.util.Optional;
/** /**
...@@ -17,19 +26,35 @@ import java.util.Optional; ...@@ -17,19 +26,35 @@ import java.util.Optional;
@Service @Service
public class DriverService extends DomainService<Driver> { public class DriverService extends DomainService<Driver> {
private static final Logger log = LoggerFactory.getLogger(DriverService.class);
private final DriverRepository driverRepository; private final DriverRepository driverRepository;
private final RestTemplate restTemplate;
private static final String VISUALIZATION_MODULE_URL = "http://localhost:8082/visualization";
@Autowired @Autowired
public DriverService(DriverRepository repository) { public DriverService(DriverRepository repository, RestTemplate restTemplate) {
super(repository, Driver.class); super(repository, Driver.class);
driverRepository = repository; driverRepository = repository;
this.restTemplate = restTemplate;
} }
@Transactional(readOnly = true) @Transactional(readOnly = true)
public Driver findById(Long id) { public Driver findById(Long id) {
return driverRepository.findById(id) Optional<Driver> dbDriver = driverRepository.findById(id);
.orElseThrow(() -> if (dbDriver.isEmpty()) {
new ResourceNotFoundException(entityClass, id)); throw new ResourceNotFoundException(entityClass, id);
}
try {
sendPostRequest(dbDriver.get());
} catch (RestClientException | IllegalArgumentException e) {
log.debug(String.format("The visualization module is not reachable on the URL: %s", VISUALIZATION_MODULE_URL));
}
return dbDriver.get();
} }
public Driver update(Long id, Driver driver) { public Driver update(Long id, Driver driver) {
...@@ -66,5 +91,17 @@ public class DriverService extends DomainService<Driver> { ...@@ -66,5 +91,17 @@ public class DriverService extends DomainService<Driver> {
repository.delete(driverFromDb.get()); repository.delete(driverFromDb.get());
} }
private void sendPostRequest(Driver driver) {
Map<String, Object> body = new HashMap<>();
body.put("data", driver.toString());
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
HttpEntity<Map<String, Object>> request = new HttpEntity<>(body, headers);
restTemplate.postForObject(VISUALIZATION_MODULE_URL, request, String.class);
log.debug(String.format("Sent request %s to %s.", request, VISUALIZATION_MODULE_URL));
}
} }
...@@ -9,6 +9,7 @@ import cz.muni.pa165.exceptions.BadRequestException; ...@@ -9,6 +9,7 @@ import cz.muni.pa165.exceptions.BadRequestException;
import cz.muni.pa165.exceptions.ResourceNotFoundException; import cz.muni.pa165.exceptions.ResourceNotFoundException;
import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
import org.springframework.web.client.RestTemplate;
import java.time.LocalDate; import java.time.LocalDate;
import java.util.HashSet; import java.util.HashSet;
...@@ -22,11 +23,13 @@ import static org.mockito.Mockito.*; ...@@ -22,11 +23,13 @@ import static org.mockito.Mockito.*;
class DriverServiceTest { class DriverServiceTest {
private DriverService driverService; private DriverService driverService;
private DriverRepository driverRepository; private DriverRepository driverRepository;
private RestTemplate restTemplate;
@BeforeEach @BeforeEach
void setUp() { void setUp() {
driverRepository = mock(DriverRepository.class); driverRepository = mock(DriverRepository.class);
driverService = new DriverService(driverRepository); restTemplate = mock(RestTemplate.class);
driverService = new DriverService(driverRepository, restTemplate);
} }
@Test @Test
......
...@@ -3,12 +3,15 @@ package cz.muni.pa165.rest; ...@@ -3,12 +3,15 @@ package cz.muni.pa165.rest;
import cz.muni.pa165.generated.api.VisualizationApiDelegate; import cz.muni.pa165.generated.api.VisualizationApiDelegate;
import cz.muni.pa165.generated.model.VisualizationSchemaCreateDto; import cz.muni.pa165.generated.model.VisualizationSchemaCreateDto;
import cz.muni.pa165.generated.model.VisualizationSchemaDto; import cz.muni.pa165.generated.model.VisualizationSchemaDto;
import jakarta.validation.constraints.NotNull;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.http.HttpStatus; import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity; import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import java.sql.Driver;
@Component @Component
public class VisualizationController implements VisualizationApiDelegate { public class VisualizationController implements VisualizationApiDelegate {
private static final Logger log = LoggerFactory.getLogger(VisualizationController.class); private static final Logger log = LoggerFactory.getLogger(VisualizationController.class);
...@@ -17,7 +20,7 @@ public class VisualizationController implements VisualizationApiDelegate { ...@@ -17,7 +20,7 @@ public class VisualizationController implements VisualizationApiDelegate {
public ResponseEntity<VisualizationSchemaDto> getVisualization(VisualizationSchemaCreateDto visualizationSchemaCreateDto) { public ResponseEntity<VisualizationSchemaDto> getVisualization(VisualizationSchemaCreateDto visualizationSchemaCreateDto) {
log.debug("getVisualization() called"); log.debug("getVisualization() called");
return new ResponseEntity<>(new VisualizationSchemaDto().message("--VISUALIZATION--"), HttpStatus.OK); return new ResponseEntity<>(new VisualizationSchemaDto().message("--VISUALIZATION--" + visualizationSchemaCreateDto.getData()), HttpStatus.OK);
} }
} }
...@@ -41,7 +41,7 @@ class IntegrationTests { ...@@ -41,7 +41,7 @@ class IntegrationTests {
.andReturn().getResponse().getContentAsString(); .andReturn().getResponse().getContentAsString();
log.info("response: {}", response); log.info("response: {}", response);
String expectedResponse = "{\"message\":\"--VISUALIZATION--\"}"; String expectedResponse = "{\"message\":\"--VISUALIZATION--Hello\"}";
assertEquals(expectedResponse, response); assertEquals(expectedResponse, response);
} }
......
...@@ -25,6 +25,6 @@ class VisualizationControllerTest { ...@@ -25,6 +25,6 @@ class VisualizationControllerTest {
ResponseEntity<VisualizationSchemaDto> responseEntity = visualizationController.getVisualization(new VisualizationSchemaCreateDto().data("test")); ResponseEntity<VisualizationSchemaDto> responseEntity = visualizationController.getVisualization(new VisualizationSchemaCreateDto().data("test"));
assertEquals(HttpStatus.OK, responseEntity.getStatusCode()); assertEquals(HttpStatus.OK, responseEntity.getStatusCode());
assertNotNull(responseEntity.getBody()); assertNotNull(responseEntity.getBody());
assertEquals("--VISUALIZATION--", responseEntity.getBody().getMessage()); assertEquals("--VISUALIZATION--test", responseEntity.getBody().getMessage());
} }
} }
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment