Skip to content

Commit 6de99aa

Browse files
committed
Updated dependencies versions; updated response.
1 parent 992607b commit 6de99aa

File tree

17 files changed

+148
-64
lines changed

17 files changed

+148
-64
lines changed

.gitignore

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
.settings
22
target/
3+
tomcat.8080/
34
.classpath
4-
.project
5+
.project
6+
.vscode/

pom.xml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
<maven.compiler.source>1.8</maven.compiler.source>
1717
<maven.compiler.target>1.8</maven.compiler.target>
1818
<failOnMissingWebXml>false</failOnMissingWebXml>
19-
<tomcat.version>9.0.11</tomcat.version>
19+
<tomcat.version>9.0.13</tomcat.version>
2020
<slf4j.version>1.7.25</slf4j.version>
2121
</properties>
2222

@@ -44,12 +44,12 @@
4444
<dependency>
4545
<groupId>org.eclipse</groupId>
4646
<artifactId>yasson</artifactId>
47-
<version>1.0.1</version>
47+
<version>1.0.2</version>
4848
</dependency>
4949
<dependency>
5050
<groupId>org.glassfish</groupId>
5151
<artifactId>javax.json</artifactId>
52-
<version>1.1.2</version>
52+
<version>1.1.3</version>
5353
</dependency>
5454
<dependency>
5555
<groupId>org.slf4j</groupId>

src/main/java/io/github/julianjupiter/app/controller/BookController.java

Lines changed: 18 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,11 @@
22

33
import java.io.IOException;
44
import java.io.PrintWriter;
5+
import java.time.ZonedDateTime;
56
import java.util.HashMap;
67
import java.util.List;
78
import java.util.Map;
9+
import java.util.Optional;
810

911
import javax.json.bind.Jsonb;
1012
import javax.json.bind.JsonbBuilder;
@@ -21,6 +23,8 @@
2123
import io.github.julianjupiter.app.repository.BookRepositoryImpl;
2224
import io.github.julianjupiter.app.service.BookService;
2325
import io.github.julianjupiter.app.service.BookServiceImpl;
26+
import io.github.julianjupiter.app.util.Error;
27+
import io.github.julianjupiter.app.util.ErrorResponse;
2428

2529
@WebServlet(name = "bookController", urlPatterns = "/books")
2630
public class BookController extends BaseController {
@@ -69,7 +73,7 @@ protected void doGet(HttpServletRequest request, HttpServletResponse response) t
6973
}
7074

7175
private void findAll(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
72-
List<Book> books = this.bookService.findAll();
76+
Iterable<Book> books = this.bookService.findAll();
7377
request.setAttribute("pageName", "Books");
7478
request.setAttribute("books", books);
7579
this.render(request, response, "book/list");
@@ -78,12 +82,21 @@ private void findAll(HttpServletRequest request, HttpServletResponse response) t
7882
private void findById(HttpServletRequest request, HttpServletResponse response) throws Exception {
7983
String id = request.getParameter("id");
8084
long bookId = Long.parseLong(id);
81-
Book book = this.bookService.findById(bookId);
82-
Map<String, Object> config = new HashMap<>();
83-
config.put(JsonGenerator.PRETTY_PRINTING, true);
85+
Optional<Book> book = this.bookService.findById(bookId);
8486
String bookJson;
8587
try(Jsonb jsonbObject = JsonbBuilder.create()) {
86-
bookJson = jsonbObject.toJson(book);
88+
if (book.isPresent()) {
89+
response.setStatus(200);
90+
bookJson = jsonbObject.toJson(book.get());
91+
} else {
92+
response.setStatus(404);
93+
ErrorResponse errorResponse = new ErrorResponse();
94+
Error error = new Error();
95+
error.setMessage("Book with ID " + id + " was not found.");
96+
error.setCreatedAt(ZonedDateTime.now());
97+
errorResponse.setError(error);
98+
bookJson = jsonbObject.toJson(error);
99+
}
87100
}
88101
response.setContentType("application/json");
89102
response.setCharacterEncoding("UTF-8");
Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
package io.github.julianjupiter.app.repository;
22

3-
import java.util.List;
3+
import java.util.Optional;
44

55
import io.github.julianjupiter.app.domain.Book;
66

77
public interface BookRepository {
88

9-
List<Book> findAll();
9+
Iterable<Book> findAll();
1010

11-
Book findById(long id);
11+
Optional<Book> findById(long id);
1212

1313
}

src/main/java/io/github/julianjupiter/app/repository/BookRepositoryImpl.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import java.util.ArrayList;
44
import java.util.Arrays;
55
import java.util.List;
6+
import java.util.Optional;
67

78
import io.github.julianjupiter.app.domain.Book;
89

@@ -31,15 +32,15 @@ public class BookRepositoryImpl implements BookRepository {
3132
}
3233

3334
@Override
34-
public List<Book> findAll() {
35+
public Iterable<Book> findAll() {
3536
return bookList;
3637
}
3738

3839
@Override
39-
public Book findById(long id) {
40+
public Optional<Book> findById(long id) {
4041
return bookList.stream()
4142
.filter(book -> book.getId() == id)
42-
.findFirst().orElse(null);
43+
.findFirst();
4344
}
4445

4546
}
Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
package io.github.julianjupiter.app.service;
22

3-
import java.util.List;
3+
import java.util.Optional;
44

55
import io.github.julianjupiter.app.domain.Book;
66

77
public interface BookService {
88

9-
List<Book> findAll();
9+
Iterable<Book> findAll();
1010

11-
Book findById(long id);
11+
Optional<Book> findById(long id);
1212

1313
}

src/main/java/io/github/julianjupiter/app/service/BookServiceImpl.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package io.github.julianjupiter.app.service;
22

3-
import java.util.List;
3+
import java.util.Optional;
44

55
import io.github.julianjupiter.app.domain.Book;
66
import io.github.julianjupiter.app.repository.BookRepository;
@@ -14,12 +14,12 @@ public BookServiceImpl(BookRepository bookRepository) {
1414
}
1515

1616
@Override
17-
public List<Book> findAll() {
17+
public Iterable<Book> findAll() {
1818
return this.bookRepository.findAll();
1919
}
2020

2121
@Override
22-
public Book findById(long id) {
22+
public Optional<Book> findById(long id) {
2323
return this.bookRepository.findById(id);
2424
}
2525

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
package io.github.julianjupiter.app.util;
2+
3+
import java.time.ZonedDateTime;
4+
5+
public class Error {
6+
private String message;
7+
private ZonedDateTime createdAt;
8+
9+
public String getMessage() {
10+
return message;
11+
}
12+
13+
public void setMessage(String message) {
14+
this.message = message;
15+
}
16+
17+
public ZonedDateTime getCreatedAt() {
18+
return createdAt;
19+
}
20+
21+
public void setCreatedAt(ZonedDateTime createdAt) {
22+
this.createdAt = createdAt;
23+
}
24+
}
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package io.github.julianjupiter.app.util;
2+
3+
public class ErrorResponse {
4+
private Error error;
5+
6+
public Error getError() {
7+
return error;
8+
}
9+
10+
public void setError(Error error) {
11+
this.error = error;
12+
}
13+
}

src/main/webapp/WEB-INF/index.jsp

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
2+
<!DOCTYPE html>
3+
<html>
4+
<head>
5+
<meta charset="UTF-8">
6+
<title>Java Web Application with Embedded Tomcat</title>
7+
</head>
8+
<body>
9+
<h1>Hello, world!</h1>
10+
</body>
11+
</html>

0 commit comments

Comments
 (0)