diff --git a/src/main/java/org/springframework/samples/petclinic/mapper/PetTypeMapper.java b/src/main/java/org/springframework/samples/petclinic/mapper/PetTypeMapper.java index 486e5cbaf4b87b88665096200abb7cb6e7a1386d..05617161ad4d1bcf9c4c4d3b933e29944ecef6f1 100644 --- a/src/main/java/org/springframework/samples/petclinic/mapper/PetTypeMapper.java +++ b/src/main/java/org/springframework/samples/petclinic/mapper/PetTypeMapper.java @@ -19,6 +19,7 @@ public interface PetTypeMapper { PetType toPetType(PetTypeFieldsDto petTypeFieldsDto); PetTypeDto toPetTypeDto(PetType petType); + PetTypeFieldsDto toPetTypeFieldsDto(PetType petType); List<PetTypeDto> toPetTypeDtos(Collection<PetType> petTypes); } diff --git a/src/main/java/org/springframework/samples/petclinic/rest/controller/OwnerRestController.java b/src/main/java/org/springframework/samples/petclinic/rest/controller/OwnerRestController.java index cb2d0bad088c153ae7a59f1bc4fd246ef256d387..2b0107335a3c26c48369e83b995fdac426c5ce55 100644 --- a/src/main/java/org/springframework/samples/petclinic/rest/controller/OwnerRestController.java +++ b/src/main/java/org/springframework/samples/petclinic/rest/controller/OwnerRestController.java @@ -24,7 +24,6 @@ import org.springframework.samples.petclinic.mapper.PetMapper; import org.springframework.samples.petclinic.mapper.VisitMapper; import org.springframework.samples.petclinic.model.Owner; import org.springframework.samples.petclinic.model.Pet; -import org.springframework.samples.petclinic.model.PetType; import org.springframework.samples.petclinic.model.Visit; import org.springframework.samples.petclinic.rest.api.OwnersApi; import org.springframework.samples.petclinic.rest.dto.*; @@ -140,8 +139,6 @@ public class OwnerRestController implements OwnersApi { Owner owner = new Owner(); owner.setId(ownerId); pet.setOwner(owner); - PetType petType = this.clinicService.findPetTypeByName(pet.getType().getName()); - pet.setType(petType); this.clinicService.savePet(pet); PetDto petDto = petMapper.toPetDto(pet); headers.setLocation(UriComponentsBuilder.newInstance().path("/api/pets/{id}") diff --git a/src/main/java/org/springframework/samples/petclinic/rest/controller/PetTypeRestController.java b/src/main/java/org/springframework/samples/petclinic/rest/controller/PetTypeRestController.java index 870cd661879d0577b8905be391cd851606960231..3d0f423384a8b325b5a1d25bf6a25d2603e9b7b9 100644 --- a/src/main/java/org/springframework/samples/petclinic/rest/controller/PetTypeRestController.java +++ b/src/main/java/org/springframework/samples/petclinic/rest/controller/PetTypeRestController.java @@ -23,6 +23,7 @@ import org.springframework.samples.petclinic.mapper.PetTypeMapper; import org.springframework.samples.petclinic.model.PetType; import org.springframework.samples.petclinic.rest.api.PettypesApi; import org.springframework.samples.petclinic.rest.dto.PetTypeDto; +import org.springframework.samples.petclinic.rest.dto.PetTypeFieldsDto; import org.springframework.samples.petclinic.service.ClinicService; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.*; @@ -32,7 +33,6 @@ import jakarta.transaction.Transactional; import java.util.ArrayList; import java.util.List; -import java.util.Objects; @RestController @CrossOrigin(exposedHeaders = "errors, content-type") @@ -70,16 +70,12 @@ public class PetTypeRestController implements PettypesApi { @PreAuthorize("hasRole(@roles.VET_ADMIN)") @Override - public ResponseEntity<PetTypeDto> addPetType(PetTypeDto petTypeDto) { + public ResponseEntity<PetTypeDto> addPetType(PetTypeFieldsDto petTypeFieldsDto) { HttpHeaders headers = new HttpHeaders(); - if (Objects.nonNull(petTypeDto.getId()) && !petTypeDto.getId().equals(0)) { - return new ResponseEntity<>(HttpStatus.BAD_REQUEST); - } else { - final PetType type = petTypeMapper.toPetType(petTypeDto); - this.clinicService.savePetType(type); - headers.setLocation(UriComponentsBuilder.newInstance().path("/api/pettypes/{id}").buildAndExpand(type.getId()).toUri()); - return new ResponseEntity<>(petTypeMapper.toPetTypeDto(type), headers, HttpStatus.CREATED); - } + final PetType type = petTypeMapper.toPetType(petTypeFieldsDto); + this.clinicService.savePetType(type); + headers.setLocation(UriComponentsBuilder.newInstance().path("/api/pettypes/{id}").buildAndExpand(type.getId()).toUri()); + return new ResponseEntity<>(petTypeMapper.toPetTypeDto(type), headers, HttpStatus.CREATED); } @PreAuthorize("hasRole(@roles.VET_ADMIN)") diff --git a/src/main/java/org/springframework/samples/petclinic/service/ClinicService.java b/src/main/java/org/springframework/samples/petclinic/service/ClinicService.java index 6b01f1a921cde82e7b7cec0167c0a89b834bcaea..32d0975ebdf60afc243553207113d09639f0484c 100644 --- a/src/main/java/org/springframework/samples/petclinic/service/ClinicService.java +++ b/src/main/java/org/springframework/samples/petclinic/service/ClinicService.java @@ -67,6 +67,4 @@ public interface ClinicService { void deleteSpecialty(Specialty specialty) throws DataAccessException; List<Specialty> findSpecialtiesByNameIn(Set<String> names) throws DataAccessException; - - PetType findPetTypeByName(String name) throws DataAccessException; } diff --git a/src/main/java/org/springframework/samples/petclinic/service/ClinicServiceImpl.java b/src/main/java/org/springframework/samples/petclinic/service/ClinicServiceImpl.java index 001fb4aedc944ffbe78866dfaf7236284517209f..e1f456d8b36cc67c3a43f046df84013993a40f9b 100644 --- a/src/main/java/org/springframework/samples/petclinic/service/ClinicServiceImpl.java +++ b/src/main/java/org/springframework/samples/petclinic/service/ClinicServiceImpl.java @@ -296,17 +296,4 @@ public class ClinicServiceImpl implements ClinicService { } return specialties; } - - @Override - @Transactional(readOnly = true) - public PetType findPetTypeByName(String name){ - PetType petType; - try { - petType = petTypeRepository.findByName(name); - } catch (ObjectRetrievalFailureException|EmptyResultDataAccessException e) { - // just ignore not found exceptions for Jdbc/Jpa realization - return null; - } - return petType; - } } diff --git a/src/main/resources/openapi.yml b/src/main/resources/openapi.yml index c49fe4968ebe8c5125802a200687dc41ebe59ca0..162ef275488a05305dc7d11cccb401a95cef426a 100755 --- a/src/main/resources/openapi.yml +++ b/src/main/resources/openapi.yml @@ -557,7 +557,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/PetType' + $ref: '#/components/schemas/PetTypeFields' required: true responses: 200: @@ -2170,7 +2170,6 @@ components: format: int32 minimum: 0 example: 1 - readOnly: true required: - id User: diff --git a/src/test/java/org/springframework/samples/petclinic/rest/controller/PetTypeRestControllerTests.java b/src/test/java/org/springframework/samples/petclinic/rest/controller/PetTypeRestControllerTests.java index 72cb078e8c6922249c1f6f29e85f8f738a9187dd..2e21d73ae4bdf0c940bac36489f95163292ae1b2 100644 --- a/src/test/java/org/springframework/samples/petclinic/rest/controller/PetTypeRestControllerTests.java +++ b/src/test/java/org/springframework/samples/petclinic/rest/controller/PetTypeRestControllerTests.java @@ -26,8 +26,6 @@ import org.springframework.http.MediaType; import org.springframework.samples.petclinic.mapper.PetTypeMapper; import org.springframework.samples.petclinic.model.PetType; import org.springframework.samples.petclinic.rest.advice.ExceptionControllerAdvice; -import org.springframework.samples.petclinic.rest.controller.PetTypeRestController; -import org.springframework.samples.petclinic.rest.dto.PetTypeDto; import org.springframework.samples.petclinic.service.ClinicService; import org.springframework.samples.petclinic.service.clinicService.ApplicationTestConfig; import org.springframework.security.test.context.support.WithMockUser; @@ -72,7 +70,7 @@ class PetTypeRestControllerTests { this.mockMvc = MockMvcBuilders.standaloneSetup(petTypeRestController) .setControllerAdvice(new ExceptionControllerAdvice()) .build(); - petTypes = new ArrayList<PetType>(); + petTypes = new ArrayList<>(); PetType petType = new PetType(); petType.setId(1); @@ -176,7 +174,7 @@ class PetTypeRestControllerTests { PetType newPetType = petTypes.get(0); newPetType.setId(null); ObjectMapper mapper = new ObjectMapper(); - String newPetTypeAsJSON = mapper.writeValueAsString(petTypeMapper.toPetTypeDto(newPetType)); + String newPetTypeAsJSON = mapper.writeValueAsString(petTypeMapper.toPetTypeFieldsDto(newPetType)); this.mockMvc.perform(post("/api/pettypes/") .content(newPetTypeAsJSON).accept(MediaType.APPLICATION_JSON_VALUE).contentType(MediaType.APPLICATION_JSON_VALUE)) .andExpect(status().isCreated()); @@ -194,17 +192,7 @@ class PetTypeRestControllerTests { .content(newPetTypeAsJSON).accept(MediaType.APPLICATION_JSON_VALUE).contentType(MediaType.APPLICATION_JSON_VALUE)) .andExpect(status().isBadRequest()); } - @Test - @WithMockUser(roles="VET_ADMIN") - void testCreatePetTypeErrorWithId() throws Exception { - PetType newPetType = petTypes.get(0); - newPetType.setId(1); - ObjectMapper mapper = new ObjectMapper(); - String newPetTypeAsJSON = mapper.writeValueAsString(petTypeMapper.toPetTypeDto(newPetType)); - this.mockMvc.perform(post("/api/pettypes/") - .content(newPetTypeAsJSON).accept(MediaType.APPLICATION_JSON_VALUE).contentType(MediaType.APPLICATION_JSON_VALUE)) - .andExpect(status().isBadRequest()); - } + @Test @WithMockUser(roles="VET_ADMIN") void testUpdatePetTypeSuccess() throws Exception { diff --git a/src/test/java/org/springframework/samples/petclinic/service/clinicService/AbstractClinicServiceTests.java b/src/test/java/org/springframework/samples/petclinic/service/clinicService/AbstractClinicServiceTests.java index 55a4b423119cc31eb2bf7e251885684f3fdd0468..aff2ec156fa25a97a908538be17459095655c47d 100644 --- a/src/test/java/org/springframework/samples/petclinic/service/clinicService/AbstractClinicServiceTests.java +++ b/src/test/java/org/springframework/samples/petclinic/service/clinicService/AbstractClinicServiceTests.java @@ -499,11 +499,4 @@ abstract class AbstractClinicServiceTests { && actual.getId().equals(expected.getId()))).isTrue(); } } - - @Test - @Transactional - void shouldFindPetTypeByName(){ - PetType petType = this.clinicService.findPetTypeByName("cat"); - assertThat(petType.getId()).isEqualTo(1); - } }