This is an automated email from the ASF dual-hosted git repository.

jamesbognar pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/juneau-petstore.git

commit f3accd40cf17c5799c3d883e16d992d20e7ed90a
Author: JamesBognar <[email protected]>
AuthorDate: Fri Dec 20 10:59:14 2019 -0500

    Bug fixes discovered through testing.
---
 .../java/org/apache/juneau/petstore/dto/Pet.java   |  4 ++--
 .../juneau/petstore/repository/UserRepository.java |  4 +++-
 .../juneau/petstore/rest/PetStoreResource.java     |  1 +
 .../juneau/petstore/service/PetStoreService.java   | 28 ++++++++++++++--------
 4 files changed, 24 insertions(+), 13 deletions(-)

diff --git 
a/juneau-petstore-api/src/main/java/org/apache/juneau/petstore/dto/Pet.java 
b/juneau-petstore-api/src/main/java/org/apache/juneau/petstore/dto/Pet.java
index ea19272..40c1222 100644
--- a/juneau-petstore-api/src/main/java/org/apache/juneau/petstore/dto/Pet.java
+++ b/juneau-petstore-api/src/main/java/org/apache/juneau/petstore/dto/Pet.java
@@ -54,7 +54,7 @@ public class Pet {
        private Species species;
 
        @ElementCollection(fetch=FetchType.EAGER) @OrderColumn
-       @Schema(description="Pet attributes.", example="friendly,smart")        
+       @Schema(description="Pet attributes.", example="friendly,smart")
        private List<String> tags;
 
        @Column @Enumerated(STRING)
@@ -86,7 +86,7 @@ public class Pet {
                this.name = x.getName();
                this.price = x.getPrice();
                this.species = x.getSpecies();
-               this.tags = Arrays.asList(x.getTags());
+               this.tags = x.getTags() == null ? null : 
Arrays.asList(x.getTags());
                this.status = x.getStatus();
                return this;
        }
diff --git 
a/juneau-petstore-server/src/main/java/org/apache/juneau/petstore/repository/UserRepository.java
 
b/juneau-petstore-server/src/main/java/org/apache/juneau/petstore/repository/UserRepository.java
index 4842ed2..a292a6a 100644
--- 
a/juneau-petstore-server/src/main/java/org/apache/juneau/petstore/repository/UserRepository.java
+++ 
b/juneau-petstore-server/src/main/java/org/apache/juneau/petstore/repository/UserRepository.java
@@ -2,6 +2,8 @@ package org.apache.juneau.petstore.repository;
 
 
 
+import java.util.Optional;
+
 import org.apache.juneau.petstore.dto.User;
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.stereotype.Repository;
@@ -13,7 +15,7 @@ import org.springframework.stereotype.Repository;
 public interface UserRepository  extends JpaRepository <User, Long>{
 
        @SuppressWarnings("javadoc")
-       User findByUsername(String username);
+       Optional<User> findByUsername(String username);
 
        @SuppressWarnings("javadoc")
        Long deleteByUsername(String username);
diff --git 
a/juneau-petstore-server/src/main/java/org/apache/juneau/petstore/rest/PetStoreResource.java
 
b/juneau-petstore-server/src/main/java/org/apache/juneau/petstore/rest/PetStoreResource.java
index 790e684..9808eae 100644
--- 
a/juneau-petstore-server/src/main/java/org/apache/juneau/petstore/rest/PetStoreResource.java
+++ 
b/juneau-petstore-server/src/main/java/org/apache/juneau/petstore/rest/PetStoreResource.java
@@ -96,6 +96,7 @@ import org.apache.juneau.rest.converters.*;
                        )
                }
        ),
+       debug="true",
        staticFiles={"htdocs:/htdocs"}  // Expose static files in htdocs 
subpackage.
 )
 @HtmlDocConfig(
diff --git 
a/juneau-petstore-server/src/main/java/org/apache/juneau/petstore/service/PetStoreService.java
 
b/juneau-petstore-server/src/main/java/org/apache/juneau/petstore/service/PetStoreService.java
index f633983..bb69c2c 100644
--- 
a/juneau-petstore-server/src/main/java/org/apache/juneau/petstore/service/PetStoreService.java
+++ 
b/juneau-petstore-server/src/main/java/org/apache/juneau/petstore/service/PetStoreService.java
@@ -25,6 +25,7 @@ import org.apache.juneau.petstore.repository.OrderRepository;
 import org.apache.juneau.petstore.repository.PetRepository;
 import org.apache.juneau.petstore.repository.UserRepository;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.transaction.annotation.Transactional;
 
 
 
@@ -42,13 +43,13 @@ import 
org.springframework.beans.factory.annotation.Autowired;
  */
 public class PetStoreService {
 
-       
+
        @Autowired
        private PetRepository petRepository;
-       
+
        @Autowired
        private UserRepository userRepository;
-       
+
        @Autowired
        private OrderRepository orderRepository;
        
//-----------------------------------------------------------------------------------------------------------------
@@ -65,7 +66,7 @@ public class PetStoreService {
         */
        public PetStoreService initDirect(PrintWriter w) throws ParseException, 
IOException {
 
-               
+
                JsonParser parser = JsonParser.create().build();
 
                for (Pet x : petRepository.findAll()) {
@@ -80,7 +81,7 @@ public class PetStoreService {
                        userRepository.delete(x);
                        w.println(format("Deleted user:  username={0}", 
x.getUsername()));
                }
-               
+
 
                for (Pet x : parser.parse(getStream("init/Pets.json"), 
Pet[].class)) {
                        petRepository.save(x);
@@ -135,7 +136,7 @@ public class PetStoreService {
         */
        public User getUser(String username) throws InvalidUsername, IdNotFound 
 {
                assertValidUsername(username);
-               return userRepository.findByUsername(username);
+               return userRepository.findByUsername(username).orElseThrow(() 
-> new IdNotFound(username, User.class));
        }
 
        /**
@@ -171,7 +172,7 @@ public class PetStoreService {
         * @param c The pet input data.
         * @return a new {@link Pet} object.
         */
-       public Pet create(CreatePet c) {        
+       public Pet create(CreatePet c) {
                return petRepository.save((new 
Pet().status(PetStatus.AVAILABLE).apply(c)));
        }
 
@@ -192,6 +193,7 @@ public class PetStoreService {
         * @return a new {@link User} object.
         */
        public User create(User c) {
+               assertValidUsername(c.getUsername());
                return userRepository.save((new User().apply(c)));
        }
 
@@ -202,8 +204,9 @@ public class PetStoreService {
         * @return The updated {@link Pet} object.
         * @throws IdNotFound Pet was not found.
         */
+    @Transactional(rollbackFor=Exception.class)
        public Pet update(UpdatePet u) throws IdNotFound {
-               Pet pet =  petRepository.findById(u.getId()).get();             
+               Pet pet =  petRepository.findById(u.getId()).orElseThrow(() -> 
new IdNotFound(u.getId(), Pet.class));
                return petRepository.save(pet.apply(u));
        }
 
@@ -214,8 +217,9 @@ public class PetStoreService {
         * @return The updated {@link Order} object.
         * @throws IdNotFound Order was not found.
         */
+    @Transactional(rollbackFor=Exception.class)
        public Order update(Order o) throws IdNotFound {
-               Order order =  orderRepository.findById(o.getId()).get();       
        
+               Order order =  
orderRepository.findById(o.getId()).orElseThrow(() -> new IdNotFound(o.getId(), 
Order.class));
                return orderRepository.save(order.apply(o));
        }
 
@@ -227,8 +231,9 @@ public class PetStoreService {
         * @throws IdNotFound User was not found.
         * @throws InvalidUsername The username was not valid.
         */
+    @Transactional(rollbackFor=Exception.class)
        public User update(User u) throws IdNotFound, InvalidUsername {
-               User user =  userRepository.findByUsername(u.getUsername());    
        
+               User user =  
userRepository.findByUsername(u.getUsername()).orElseThrow(() -> new 
IdNotFound(u.getUsername(), Order.class));
                return userRepository.save(user.apply(u));
        }
 
@@ -238,6 +243,7 @@ public class PetStoreService {
         * @param id The pet ID.
         * @throws IdNotFound Pet was not found.
         */
+    @Transactional(rollbackFor=Exception.class)
        public void removePet(long id) throws IdNotFound {
                petRepository.deleteById(id);
        }
@@ -248,6 +254,7 @@ public class PetStoreService {
         * @param id The order ID.
         * @throws IdNotFound Order was not found.
         */
+    @Transactional(rollbackFor=Exception.class)
        public void removeOrder(long id) throws IdNotFound {
                orderRepository.deleteById(id);
        }
@@ -258,6 +265,7 @@ public class PetStoreService {
         * @param username The username.
         * @throws IdNotFound User was not found.
         */
+    @Transactional(rollbackFor=Exception.class)
        public void removeUser(String username) throws IdNotFound {
                userRepository.deleteByUsername(username);
        }

Reply via email to