[BAEL-4381] Intro to ArchUnit

This commit is contained in:
Philippe
2020-07-28 10:26:00 -03:00
parent 0cade733ca
commit 2911201832
9 changed files with 349 additions and 3 deletions
@@ -0,0 +1,49 @@
/**
*
*/
package com.baldung.archunit.smurfs.persistence;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.TreeMap;
import com.baldung.archunit.smurfs.persistence.domain.Smurf;
import static java.util.stream.Collectors.toList;
/**
* @author Philippe
*
*/
public class SmurfsRepository {
private static Map<String,Smurf> smurfs = Collections.synchronizedMap(new TreeMap<>());
static {
// Just a few here. A full list can be found
// at https://smurfs.fandom.com/wiki/List_of_Smurf_characters
smurfs.put("Papa", new Smurf("Papa", true, true));
smurfs.put("Actor", new Smurf("Actor", true, true));
smurfs.put("Alchemist", new Smurf("Alchemist", true, true));
smurfs.put("Archeologist", new Smurf("Archeologist", true, true));
smurfs.put("Architect", new Smurf("Architect", true, true));
smurfs.put("Baby", new Smurf("Baby", true, true));
smurfs.put("Baker", new Smurf("Baker", true, true));
smurfs.put("Baker", new Smurf("Baker", true, true));
}
public SmurfsRepository() {
}
public List<Smurf> findAll() {
return Collections.unmodifiableList(smurfs.values().stream().collect(toList()));
}
public Optional<Smurf> findByName(String name) {
return Optional.of(smurfs.get(name));
}
}
@@ -0,0 +1,64 @@
/**
*
*/
package com.baldung.archunit.smurfs.persistence.domain;
/**
* @author Philippe
*
*/
public class Smurf {
private String name;
private boolean comic;
private boolean cartoon;
public Smurf() {}
public Smurf(String name, boolean comic, boolean cartoon) {
this.name = name;
this.comic = comic;
this.cartoon = cartoon;
}
/**
* @return the name
*/
public String getName() {
return name;
}
/**
* @param name the name to set
*/
public void setName(String name) {
this.name = name;
}
/**
* @return the commic
*/
public boolean isComic() {
return comic;
}
/**
* @param commic the commic to set
*/
public void setCommic(boolean comic) {
this.comic = comic;
}
/**
* @return the cartoon
*/
public boolean isCartoon() {
return cartoon;
}
/**
* @param cartoon the cartoon to set
*/
public void setCartoon(boolean cartoon) {
this.cartoon = cartoon;
}
}
@@ -0,0 +1,27 @@
package com.baldung.archunit.smurfs.presentation;
import java.util.List;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.baldung.archunit.smurfs.service.SmurfsService;
import com.baldung.archunit.smurfs.service.dto.SmurfDTO;
@RequestMapping(value = "/smurfs", produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
@RestController
public class SmurfsController {
private SmurfsService smurfs;
public SmurfsController(SmurfsService smurfs) {
this.smurfs = smurfs;
}
@GetMapping
public List<SmurfDTO> getSmurfs() {
return smurfs.findAll();
}
}
@@ -0,0 +1,41 @@
/**
*
*/
package com.baldung.archunit.smurfs.service;
import java.util.List;
import java.util.stream.Collectors;
import org.springframework.stereotype.Component;
import com.baldung.archunit.smurfs.persistence.SmurfsRepository;
import com.baldung.archunit.smurfs.persistence.domain.Smurf;
import com.baldung.archunit.smurfs.service.dto.SmurfDTO;
/**
* @author Philippe
*
*/
@Component
public class SmurfsService {
private SmurfsRepository repository;
public SmurfsService(SmurfsRepository repository) {
this.repository = repository;
}
public List<SmurfDTO> findAll() {
return repository.findAll()
.stream()
.map(SmurfsService::toDTO)
.collect(Collectors.toList());
}
public static SmurfDTO toDTO(Smurf smurf) {
return new SmurfDTO(smurf.getName(),smurf.isComic(), smurf.isCartoon());
}
}
@@ -0,0 +1,64 @@
/**
*
*/
package com.baldung.archunit.smurfs.service.dto;
import com.baldung.archunit.smurfs.persistence.domain.Smurf;
/**
* @author Philippe
*
*/
public class SmurfDTO {
private String name;
private boolean comic;
private boolean cartoon;
public SmurfDTO() {}
public SmurfDTO(String name, boolean comic, boolean cartoon) {
this.name = name;
this.comic = comic;
this.cartoon = cartoon;
}
/**
* @return the name
*/
public String getName() {
return name;
}
/**
* @param name the name to set
*/
public void setName(String name) {
this.name = name;
}
/**
* @return the commic
*/
public boolean isComic() {
return comic;
}
/**
* @param commic the commic to set
*/
public void setCommic(boolean comic) {
this.comic = comic;
}
/**
* @return the cartoon
*/
public boolean isCartoon() {
return cartoon;
}
/**
* @param cartoon the cartoon to set
*/
public void setCartoon(boolean cartoon) {
this.cartoon = cartoon;
}
}