Skip to content

Commit f9e4660

Browse files
committed
FIXEDDD
1 parent ee4a68a commit f9e4660

File tree

2 files changed

+31
-7
lines changed

2 files changed

+31
-7
lines changed
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
package com.codedifferently.lesson26.web;
2+
3+
import jakarta.validation.Valid;
4+
import jakarta.validation.constraints.NotNull;
5+
6+
public class MediaItemWrapper {
7+
8+
@NotNull(message = "Item is required") @Valid
9+
private MediaItemRequest item;
10+
11+
public MediaItemRequest getItem() {
12+
return item;
13+
}
14+
15+
public void setItem(MediaItemRequest item) {
16+
this.item = item;
17+
}
18+
}

lesson_26/api/java/api_app/src/main/java/com/codedifferently/lesson26/web/MediaItemsController.java

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,10 @@
77
import jakarta.validation.Valid;
88
import java.io.IOException;
99
import java.util.List;
10+
import java.util.Map;
1011
import java.util.Optional;
1112
import java.util.Set;
1213
import java.util.UUID;
13-
import org.springframework.http.HttpStatus;
1414
import org.springframework.http.ResponseEntity;
1515
import org.springframework.web.bind.annotation.CrossOrigin;
1616
import org.springframework.web.bind.annotation.DeleteMapping;
@@ -41,16 +41,22 @@ public ResponseEntity<GetMediaItemsResponse> getItems() {
4141
}
4242

4343
@PostMapping("/items")
44-
public ResponseEntity<MediaItemResponse> createItem(
45-
@Valid @RequestBody MediaItemRequest request) {
44+
public ResponseEntity<Map<String, MediaItemResponse>> createItem(
45+
@Valid @RequestBody MediaItemWrapper wrapper) {
46+
47+
MediaItemRequest request = wrapper.getItem();
48+
if (request == null) {
49+
throw new IllegalArgumentException("Item must be provided in request body");
50+
}
51+
4652
MediaItem newItem = MediaItemRequest.asMediaItem(request);
47-
Librarian librarian = new Librarian("system", "[email protected]");
4853
library.addMediaItem(newItem, librarian);
49-
return new ResponseEntity<>(MediaItemResponse.from(newItem), HttpStatus.CREATED);
54+
return ResponseEntity.ok(Map.of("item", MediaItemResponse.from(newItem)));
5055
}
5156

5257
@GetMapping("/items/{id}")
53-
public ResponseEntity<MediaItemResponse> getItemById(@PathVariable UUID id) {
58+
public ResponseEntity<MediaItemResponse> getItemById(@PathVariable("id") UUID id) {
59+
5460
Set<MediaItem> allItems = library.search(SearchCriteria.builder().build());
5561

5662
Optional<MediaItem> itemOpt =
@@ -65,7 +71,7 @@ public ResponseEntity<MediaItemResponse> getItemById(@PathVariable UUID id) {
6571
}
6672

6773
@DeleteMapping("/items/{id}")
68-
public ResponseEntity<Void> deleteItemById(@PathVariable UUID id) {
74+
public ResponseEntity<Void> deleteItemById(@PathVariable("id") UUID id) {
6975
Optional<MediaItem> itemOpt =
7076
library.search(SearchCriteria.builder().build()).stream()
7177
.filter(item -> item.getId().equals(id))

0 commit comments

Comments
 (0)