Skip to content

Commit 4d28f5a

Browse files
committed
HTTP PATCH #67 and Assignment springframeworkguru#9
1 parent 2ca0752 commit 4d28f5a

File tree

6 files changed

+55
-1
lines changed

6 files changed

+55
-1
lines changed

src/main/java/guru/springframework/spring6restmvc/controller/BeerController.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,13 @@ public class BeerController {
2020

2121
private final BeerService beerService;
2222

23+
@PatchMapping("{beerId}")
24+
public ResponseEntity updateBeer(@PathVariable UUID beerId, @RequestBody Beer beer) {
25+
beerService.patchBeerById(beerId, beer);
26+
27+
return new ResponseEntity(HttpStatus.NO_CONTENT);
28+
}
29+
2330
@DeleteMapping("{beerId}")
2431
public ResponseEntity deleteBeer(@PathVariable("beerId") UUID beerId) {
2532
beerService.deleteBeerById(beerId);

src/main/java/guru/springframework/spring6restmvc/controller/CustomerController.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package guru.springframework.spring6restmvc.controller;
22

3-
import guru.springframework.spring6restmvc.model.Beer;
43
import guru.springframework.spring6restmvc.model.Customer;
54
import guru.springframework.spring6restmvc.service.CustomerService;
65
import lombok.AllArgsConstructor;
@@ -21,6 +20,13 @@ public class CustomerController {
2120

2221
private final CustomerService customerService;
2322

23+
@PatchMapping("{customerId}")
24+
public ResponseEntity updateCustomer(@PathVariable("customerId") UUID customerId, @RequestBody Customer customer) {
25+
customerService.patchCustomerById(customerId, customer);
26+
27+
return new ResponseEntity(HttpStatus.NO_CONTENT);
28+
}
29+
2430
@DeleteMapping("{customerId}")
2531
public ResponseEntity deleteCustomer(@PathVariable("customerId") UUID customerId) {
2632
customerService.deleteCustomerById(customerId);

src/main/java/guru/springframework/spring6restmvc/service/BeerService.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,4 +15,6 @@ public interface BeerService {
1515
void updateBeerById(UUID beerId, Beer beer);
1616

1717
void deleteBeerById(UUID beerId);
18+
19+
void patchBeerById(UUID beerId, Beer beer);
1820
}

src/main/java/guru/springframework/spring6restmvc/service/BeerServiceImpl.java

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import guru.springframework.spring6restmvc.model.BeerStyle;
55
import lombok.extern.slf4j.Slf4j;
66
import org.springframework.stereotype.Service;
7+
import org.springframework.util.StringUtils;
78

89
import java.math.BigDecimal;
910
import java.time.LocalDateTime;
@@ -107,4 +108,29 @@ public void updateBeerById(UUID beerId, Beer beer) {
107108
public void deleteBeerById(UUID beerId) {
108109
beerMap.remove(beerId);
109110
}
111+
112+
@Override
113+
public void patchBeerById(UUID beerId, Beer beer) {
114+
Beer existingBeer = beerMap.get(beerId);
115+
116+
if(StringUtils.hasText(beer.getBeerName())) {
117+
existingBeer.setBeerName(beer.getBeerName());
118+
}
119+
120+
if(beer.getBeerStyle() != null) {
121+
existingBeer.setBeerStyle(beer.getBeerStyle());
122+
}
123+
124+
if(beer.getPrice() != null) {
125+
existingBeer.setPrice(beer.getPrice());
126+
}
127+
128+
if(beer.getQuantityOnHand() != null) {
129+
existingBeer.setQuantityOnHand(beer.getQuantityOnHand());
130+
}
131+
132+
if(StringUtils.hasText(beer.getUpc())) {
133+
existingBeer.setUpc(beer.getUpc());
134+
}
135+
}
110136
}

src/main/java/guru/springframework/spring6restmvc/service/CustomerService.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,4 +13,6 @@ public interface CustomerService {
1313
void updateCustomerById(UUID customerId, Customer customer);
1414

1515
void deleteCustomerById(UUID customerId);
16+
17+
void patchCustomerById(UUID customerId, Customer customer);
1618
}

src/main/java/guru/springframework/spring6restmvc/service/CustomerServiceImpl.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import guru.springframework.spring6restmvc.model.Customer;
44
import org.springframework.stereotype.Service;
5+
import org.springframework.util.StringUtils;
56

67
import java.time.LocalDateTime;
78
import java.util.*;
@@ -81,4 +82,14 @@ public void updateCustomerById(UUID customerId, Customer customer) {
8182
public void deleteCustomerById(UUID customerId) {
8283
customerMap.remove(customerId);
8384
}
85+
86+
@Override
87+
public void patchCustomerById(UUID customerId, Customer customer) {
88+
Customer existingCustomer = customerMap.get(customerId);
89+
90+
if(StringUtils.hasText(customer.getName())) {
91+
existingCustomer.setName(customer.getName());
92+
}
93+
94+
}
8495
}

0 commit comments

Comments
 (0)