├── Chapter1 ├── final │ └── .keep └── starter │ └── .keep ├── Chapter10 ├── Chapter_10_Postman_Collection.json ├── final │ └── quick-poll-ch10-final │ │ ├── pom.xml │ │ └── src │ │ ├── main │ │ ├── java │ │ │ └── com │ │ │ │ └── apress │ │ │ │ ├── QuickPollApplication.java │ │ │ │ ├── controller │ │ │ │ ├── ComputeResultController.java │ │ │ │ ├── PollController.java │ │ │ │ └── VoteController.java │ │ │ │ ├── domain │ │ │ │ ├── Option.java │ │ │ │ ├── Poll.java │ │ │ │ └── Vote.java │ │ │ │ ├── dto │ │ │ │ ├── OptionCount.java │ │ │ │ └── VoteResult.java │ │ │ │ └── repository │ │ │ │ ├── OptionRepository.java │ │ │ │ ├── PollRepository.java │ │ │ │ └── VoteRepository.java │ │ └── resources │ │ │ ├── application.properties │ │ │ ├── import.sql │ │ │ ├── static │ │ │ └── .keep │ │ │ └── templates │ │ │ └── .keep │ │ └── test │ │ └── java │ │ └── com │ │ └── apress │ │ └── QuickPollApplicationTests.java └── starter │ └── quick-poll-ch10-starter │ ├── pom.xml │ └── src │ ├── main │ ├── java │ │ └── com │ │ │ └── apress │ │ │ ├── QuickPollApplication.java │ │ │ ├── controller │ │ │ ├── ComputeResultController.java │ │ │ ├── PollController.java │ │ │ └── VoteController.java │ │ │ ├── domain │ │ │ ├── Option.java │ │ │ ├── Poll.java │ │ │ └── Vote.java │ │ │ ├── dto │ │ │ ├── OptionCount.java │ │ │ └── VoteResult.java │ │ │ └── repository │ │ │ ├── OptionRepository.java │ │ │ ├── PollRepository.java │ │ │ └── VoteRepository.java │ └── resources │ │ ├── application.properties │ │ ├── import.sql │ │ ├── static │ │ └── .keep │ │ └── templates │ │ └── .keep │ └── test │ └── java │ └── com │ └── apress │ └── QuickPollApplicationTests.java ├── Chapter2 ├── final │ └── .keep └── starter │ └── .keep ├── Chapter3 ├── final │ └── hello-rest-ch3-final │ │ ├── pom.xml │ │ └── src │ │ ├── main │ │ ├── java │ │ │ └── com │ │ │ │ └── apress │ │ │ │ └── hellorest │ │ │ │ └── HelloWorldRestApplication.java │ │ └── resources │ │ │ ├── application.properties │ │ │ ├── static │ │ │ └── .keep │ │ │ └── templates │ │ │ └── .keep │ │ └── test │ │ └── java │ │ └── com │ │ └── apress │ │ └── hellorest │ │ └── HelloWorldRestApplicationTests.java └── starter │ └── hello-rest │ ├── pom.xml │ └── src │ ├── main │ ├── java │ │ └── com │ │ │ └── apress │ │ │ └── hellorest │ │ │ └── HelloWorldRestApplication.java │ └── resources │ │ ├── application.properties │ │ ├── static │ │ └── .keep │ │ └── templates │ │ └── .keep │ └── test │ └── java │ └── com │ └── apress │ └── hellorest │ └── HelloWorldRestApplicationTests.java ├── Chapter4 ├── Chapter4_Postman_Collection.json ├── final │ └── quick-poll-ch4-final │ │ ├── pom.xml │ │ └── src │ │ ├── main │ │ ├── java │ │ │ └── com │ │ │ │ └── apress │ │ │ │ ├── QuickPollApplication.java │ │ │ │ ├── controller │ │ │ │ ├── ComputeResultController.java │ │ │ │ ├── PollController.java │ │ │ │ └── VoteController.java │ │ │ │ ├── domain │ │ │ │ ├── Option.java │ │ │ │ ├── Poll.java │ │ │ │ └── Vote.java │ │ │ │ ├── dto │ │ │ │ ├── OptionCount.java │ │ │ │ └── VoteResult.java │ │ │ │ └── repository │ │ │ │ ├── OptionRepository.java │ │ │ │ ├── PollRepository.java │ │ │ │ └── VoteRepository.java │ │ └── resources │ │ │ ├── application.properties │ │ │ ├── static │ │ │ └── .keep │ │ │ └── templates │ │ │ └── .keep │ │ └── test │ │ └── java │ │ └── com │ │ └── apress │ │ └── QuickPollApplicationTests.java └── starter │ └── quick-poll │ ├── pom.xml │ └── src │ ├── main │ ├── java │ │ └── com │ │ │ └── apress │ │ │ └── QuickPollApplication.java │ └── resources │ │ ├── application.properties │ │ ├── static │ │ └── .keep │ │ └── templates │ │ └── .keep │ └── test │ └── java │ └── com │ └── apress │ └── QuickPollApplicationTests.java ├── Chapter5 ├── Chapter_5_Postman_Collection.json ├── final │ └── quick-poll-ch5-final │ │ ├── pom.xml │ │ └── src │ │ ├── main │ │ ├── java │ │ │ └── com │ │ │ │ └── apress │ │ │ │ ├── QuickPollApplication.java │ │ │ │ ├── controller │ │ │ │ ├── ComputeResultController.java │ │ │ │ ├── PollController.java │ │ │ │ └── VoteController.java │ │ │ │ ├── domain │ │ │ │ ├── Option.java │ │ │ │ ├── Poll.java │ │ │ │ └── Vote.java │ │ │ │ ├── dto │ │ │ │ ├── OptionCount.java │ │ │ │ ├── VoteResult.java │ │ │ │ └── error │ │ │ │ │ ├── ErrorDetail.java │ │ │ │ │ └── ValidationError.java │ │ │ │ ├── exception │ │ │ │ └── ResourceNotFoundException.java │ │ │ │ ├── handler │ │ │ │ └── RestExceptionHandler.java │ │ │ │ └── repository │ │ │ │ ├── OptionRepository.java │ │ │ │ ├── PollRepository.java │ │ │ │ └── VoteRepository.java │ │ └── resources │ │ │ ├── application.properties │ │ │ ├── messages.properties │ │ │ ├── static │ │ │ └── .keep │ │ │ └── templates │ │ │ └── .keep │ │ └── test │ │ └── java │ │ └── com │ │ └── apress │ │ └── QuickPollApplicationTests.java └── starter │ └── quick-poll-ch5-starter │ ├── pom.xml │ └── src │ ├── main │ ├── java │ │ └── com │ │ │ └── apress │ │ │ ├── QuickPollApplication.java │ │ │ ├── controller │ │ │ ├── ComputeResultController.java │ │ │ ├── PollController.java │ │ │ └── VoteController.java │ │ │ ├── domain │ │ │ ├── Option.java │ │ │ ├── Poll.java │ │ │ └── Vote.java │ │ │ ├── dto │ │ │ ├── OptionCount.java │ │ │ └── VoteResult.java │ │ │ └── repository │ │ │ ├── OptionRepository.java │ │ │ ├── PollRepository.java │ │ │ └── VoteRepository.java │ └── resources │ │ ├── application.properties │ │ ├── static │ │ └── .keep │ │ └── templates │ │ └── .keep │ └── test │ └── java │ └── com │ └── apress │ └── QuickPollApplicationTests.java ├── Chapter6 ├── final │ └── quick-poll-ch6-final │ │ ├── pom.xml │ │ └── src │ │ ├── main │ │ ├── java │ │ │ └── com │ │ │ │ └── apress │ │ │ │ ├── QuickPollApplication.java │ │ │ │ ├── SwaggerConfig.java │ │ │ │ ├── controller │ │ │ │ ├── ComputeResultController.java │ │ │ │ ├── PollController.java │ │ │ │ └── VoteController.java │ │ │ │ ├── domain │ │ │ │ ├── Option.java │ │ │ │ ├── Poll.java │ │ │ │ └── Vote.java │ │ │ │ ├── dto │ │ │ │ ├── OptionCount.java │ │ │ │ ├── VoteResult.java │ │ │ │ └── error │ │ │ │ │ ├── ErrorDetail.java │ │ │ │ │ └── ValidationError.java │ │ │ │ ├── exception │ │ │ │ └── ResourceNotFoundException.java │ │ │ │ ├── handler │ │ │ │ └── RestExceptionHandler.java │ │ │ │ └── repository │ │ │ │ ├── OptionRepository.java │ │ │ │ ├── PollRepository.java │ │ │ │ └── VoteRepository.java │ │ └── resources │ │ │ ├── application.properties │ │ │ ├── messages.properties │ │ │ ├── static │ │ │ ├── .keep │ │ │ └── swagger-ui │ │ │ │ ├── css │ │ │ │ ├── reset.css │ │ │ │ └── screen.css │ │ │ │ ├── images │ │ │ │ ├── explorer_icons.png │ │ │ │ ├── logo_small.png │ │ │ │ ├── pet_store_api.png │ │ │ │ ├── throbber.gif │ │ │ │ └── wordnik_api.png │ │ │ │ ├── index.html │ │ │ │ ├── lib │ │ │ │ ├── backbone-min.js │ │ │ │ ├── handlebars-1.0.0.js │ │ │ │ ├── highlight.7.3.pack.js │ │ │ │ ├── jquery-1.8.0.min.js │ │ │ │ ├── jquery.ba-bbq.min.js │ │ │ │ ├── jquery.slideto.min.js │ │ │ │ ├── jquery.wiggle.min.js │ │ │ │ ├── shred.bundle.js │ │ │ │ ├── shred │ │ │ │ │ └── content.js │ │ │ │ ├── swagger-oauth.js │ │ │ │ ├── swagger.js │ │ │ │ └── underscore-min.js │ │ │ │ ├── o2c.html │ │ │ │ ├── swagger-ui.js │ │ │ │ └── swagger-ui.min.js │ │ │ └── templates │ │ │ └── .keep │ │ └── test │ │ └── java │ │ └── com │ │ └── apress │ │ └── QuickPollApplicationTests.java └── starter │ └── quick-poll-ch6-starter │ ├── pom.xml │ └── src │ ├── main │ ├── java │ │ └── com │ │ │ └── apress │ │ │ ├── QuickPollApplication.java │ │ │ ├── controller │ │ │ ├── ComputeResultController.java │ │ │ ├── PollController.java │ │ │ └── VoteController.java │ │ │ ├── domain │ │ │ ├── Option.java │ │ │ ├── Poll.java │ │ │ └── Vote.java │ │ │ ├── dto │ │ │ ├── OptionCount.java │ │ │ ├── VoteResult.java │ │ │ └── error │ │ │ │ ├── ErrorDetail.java │ │ │ │ └── ValidationError.java │ │ │ ├── exception │ │ │ └── ResourceNotFoundException.java │ │ │ ├── handler │ │ │ └── RestExceptionHandler.java │ │ │ └── repository │ │ │ ├── OptionRepository.java │ │ │ ├── PollRepository.java │ │ │ └── VoteRepository.java │ └── resources │ │ ├── application.properties │ │ ├── messages.properties │ │ ├── static │ │ └── .keep │ │ └── templates │ │ └── .keep │ └── test │ └── java │ └── com │ └── apress │ └── QuickPollApplicationTests.java ├── Chapter7 ├── Chapter7_Postman_Collection.json ├── final │ └── quick-poll-ch7-final │ │ ├── pom.xml │ │ └── src │ │ ├── main │ │ ├── java │ │ │ └── com │ │ │ │ └── apress │ │ │ │ ├── QuickPollApplication.java │ │ │ │ ├── QuickPollMvcConfigAdapter.java │ │ │ │ ├── SwaggerConfig.java │ │ │ │ ├── domain │ │ │ │ ├── Option.java │ │ │ │ ├── Poll.java │ │ │ │ └── Vote.java │ │ │ │ ├── dto │ │ │ │ ├── OptionCount.java │ │ │ │ ├── VoteResult.java │ │ │ │ └── error │ │ │ │ │ ├── ErrorDetail.java │ │ │ │ │ └── ValidationError.java │ │ │ │ ├── exception │ │ │ │ └── ResourceNotFoundException.java │ │ │ │ ├── handler │ │ │ │ └── RestExceptionHandler.java │ │ │ │ ├── repository │ │ │ │ ├── OptionRepository.java │ │ │ │ ├── PollRepository.java │ │ │ │ └── VoteRepository.java │ │ │ │ ├── v1 │ │ │ │ └── controller │ │ │ │ │ ├── ComputeResultController.java │ │ │ │ │ ├── PollController.java │ │ │ │ │ └── VoteController.java │ │ │ │ └── v2 │ │ │ │ └── controller │ │ │ │ ├── ComputeResultController.java │ │ │ │ ├── PollController.java │ │ │ │ └── VoteController.java │ │ └── resources │ │ │ ├── application.properties │ │ │ ├── import.sql │ │ │ ├── messages.properties │ │ │ ├── static │ │ │ ├── .keep │ │ │ └── swagger-ui │ │ │ │ ├── css │ │ │ │ ├── reset.css │ │ │ │ └── screen.css │ │ │ │ ├── images │ │ │ │ ├── explorer_icons.png │ │ │ │ ├── logo_small.png │ │ │ │ ├── pet_store_api.png │ │ │ │ ├── throbber.gif │ │ │ │ └── wordnik_api.png │ │ │ │ ├── index.html │ │ │ │ ├── lib │ │ │ │ ├── backbone-min.js │ │ │ │ ├── handlebars-1.0.0.js │ │ │ │ ├── highlight.7.3.pack.js │ │ │ │ ├── jquery-1.8.0.min.js │ │ │ │ ├── jquery.ba-bbq.min.js │ │ │ │ ├── jquery.slideto.min.js │ │ │ │ ├── jquery.wiggle.min.js │ │ │ │ ├── shred.bundle.js │ │ │ │ ├── shred │ │ │ │ │ └── content.js │ │ │ │ ├── swagger-oauth.js │ │ │ │ ├── swagger.js │ │ │ │ └── underscore-min.js │ │ │ │ ├── o2c.html │ │ │ │ ├── swagger-ui.js │ │ │ │ └── swagger-ui.min.js │ │ │ └── templates │ │ │ └── .keep │ │ └── test │ │ └── java │ │ └── com │ │ └── apress │ │ └── QuickPollApplicationTests.java ├── import.sql └── starter │ └── quick-poll-ch7-starter │ ├── pom.xml │ └── src │ ├── main │ ├── java │ │ └── com │ │ │ └── apress │ │ │ ├── QuickPollApplication.java │ │ │ ├── SwaggerConfig.java │ │ │ ├── controller │ │ │ ├── ComputeResultController.java │ │ │ ├── PollController.java │ │ │ └── VoteController.java │ │ │ ├── domain │ │ │ ├── Option.java │ │ │ ├── Poll.java │ │ │ └── Vote.java │ │ │ ├── dto │ │ │ ├── OptionCount.java │ │ │ ├── VoteResult.java │ │ │ └── error │ │ │ │ ├── ErrorDetail.java │ │ │ │ └── ValidationError.java │ │ │ ├── exception │ │ │ └── ResourceNotFoundException.java │ │ │ ├── handler │ │ │ └── RestExceptionHandler.java │ │ │ └── repository │ │ │ ├── OptionRepository.java │ │ │ ├── PollRepository.java │ │ │ └── VoteRepository.java │ └── resources │ │ ├── application.properties │ │ ├── messages.properties │ │ ├── static │ │ ├── .keep │ │ └── swagger-ui │ │ │ ├── css │ │ │ ├── reset.css │ │ │ └── screen.css │ │ │ ├── images │ │ │ ├── explorer_icons.png │ │ │ ├── logo_small.png │ │ │ ├── pet_store_api.png │ │ │ ├── throbber.gif │ │ │ └── wordnik_api.png │ │ │ ├── index.html │ │ │ ├── lib │ │ │ ├── backbone-min.js │ │ │ ├── handlebars-1.0.0.js │ │ │ ├── highlight.7.3.pack.js │ │ │ ├── jquery-1.8.0.min.js │ │ │ ├── jquery.ba-bbq.min.js │ │ │ ├── jquery.slideto.min.js │ │ │ ├── jquery.wiggle.min.js │ │ │ ├── shred.bundle.js │ │ │ ├── shred │ │ │ │ └── content.js │ │ │ ├── swagger-oauth.js │ │ │ ├── swagger.js │ │ │ └── underscore-min.js │ │ │ ├── o2c.html │ │ │ ├── swagger-ui.js │ │ │ └── swagger-ui.min.js │ │ └── templates │ │ └── .keep │ └── test │ └── java │ └── com │ └── apress │ └── QuickPollApplicationTests.java ├── Chapter8 ├── Chapter8_Postman_Collection.json ├── final │ ├── quick-poll-ch8-final-basic-auth │ │ ├── pom.xml │ │ └── src │ │ │ ├── main │ │ │ ├── java │ │ │ │ └── com │ │ │ │ │ └── apress │ │ │ │ │ ├── QuickPollApplication.java │ │ │ │ │ ├── QuickPollMvcConfigAdapter.java │ │ │ │ │ ├── SecurityConfig.java │ │ │ │ │ ├── SwaggerConfig.java │ │ │ │ │ ├── domain │ │ │ │ │ ├── Option.java │ │ │ │ │ ├── Poll.java │ │ │ │ │ ├── User.java │ │ │ │ │ └── Vote.java │ │ │ │ │ ├── dto │ │ │ │ │ ├── OptionCount.java │ │ │ │ │ ├── VoteResult.java │ │ │ │ │ └── error │ │ │ │ │ │ ├── ErrorDetail.java │ │ │ │ │ │ └── ValidationError.java │ │ │ │ │ ├── exception │ │ │ │ │ └── ResourceNotFoundException.java │ │ │ │ │ ├── handler │ │ │ │ │ └── RestExceptionHandler.java │ │ │ │ │ ├── repository │ │ │ │ │ ├── OptionRepository.java │ │ │ │ │ ├── PollRepository.java │ │ │ │ │ ├── UserRepository.java │ │ │ │ │ └── VoteRepository.java │ │ │ │ │ ├── security │ │ │ │ │ └── QuickPollUserDetailsService.java │ │ │ │ │ ├── v1 │ │ │ │ │ └── controller │ │ │ │ │ │ ├── ComputeResultController.java │ │ │ │ │ │ ├── PollController.java │ │ │ │ │ │ └── VoteController.java │ │ │ │ │ ├── v2 │ │ │ │ │ └── controller │ │ │ │ │ │ ├── ComputeResultController.java │ │ │ │ │ │ ├── PollController.java │ │ │ │ │ │ └── VoteController.java │ │ │ │ │ └── v3 │ │ │ │ │ └── controller │ │ │ │ │ ├── ComputeResultController.java │ │ │ │ │ ├── PollController.java │ │ │ │ │ └── VoteController.java │ │ │ └── resources │ │ │ │ ├── application.properties │ │ │ │ ├── import.sql │ │ │ │ ├── messages.properties │ │ │ │ ├── static │ │ │ │ ├── .keep │ │ │ │ └── swagger-ui │ │ │ │ │ ├── css │ │ │ │ │ ├── reset.css │ │ │ │ │ └── screen.css │ │ │ │ │ ├── images │ │ │ │ │ ├── explorer_icons.png │ │ │ │ │ ├── logo_small.png │ │ │ │ │ ├── pet_store_api.png │ │ │ │ │ ├── throbber.gif │ │ │ │ │ └── wordnik_api.png │ │ │ │ │ ├── index.html │ │ │ │ │ ├── lib │ │ │ │ │ ├── backbone-min.js │ │ │ │ │ ├── handlebars-1.0.0.js │ │ │ │ │ ├── highlight.7.3.pack.js │ │ │ │ │ ├── jquery-1.8.0.min.js │ │ │ │ │ ├── jquery.ba-bbq.min.js │ │ │ │ │ ├── jquery.slideto.min.js │ │ │ │ │ ├── jquery.wiggle.min.js │ │ │ │ │ ├── shred.bundle.js │ │ │ │ │ ├── shred │ │ │ │ │ │ └── content.js │ │ │ │ │ ├── swagger-oauth.js │ │ │ │ │ ├── swagger.js │ │ │ │ │ └── underscore-min.js │ │ │ │ │ ├── o2c.html │ │ │ │ │ ├── swagger-ui.js │ │ │ │ │ └── swagger-ui.min.js │ │ │ │ └── templates │ │ │ │ └── .keep │ │ │ └── test │ │ │ └── java │ │ │ └── com │ │ │ └── apress │ │ │ ├── QuickPollApplicationTests.java │ │ │ └── UserGenerator.java │ └── quick-poll-ch8-final │ │ ├── pom.xml │ │ └── src │ │ ├── main │ │ ├── java │ │ │ └── com │ │ │ │ └── apress │ │ │ │ ├── OAuth2AuthorizationServerConfig.java │ │ │ │ ├── OAuth2ResourceServerConfig.java │ │ │ │ ├── QuickPollApplication.java │ │ │ │ ├── QuickPollMvcConfigAdapter.java │ │ │ │ ├── SecurityConfig.java │ │ │ │ ├── SwaggerConfig.java │ │ │ │ ├── domain │ │ │ │ ├── Option.java │ │ │ │ ├── Poll.java │ │ │ │ ├── User.java │ │ │ │ └── Vote.java │ │ │ │ ├── dto │ │ │ │ ├── OptionCount.java │ │ │ │ ├── VoteResult.java │ │ │ │ └── error │ │ │ │ │ ├── ErrorDetail.java │ │ │ │ │ └── ValidationError.java │ │ │ │ ├── exception │ │ │ │ └── ResourceNotFoundException.java │ │ │ │ ├── handler │ │ │ │ └── RestExceptionHandler.java │ │ │ │ ├── repository │ │ │ │ ├── OptionRepository.java │ │ │ │ ├── PollRepository.java │ │ │ │ ├── UserRepository.java │ │ │ │ └── VoteRepository.java │ │ │ │ ├── security │ │ │ │ └── QuickPollUserDetailsService.java │ │ │ │ ├── v1 │ │ │ │ └── controller │ │ │ │ │ ├── ComputeResultController.java │ │ │ │ │ ├── PollController.java │ │ │ │ │ └── VoteController.java │ │ │ │ ├── v2 │ │ │ │ └── controller │ │ │ │ │ ├── ComputeResultController.java │ │ │ │ │ ├── PollController.java │ │ │ │ │ └── VoteController.java │ │ │ │ └── v3 │ │ │ │ └── controller │ │ │ │ ├── ComputeResultController.java │ │ │ │ ├── PollController.java │ │ │ │ └── VoteController.java │ │ └── resources │ │ │ ├── application.properties │ │ │ ├── import.sql │ │ │ ├── messages.properties │ │ │ ├── static │ │ │ ├── .keep │ │ │ └── swagger-ui │ │ │ │ ├── css │ │ │ │ ├── reset.css │ │ │ │ └── screen.css │ │ │ │ ├── images │ │ │ │ ├── explorer_icons.png │ │ │ │ ├── logo_small.png │ │ │ │ ├── pet_store_api.png │ │ │ │ ├── throbber.gif │ │ │ │ └── wordnik_api.png │ │ │ │ ├── index.html │ │ │ │ ├── lib │ │ │ │ ├── backbone-min.js │ │ │ │ ├── handlebars-1.0.0.js │ │ │ │ ├── highlight.7.3.pack.js │ │ │ │ ├── jquery-1.8.0.min.js │ │ │ │ ├── jquery.ba-bbq.min.js │ │ │ │ ├── jquery.slideto.min.js │ │ │ │ ├── jquery.wiggle.min.js │ │ │ │ ├── shred.bundle.js │ │ │ │ ├── shred │ │ │ │ │ └── content.js │ │ │ │ ├── swagger-oauth.js │ │ │ │ ├── swagger.js │ │ │ │ └── underscore-min.js │ │ │ │ ├── o2c.html │ │ │ │ ├── swagger-ui.js │ │ │ │ └── swagger-ui.min.js │ │ │ └── templates │ │ │ └── .keep │ │ └── test │ │ └── java │ │ └── com │ │ └── apress │ │ ├── QuickPollApplicationTests.java │ │ └── UserGenerator.java ├── import.sql └── starter │ └── quick-poll-ch8-starter │ ├── pom.xml │ └── src │ ├── main │ ├── java │ │ └── com │ │ │ └── apress │ │ │ ├── QuickPollApplication.java │ │ │ ├── QuickPollMvcConfigAdapter.java │ │ │ ├── SwaggerConfig.java │ │ │ ├── domain │ │ │ ├── Option.java │ │ │ ├── Poll.java │ │ │ └── Vote.java │ │ │ ├── dto │ │ │ ├── OptionCount.java │ │ │ ├── VoteResult.java │ │ │ └── error │ │ │ │ ├── ErrorDetail.java │ │ │ │ └── ValidationError.java │ │ │ ├── exception │ │ │ └── ResourceNotFoundException.java │ │ │ ├── handler │ │ │ └── RestExceptionHandler.java │ │ │ ├── repository │ │ │ ├── OptionRepository.java │ │ │ ├── PollRepository.java │ │ │ └── VoteRepository.java │ │ │ ├── v1 │ │ │ └── controller │ │ │ │ ├── ComputeResultController.java │ │ │ │ ├── PollController.java │ │ │ │ └── VoteController.java │ │ │ └── v2 │ │ │ └── controller │ │ │ ├── ComputeResultController.java │ │ │ ├── PollController.java │ │ │ └── VoteController.java │ └── resources │ │ ├── application.properties │ │ ├── import.sql │ │ ├── messages.properties │ │ ├── static │ │ ├── .keep │ │ └── swagger-ui │ │ │ ├── css │ │ │ ├── reset.css │ │ │ └── screen.css │ │ │ ├── images │ │ │ ├── explorer_icons.png │ │ │ ├── logo_small.png │ │ │ ├── pet_store_api.png │ │ │ ├── throbber.gif │ │ │ └── wordnik_api.png │ │ │ ├── index.html │ │ │ ├── lib │ │ │ ├── backbone-min.js │ │ │ ├── handlebars-1.0.0.js │ │ │ ├── highlight.7.3.pack.js │ │ │ ├── jquery-1.8.0.min.js │ │ │ ├── jquery.ba-bbq.min.js │ │ │ ├── jquery.slideto.min.js │ │ │ ├── jquery.wiggle.min.js │ │ │ ├── shred.bundle.js │ │ │ ├── shred │ │ │ │ └── content.js │ │ │ ├── swagger-oauth.js │ │ │ ├── swagger.js │ │ │ └── underscore-min.js │ │ │ ├── o2c.html │ │ │ ├── swagger-ui.js │ │ │ └── swagger-ui.min.js │ │ └── templates │ │ └── .keep │ └── test │ └── java │ └── com │ └── apress │ └── QuickPollApplicationTests.java ├── Chapter9 ├── final │ └── quick-poll-ch9-final │ │ ├── pom.xml │ │ └── src │ │ ├── main │ │ ├── java │ │ │ └── com │ │ │ │ └── apress │ │ │ │ ├── OAuth2AuthorizationServerConfig.java │ │ │ │ ├── OAuth2ResourceServerConfig.java │ │ │ │ ├── QuickPollApplication.java │ │ │ │ ├── QuickPollMvcConfigAdapter.java │ │ │ │ ├── SecurityConfig.java │ │ │ │ ├── SwaggerConfig.java │ │ │ │ ├── client │ │ │ │ ├── PageWrapper.java │ │ │ │ ├── QuickPollClient.java │ │ │ │ ├── QuickPollClientJdk.java │ │ │ │ ├── QuickPollClientV2.java │ │ │ │ ├── QuickPollClientV3BasicAuth.java │ │ │ │ └── QuickPollClientV3OAuth.java │ │ │ │ ├── domain │ │ │ │ ├── Option.java │ │ │ │ ├── Poll.java │ │ │ │ ├── User.java │ │ │ │ └── Vote.java │ │ │ │ ├── dto │ │ │ │ ├── OptionCount.java │ │ │ │ ├── VoteResult.java │ │ │ │ └── error │ │ │ │ │ ├── ErrorDetail.java │ │ │ │ │ └── ValidationError.java │ │ │ │ ├── exception │ │ │ │ └── ResourceNotFoundException.java │ │ │ │ ├── handler │ │ │ │ └── RestExceptionHandler.java │ │ │ │ ├── repository │ │ │ │ ├── OptionRepository.java │ │ │ │ ├── PollRepository.java │ │ │ │ ├── UserRepository.java │ │ │ │ └── VoteRepository.java │ │ │ │ ├── security │ │ │ │ └── QuickPollUserDetailsService.java │ │ │ │ ├── v1 │ │ │ │ └── controller │ │ │ │ │ ├── ComputeResultController.java │ │ │ │ │ ├── PollController.java │ │ │ │ │ └── VoteController.java │ │ │ │ ├── v2 │ │ │ │ └── controller │ │ │ │ │ ├── ComputeResultController.java │ │ │ │ │ ├── PollController.java │ │ │ │ │ └── VoteController.java │ │ │ │ └── v3 │ │ │ │ └── controller │ │ │ │ ├── ComputeResultController.java │ │ │ │ ├── PollController.java │ │ │ │ └── VoteController.java │ │ └── resources │ │ │ ├── application.properties │ │ │ ├── import.sql │ │ │ ├── messages.properties │ │ │ ├── static │ │ │ ├── .keep │ │ │ └── swagger-ui │ │ │ │ ├── css │ │ │ │ ├── reset.css │ │ │ │ └── screen.css │ │ │ │ ├── images │ │ │ │ ├── explorer_icons.png │ │ │ │ ├── logo_small.png │ │ │ │ ├── pet_store_api.png │ │ │ │ ├── throbber.gif │ │ │ │ └── wordnik_api.png │ │ │ │ ├── index.html │ │ │ │ ├── lib │ │ │ │ ├── backbone-min.js │ │ │ │ ├── handlebars-1.0.0.js │ │ │ │ ├── highlight.7.3.pack.js │ │ │ │ ├── jquery-1.8.0.min.js │ │ │ │ ├── jquery.ba-bbq.min.js │ │ │ │ ├── jquery.slideto.min.js │ │ │ │ ├── jquery.wiggle.min.js │ │ │ │ ├── shred.bundle.js │ │ │ │ ├── shred │ │ │ │ │ └── content.js │ │ │ │ ├── swagger-oauth.js │ │ │ │ ├── swagger.js │ │ │ │ └── underscore-min.js │ │ │ │ ├── o2c.html │ │ │ │ ├── swagger-ui.js │ │ │ │ └── swagger-ui.min.js │ │ │ └── templates │ │ │ └── .keep │ │ └── test │ │ └── java │ │ └── com │ │ └── apress │ │ ├── ExampleTest.java │ │ ├── QuickPollApplicationTests.java │ │ ├── UserGenerator.java │ │ ├── it │ │ └── PollControllerIT.java │ │ └── unit │ │ ├── PollControllerTest.java │ │ └── PollControllerTestMock.java └── starter │ └── quick-poll-ch9-starter │ ├── pom.xml │ └── src │ ├── main │ ├── java │ │ └── com │ │ │ └── apress │ │ │ ├── OAuth2AuthorizationServerConfig.java │ │ │ ├── OAuth2ResourceServerConfig.java │ │ │ ├── QuickPollApplication.java │ │ │ ├── QuickPollMvcConfigAdapter.java │ │ │ ├── SecurityConfig.java │ │ │ ├── SwaggerConfig.java │ │ │ ├── domain │ │ │ ├── Option.java │ │ │ ├── Poll.java │ │ │ ├── User.java │ │ │ └── Vote.java │ │ │ ├── dto │ │ │ ├── OptionCount.java │ │ │ ├── VoteResult.java │ │ │ └── error │ │ │ │ ├── ErrorDetail.java │ │ │ │ └── ValidationError.java │ │ │ ├── exception │ │ │ └── ResourceNotFoundException.java │ │ │ ├── handler │ │ │ └── RestExceptionHandler.java │ │ │ ├── repository │ │ │ ├── OptionRepository.java │ │ │ ├── PollRepository.java │ │ │ ├── UserRepository.java │ │ │ └── VoteRepository.java │ │ │ ├── security │ │ │ └── QuickPollUserDetailsService.java │ │ │ ├── v1 │ │ │ └── controller │ │ │ │ ├── ComputeResultController.java │ │ │ │ ├── PollController.java │ │ │ │ └── VoteController.java │ │ │ ├── v2 │ │ │ └── controller │ │ │ │ ├── ComputeResultController.java │ │ │ │ ├── PollController.java │ │ │ │ └── VoteController.java │ │ │ └── v3 │ │ │ └── controller │ │ │ ├── ComputeResultController.java │ │ │ ├── PollController.java │ │ │ └── VoteController.java │ └── resources │ │ ├── application.properties │ │ ├── import.sql │ │ ├── messages.properties │ │ ├── static │ │ ├── .keep │ │ └── swagger-ui │ │ │ ├── css │ │ │ ├── reset.css │ │ │ └── screen.css │ │ │ ├── images │ │ │ ├── explorer_icons.png │ │ │ ├── logo_small.png │ │ │ ├── pet_store_api.png │ │ │ ├── throbber.gif │ │ │ └── wordnik_api.png │ │ │ ├── index.html │ │ │ ├── lib │ │ │ ├── backbone-min.js │ │ │ ├── handlebars-1.0.0.js │ │ │ ├── highlight.7.3.pack.js │ │ │ ├── jquery-1.8.0.min.js │ │ │ ├── jquery.ba-bbq.min.js │ │ │ ├── jquery.slideto.min.js │ │ │ ├── jquery.wiggle.min.js │ │ │ ├── shred.bundle.js │ │ │ ├── shred │ │ │ │ └── content.js │ │ │ ├── swagger-oauth.js │ │ │ ├── swagger.js │ │ │ └── underscore-min.js │ │ │ ├── o2c.html │ │ │ ├── swagger-ui.js │ │ │ └── swagger-ui.min.js │ │ └── templates │ │ └── .keep │ └── test │ └── java │ └── com │ └── apress │ ├── QuickPollApplicationTests.java │ └── UserGenerator.java └── README.md /Chapter1/final/.keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bava/springrest-book/472b08e2a6b5e52a34f0358b83d9aa0dc56002db/Chapter1/final/.keep -------------------------------------------------------------------------------- /Chapter1/starter/.keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bava/springrest-book/472b08e2a6b5e52a34f0358b83d9aa0dc56002db/Chapter1/starter/.keep -------------------------------------------------------------------------------- /Chapter10/final/quick-poll-ch10-final/src/main/java/com/apress/QuickPollApplication.java: -------------------------------------------------------------------------------- 1 | package com.apress; 2 | 3 | import org.springframework.boot.SpringApplication; 4 | import org.springframework.boot.autoconfigure.SpringBootApplication; 5 | 6 | @SpringBootApplication 7 | public class QuickPollApplication { 8 | 9 | public static void main(String[] args) { 10 | SpringApplication.run(QuickPollApplication.class, args); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /Chapter10/final/quick-poll-ch10-final/src/main/java/com/apress/domain/Option.java: -------------------------------------------------------------------------------- 1 | package com.apress.domain; 2 | 3 | import javax.persistence.Column; 4 | import javax.persistence.Entity; 5 | import javax.persistence.GeneratedValue; 6 | import javax.persistence.Id; 7 | 8 | @Entity 9 | public class Option { 10 | 11 | @Id 12 | @GeneratedValue 13 | @Column(name="OPTION_ID") 14 | private Long id; 15 | 16 | @Column(name="OPTION_VALUE") 17 | private String value; 18 | 19 | public Long getId() { 20 | return id; 21 | } 22 | public void setId(Long id) { 23 | this.id = id; 24 | } 25 | public String getValue() { 26 | return value; 27 | } 28 | public void setValue(String value) { 29 | this.value = value; 30 | } 31 | 32 | @Override 33 | public String toString() { 34 | return getId() + "," + getValue(); 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /Chapter10/final/quick-poll-ch10-final/src/main/java/com/apress/domain/Poll.java: -------------------------------------------------------------------------------- 1 | package com.apress.domain; 2 | 3 | import java.util.Set; 4 | 5 | import javax.persistence.CascadeType; 6 | import javax.persistence.Column; 7 | import javax.persistence.Entity; 8 | import javax.persistence.GeneratedValue; 9 | import javax.persistence.Id; 10 | import javax.persistence.JoinColumn; 11 | import javax.persistence.OneToMany; 12 | import javax.persistence.OrderBy; 13 | 14 | import org.springframework.hateoas.ResourceSupport; 15 | 16 | @Entity 17 | public class Poll extends ResourceSupport { 18 | 19 | @Id 20 | @GeneratedValue 21 | @Column(name="POLL_ID") 22 | private Long id; 23 | 24 | @Column(name="QUESTION") 25 | private String question; 26 | 27 | @OneToMany(cascade=CascadeType.ALL) 28 | @JoinColumn(name="POLL_ID") 29 | @OrderBy 30 | private Set