diff --git a/Expanded Pet Store (v3)/implementation/springboot-petstore-demo/.openapi-generator-ignore b/Expanded Pet Store (v3)/implementation/springboot-petstore-demo/.openapi-generator-ignore index 7484ee5..ad2c7c2 100644 --- a/Expanded Pet Store (v3)/implementation/springboot-petstore-demo/.openapi-generator-ignore +++ b/Expanded Pet Store (v3)/implementation/springboot-petstore-demo/.openapi-generator-ignore @@ -21,3 +21,7 @@ #docs/*.md # Then explicitly reverse the ignore rule for a single file: #!docs/README.md + + +# We customize Java version and may add dependencies +pom.xml \ No newline at end of file diff --git a/Expanded Pet Store (v3)/implementation/springboot-petstore-demo/pom.xml b/Expanded Pet Store (v3)/implementation/springboot-petstore-demo/pom.xml index 10cac49..d8c671a 100644 --- a/Expanded Pet Store (v3)/implementation/springboot-petstore-demo/pom.xml +++ b/Expanded Pet Store (v3)/implementation/springboot-petstore-demo/pom.xml @@ -6,7 +6,7 @@ petstore-demo 1.0.0 - 1.7 + 1.8 ${java.version} ${java.version} 2.8.0 diff --git a/Expanded Pet Store (v3)/implementation/springboot-petstore-demo/src/main/java/com/reprezen/demo/springboot/api/PetsApiDelegateImpl.java b/Expanded Pet Store (v3)/implementation/springboot-petstore-demo/src/main/java/com/reprezen/demo/springboot/api/PetsApiDelegateImpl.java new file mode 100644 index 0000000..213fcf0 --- /dev/null +++ b/Expanded Pet Store (v3)/implementation/springboot-petstore-demo/src/main/java/com/reprezen/demo/springboot/api/PetsApiDelegateImpl.java @@ -0,0 +1,57 @@ +package com.reprezen.demo.springboot.api; + +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.stereotype.Service; + +import com.google.common.collect.Maps; +import com.reprezen.demo.springboot.api.PetsApiDelegate; +import com.reprezen.demo.springboot.model.NewPet; +import com.reprezen.demo.springboot.model.Pet; + +@Service +public class PetsApiDelegateImpl implements PetsApiDelegate { + + private final Map pets = Maps.newHashMap(); + private long nextId = 0l; + + @Override + public ResponseEntity addPet(NewPet newPet) { + Pet petToAdd = new Pet(); + petToAdd.id(nextId++).name(newPet.getName()).tag(newPet.getTag()); + pets.put(petToAdd.getId(), petToAdd); + return new ResponseEntity<>(petToAdd, HttpStatus.CREATED); + } + + @Override + public ResponseEntity deletePet(Long id) { + if (!pets.containsKey(id)) { + return new ResponseEntity<>(HttpStatus.NOT_FOUND); + } + pets.remove(id); + return new ResponseEntity<>(HttpStatus.NO_CONTENT); + } + + @Override + public ResponseEntity findPetById(Long id) { + if (!pets.containsKey(id)) { + return new ResponseEntity<>(HttpStatus.NOT_FOUND); + } + return new ResponseEntity<>(pets.get(id), HttpStatus.ACCEPTED); + } + + @Override + public ResponseEntity> findPets(List tags, Integer limitObject) { + int limit = limitObject == null ? Integer.MAX_VALUE : limitObject; + List filteredPets = pets.values().stream()// + .filter(pet -> (tags == null || tags.isEmpty()) ? true : tags.contains(pet.getTag()))// + .limit(limit)// + .collect(Collectors.toList()); + return new ResponseEntity<>(filteredPets, HttpStatus.ACCEPTED); + } + +} diff --git a/Expanded Pet Store (v3)/pom.xml b/Expanded Pet Store (v3)/pom.xml index f1ea45e..41070ed 100644 --- a/Expanded Pet Store (v3)/pom.xml +++ b/Expanded Pet Store (v3)/pom.xml @@ -29,6 +29,11 @@ com.modelsolv.reprezen.generators.standard ${reprezen.version} + + org.openapitools + openapi-generator + 3.2.3 +