Skip to content

Commit 1f349d1

Browse files
authored
Merge pull request #27 from TeamCodeStream/feature/layers
Add layers where exceptions get thrown for more user code stack trace lines
2 parents 9b0b10b + 207934d commit 1f349d1

File tree

6 files changed

+46
-15
lines changed

6 files changed

+46
-15
lines changed
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package org.springframework.samples.petclinic.loggers;
2+
3+
import org.slf4j.Logger;
4+
import org.slf4j.LoggerFactory;
5+
import org.springframework.samples.petclinic.vet.Vet;
6+
7+
public class VetLogger {
8+
private static final Logger logger = LoggerFactory.getLogger(VetLogger.class);
9+
10+
public static void LogSpecialty(Vet vet){
11+
logger.info("Vet Speciality='{}'", vet.getSpecialties().get(0).getName());
12+
}
13+
}

src/main/java/org/springframework/samples/petclinic/owner/OwnerController.java

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
import org.springframework.data.domain.Page;
2626
import org.springframework.data.domain.PageRequest;
2727
import org.springframework.data.domain.Pageable;
28+
import org.springframework.samples.petclinic.validation.ControllerValidation;
2829
import org.springframework.stereotype.Controller;
2930
import org.springframework.ui.Model;
3031
import org.springframework.validation.BindingResult;
@@ -136,10 +137,7 @@ private String addPaginationModel(int page, Model model, Page<Owner> paginated)
136137
}
137138

138139
private Page<Owner> findPaginatedForOwnersLastName(int page, String lastname) {
139-
if(page < 1){
140-
// defensive programming
141-
throw new IllegalArgumentException("Page must be greater than 0");
142-
}
140+
ControllerValidation.ValidatePageNumber(page);
143141

144142
int pageSize = 5;
145143
Pageable pageable = PageRequest.of(page - 1, pageSize);

src/main/java/org/springframework/samples/petclinic/owner/PetController.java

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
import java.time.LocalDate;
1919
import java.util.Collection;
2020

21+
import org.springframework.samples.petclinic.validation.ControllerValidation;
2122
import org.springframework.stereotype.Controller;
2223
import org.springframework.ui.ModelMap;
2324
import org.springframework.util.StringUtils;
@@ -124,13 +125,10 @@ public String processCreationForm(Owner owner, @Valid Pet pet, BindingResult res
124125
@GetMapping("/pets/{petId}/edit")
125126
public String initUpdateForm(Owner owner, @PathVariable("petId") int petId, ModelMap model,
126127
RedirectAttributes redirectAttributes) {
127-
if(owner == null){
128-
throw new IllegalArgumentException("Owner not found!");
129-
}
128+
ControllerValidation.ValidateNotNull(owner, "Owner");
130129
Pet pet = owner.getPet(petId);
131-
if(pet == null){
132-
throw new IllegalArgumentException("Pet not found!");
133-
}
130+
131+
ControllerValidation.ValidateNotNull(pet, "Pet");
134132
model.put("pet", pet);
135133
return VIEWS_PETS_CREATE_OR_UPDATE_FORM;
136134
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
package org.springframework.samples.petclinic.validation;
2+
3+
public class BaseValidation {
4+
public static void IntegerMustBeGreaterThan(Integer a, Integer b, String label) {
5+
if(a < b){
6+
throw new IllegalArgumentException(label + " must be greater than " + b);
7+
}
8+
}
9+
}
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package org.springframework.samples.petclinic.validation;
2+
3+
public class ControllerValidation {
4+
public static void ValidatePageNumber(int pageNumber) throws IllegalArgumentException {
5+
BaseValidation.IntegerMustBeGreaterThan(pageNumber, 0, "Page Number");
6+
}
7+
8+
public static void ValidateNotNull(Object object, String name) throws IllegalArgumentException {
9+
if (object == null) {
10+
throw new IllegalArgumentException(name + " cannot be null");
11+
}
12+
}
13+
}

src/main/java/org/springframework/samples/petclinic/vet/VetController.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@
2020
import org.springframework.data.domain.Page;
2121
import org.springframework.data.domain.PageRequest;
2222
import org.springframework.data.domain.Pageable;
23+
import org.springframework.samples.petclinic.loggers.VetLogger;
24+
import org.springframework.samples.petclinic.validation.ControllerValidation;
2325
import org.springframework.stereotype.Controller;
2426
import org.springframework.ui.Model;
2527
import org.springframework.web.bind.annotation.GetMapping;
@@ -69,10 +71,8 @@ private String addPaginationModel(int page, Page<Vet> paginated, Model model) {
6971
}
7072

7173
private Page<Vet> findPaginated(int page) {
72-
if(page < 1) {
73-
// defensive programming
74-
throw new IllegalArgumentException("Page must be greater than 0");
75-
}
74+
ControllerValidation.ValidatePageNumber(page);
75+
7676
int pageSize = 5;
7777
Pageable pageable = PageRequest.of(page - 1, pageSize);
7878
return vetRepository.findAll(pageable);
@@ -96,7 +96,7 @@ private Page<Vet> findPaginated(int page) {
9696
Vets vets = new Vets();
9797
Collection<Vet> vetList = this.vetRepository.findByLastName(lastName);
9898
for (Vet vet : vetList) {
99-
logger.info("Vet Speciality='{}'", vet.getSpecialties().get(0).getName());
99+
VetLogger.LogSpecialty(vet);
100100
}
101101
vets.getVetList().addAll(vetList);
102102
return vets;

0 commit comments

Comments
 (0)