6 Dateien geändert
1 Dateien umbenannt
42 ■■■■■ Geänderte Dateien
src/main/java/de/gedoplan/seminar/sbt/di/exercise/SbtCoreExerciseApplication.java 4 ●●●● Patch | Ansicht | Raw | Blame | Historie
src/main/java/de/gedoplan/seminar/sbt/di/exercise/rest/BarResource.java 2 ●●●●● Patch | Ansicht | Raw | Blame | Historie
src/main/java/de/gedoplan/seminar/sbt/di/exercise/service/CocktailSelectChecker.java 7 ●●●●● Patch | Ansicht | Raw | Blame | Historie
src/main/java/de/gedoplan/seminar/sbt/di/exercise/service/CocktailsProducer.java 4 ●●●● Patch | Ansicht | Raw | Blame | Historie
src/main/java/de/gedoplan/seminar/sbt/di/exercise/service/IngredientService.java 19 ●●●● Patch | Ansicht | Raw | Blame | Historie
src/test/java/de/gedoplan/seminar/sbt/di/exercise/Exercise07Test.java 2 ●●● Patch | Ansicht | Raw | Blame | Historie
src/test/java/de/gedoplan/seminar/sbt/di/exercise/Exercise09Test.java 4 ●●●● Patch | Ansicht | Raw | Blame | Historie
src/main/java/de/gedoplan/seminar/sbt/di/exercise/SbtCoreExerciseApplication.java
Datei umbenannt von src/main/java/de/gedoplan/seminar/sbt/di/exercise/SbtDiExerciseApplication.java
@@ -6,10 +6,10 @@
@ConfigurationPropertiesScan
@SpringBootApplication
public class SbtDiExerciseApplication {
public class SbtCoreExerciseApplication {
    public static void main(String[] args) {
        SpringApplication.run(SbtDiExerciseApplication.class, args);
        SpringApplication.run(SbtCoreExerciseApplication.class, args);
    }
}
src/main/java/de/gedoplan/seminar/sbt/di/exercise/rest/BarResource.java
@@ -1,5 +1,6 @@
package de.gedoplan.seminar.sbt.di.exercise.rest;
import de.gedoplan.seminar.sbt.di.exercise.aop.Counted;
import de.gedoplan.seminar.sbt.di.exercise.domain.Cocktail;
import de.gedoplan.seminar.sbt.di.exercise.service.BarInfo;
import de.gedoplan.seminar.sbt.di.exercise.service.CocktailService;
@@ -38,6 +39,7 @@
        return barInfo.barName();
    }
    @Counted
    @GetMapping(path = "cocktails", produces = MediaType.APPLICATION_JSON_VALUE)
    public List<Cocktail> getCocktails() {
        return cocktails;
src/main/java/de/gedoplan/seminar/sbt/di/exercise/service/CocktailSelectChecker.java
@@ -16,10 +16,9 @@
    @EventListener
    public void select(Cocktail cocktail) {
        cocktail.getIngredients().entrySet().stream()
                .filter(not(e -> ingredientService.isAvailable(e.getKey().getId(), e.getValue())))
                .findFirst().ifPresent(beverage -> {
                    throw new OutOfStockException(beverage.getKey());
        ingredientService.beveragesNotAvailable(cocktail)
                        .stream().findFirst().ifPresent(beverage -> {
                    throw new OutOfStockException(beverage);
                });
    }
}
src/main/java/de/gedoplan/seminar/sbt/di/exercise/service/CocktailsProducer.java
@@ -27,8 +27,8 @@
    private void init() {
        Map<Boolean,List<Cocktail>> cocktails = cocktailService.findAll().stream()
                .collect(Collectors.groupingBy(Cocktail::isAlcoholic));
        cocktailsAlcoholic = cocktails.get(true);
        cocktailsNonAlcoholic = cocktails.get(false);
        cocktailsAlcoholic = cocktails.getOrDefault(true,List.of());
        cocktailsNonAlcoholic = cocktails.getOrDefault(false,List.of());
    }
    @Primary
src/main/java/de/gedoplan/seminar/sbt/di/exercise/service/IngredientService.java
@@ -1,12 +1,27 @@
package de.gedoplan.seminar.sbt.di.exercise.service;
import de.gedoplan.seminar.sbt.di.exercise.domain.Beverage;
import de.gedoplan.seminar.sbt.di.exercise.domain.Cocktail;
import de.gedoplan.seminar.sbt.di.exercise.exception.OutOfStockException;
import org.springframework.stereotype.Component;
import java.util.List;
import java.util.Map;
import static java.util.function.Predicate.not;
@Component
public class IngredientService {
  public boolean isAvailable(String id, double amount) {
  public List<Beverage> beveragesNotAvailable(Cocktail cocktail) {
    return cocktail.getIngredients().entrySet().stream()
            .filter(not(e -> isAvailable(e.getKey(), e.getValue())))
            .map(Map.Entry::getKey)
            .toList();
  }
  public boolean isAvailable(Beverage beverage, double amount) {
    // Dummy check: Anything but rum is available
    return !"RUM".equals(id);
    return !"RUM".equals(beverage.getId());
  }
}
src/test/java/de/gedoplan/seminar/sbt/di/exercise/Exercise07Test.java
@@ -39,7 +39,7 @@
    @Test
    public void testFiltersNonAlcEmpty() throws Exception {
        mockMvc.perform(get("/api/bar/nonalc"))
                .andExpect(content().string(""));
                .andExpect(jsonPath("$.size()",is(0)));
    }
    @Test
src/test/java/de/gedoplan/seminar/sbt/di/exercise/Exercise09Test.java
@@ -22,13 +22,13 @@
        mockMvc.perform(get("/api/methodCount"))
                .andExpect(jsonPath("$.findAll").value(2));
                .andExpect(jsonPath("$.getCocktails").value(1));
        mockMvc.perform(get("/api/bar/cocktails"))
                .andExpect(status().isOk());
        mockMvc.perform(get("/api/methodCount"))
                .andExpect(jsonPath("$.findAll").value(4));
                .andExpect(jsonPath("$.getCocktails").value(2));
    }
}