Skip to content

Commit 8fad4cb

Browse files
committed
MVC REST #59
1 parent 90ab6ba commit 8fad4cb

File tree

7 files changed

+171
-0
lines changed

7 files changed

+171
-0
lines changed
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
package guru.springframework.spring6restmvc.controller;
2+
3+
import guru.springframework.spring6restmvc.model.Beer;
4+
import guru.springframework.spring6restmvc.service.BeerService;
5+
import lombok.AllArgsConstructor;
6+
import lombok.extern.slf4j.Slf4j;
7+
import org.springframework.web.bind.annotation.RequestMapping;
8+
import org.springframework.web.bind.annotation.RestController;
9+
10+
import java.util.List;
11+
import java.util.UUID;
12+
13+
@Slf4j
14+
@AllArgsConstructor
15+
@RestController
16+
public class BeerController {
17+
18+
private final BeerService beerService;
19+
20+
@RequestMapping("/api/v1/beer")
21+
public List<Beer> listBeers() {
22+
return beerService.listBeers();
23+
}
24+
25+
public Beer getBeerById(UUID id) {
26+
log.debug("getBeerById() called in Controller");
27+
return beerService.getBeerById(id);
28+
}
29+
30+
}
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
package guru.springframework.spring6restmvc.model;
2+
3+
import lombok.Builder;
4+
import lombok.Data;
5+
6+
import java.math.BigDecimal;
7+
import java.time.LocalDateTime;
8+
import java.util.UUID;
9+
10+
@Builder
11+
@Data
12+
public class Beer {
13+
private UUID id;
14+
private Integer version;
15+
private String beerName;
16+
private BeerStyle beerStyle;
17+
private String upc;
18+
private Integer quantityOnHand;
19+
private BigDecimal price;
20+
private LocalDateTime createdDate;
21+
private LocalDateTime updateDate;
22+
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
package guru.springframework.spring6restmvc.model;
2+
3+
public enum BeerStyle {
4+
PALE_ALE,
5+
LAGER,
6+
ALE,
7+
PILS,
8+
IPA
9+
}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
package guru.springframework.spring6restmvc.service;
2+
3+
import guru.springframework.spring6restmvc.model.Beer;
4+
5+
import java.util.List;
6+
import java.util.UUID;
7+
8+
public interface BeerService {
9+
List<Beer> listBeers();
10+
11+
Beer getBeerById(UUID id);
12+
}
Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
package guru.springframework.spring6restmvc.service;
2+
3+
import guru.springframework.spring6restmvc.model.Beer;
4+
import guru.springframework.spring6restmvc.model.BeerStyle;
5+
import lombok.extern.slf4j.Slf4j;
6+
import org.springframework.stereotype.Service;
7+
8+
import java.math.BigDecimal;
9+
import java.time.LocalDateTime;
10+
import java.util.*;
11+
12+
@Slf4j
13+
@Service
14+
public class BeerServiceImpl implements BeerService {
15+
16+
private Map<UUID, Beer> beerMap;
17+
18+
public BeerServiceImpl() {
19+
this.beerMap = new HashMap<>();
20+
21+
Beer beer1 = Beer.builder()
22+
.id(UUID.randomUUID())
23+
.version(1)
24+
.beerName("Galaxy Cat")
25+
.beerStyle(BeerStyle.PALE_ALE)
26+
.upc("12345")
27+
.price(new BigDecimal("12.99"))
28+
.quantityOnHand(122)
29+
.createdDate(LocalDateTime.now())
30+
.updateDate(LocalDateTime.now())
31+
.build();
32+
33+
Beer beer2 = Beer.builder()
34+
.id(UUID.randomUUID())
35+
.version(1)
36+
.beerName("Crank")
37+
.beerStyle(BeerStyle.IPA)
38+
.upc("12547")
39+
.price(new BigDecimal("11.99"))
40+
.quantityOnHand(392)
41+
.createdDate(LocalDateTime.now())
42+
.updateDate(LocalDateTime.now())
43+
.build();
44+
45+
Beer beer3 = Beer.builder()
46+
.id(UUID.randomUUID())
47+
.version(1)
48+
.beerName("Sunshine City")
49+
.beerStyle(BeerStyle.PILS)
50+
.upc("12547")
51+
.price(new BigDecimal("9.99"))
52+
.quantityOnHand(524)
53+
.createdDate(LocalDateTime.now())
54+
.updateDate(LocalDateTime.now())
55+
.build();
56+
57+
beerMap.put(beer1.getId(), beer1);
58+
beerMap.put(beer2.getId(), beer2);
59+
beerMap.put(beer3.getId(), beer3);
60+
}
61+
62+
@Override
63+
public List<Beer> listBeers() {
64+
return new ArrayList<>(beerMap.values());
65+
}
66+
67+
@Override
68+
public Beer getBeerById(UUID id) {
69+
70+
log.debug("getBeerById in BeerService was called");
71+
72+
return beerMap.get(id);
73+
}
74+
}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,2 @@
11

2+
logging.level.guru.springframework=debug
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
package guru.springframework.spring6restmvc.controller;
2+
3+
import org.junit.jupiter.api.Test;
4+
import org.springframework.beans.factory.annotation.Autowired;
5+
import org.springframework.boot.test.context.SpringBootTest;
6+
7+
import java.util.UUID;
8+
9+
import static org.junit.jupiter.api.Assertions.*;
10+
11+
@SpringBootTest
12+
class BeerControllerTest {
13+
14+
@Autowired
15+
BeerController beerController;
16+
17+
@Test
18+
void getBeerByID() {
19+
20+
System.out.println(beerController.getBeerById(UUID.randomUUID()));
21+
22+
}
23+
}

0 commit comments

Comments
 (0)