diff --git a/core-java-modules/core-java-lang-oop-methods/src/main/java/com/baeldung/hashcode/Application.java b/core-java-modules/core-java-lang-oop-methods/src/main/java/com/baeldung/hashcode/Application.java new file mode 100644 index 000000000000..1bc924bdf822 --- /dev/null +++ b/core-java-modules/core-java-lang-oop-methods/src/main/java/com/baeldung/hashcode/Application.java @@ -0,0 +1,23 @@ +package com.baeldung.hashcode; + +import java.util.HashMap; +import java.util.Map; + +import com.baeldung.hashcode.standard.User; + +public class Application { + + public static void main(String[] args) { + Map users = new HashMap<>(); + User user1 = new User(1L, "John", "john@domain.com"); + User user2 = new User(2L, "Jennifer", "jennifer@domain.com"); + User user3 = new User(3L, "Mary", "mary@domain.com"); + + users.put(user1, user1); + users.put(user2, user2); + users.put(user3, user3); + if (users.containsKey(user1)) { + System.out.print("User found in the collection"); + } + } +} \ No newline at end of file diff --git a/persistence-modules/spring-data-jpa-query/src/main/java/com/baeldung/boot/passenger/CustomPassengerRepository.java b/persistence-modules/spring-data-jpa-query/src/main/java/com/baeldung/boot/passenger/CustomPassengerRepository.java new file mode 100644 index 000000000000..7152286c8343 --- /dev/null +++ b/persistence-modules/spring-data-jpa-query/src/main/java/com/baeldung/boot/passenger/CustomPassengerRepository.java @@ -0,0 +1,8 @@ +package com.baeldung.boot.passenger; + +import java.util.List; + +interface CustomPassengerRepository { + + List findOrderedBySeatNumberLimitedTo(int limit); +} diff --git a/persistence-modules/spring-data-jpa-query/src/main/java/com/baeldung/boot/passenger/Passenger.java b/persistence-modules/spring-data-jpa-query/src/main/java/com/baeldung/boot/passenger/Passenger.java new file mode 100644 index 000000000000..0b86684975c9 --- /dev/null +++ b/persistence-modules/spring-data-jpa-query/src/main/java/com/baeldung/boot/passenger/Passenger.java @@ -0,0 +1,83 @@ +package com.baeldung.boot.passenger; + +import java.util.Objects; + +import jakarta.persistence.Basic; +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.Id; + +@Entity +class Passenger { + + @Id + @GeneratedValue + @Column(nullable = false) + private Long id; + + @Basic(optional = false) + @Column(nullable = false) + private String firstName; + + @Basic(optional = false) + @Column(nullable = false) + private String lastName; + + @Basic(optional = false) + @Column(nullable = false) + private Integer seatNumber; + + private Passenger(String firstName, String lastName, Integer seatNumber) { + this.firstName = firstName; + this.lastName = lastName; + this.seatNumber = seatNumber; + } + + static Passenger from(String firstName, String lastName, Integer seatNumber) { + return new Passenger(firstName, lastName, seatNumber); + } + + @Override + public boolean equals(Object object) { + if (this == object) + return true; + if (object == null || getClass() != object.getClass()) + return false; + Passenger passenger = (Passenger) object; + return getSeatNumber() == passenger.getSeatNumber() && Objects.equals(getFirstName(), passenger.getFirstName()) + && Objects.equals(getLastName(), passenger.getLastName()); + } + + @Override + public int hashCode() { + return Objects.hash(getFirstName(), getLastName(), getSeatNumber()); + } + + @Override + public String toString() { + final StringBuilder toStringBuilder = new StringBuilder(getClass().getSimpleName()); + toStringBuilder.append("{ id=").append(id); + toStringBuilder.append(", firstName='").append(firstName).append('\''); + toStringBuilder.append(", lastName='").append(lastName).append('\''); + toStringBuilder.append(", seatNumber=").append(seatNumber); + toStringBuilder.append('}'); + return toStringBuilder.toString(); + } + + Long getId() { + return id; + } + + String getFirstName() { + return firstName; + } + + String getLastName() { + return lastName; + } + + Integer getSeatNumber() { + return seatNumber; + } +} diff --git a/persistence-modules/spring-data-jpa-query/src/main/java/com/baeldung/boot/passenger/PassengerRepository.java b/persistence-modules/spring-data-jpa-query/src/main/java/com/baeldung/boot/passenger/PassengerRepository.java new file mode 100644 index 000000000000..aafe95df0614 --- /dev/null +++ b/persistence-modules/spring-data-jpa-query/src/main/java/com/baeldung/boot/passenger/PassengerRepository.java @@ -0,0 +1,14 @@ +package com.baeldung.boot.passenger; + +import java.util.List; + +import org.springframework.data.domain.Sort; +import org.springframework.data.jpa.repository.JpaRepository; + +interface PassengerRepository extends JpaRepository, CustomPassengerRepository { + + Passenger findFirstByOrderBySeatNumberAsc(); + + Passenger findTopByOrderBySeatNumberAsc(); + +} diff --git a/persistence-modules/spring-data-jpa-query/src/main/java/com/baeldung/boot/passenger/PassengerRepositoryImpl.java b/persistence-modules/spring-data-jpa-query/src/main/java/com/baeldung/boot/passenger/PassengerRepositoryImpl.java new file mode 100644 index 000000000000..ac890f42f4e5 --- /dev/null +++ b/persistence-modules/spring-data-jpa-query/src/main/java/com/baeldung/boot/passenger/PassengerRepositoryImpl.java @@ -0,0 +1,21 @@ +package com.baeldung.boot.passenger; + +import java.util.List; + +import org.springframework.stereotype.Repository; + +import jakarta.persistence.EntityManager; +import jakarta.persistence.PersistenceContext; + +@Repository +class PassengerRepositoryImpl implements CustomPassengerRepository { + + @PersistenceContext + private EntityManager entityManager; + + @Override + public List findOrderedBySeatNumberLimitedTo(int limit) { + return entityManager.createQuery("SELECT p FROM Passenger p ORDER BY p.seatNumber", + Passenger.class).setMaxResults(limit).getResultList(); + } +} diff --git a/spring-boot-modules/spring-boot-3/pom.xml b/spring-boot-modules/spring-boot-3/pom.xml index e5f55e08330e..84cfd8ee7850 100644 --- a/spring-boot-modules/spring-boot-3/pom.xml +++ b/spring-boot-modules/spring-boot-3/pom.xml @@ -166,9 +166,6 @@ org.apache.maven.plugins maven-compiler-plugin - - --enable-preview - diff --git a/spring-boot-modules/spring-boot-3-2/src/test/java/com/baeldung/restclient/InterceptingClientHttpRequestTest.java b/spring-boot-modules/spring-boot-3/src/test/java/com/baeldung/restclient/InterceptingClientHttpUnitTest.java similarity index 64% rename from spring-boot-modules/spring-boot-3-2/src/test/java/com/baeldung/restclient/InterceptingClientHttpRequestTest.java rename to spring-boot-modules/spring-boot-3/src/test/java/com/baeldung/restclient/InterceptingClientHttpUnitTest.java index af8a9939473b..e41c4b078ce9 100644 --- a/spring-boot-modules/spring-boot-3-2/src/test/java/com/baeldung/restclient/InterceptingClientHttpRequestTest.java +++ b/spring-boot-modules/spring-boot-3/src/test/java/com/baeldung/restclient/InterceptingClientHttpUnitTest.java @@ -1,18 +1,11 @@ package com.baeldung.restclient; - -import org.junit.jupiter.api.Test; import static org.junit.jupiter.api.Assertions.assertDoesNotThrow; -import org.springframework.http.HttpMethod; -import org.springframework.http.HttpRequest; +import org.junit.jupiter.api.Test; import org.springframework.http.client.ClientHttpRequestInterceptor; -import org.springframework.http.client.ClientHttpResponse; -import org.springframework.http.client.ClientHttpRequest; -import org.springframework.http.client.support.HttpRequestWrapper; - -class InterceptingClientHttpRequestTest { +class InterceptingClientHttpUnitTest { @Test void updateRequestAttribute() throws Exception { diff --git a/spring-web-modules/spring-mvc-basics-2/src/main/java/com/baeldung/spring/mail/EmailService.java b/spring-web-modules/spring-mvc-basics-2/src/main/java/com/baeldung/spring/mail/EmailService.java index e36a23809b45..162ce2e92567 100644 --- a/spring-web-modules/spring-mvc-basics-2/src/main/java/com/baeldung/spring/mail/EmailService.java +++ b/spring-web-modules/spring-mvc-basics-2/src/main/java/com/baeldung/spring/mail/EmailService.java @@ -33,6 +33,4 @@ void sendMessageUsingFreemarkerTemplate(String to, Map templateModel) throws IOException, TemplateException, MessagingException; - void sendMessageWithInputStreamAttachment( - String to, String subject, String text, String attachmentName, InputStream inputStream); } diff --git a/spring-web-modules/spring-mvc-basics-2/src/main/java/com/baeldung/spring/mail/EmailServiceImpl.java b/spring-web-modules/spring-mvc-basics-2/src/main/java/com/baeldung/spring/mail/EmailServiceImpl.java index 4dec19cbd74a..f76c6809da72 100644 --- a/spring-web-modules/spring-mvc-basics-2/src/main/java/com/baeldung/spring/mail/EmailServiceImpl.java +++ b/spring-web-modules/spring-mvc-basics-2/src/main/java/com/baeldung/spring/mail/EmailServiceImpl.java @@ -132,26 +132,4 @@ private void sendHtmlMessage(String to, String subject, String htmlBody) throws emailSender.send(message); } - @Override - public void sendMessageWithInputStreamAttachment( - String to, String subject, String text, String attachmentName, InputStream attachmentStream) { - - try { - MimeMessage message = emailSender.createMimeMessage(); - MimeMessageHelper helper = new MimeMessageHelper(message, true); - - helper.setFrom(NOREPLY_ADDRESS); - helper.setTo(to); - helper.setSubject(subject); - helper.setText(text); - - // Add the attachment from InputStream - helper.addAttachment(attachmentName, new InputStreamResource(attachmentStream)); - - emailSender.send(message); - } catch (MessagingException e) { - e.printStackTrace(); - } - } - } diff --git a/spring-web-modules/spring-mvc-basics/src/main/java/com/baeldung/spring/mail/EmailService.java b/spring-web-modules/spring-mvc-basics/src/main/java/com/baeldung/spring/mail/EmailService.java index 5612e2d726a0..30aa3c629ab6 100644 --- a/spring-web-modules/spring-mvc-basics/src/main/java/com/baeldung/spring/mail/EmailService.java +++ b/spring-web-modules/spring-mvc-basics/src/main/java/com/baeldung/spring/mail/EmailService.java @@ -1,6 +1,7 @@ package com.baeldung.spring.mail; import java.io.IOException; +import java.io.InputStream; import java.util.Map; import jakarta.mail.MessagingException; @@ -17,4 +18,7 @@ void sendMessageWithAttachment(String to, String subject, String text, String pathToAttachment); + + void sendMessageWithInputStreamAttachment( + String to, String subject, String text, String attachmentName, InputStream inputStream); } diff --git a/spring-web-modules/spring-mvc-basics/src/main/java/com/baeldung/spring/mail/EmailServiceImpl.java b/spring-web-modules/spring-mvc-basics/src/main/java/com/baeldung/spring/mail/EmailServiceImpl.java index c5ed90f4651a..1a8dec83459b 100644 --- a/spring-web-modules/spring-mvc-basics/src/main/java/com/baeldung/spring/mail/EmailServiceImpl.java +++ b/spring-web-modules/spring-mvc-basics/src/main/java/com/baeldung/spring/mail/EmailServiceImpl.java @@ -1,10 +1,12 @@ package com.baeldung.spring.mail; import java.io.File; +import java.io.InputStream; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.core.io.FileSystemResource; +import org.springframework.core.io.InputStreamResource; import org.springframework.mail.MailException; import org.springframework.mail.SimpleMailMessage; import org.springframework.mail.javamail.JavaMailSender; @@ -66,5 +68,26 @@ public void sendMessageWithAttachment(String to, } } + @Override + public void sendMessageWithInputStreamAttachment( + String to, String subject, String text, String attachmentName, InputStream attachmentStream) { + + try { + MimeMessage message = emailSender.createMimeMessage(); + MimeMessageHelper helper = new MimeMessageHelper(message, true); + + helper.setFrom(NOREPLY_ADDRESS); + helper.setTo(to); + helper.setSubject(subject); + helper.setText(text); + + // Add the attachment from InputStream + helper.addAttachment(attachmentName, new InputStreamResource(attachmentStream)); + + emailSender.send(message); + } catch (MessagingException e) { + e.printStackTrace(); + } + } }