diff --git a/.github/workflows/maven-build.yml b/.github/workflows/maven-build.yml index 442f5403ef37167c94098e08a943c61e0c45c49d..73edcee70a7bc580e15582255e3f85addeda6e0d 100644 --- a/.github/workflows/maven-build.yml +++ b/.github/workflows/maven-build.yml @@ -13,10 +13,10 @@ jobs: steps: - uses: actions/checkout@v2 - - name: Set up JDK 11 + - name: Set up JDK 17 uses: actions/setup-java@v2 with: - java-version: '11' + java-version: '17' distribution: 'adopt' cache: maven - name: Build with Maven diff --git a/pom.xml b/pom.xml index 1af53f806a04bb161eb4f6d98c8e9324a3bb7a6b..b69a501655857c8dbe22fc378098f9db96c96d53 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ <groupId>org.springframework.samples</groupId> <artifactId>spring-petclinic-rest</artifactId> - <version>2.6.2</version> + <version>3.0.2</version> <description>REST version of the Spring Petclinic sample application</description> <url>https://spring-petclinic.github.io/</url> @@ -13,21 +13,21 @@ <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> - <version>2.6.2</version> + <version>3.0.2</version> <relativePath/> <!-- lookup parent from Maven repository --> </parent> <properties> <!-- Third librairies --> <spring-data-jdbc.version>1.2.1.RELEASE</spring-data-jdbc.version> - <springdoc-openapi-ui.version>1.6.11</springdoc-openapi-ui.version> + <springdoc-openapi-ui.version>2.0.2</springdoc-openapi-ui.version> <jackson-databind-nullable.version>0.2.1</jackson-databind-nullable.version> <mapstruct.version>1.4.1.Final</mapstruct.version> <jaxb-api.version>2.3.0</jaxb-api.version> <!-- Maven plugins --> <jacoco.version>0.8.7</jacoco.version> - <openapi-generator-maven-plugin.version>6.0.1</openapi-generator-maven-plugin.version> + <openapi-generator-maven-plugin.version>6.3.0</openapi-generator-maven-plugin.version> <build-helper-maven-plugin.version>3.2.0</build-helper-maven-plugin.version> <!-- Docker --> @@ -123,7 +123,7 @@ </dependency> <dependency> <groupId>org.springdoc</groupId> - <artifactId>springdoc-openapi-ui</artifactId> + <artifactId>springdoc-openapi-starter-webmvc-ui</artifactId> <version>${springdoc-openapi-ui.version}</version> </dependency> @@ -284,7 +284,7 @@ <!-- Activating Java 8 features --> <performBeanValidation>true</performBeanValidation> <dateLibrary>java8</dateLibrary> - <java8>true</java8> + <useSpringBoot3>true</useSpringBoot3> <openApiNullable>false</openApiNullable> <!-- override the default library to jersey2 --> <serializationLibrary>jackson</serializationLibrary> diff --git a/src/main/java/org/springframework/samples/petclinic/PetClinicApplication.java b/src/main/java/org/springframework/samples/petclinic/PetClinicApplication.java index e218be11b928b63686ab245b4f5ddff1c6ae4bc4..b41f2f4861d1b440a2ace029bcc7046e8a64f014 100644 --- a/src/main/java/org/springframework/samples/petclinic/PetClinicApplication.java +++ b/src/main/java/org/springframework/samples/petclinic/PetClinicApplication.java @@ -2,6 +2,7 @@ package org.springframework.samples.petclinic; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.boot.builder.SpringApplicationBuilder; import org.springframework.boot.web.servlet.support.SpringBootServletInitializer; @SpringBootApplication diff --git a/src/main/java/org/springframework/samples/petclinic/model/BaseEntity.java b/src/main/java/org/springframework/samples/petclinic/model/BaseEntity.java index f5fbe67e57c125a158d882222fce7b99890d8cae..80bf7553921144838a72656f74090634d3a9a493 100644 --- a/src/main/java/org/springframework/samples/petclinic/model/BaseEntity.java +++ b/src/main/java/org/springframework/samples/petclinic/model/BaseEntity.java @@ -15,10 +15,10 @@ */ package org.springframework.samples.petclinic.model; -import javax.persistence.GeneratedValue; -import javax.persistence.GenerationType; -import javax.persistence.Id; -import javax.persistence.MappedSuperclass; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import jakarta.persistence.MappedSuperclass; import com.fasterxml.jackson.annotation.JsonIgnore; diff --git a/src/main/java/org/springframework/samples/petclinic/model/NamedEntity.java b/src/main/java/org/springframework/samples/petclinic/model/NamedEntity.java index f97dd52b102349b83e9c23181c60683fe4de2f62..0ae195337d30383d468bff5c87b5011e52d20080 100644 --- a/src/main/java/org/springframework/samples/petclinic/model/NamedEntity.java +++ b/src/main/java/org/springframework/samples/petclinic/model/NamedEntity.java @@ -15,10 +15,10 @@ */ package org.springframework.samples.petclinic.model; -import javax.persistence.Column; -import javax.persistence.MappedSuperclass; +import jakarta.persistence.Column; +import jakarta.persistence.MappedSuperclass; -import javax.validation.constraints.NotEmpty; +import jakarta.validation.constraints.NotEmpty; /** diff --git a/src/main/java/org/springframework/samples/petclinic/model/Owner.java b/src/main/java/org/springframework/samples/petclinic/model/Owner.java index 8591cbfdc27107277b1066ee412ee84c98f959d8..80c8935993842614419b65d495fdd4b62b86b89c 100644 --- a/src/main/java/org/springframework/samples/petclinic/model/Owner.java +++ b/src/main/java/org/springframework/samples/petclinic/model/Owner.java @@ -19,9 +19,9 @@ import org.springframework.beans.support.MutableSortDefinition; import org.springframework.beans.support.PropertyComparator; import org.springframework.core.style.ToStringCreator; -import javax.persistence.*; -import javax.validation.constraints.Digits; -import javax.validation.constraints.NotEmpty; +import jakarta.persistence.*; +import jakarta.validation.constraints.Digits; +import jakarta.validation.constraints.NotEmpty; import java.util.*; diff --git a/src/main/java/org/springframework/samples/petclinic/model/Person.java b/src/main/java/org/springframework/samples/petclinic/model/Person.java index a0da6f697bbc839c22fd9fe944cf305722b254d1..6257f2eee723122f08562c5e03182ba6a43025fb 100644 --- a/src/main/java/org/springframework/samples/petclinic/model/Person.java +++ b/src/main/java/org/springframework/samples/petclinic/model/Person.java @@ -15,10 +15,10 @@ */ package org.springframework.samples.petclinic.model; -import javax.persistence.Column; -import javax.persistence.MappedSuperclass; +import jakarta.persistence.Column; +import jakarta.persistence.MappedSuperclass; -import javax.validation.constraints.NotEmpty; +import jakarta.validation.constraints.NotEmpty; /** * Simple JavaBean domain object representing an person. diff --git a/src/main/java/org/springframework/samples/petclinic/model/Pet.java b/src/main/java/org/springframework/samples/petclinic/model/Pet.java index bf0883f63fd93c93ccbf5bb04e89d5bcdd008a10..f5d3402fd54555ed3fce1d197dd615da98ded6d0 100644 --- a/src/main/java/org/springframework/samples/petclinic/model/Pet.java +++ b/src/main/java/org/springframework/samples/petclinic/model/Pet.java @@ -19,7 +19,7 @@ import org.springframework.beans.support.MutableSortDefinition; import org.springframework.beans.support.PropertyComparator; import org.springframework.format.annotation.DateTimeFormat; -import javax.persistence.*; +import jakarta.persistence.*; import java.time.LocalDate; import java.util.*; diff --git a/src/main/java/org/springframework/samples/petclinic/model/PetType.java b/src/main/java/org/springframework/samples/petclinic/model/PetType.java index f60a5cd27a2b195d4fb511fdfd5a4f2806800e7d..beecdec097bd6300d8a7663de8a535e2ab8ffcab 100644 --- a/src/main/java/org/springframework/samples/petclinic/model/PetType.java +++ b/src/main/java/org/springframework/samples/petclinic/model/PetType.java @@ -15,8 +15,8 @@ */ package org.springframework.samples.petclinic.model; -import javax.persistence.Entity; -import javax.persistence.Table; +import jakarta.persistence.Entity; +import jakarta.persistence.Table; /** * @author Juergen Hoeller diff --git a/src/main/java/org/springframework/samples/petclinic/model/Role.java b/src/main/java/org/springframework/samples/petclinic/model/Role.java index 8dd19a10274326357bbb66817d04eb7801136d0b..da35c8e268198259bc2efd41a53648724408fa0e 100644 --- a/src/main/java/org/springframework/samples/petclinic/model/Role.java +++ b/src/main/java/org/springframework/samples/petclinic/model/Role.java @@ -1,11 +1,11 @@ package org.springframework.samples.petclinic.model; -import javax.persistence.Column; -import javax.persistence.Entity; -import javax.persistence.JoinColumn; -import javax.persistence.ManyToOne; -import javax.persistence.Table; -import javax.persistence.UniqueConstraint; +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.JoinColumn; +import jakarta.persistence.ManyToOne; +import jakarta.persistence.Table; +import jakarta.persistence.UniqueConstraint; import com.fasterxml.jackson.annotation.JsonIgnore; diff --git a/src/main/java/org/springframework/samples/petclinic/model/Specialty.java b/src/main/java/org/springframework/samples/petclinic/model/Specialty.java index 6ea209cd45ac5fdaa287aabe9b3bfd7d71682102..8eefd313ba849a54f8b482c1caba787a28aa36af 100644 --- a/src/main/java/org/springframework/samples/petclinic/model/Specialty.java +++ b/src/main/java/org/springframework/samples/petclinic/model/Specialty.java @@ -15,8 +15,8 @@ */ package org.springframework.samples.petclinic.model; -import javax.persistence.Entity; -import javax.persistence.Table; +import jakarta.persistence.Entity; +import jakarta.persistence.Table; /** * Models a {@link Vet Vet's} specialty (for example, dentistry). diff --git a/src/main/java/org/springframework/samples/petclinic/model/User.java b/src/main/java/org/springframework/samples/petclinic/model/User.java index 1bfe90a418ad20516409bd4d3bc00637f43d0fbe..62d412fa96150a9afcd2ed55df819cbd0d62cd4f 100644 --- a/src/main/java/org/springframework/samples/petclinic/model/User.java +++ b/src/main/java/org/springframework/samples/petclinic/model/User.java @@ -3,13 +3,13 @@ package org.springframework.samples.petclinic.model; import java.util.HashSet; import java.util.Set; -import javax.persistence.CascadeType; -import javax.persistence.Column; -import javax.persistence.Entity; -import javax.persistence.FetchType; -import javax.persistence.Id; -import javax.persistence.OneToMany; -import javax.persistence.Table; +import jakarta.persistence.CascadeType; +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.FetchType; +import jakarta.persistence.Id; +import jakarta.persistence.OneToMany; +import jakarta.persistence.Table; import com.fasterxml.jackson.annotation.JsonIgnore; diff --git a/src/main/java/org/springframework/samples/petclinic/model/Vet.java b/src/main/java/org/springframework/samples/petclinic/model/Vet.java index acda93e939a3eaf70b8230aaad8d72bdcb2d92ef..3add8c8725f8049e3b7b137c0e4a46fdcc76e7b7 100644 --- a/src/main/java/org/springframework/samples/petclinic/model/Vet.java +++ b/src/main/java/org/springframework/samples/petclinic/model/Vet.java @@ -19,8 +19,8 @@ import com.fasterxml.jackson.annotation.JsonIgnore; import org.springframework.beans.support.MutableSortDefinition; import org.springframework.beans.support.PropertyComparator; -import javax.persistence.*; -import javax.xml.bind.annotation.XmlElement; +import jakarta.persistence.*; +import jakarta.xml.bind.annotation.XmlElement; import java.util.*; /** diff --git a/src/main/java/org/springframework/samples/petclinic/model/Visit.java b/src/main/java/org/springframework/samples/petclinic/model/Visit.java index 12fc30f49511757ee700a96489a48ebec4b2d23d..f98cb4580d8c6daf5875cb24ef06a2b979086209 100644 --- a/src/main/java/org/springframework/samples/petclinic/model/Visit.java +++ b/src/main/java/org/springframework/samples/petclinic/model/Visit.java @@ -17,8 +17,8 @@ package org.springframework.samples.petclinic.model; import org.springframework.format.annotation.DateTimeFormat; -import javax.persistence.*; -import javax.validation.constraints.NotEmpty; +import jakarta.persistence.*; +import jakarta.validation.constraints.NotEmpty; import java.time.LocalDate; /** diff --git a/src/main/java/org/springframework/samples/petclinic/repository/jdbc/JdbcOwnerRepositoryImpl.java b/src/main/java/org/springframework/samples/petclinic/repository/jdbc/JdbcOwnerRepositoryImpl.java index 0b3bc28a5d44ea5a8e1dde8cd65e5c2f536cfb57..406286ba2109470c7955d60293dd3352c65503d8 100644 --- a/src/main/java/org/springframework/samples/petclinic/repository/jdbc/JdbcOwnerRepositoryImpl.java +++ b/src/main/java/org/springframework/samples/petclinic/repository/jdbc/JdbcOwnerRepositoryImpl.java @@ -33,7 +33,7 @@ import org.springframework.samples.petclinic.util.EntityUtils; import org.springframework.stereotype.Repository; import javax.sql.DataSource; -import javax.transaction.Transactional; +import jakarta.transaction.Transactional; import java.util.Collection; import java.util.HashMap; import java.util.List; @@ -157,7 +157,7 @@ public class JdbcOwnerRepositoryImpl implements OwnerRepository { loadPetsAndVisits(owner); } } - + @Override public Collection<Owner> findAll() throws DataAccessException { List<Owner> owners = this.namedParameterJdbcTemplate.query( diff --git a/src/main/java/org/springframework/samples/petclinic/repository/jpa/JpaOwnerRepositoryImpl.java b/src/main/java/org/springframework/samples/petclinic/repository/jpa/JpaOwnerRepositoryImpl.java index e4620c77d6cc68f08f2e9b5272a4fb3ae3c999b6..3240d070f801dfdaf43ef1e734a826ea4fa69a2b 100644 --- a/src/main/java/org/springframework/samples/petclinic/repository/jpa/JpaOwnerRepositoryImpl.java +++ b/src/main/java/org/springframework/samples/petclinic/repository/jpa/JpaOwnerRepositoryImpl.java @@ -17,9 +17,9 @@ package org.springframework.samples.petclinic.repository.jpa; import java.util.Collection; -import javax.persistence.EntityManager; -import javax.persistence.PersistenceContext; -import javax.persistence.Query; +import jakarta.persistence.EntityManager; +import jakarta.persistence.PersistenceContext; +import jakarta.persistence.Query; import org.springframework.context.annotation.Profile; import org.springframework.dao.DataAccessException; diff --git a/src/main/java/org/springframework/samples/petclinic/repository/jpa/JpaPetRepositoryImpl.java b/src/main/java/org/springframework/samples/petclinic/repository/jpa/JpaPetRepositoryImpl.java index 9904a9409e90b9f1d48a74cad32852cf78e3a93d..8b04981b563a088b20369cae2feba7016272bdee 100644 --- a/src/main/java/org/springframework/samples/petclinic/repository/jpa/JpaPetRepositoryImpl.java +++ b/src/main/java/org/springframework/samples/petclinic/repository/jpa/JpaPetRepositoryImpl.java @@ -18,8 +18,8 @@ package org.springframework.samples.petclinic.repository.jpa; import java.util.Collection; import java.util.List; -import javax.persistence.EntityManager; -import javax.persistence.PersistenceContext; +import jakarta.persistence.EntityManager; +import jakarta.persistence.PersistenceContext; import org.springframework.context.annotation.Profile; import org.springframework.dao.DataAccessException; @@ -63,7 +63,7 @@ public class JpaPetRepositoryImpl implements PetRepository { this.em.merge(pet); } } - + @SuppressWarnings("unchecked") @Override public Collection<Pet> findAll() throws DataAccessException { @@ -74,7 +74,7 @@ public class JpaPetRepositoryImpl implements PetRepository { public void delete(Pet pet) throws DataAccessException { //this.em.remove(this.em.contains(pet) ? pet : this.em.merge(pet)); String petId = pet.getId().toString(); - this.em.createQuery("DELETE FROM Visit visit WHERE pet_id=" + petId).executeUpdate(); + this.em.createQuery("DELETE FROM Visit visit WHERE pet.id=" + petId).executeUpdate(); this.em.createQuery("DELETE FROM Pet pet WHERE id=" + petId).executeUpdate(); if (em.contains(pet)) { em.remove(pet); diff --git a/src/main/java/org/springframework/samples/petclinic/repository/jpa/JpaPetTypeRepositoryImpl.java b/src/main/java/org/springframework/samples/petclinic/repository/jpa/JpaPetTypeRepositoryImpl.java index 2bfd1c78c9d3ca467dab2ed320f4225dd624acb9..d9a0ea0217697c3042ee6c76a8f007ea5a9f1781 100644 --- a/src/main/java/org/springframework/samples/petclinic/repository/jpa/JpaPetTypeRepositoryImpl.java +++ b/src/main/java/org/springframework/samples/petclinic/repository/jpa/JpaPetTypeRepositoryImpl.java @@ -20,8 +20,8 @@ import java.util.ArrayList; import java.util.Collection; import java.util.List; -import javax.persistence.EntityManager; -import javax.persistence.PersistenceContext; +import jakarta.persistence.EntityManager; +import jakarta.persistence.PersistenceContext; import org.springframework.context.annotation.Profile; import org.springframework.dao.DataAccessException; @@ -39,7 +39,7 @@ import org.springframework.stereotype.Repository; @Repository @Profile("jpa") public class JpaPetTypeRepositoryImpl implements PetTypeRepository { - + @PersistenceContext private EntityManager em; @@ -69,8 +69,8 @@ public class JpaPetTypeRepositoryImpl implements PetTypeRepository { public void delete(PetType petType) throws DataAccessException { this.em.remove(this.em.contains(petType) ? petType : this.em.merge(petType)); Integer petTypeId = petType.getId(); - - List<Pet> pets = this.em.createQuery("SELECT pet FROM Pet pet WHERE type_id=" + petTypeId).getResultList(); + + List<Pet> pets = this.em.createQuery("SELECT pet FROM Pet pet WHERE type.id=" + petTypeId).getResultList(); for (Pet pet : pets){ List<Visit> visits = pet.getVisits(); for (Visit visit : visits){ diff --git a/src/main/java/org/springframework/samples/petclinic/repository/jpa/JpaSpecialtyRepositoryImpl.java b/src/main/java/org/springframework/samples/petclinic/repository/jpa/JpaSpecialtyRepositoryImpl.java index e6ae41bb2d980d273cbf46c43f7973cd7c88db3d..c65add3a419c435f00b121e511729157aa0246c8 100644 --- a/src/main/java/org/springframework/samples/petclinic/repository/jpa/JpaSpecialtyRepositoryImpl.java +++ b/src/main/java/org/springframework/samples/petclinic/repository/jpa/JpaSpecialtyRepositoryImpl.java @@ -18,8 +18,8 @@ package org.springframework.samples.petclinic.repository.jpa; import java.util.Collection; -import javax.persistence.EntityManager; -import javax.persistence.PersistenceContext; +import jakarta.persistence.EntityManager; +import jakarta.persistence.PersistenceContext; import org.springframework.context.annotation.Profile; import org.springframework.dao.DataAccessException; @@ -35,7 +35,7 @@ import org.springframework.stereotype.Repository; @Repository @Profile("jpa") public class JpaSpecialtyRepositoryImpl implements SpecialtyRepository { - + @PersistenceContext private EntityManager em; diff --git a/src/main/java/org/springframework/samples/petclinic/repository/jpa/JpaUserRepositoryImpl.java b/src/main/java/org/springframework/samples/petclinic/repository/jpa/JpaUserRepositoryImpl.java index d73a7e9fbe69b20dd096f3596a6128ef052574c9..de3fd4e6b312d2415febd80ebad702c478d67f88 100644 --- a/src/main/java/org/springframework/samples/petclinic/repository/jpa/JpaUserRepositoryImpl.java +++ b/src/main/java/org/springframework/samples/petclinic/repository/jpa/JpaUserRepositoryImpl.java @@ -1,7 +1,7 @@ package org.springframework.samples.petclinic.repository.jpa; -import javax.persistence.EntityManager; -import javax.persistence.PersistenceContext; +import jakarta.persistence.EntityManager; +import jakarta.persistence.PersistenceContext; import org.springframework.context.annotation.Profile; import org.springframework.dao.DataAccessException; diff --git a/src/main/java/org/springframework/samples/petclinic/repository/jpa/JpaVetRepositoryImpl.java b/src/main/java/org/springframework/samples/petclinic/repository/jpa/JpaVetRepositoryImpl.java index bc1a99c6a8cb34ac874ae123c3d4a5cb6f1d392f..eed4dbb2dc3a3fa0593019a84702f192cb5da2f3 100644 --- a/src/main/java/org/springframework/samples/petclinic/repository/jpa/JpaVetRepositoryImpl.java +++ b/src/main/java/org/springframework/samples/petclinic/repository/jpa/JpaVetRepositoryImpl.java @@ -21,8 +21,8 @@ import org.springframework.samples.petclinic.model.Vet; import org.springframework.samples.petclinic.repository.VetRepository; import org.springframework.stereotype.Repository; -import javax.persistence.EntityManager; -import javax.persistence.PersistenceContext; +import jakarta.persistence.EntityManager; +import jakarta.persistence.PersistenceContext; import java.util.Collection; /** @@ -41,7 +41,7 @@ public class JpaVetRepositoryImpl implements VetRepository { @PersistenceContext private EntityManager em; - + @Override public Vet findById(int id) throws DataAccessException { return this.em.find(Vet.class, id); diff --git a/src/main/java/org/springframework/samples/petclinic/repository/jpa/JpaVisitRepositoryImpl.java b/src/main/java/org/springframework/samples/petclinic/repository/jpa/JpaVisitRepositoryImpl.java index f6779341adf53bd2dcbd32ac2a410eee5161ddb1..79d032581597350fa25ab19906d8418cbe31db36 100644 --- a/src/main/java/org/springframework/samples/petclinic/repository/jpa/JpaVisitRepositoryImpl.java +++ b/src/main/java/org/springframework/samples/petclinic/repository/jpa/JpaVisitRepositoryImpl.java @@ -18,9 +18,9 @@ package org.springframework.samples.petclinic.repository.jpa; import java.util.Collection; import java.util.List; -import javax.persistence.EntityManager; -import javax.persistence.PersistenceContext; -import javax.persistence.Query; +import jakarta.persistence.EntityManager; +import jakarta.persistence.PersistenceContext; +import jakarta.persistence.Query; import org.springframework.context.annotation.Profile; import org.springframework.dao.DataAccessException; @@ -64,7 +64,7 @@ public class JpaVisitRepositoryImpl implements VisitRepository { query.setParameter("id", petId); return query.getResultList(); } - + @Override public Visit findById(int id) throws DataAccessException { return this.em.find(Visit.class, id); diff --git a/src/main/java/org/springframework/samples/petclinic/repository/springdatajpa/SpringDataPetRepositoryImpl.java b/src/main/java/org/springframework/samples/petclinic/repository/springdatajpa/SpringDataPetRepositoryImpl.java index 23b7a68b200a33993513db2678fde558fc1c1fd1..429950524da789fbfd422fe5becf92e8b5006b5d 100644 --- a/src/main/java/org/springframework/samples/petclinic/repository/springdatajpa/SpringDataPetRepositoryImpl.java +++ b/src/main/java/org/springframework/samples/petclinic/repository/springdatajpa/SpringDataPetRepositoryImpl.java @@ -16,8 +16,8 @@ package org.springframework.samples.petclinic.repository.springdatajpa; -import javax.persistence.EntityManager; -import javax.persistence.PersistenceContext; +import jakarta.persistence.EntityManager; +import jakarta.persistence.PersistenceContext; import org.springframework.context.annotation.Profile; import org.springframework.samples.petclinic.model.Pet; @@ -29,14 +29,14 @@ import org.springframework.samples.petclinic.model.Pet; @Profile("spring-data-jpa") public class SpringDataPetRepositoryImpl implements PetRepositoryOverride { - + @PersistenceContext private EntityManager em; @Override public void delete(Pet pet) { String petId = pet.getId().toString(); - this.em.createQuery("DELETE FROM Visit visit WHERE pet_id=" + petId).executeUpdate(); + this.em.createQuery("DELETE FROM Visit visit WHERE pet.id=" + petId).executeUpdate(); this.em.createQuery("DELETE FROM Pet pet WHERE id=" + petId).executeUpdate(); if (em.contains(pet)) { em.remove(pet); diff --git a/src/main/java/org/springframework/samples/petclinic/repository/springdatajpa/SpringDataPetTypeRepositoryImpl.java b/src/main/java/org/springframework/samples/petclinic/repository/springdatajpa/SpringDataPetTypeRepositoryImpl.java index 70c619dbdd872fa1088b427c5a362d2f7d6fdaa1..5350c4eb76cf4e834a704d0265c2fc4fbac204b0 100644 --- a/src/main/java/org/springframework/samples/petclinic/repository/springdatajpa/SpringDataPetTypeRepositoryImpl.java +++ b/src/main/java/org/springframework/samples/petclinic/repository/springdatajpa/SpringDataPetTypeRepositoryImpl.java @@ -21,8 +21,8 @@ import org.springframework.samples.petclinic.model.Pet; import org.springframework.samples.petclinic.model.PetType; import org.springframework.samples.petclinic.model.Visit; -import javax.persistence.EntityManager; -import javax.persistence.PersistenceContext; +import jakarta.persistence.EntityManager; +import jakarta.persistence.PersistenceContext; import java.util.List; /** @@ -32,7 +32,7 @@ import java.util.List; @Profile("spring-data-jpa") public class SpringDataPetTypeRepositoryImpl implements PetTypeRepositoryOverride { - + @PersistenceContext private EntityManager em; @@ -41,8 +41,8 @@ public class SpringDataPetTypeRepositoryImpl implements PetTypeRepositoryOverrid public void delete(PetType petType) { this.em.remove(this.em.contains(petType) ? petType : this.em.merge(petType)); Integer petTypeId = petType.getId(); - - List<Pet> pets = this.em.createQuery("SELECT pet FROM Pet pet WHERE type_id=" + petTypeId).getResultList(); + + List<Pet> pets = this.em.createQuery("SELECT pet FROM Pet pet WHERE type.id=" + petTypeId).getResultList(); for (Pet pet : pets){ List<Visit> visits = pet.getVisits(); for (Visit visit : visits){ diff --git a/src/main/java/org/springframework/samples/petclinic/repository/springdatajpa/SpringDataSpecialtyRepositoryImpl.java b/src/main/java/org/springframework/samples/petclinic/repository/springdatajpa/SpringDataSpecialtyRepositoryImpl.java index 012eb0ef4dd109399461675208184b0b24e85075..940625f74fa70a207b03647654c07cddc65b4e68 100644 --- a/src/main/java/org/springframework/samples/petclinic/repository/springdatajpa/SpringDataSpecialtyRepositoryImpl.java +++ b/src/main/java/org/springframework/samples/petclinic/repository/springdatajpa/SpringDataSpecialtyRepositoryImpl.java @@ -16,8 +16,8 @@ package org.springframework.samples.petclinic.repository.springdatajpa; -import javax.persistence.EntityManager; -import javax.persistence.PersistenceContext; +import jakarta.persistence.EntityManager; +import jakarta.persistence.PersistenceContext; import org.springframework.context.annotation.Profile; import org.springframework.samples.petclinic.model.Specialty; @@ -29,7 +29,7 @@ import org.springframework.samples.petclinic.model.Specialty; @Profile("spring-data-jpa") public class SpringDataSpecialtyRepositoryImpl implements SpecialtyRepositoryOverride { - + @PersistenceContext private EntityManager em; diff --git a/src/main/java/org/springframework/samples/petclinic/repository/springdatajpa/SpringDataVisitRepositoryImpl.java b/src/main/java/org/springframework/samples/petclinic/repository/springdatajpa/SpringDataVisitRepositoryImpl.java index 52b08968a4ce467fb0567751291d9a4eacaeed4c..4c2fcc09b126321f4d9ae84d2c4b46f5609443dc 100644 --- a/src/main/java/org/springframework/samples/petclinic/repository/springdatajpa/SpringDataVisitRepositoryImpl.java +++ b/src/main/java/org/springframework/samples/petclinic/repository/springdatajpa/SpringDataVisitRepositoryImpl.java @@ -16,8 +16,8 @@ package org.springframework.samples.petclinic.repository.springdatajpa; -import javax.persistence.EntityManager; -import javax.persistence.PersistenceContext; +import jakarta.persistence.EntityManager; +import jakarta.persistence.PersistenceContext; import org.springframework.context.annotation.Profile; import org.springframework.dao.DataAccessException; @@ -30,7 +30,7 @@ import org.springframework.samples.petclinic.model.Visit; @Profile("spring-data-jpa") public class SpringDataVisitRepositoryImpl implements VisitRepositoryOverride { - + @PersistenceContext private EntityManager em; 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 b47b430a17c406bc134d5f29b7ea616ff323337c..2dbabc854924bd90dd1cdd2d7884b41ebf2c966d 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 @@ -34,7 +34,7 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.util.UriComponentsBuilder; -import javax.transaction.Transactional; +import jakarta.transaction.Transactional; import java.util.Collection; import java.util.List; diff --git a/src/main/java/org/springframework/samples/petclinic/rest/controller/PetRestController.java b/src/main/java/org/springframework/samples/petclinic/rest/controller/PetRestController.java index 95c6af223de9d9d5e6389f18a06c14fb67b29f29..832835f5e939782f30dfad841c0ec0d7fd24d9af 100644 --- a/src/main/java/org/springframework/samples/petclinic/rest/controller/PetRestController.java +++ b/src/main/java/org/springframework/samples/petclinic/rest/controller/PetRestController.java @@ -26,7 +26,7 @@ import org.springframework.samples.petclinic.service.ClinicService; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.*; -import javax.transaction.Transactional; +import jakarta.transaction.Transactional; import java.util.ArrayList; import java.util.List; 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 e2436d7a7d474923dcbe804cb63265dacf86f8a4..de079d98a778e5935148a8a827c262969a0059de 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 @@ -28,7 +28,7 @@ import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.*; import org.springframework.web.util.UriComponentsBuilder; -import javax.transaction.Transactional; +import jakarta.transaction.Transactional; import java.util.ArrayList; import java.util.List; diff --git a/src/main/java/org/springframework/samples/petclinic/rest/controller/RootRestController.java b/src/main/java/org/springframework/samples/petclinic/rest/controller/RootRestController.java index c4078729101190efed0b893c765ad2d34a2d621e..7984f66a69bae9523cb00e2f82d1c215f4555bd8 100644 --- a/src/main/java/org/springframework/samples/petclinic/rest/controller/RootRestController.java +++ b/src/main/java/org/springframework/samples/petclinic/rest/controller/RootRestController.java @@ -18,7 +18,7 @@ package org.springframework.samples.petclinic.rest.controller; import java.io.IOException; -import javax.servlet.http.HttpServletResponse; +import jakarta.servlet.http.HttpServletResponse; import org.springframework.beans.factory.annotation.Value; import org.springframework.web.bind.annotation.CrossOrigin; diff --git a/src/main/java/org/springframework/samples/petclinic/rest/controller/SpecialtyRestController.java b/src/main/java/org/springframework/samples/petclinic/rest/controller/SpecialtyRestController.java index 723fd327e2c71d2318e44385bb24d683b89b5733..0b82e81890cea8353cec82041e957bd3c7910ec1 100644 --- a/src/main/java/org/springframework/samples/petclinic/rest/controller/SpecialtyRestController.java +++ b/src/main/java/org/springframework/samples/petclinic/rest/controller/SpecialtyRestController.java @@ -28,7 +28,7 @@ import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.*; import org.springframework.web.util.UriComponentsBuilder; -import javax.transaction.Transactional; +import jakarta.transaction.Transactional; import java.util.ArrayList; import java.util.List; diff --git a/src/main/java/org/springframework/samples/petclinic/rest/controller/UserRestController.java b/src/main/java/org/springframework/samples/petclinic/rest/controller/UserRestController.java index f9a7d96d0f2a09ddbbba7bc9e9b0e2608f74e877..ce1d8434965b6262794c6a74ff702df4f6c96e04 100644 --- a/src/main/java/org/springframework/samples/petclinic/rest/controller/UserRestController.java +++ b/src/main/java/org/springframework/samples/petclinic/rest/controller/UserRestController.java @@ -30,7 +30,7 @@ import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -import javax.validation.Valid; +import jakarta.validation.Valid; @RestController @CrossOrigin(exposedHeaders = "errors, content-type") diff --git a/src/main/java/org/springframework/samples/petclinic/rest/controller/VetRestController.java b/src/main/java/org/springframework/samples/petclinic/rest/controller/VetRestController.java index 787bc7fa6b073f7ed3a2dfc88cc40f72397c8732..a6ac96ff0c5adb521dbf738133eeb0a9a15917db 100644 --- a/src/main/java/org/springframework/samples/petclinic/rest/controller/VetRestController.java +++ b/src/main/java/org/springframework/samples/petclinic/rest/controller/VetRestController.java @@ -29,7 +29,7 @@ import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.*; import org.springframework.web.util.UriComponentsBuilder; -import javax.transaction.Transactional; +import jakarta.transaction.Transactional; import java.util.ArrayList; import java.util.List; diff --git a/src/main/java/org/springframework/samples/petclinic/rest/controller/VisitRestController.java b/src/main/java/org/springframework/samples/petclinic/rest/controller/VisitRestController.java index bae92d2d5695f892a6d0013d3028a994720faea3..138f040c4e6196195201739018348314e61871ff 100644 --- a/src/main/java/org/springframework/samples/petclinic/rest/controller/VisitRestController.java +++ b/src/main/java/org/springframework/samples/petclinic/rest/controller/VisitRestController.java @@ -28,7 +28,7 @@ import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.*; import org.springframework.web.util.UriComponentsBuilder; -import javax.transaction.Transactional; +import jakarta.transaction.Transactional; import java.util.ArrayList; import java.util.List; diff --git a/src/main/java/org/springframework/samples/petclinic/security/BasicAuthenticationConfig.java b/src/main/java/org/springframework/samples/petclinic/security/BasicAuthenticationConfig.java index 8e18b4f127f2fcef355c77be56bf60386c6335b9..2d2e6aeda6587052be78196b54149a18e37b06be 100644 --- a/src/main/java/org/springframework/samples/petclinic/security/BasicAuthenticationConfig.java +++ b/src/main/java/org/springframework/samples/petclinic/security/BasicAuthenticationConfig.java @@ -10,31 +10,31 @@ import org.springframework.security.config.annotation.authentication.builders.Au import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity; import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; -import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; import org.springframework.security.crypto.factory.PasswordEncoderFactories; import org.springframework.security.crypto.password.PasswordEncoder; +import org.springframework.security.web.SecurityFilterChain; @Configuration @EnableGlobalMethodSecurity(prePostEnabled = true) // Enable @PreAuthorize method-level security @ConditionalOnProperty(name = "petclinic.security.enable", havingValue = "true") -public class BasicAuthenticationConfig extends WebSecurityConfigurerAdapter { +public class BasicAuthenticationConfig { @Autowired private DataSource dataSource; - @Override - protected void configure(HttpSecurity http) throws Exception { + @Bean + public SecurityFilterChain filterChain(HttpSecurity http) throws Exception { // @formatter:off http - .authorizeRequests() - .anyRequest() - .authenticated() - .and() + .authorizeHttpRequests((authz) -> authz + .anyRequest().authenticated() + ) .httpBasic() .and() .csrf() .disable(); // @formatter:on + return http.build(); } @Autowired diff --git a/src/main/java/org/springframework/samples/petclinic/security/DisableSecurityConfig.java b/src/main/java/org/springframework/samples/petclinic/security/DisableSecurityConfig.java index 8504a5c02a2ecf786cc340a133363af273a5834f..6de93b6ed387af825476a47cd498c6f6687c1d37 100644 --- a/src/main/java/org/springframework/samples/petclinic/security/DisableSecurityConfig.java +++ b/src/main/java/org/springframework/samples/petclinic/security/DisableSecurityConfig.java @@ -1,9 +1,10 @@ package org.springframework.samples.petclinic.security; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; +import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.security.config.annotation.web.builders.HttpSecurity; -import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; +import org.springframework.security.web.SecurityFilterChain; /** * Starting from Spring Boot 2, if Spring Security is present, endpoints are secured by default @@ -11,17 +12,18 @@ import org.springframework.security.config.annotation.web.configuration.WebSecur */ @Configuration @ConditionalOnProperty(name = "petclinic.security.enable", havingValue = "false") -public class DisableSecurityConfig extends WebSecurityConfigurerAdapter { +public class DisableSecurityConfig { - @Override - protected void configure(HttpSecurity http) throws Exception { + @Bean + public SecurityFilterChain filterChain(HttpSecurity http) throws Exception { // @formatter:off http - .authorizeRequests() - .anyRequest().permitAll() - .and() + .authorizeHttpRequests((authz) -> authz + .anyRequest().permitAll() + ) .csrf() .disable(); // @formatter:on + return http.build(); } } diff --git a/src/test/java/org/springframework/samples/petclinic/model/ValidatorTests.java b/src/test/java/org/springframework/samples/petclinic/model/ValidatorTests.java index dfd2105afb1b18ec54e38b6f962cac4057409517..a44130376e2ea8e931a14f968b84b898f40187c5 100644 --- a/src/test/java/org/springframework/samples/petclinic/model/ValidatorTests.java +++ b/src/test/java/org/springframework/samples/petclinic/model/ValidatorTests.java @@ -5,8 +5,8 @@ import static org.assertj.core.api.Assertions.assertThat; import java.util.Locale; import java.util.Set; -import javax.validation.ConstraintViolation; -import javax.validation.Validator; +import jakarta.validation.ConstraintViolation; +import jakarta.validation.Validator; import org.junit.jupiter.api.Test; import org.springframework.context.i18n.LocaleContextHolder;