Repository: cd826/springcloud-demo Branch: master Commit: c20139c961a2 Files: 782 Total size: 3.8 MB Directory structure: gitextract_cu4xnx12/ ├── README.md ├── chapter02 -- boot/ │ ├── README.md │ ├── pom.xml │ └── src/ │ └── main/ │ ├── java/ │ │ └── com/ │ │ └── cd826dong/ │ │ └── clouddemo/ │ │ ├── Application.java │ │ ├── config/ │ │ │ └── Swagger2Config.java │ │ ├── product/ │ │ │ ├── api/ │ │ │ │ └── ProductEndpoint.java │ │ │ ├── dto/ │ │ │ │ ├── ProductCommentDto.java │ │ │ │ └── ProductDto.java │ │ │ ├── entity/ │ │ │ │ ├── Product.java │ │ │ │ └── ProductComment.java │ │ │ ├── repository/ │ │ │ │ ├── ProductCommentRepository.java │ │ │ │ └── ProductRepository.java │ │ │ └── service/ │ │ │ ├── ProductService.java │ │ │ └── impl/ │ │ │ └── ProductServiceImpl.java │ │ ├── user/ │ │ │ ├── api/ │ │ │ │ └── UserEndpoint.java │ │ │ ├── dto/ │ │ │ │ └── UserDto.java │ │ │ ├── entity/ │ │ │ │ └── User.java │ │ │ ├── repository/ │ │ │ │ └── UserRepository.java │ │ │ └── service/ │ │ │ ├── UserService.java │ │ │ └── impl/ │ │ │ └── UserServiceImpl.java │ │ └── util/ │ │ └── HibernatePhysicalNamingNamingStrategy.java │ ├── resources/ │ │ ├── .h2.server.properties │ │ ├── application.properties │ │ ├── banner.txt │ │ ├── data.sql │ │ └── schema.sql │ └── webapp/ │ └── swagger/ │ ├── css/ │ │ ├── print.css │ │ ├── reset.css │ │ ├── screen.css │ │ ├── style.css │ │ └── typography.css │ ├── index.html │ ├── lang/ │ │ ├── ca.js │ │ ├── el.js │ │ ├── en.js │ │ ├── es.js │ │ ├── fr.js │ │ ├── geo.js │ │ ├── it.js │ │ ├── ja.js │ │ ├── ko-kr.js │ │ ├── pl.js │ │ ├── pt.js │ │ ├── ru.js │ │ ├── tr.js │ │ ├── translator.js │ │ └── zh-cn.js │ ├── lib/ │ │ ├── backbone-min.js │ │ ├── es5-shim.js │ │ ├── handlebars-4.0.5.js │ │ ├── highlight.9.1.0.pack.js │ │ ├── highlight.9.1.0.pack_extended.js │ │ ├── marked.js │ │ ├── object-assign-pollyfill.js │ │ └── swagger-oauth.js │ ├── o2c.html │ └── swagger-ui.js ├── chapter03 -- hello-cloud/ │ ├── README.md │ ├── hello-consumer/ │ │ ├── pom.xml │ │ └── src/ │ │ └── main/ │ │ ├── java/ │ │ │ └── com/ │ │ │ └── cd826dong/ │ │ │ └── clouddemo/ │ │ │ ├── Application.java │ │ │ └── consumer/ │ │ │ ├── api/ │ │ │ │ └── HelloConsumerEndpoint.java │ │ │ └── service/ │ │ │ ├── HelloService.java │ │ │ └── HelloServiceFallback.java │ │ └── resources/ │ │ ├── application.properties │ │ └── banner.txt │ ├── hello-provider/ │ │ ├── pom.xml │ │ └── src/ │ │ └── main/ │ │ ├── java/ │ │ │ └── com/ │ │ │ └── cd826dong/ │ │ │ └── clouddemo/ │ │ │ ├── Application.java │ │ │ └── provider/ │ │ │ └── api/ │ │ │ └── HelloProviderEndpoint.java │ │ └── resources/ │ │ ├── application.properties │ │ └── banner.txt │ ├── parent/ │ │ └── pom.xml │ ├── pom.xml │ └── service-discovery/ │ ├── pom.xml │ └── src/ │ └── main/ │ ├── java/ │ │ └── com/ │ │ └── cd826dong/ │ │ └── clouddemo/ │ │ └── Application.java │ └── resources/ │ ├── application.properties │ └── banner.txt ├── chapter04 -- eureka/ │ ├── README.md │ ├── parent/ │ │ └── pom.xml │ ├── pom.xml │ ├── product-service/ │ │ ├── pom.xml │ │ └── src/ │ │ └── main/ │ │ ├── java/ │ │ │ └── com/ │ │ │ └── cd826dong/ │ │ │ └── clouddemo/ │ │ │ ├── Application.java │ │ │ ├── product/ │ │ │ │ ├── api/ │ │ │ │ │ ├── ProductCommentDto.java │ │ │ │ │ ├── ProductEndpoint.java │ │ │ │ │ └── UserDto.java │ │ │ │ ├── entity/ │ │ │ │ │ ├── Product.java │ │ │ │ │ └── ProductComment.java │ │ │ │ └── repository/ │ │ │ │ ├── ProductCommentRepository.java │ │ │ │ └── ProductRepository.java │ │ │ └── util/ │ │ │ └── HibernatePhysicalNamingNamingStrategy.java │ │ └── resources/ │ │ ├── .h2.server.properties │ │ ├── application.properties │ │ ├── banner.txt │ │ ├── data.sql │ │ └── schema.sql │ ├── service-discovery/ │ │ ├── pom.xml │ │ └── src/ │ │ └── main/ │ │ ├── java/ │ │ │ └── com/ │ │ │ └── cd826dong/ │ │ │ └── clouddemo/ │ │ │ └── Application.java │ │ └── resources/ │ │ ├── application.properties │ │ └── banner.txt │ └── user-service/ │ ├── pom.xml │ └── src/ │ └── main/ │ ├── java/ │ │ └── com/ │ │ └── cd826dong/ │ │ └── clouddemo/ │ │ ├── Application.java │ │ ├── user/ │ │ │ ├── api/ │ │ │ │ ├── UserDto.java │ │ │ │ └── UserEndpoint.java │ │ │ ├── entity/ │ │ │ │ └── User.java │ │ │ ├── repository/ │ │ │ │ ├── UserRepository.java │ │ │ │ ├── UserRepositoryEx.java │ │ │ │ └── UserRepositoryImpl.java │ │ │ └── service/ │ │ │ └── UserService.java │ │ └── util/ │ │ └── HibernatePhysicalNamingNamingStrategy.java │ └── resources/ │ ├── .h2.server.properties │ ├── application.properties │ ├── banner.txt │ ├── data.sql │ └── schema.sql ├── chapter04 -- eureka-cluster/ │ ├── README.md │ ├── parent/ │ │ └── pom.xml │ ├── pom.xml │ ├── product-service/ │ │ ├── pom.xml │ │ └── src/ │ │ └── main/ │ │ ├── java/ │ │ │ └── com/ │ │ │ └── cd826dong/ │ │ │ └── clouddemo/ │ │ │ ├── Application.java │ │ │ ├── product/ │ │ │ │ ├── api/ │ │ │ │ │ ├── ProductCommentDto.java │ │ │ │ │ ├── ProductEndpoint.java │ │ │ │ │ └── UserDto.java │ │ │ │ ├── entity/ │ │ │ │ │ ├── Product.java │ │ │ │ │ └── ProductComment.java │ │ │ │ ├── repository/ │ │ │ │ │ ├── ProductCommentRepository.java │ │ │ │ │ └── ProductRepository.java │ │ │ │ └── service/ │ │ │ │ └── UserService.java │ │ │ └── util/ │ │ │ └── HibernatePhysicalNamingNamingStrategy.java │ │ └── resources/ │ │ ├── .h2.server.properties │ │ ├── application.properties │ │ ├── banner.txt │ │ ├── data.sql │ │ └── schema.sql │ ├── service-discovery/ │ │ ├── pom.xml │ │ └── src/ │ │ └── main/ │ │ ├── java/ │ │ │ └── com/ │ │ │ └── cd826dong/ │ │ │ └── clouddemo/ │ │ │ └── Application.java │ │ └── resources/ │ │ ├── application-sdpeer1.properties │ │ ├── application-sdpeer2.properties │ │ ├── application-sdpeer3.properties │ │ ├── application.properties │ │ └── banner.txt │ └── user-service/ │ ├── pom.xml │ └── src/ │ └── main/ │ ├── java/ │ │ └── com/ │ │ └── cd826dong/ │ │ └── clouddemo/ │ │ ├── Application.java │ │ ├── user/ │ │ │ ├── api/ │ │ │ │ ├── UserDto.java │ │ │ │ └── UserEndpoint.java │ │ │ ├── entity/ │ │ │ │ └── User.java │ │ │ ├── repository/ │ │ │ │ ├── UserRepository.java │ │ │ │ ├── UserRepositoryEx.java │ │ │ │ └── UserRepositoryImpl.java │ │ │ └── service/ │ │ │ └── UserService.java │ │ └── util/ │ │ └── HibernatePhysicalNamingNamingStrategy.java │ └── resources/ │ ├── .h2.server.properties │ ├── application.properties │ ├── banner.txt │ ├── data.sql │ └── schema.sql ├── chapter04 -- eureka-feign/ │ ├── README.md │ ├── parent/ │ │ └── pom.xml │ ├── pom.xml │ ├── product-service/ │ │ ├── pom.xml │ │ └── src/ │ │ └── main/ │ │ ├── java/ │ │ │ └── com/ │ │ │ └── cd826dong/ │ │ │ └── clouddemo/ │ │ │ ├── Application.java │ │ │ ├── product/ │ │ │ │ ├── api/ │ │ │ │ │ ├── ProductCommentDto.java │ │ │ │ │ ├── ProductEndpoint.java │ │ │ │ │ └── UserDto.java │ │ │ │ ├── entity/ │ │ │ │ │ ├── Product.java │ │ │ │ │ └── ProductComment.java │ │ │ │ ├── repository/ │ │ │ │ │ ├── ProductCommentRepository.java │ │ │ │ │ └── ProductRepository.java │ │ │ │ └── service/ │ │ │ │ └── UserService.java │ │ │ └── util/ │ │ │ └── HibernatePhysicalNamingNamingStrategy.java │ │ └── resources/ │ │ ├── .h2.server.properties │ │ ├── application.properties │ │ ├── banner.txt │ │ ├── data.sql │ │ └── schema.sql │ ├── service-discovery/ │ │ ├── pom.xml │ │ └── src/ │ │ └── main/ │ │ ├── java/ │ │ │ └── com/ │ │ │ └── cd826dong/ │ │ │ └── clouddemo/ │ │ │ └── Application.java │ │ └── resources/ │ │ ├── application-sdpeer1.properties │ │ ├── application-sdpeer2.properties │ │ ├── application-sdpeer3.properties │ │ ├── application.properties │ │ └── banner.txt │ └── user-service/ │ ├── pom.xml │ └── src/ │ └── main/ │ ├── java/ │ │ └── com/ │ │ └── cd826dong/ │ │ └── clouddemo/ │ │ ├── Application.java │ │ ├── user/ │ │ │ ├── api/ │ │ │ │ ├── UserDto.java │ │ │ │ └── UserEndpoint.java │ │ │ ├── entity/ │ │ │ │ └── User.java │ │ │ ├── repository/ │ │ │ │ ├── UserRepository.java │ │ │ │ ├── UserRepositoryEx.java │ │ │ │ └── UserRepositoryImpl.java │ │ │ └── service/ │ │ │ └── UserService.java │ │ └── util/ │ │ └── HibernatePhysicalNamingNamingStrategy.java │ └── resources/ │ ├── .h2.server.properties │ ├── application.properties │ ├── banner.txt │ ├── data.sql │ └── schema.sql ├── chapter04 -- eureka-ribbon/ │ ├── .project │ ├── .settings/ │ │ ├── org.eclipse.core.resources.prefs │ │ └── org.eclipse.m2e.core.prefs │ ├── README.md │ ├── parent/ │ │ ├── .project │ │ ├── .settings/ │ │ │ ├── org.eclipse.core.resources.prefs │ │ │ └── org.eclipse.m2e.core.prefs │ │ └── pom.xml │ ├── pom.xml │ ├── product-service/ │ │ ├── .classpath │ │ ├── .project │ │ ├── .settings/ │ │ │ ├── org.eclipse.core.resources.prefs │ │ │ ├── org.eclipse.jdt.core.prefs │ │ │ └── org.eclipse.m2e.core.prefs │ │ ├── pom.xml │ │ └── src/ │ │ └── main/ │ │ ├── java/ │ │ │ └── com/ │ │ │ └── cd826dong/ │ │ │ └── clouddemo/ │ │ │ ├── Application.java │ │ │ ├── product/ │ │ │ │ ├── api/ │ │ │ │ │ ├── ProductCommentDto.java │ │ │ │ │ ├── ProductEndpoint.java │ │ │ │ │ └── UserDto.java │ │ │ │ ├── entity/ │ │ │ │ │ ├── Product.java │ │ │ │ │ └── ProductComment.java │ │ │ │ └── repository/ │ │ │ │ ├── ProductCommentRepository.java │ │ │ │ └── ProductRepository.java │ │ │ └── util/ │ │ │ └── HibernatePhysicalNamingNamingStrategy.java │ │ └── resources/ │ │ ├── .h2.server.properties │ │ ├── application.properties │ │ ├── banner.txt │ │ ├── data.sql │ │ └── schema.sql │ ├── service-discovery/ │ │ ├── .classpath │ │ ├── .project │ │ ├── .settings/ │ │ │ ├── org.eclipse.core.resources.prefs │ │ │ ├── org.eclipse.jdt.core.prefs │ │ │ └── org.eclipse.m2e.core.prefs │ │ ├── pom.xml │ │ └── src/ │ │ └── main/ │ │ ├── java/ │ │ │ └── com/ │ │ │ └── cd826dong/ │ │ │ └── clouddemo/ │ │ │ └── Application.java │ │ └── resources/ │ │ ├── application.properties │ │ └── banner.txt │ └── user-service/ │ ├── .classpath │ ├── .project │ ├── .settings/ │ │ ├── org.eclipse.core.resources.prefs │ │ ├── org.eclipse.jdt.core.prefs │ │ └── org.eclipse.m2e.core.prefs │ ├── pom.xml │ └── src/ │ └── main/ │ ├── java/ │ │ └── com/ │ │ └── cd826dong/ │ │ └── clouddemo/ │ │ ├── Application.java │ │ ├── user/ │ │ │ ├── api/ │ │ │ │ ├── UserDto.java │ │ │ │ └── UserEndpoint.java │ │ │ ├── entity/ │ │ │ │ └── User.java │ │ │ ├── repository/ │ │ │ │ ├── UserRepository.java │ │ │ │ ├── UserRepositoryEx.java │ │ │ │ └── UserRepositoryImpl.java │ │ │ └── service/ │ │ │ └── UserService.java │ │ └── util/ │ │ └── HibernatePhysicalNamingNamingStrategy.java │ └── resources/ │ ├── .h2.server.properties │ ├── application.properties │ ├── banner.txt │ ├── data.sql │ └── schema.sql ├── chapter04 -- eureka-ribbonex/ │ ├── README.md │ ├── parent/ │ │ └── pom.xml │ ├── pom.xml │ ├── product-service/ │ │ ├── pom.xml │ │ └── src/ │ │ └── main/ │ │ ├── java/ │ │ │ └── com/ │ │ │ └── cd826dong/ │ │ │ ├── clouddemo/ │ │ │ │ ├── Application.java │ │ │ │ ├── product/ │ │ │ │ │ ├── api/ │ │ │ │ │ │ ├── ProductCommentDto.java │ │ │ │ │ │ ├── ProductEndpoint.java │ │ │ │ │ │ └── UserDto.java │ │ │ │ │ ├── entity/ │ │ │ │ │ │ ├── Product.java │ │ │ │ │ │ └── ProductComment.java │ │ │ │ │ └── repository/ │ │ │ │ │ ├── ProductCommentRepository.java │ │ │ │ │ └── ProductRepository.java │ │ │ │ └── util/ │ │ │ │ └── HibernatePhysicalNamingNamingStrategy.java │ │ │ └── ribbon/ │ │ │ ├── RibbonConfiguration.java │ │ │ └── UserRibbonConfiguration.java │ │ └── resources/ │ │ ├── .h2.server.properties │ │ ├── application.properties │ │ ├── banner.txt │ │ ├── data.sql │ │ └── schema.sql │ ├── service-discovery/ │ │ ├── pom.xml │ │ └── src/ │ │ └── main/ │ │ ├── java/ │ │ │ └── com/ │ │ │ └── cd826dong/ │ │ │ └── clouddemo/ │ │ │ └── Application.java │ │ └── resources/ │ │ ├── application-sdpeer1.properties │ │ ├── application-sdpeer2.properties │ │ ├── application-sdpeer3.properties │ │ ├── application.properties │ │ └── banner.txt │ └── user-service/ │ ├── pom.xml │ └── src/ │ └── main/ │ ├── java/ │ │ └── com/ │ │ └── cd826dong/ │ │ └── clouddemo/ │ │ ├── Application.java │ │ ├── user/ │ │ │ ├── api/ │ │ │ │ ├── UserDto.java │ │ │ │ └── UserEndpoint.java │ │ │ ├── entity/ │ │ │ │ └── User.java │ │ │ ├── repository/ │ │ │ │ ├── UserRepository.java │ │ │ │ ├── UserRepositoryEx.java │ │ │ │ └── UserRepositoryImpl.java │ │ │ └── service/ │ │ │ └── UserService.java │ │ └── util/ │ │ └── HibernatePhysicalNamingNamingStrategy.java │ └── resources/ │ ├── .h2.server.properties │ ├── application.properties │ ├── banner.txt │ ├── data.sql │ └── schema.sql ├── chapter04 -- eureka-security/ │ ├── README.md │ ├── parent/ │ │ └── pom.xml │ ├── pom.xml │ ├── product-service/ │ │ ├── pom.xml │ │ └── src/ │ │ └── main/ │ │ ├── java/ │ │ │ └── com/ │ │ │ └── cd826dong/ │ │ │ └── clouddemo/ │ │ │ ├── Application.java │ │ │ ├── product/ │ │ │ │ ├── api/ │ │ │ │ │ ├── ProductCommentDto.java │ │ │ │ │ ├── ProductEndpoint.java │ │ │ │ │ └── UserDto.java │ │ │ │ ├── entity/ │ │ │ │ │ ├── Product.java │ │ │ │ │ └── ProductComment.java │ │ │ │ ├── repository/ │ │ │ │ │ ├── ProductCommentRepository.java │ │ │ │ │ └── ProductRepository.java │ │ │ │ └── service/ │ │ │ │ └── UserService.java │ │ │ └── util/ │ │ │ └── HibernatePhysicalNamingNamingStrategy.java │ │ └── resources/ │ │ ├── .h2.server.properties │ │ ├── application.properties │ │ ├── banner.txt │ │ ├── data.sql │ │ └── schema.sql │ ├── service-discovery/ │ │ ├── pom.xml │ │ └── src/ │ │ └── main/ │ │ ├── java/ │ │ │ └── com/ │ │ │ └── cd826dong/ │ │ │ └── clouddemo/ │ │ │ └── Application.java │ │ └── resources/ │ │ ├── application.properties │ │ └── banner.txt │ └── user-service/ │ ├── pom.xml │ └── src/ │ └── main/ │ ├── java/ │ │ └── com/ │ │ └── cd826dong/ │ │ └── clouddemo/ │ │ ├── Application.java │ │ ├── user/ │ │ │ ├── api/ │ │ │ │ ├── UserDto.java │ │ │ │ └── UserEndpoint.java │ │ │ ├── entity/ │ │ │ │ └── User.java │ │ │ ├── repository/ │ │ │ │ ├── UserRepository.java │ │ │ │ ├── UserRepositoryEx.java │ │ │ │ └── UserRepositoryImpl.java │ │ │ └── service/ │ │ │ └── UserService.java │ │ └── util/ │ │ └── HibernatePhysicalNamingNamingStrategy.java │ └── resources/ │ ├── .h2.server.properties │ ├── application.properties │ ├── banner.txt │ ├── data.sql │ └── schema.sql ├── chapter05 -- hystrix/ │ ├── README.md │ ├── parent/ │ │ └── pom.xml │ ├── pom.xml │ ├── product-service/ │ │ ├── pom.xml │ │ └── src/ │ │ └── main/ │ │ ├── java/ │ │ │ └── com/ │ │ │ └── cd826dong/ │ │ │ └── clouddemo/ │ │ │ ├── Application.java │ │ │ ├── product/ │ │ │ │ ├── api/ │ │ │ │ │ ├── ProductCommentDto.java │ │ │ │ │ ├── ProductEndpoint.java │ │ │ │ │ └── UserDto.java │ │ │ │ ├── entity/ │ │ │ │ │ ├── Product.java │ │ │ │ │ └── ProductComment.java │ │ │ │ ├── repository/ │ │ │ │ │ ├── ProductCommentRepository.java │ │ │ │ │ └── ProductRepository.java │ │ │ │ └── service/ │ │ │ │ ├── UserService.java │ │ │ │ └── UserServiceImpl.java │ │ │ └── util/ │ │ │ └── HibernatePhysicalNamingNamingStrategy.java │ │ └── resources/ │ │ ├── .h2.server.properties │ │ ├── application.properties │ │ ├── banner.txt │ │ ├── bootstrap.properties │ │ ├── data.sql │ │ └── schema.sql │ ├── service-discovery/ │ │ ├── pom.xml │ │ └── src/ │ │ └── main/ │ │ ├── java/ │ │ │ └── com/ │ │ │ └── cd826dong/ │ │ │ └── clouddemo/ │ │ │ └── Application.java │ │ └── resources/ │ │ ├── application.properties │ │ ├── banner.txt │ │ └── logback.xml │ ├── turbine-server/ │ │ ├── pom.xml │ │ └── src/ │ │ └── main/ │ │ ├── java/ │ │ │ └── com/ │ │ │ └── cd826dong/ │ │ │ └── clouddemo/ │ │ │ └── Application.java │ │ └── resources/ │ │ ├── application.properties │ │ ├── banner.txt │ │ ├── bootstrap.properties │ │ └── logback.xml │ └── user-service/ │ ├── pom.xml │ └── src/ │ └── main/ │ ├── java/ │ │ └── com/ │ │ └── cd826dong/ │ │ └── clouddemo/ │ │ ├── Application.java │ │ ├── user/ │ │ │ ├── api/ │ │ │ │ ├── UserDto.java │ │ │ │ └── UserEndpoint.java │ │ │ ├── entity/ │ │ │ │ └── User.java │ │ │ └── repository/ │ │ │ └── UserRepository.java │ │ └── util/ │ │ └── HibernatePhysicalNamingNamingStrategy.java │ └── resources/ │ ├── .h2.server.properties │ ├── application.properties │ ├── banner.txt │ ├── bootstrap.properties │ ├── data.sql │ ├── logback.xml │ └── schema.sql ├── chapter05 -- hystrix-feign/ │ ├── README.md │ ├── parent/ │ │ └── pom.xml │ ├── pom.xml │ ├── product-service/ │ │ ├── pom.xml │ │ └── src/ │ │ └── main/ │ │ ├── java/ │ │ │ └── com/ │ │ │ └── cd826dong/ │ │ │ └── clouddemo/ │ │ │ ├── Application.java │ │ │ ├── product/ │ │ │ │ ├── api/ │ │ │ │ │ ├── ProductCommentDto.java │ │ │ │ │ ├── ProductEndpoint.java │ │ │ │ │ └── UserDto.java │ │ │ │ ├── entity/ │ │ │ │ │ ├── Product.java │ │ │ │ │ └── ProductComment.java │ │ │ │ ├── repository/ │ │ │ │ │ ├── ProductCommentRepository.java │ │ │ │ │ └── ProductRepository.java │ │ │ │ └── service/ │ │ │ │ ├── UserService.java │ │ │ │ └── UserServiceFallback.java │ │ │ └── util/ │ │ │ └── HibernatePhysicalNamingNamingStrategy.java │ │ └── resources/ │ │ ├── .h2.server.properties │ │ ├── application.properties │ │ ├── banner.txt │ │ ├── bootstrap.properties │ │ ├── data.sql │ │ └── schema.sql │ ├── service-discovery/ │ │ ├── pom.xml │ │ └── src/ │ │ └── main/ │ │ ├── java/ │ │ │ └── com/ │ │ │ └── cd826dong/ │ │ │ └── clouddemo/ │ │ │ └── Application.java │ │ └── resources/ │ │ ├── application.properties │ │ └── banner.txt │ └── user-service/ │ ├── pom.xml │ └── src/ │ └── main/ │ ├── java/ │ │ └── com/ │ │ └── cd826dong/ │ │ └── clouddemo/ │ │ ├── Application.java │ │ ├── user/ │ │ │ ├── api/ │ │ │ │ ├── UserDto.java │ │ │ │ └── UserEndpoint.java │ │ │ ├── entity/ │ │ │ │ └── User.java │ │ │ └── repository/ │ │ │ └── UserRepository.java │ │ └── util/ │ │ └── HibernatePhysicalNamingNamingStrategy.java │ └── resources/ │ ├── .h2.server.properties │ ├── application.properties │ ├── banner.txt │ ├── bootstrap.properties │ ├── data.sql │ └── schema.sql ├── chapter06 -- zuul/ │ ├── README.md │ ├── hystrix-dashboard/ │ │ ├── pom.xml │ │ └── src/ │ │ └── main/ │ │ ├── java/ │ │ │ └── com/ │ │ │ └── cd826dong/ │ │ │ └── clouddemo/ │ │ │ └── hystrix/ │ │ │ └── Application.java │ │ └── resources/ │ │ ├── application.properties │ │ └── banner.txt │ ├── parent/ │ │ └── pom.xml │ ├── pom.xml │ ├── product-service/ │ │ ├── pom.xml │ │ └── src/ │ │ └── main/ │ │ ├── java/ │ │ │ └── com/ │ │ │ └── cd826dong/ │ │ │ └── clouddemo/ │ │ │ ├── Application.java │ │ │ ├── product/ │ │ │ │ ├── api/ │ │ │ │ │ ├── ProductCommentDto.java │ │ │ │ │ ├── ProductEndpoint.java │ │ │ │ │ └── UserDto.java │ │ │ │ ├── entity/ │ │ │ │ │ ├── Product.java │ │ │ │ │ └── ProductComment.java │ │ │ │ ├── repository/ │ │ │ │ │ ├── ProductCommentRepository.java │ │ │ │ │ └── ProductRepository.java │ │ │ │ └── service/ │ │ │ │ └── UserService.java │ │ │ └── util/ │ │ │ └── HibernatePhysicalNamingNamingStrategy.java │ │ └── resources/ │ │ ├── .h2.server.properties │ │ ├── application.properties │ │ ├── banner.txt │ │ ├── data.sql │ │ └── schema.sql │ ├── service-discovery/ │ │ ├── pom.xml │ │ └── src/ │ │ └── main/ │ │ ├── java/ │ │ │ └── com/ │ │ │ └── cd826dong/ │ │ │ └── clouddemo/ │ │ │ └── Application.java │ │ └── resources/ │ │ ├── application.properties │ │ └── banner.txt │ ├── user-service/ │ │ ├── pom.xml │ │ └── src/ │ │ └── main/ │ │ ├── java/ │ │ │ └── com/ │ │ │ └── cd826dong/ │ │ │ └── clouddemo/ │ │ │ ├── Application.java │ │ │ ├── user/ │ │ │ │ ├── api/ │ │ │ │ │ ├── UserDto.java │ │ │ │ │ └── UserEndpoint.java │ │ │ │ ├── entity/ │ │ │ │ │ └── User.java │ │ │ │ ├── repository/ │ │ │ │ │ └── UserRepository.java │ │ │ │ └── service/ │ │ │ │ └── UserService.java │ │ │ └── util/ │ │ │ └── HibernatePhysicalNamingNamingStrategy.java │ │ └── resources/ │ │ ├── .h2.server.properties │ │ ├── application.properties │ │ ├── banner.txt │ │ ├── data.sql │ │ └── schema.sql │ └── zuul-server/ │ ├── pom.xml │ └── src/ │ └── main/ │ ├── java/ │ │ └── com/ │ │ └── cd826dong/ │ │ └── clouddemo/ │ │ └── zuul/ │ │ ├── Application.java │ │ └── fallback/ │ │ └── UserServiceFallbackProvider.java │ └── resources/ │ ├── application.properties │ └── banner.txt ├── chapter07 -- config/ │ ├── README.md │ ├── config-server/ │ │ ├── pom.xml │ │ └── src/ │ │ └── main/ │ │ ├── java/ │ │ │ └── com/ │ │ │ └── cd826dong/ │ │ │ └── clouddemo/ │ │ │ └── config/ │ │ │ └── Application.java │ │ └── resources/ │ │ ├── application.properties │ │ ├── banner.txt │ │ └── bootstrap.properties │ ├── parent/ │ │ └── pom.xml │ ├── pom.xml │ ├── product-service/ │ │ ├── pom.xml │ │ └── src/ │ │ └── main/ │ │ ├── java/ │ │ │ └── com/ │ │ │ └── cd826dong/ │ │ │ └── clouddemo/ │ │ │ ├── Application.java │ │ │ ├── product/ │ │ │ │ ├── api/ │ │ │ │ │ ├── ConfigTestEndpoint.java │ │ │ │ │ ├── ProductCommentDto.java │ │ │ │ │ ├── ProductEndpoint.java │ │ │ │ │ └── UserDto.java │ │ │ │ ├── entity/ │ │ │ │ │ ├── Product.java │ │ │ │ │ └── ProductComment.java │ │ │ │ ├── repository/ │ │ │ │ │ ├── ProductCommentRepository.java │ │ │ │ │ └── ProductRepository.java │ │ │ │ └── service/ │ │ │ │ └── UserService.java │ │ │ └── util/ │ │ │ └── HibernatePhysicalNamingNamingStrategy.java │ │ └── resources/ │ │ ├── .h2.server.properties │ │ ├── application.properties │ │ ├── banner.txt │ │ ├── bootstrap.properties │ │ ├── data.sql │ │ └── schema.sql │ ├── service-discovery/ │ │ ├── pom.xml │ │ └── src/ │ │ └── main/ │ │ ├── java/ │ │ │ └── com/ │ │ │ └── cd826dong/ │ │ │ └── clouddemo/ │ │ │ └── Application.java │ │ └── resources/ │ │ ├── application.properties │ │ └── banner.txt │ └── user-service/ │ ├── pom.xml │ └── src/ │ └── main/ │ ├── java/ │ │ └── com/ │ │ └── cd826dong/ │ │ └── clouddemo/ │ │ ├── Application.java │ │ ├── user/ │ │ │ ├── api/ │ │ │ │ ├── UserDto.java │ │ │ │ └── UserEndpoint.java │ │ │ ├── entity/ │ │ │ │ └── User.java │ │ │ ├── repository/ │ │ │ │ ├── UserRepository.java │ │ │ │ ├── UserRepositoryEx.java │ │ │ │ └── UserRepositoryImpl.java │ │ │ └── service/ │ │ │ └── UserService.java │ │ └── util/ │ │ └── HibernatePhysicalNamingNamingStrategy.java │ └── resources/ │ ├── .h2.server.properties │ ├── application.properties │ ├── banner.txt │ ├── bootstrap.properties │ ├── data.sql │ └── schema.sql ├── chapter08 -- sleuth/ │ ├── README.md │ ├── parent/ │ │ └── pom.xml │ ├── pom.xml │ ├── product-service/ │ │ ├── pom.xml │ │ └── src/ │ │ └── main/ │ │ ├── java/ │ │ │ └── com/ │ │ │ └── cd826dong/ │ │ │ └── clouddemo/ │ │ │ ├── Application.java │ │ │ ├── product/ │ │ │ │ ├── api/ │ │ │ │ │ ├── ProductCommentDto.java │ │ │ │ │ ├── ProductEndpoint.java │ │ │ │ │ └── UserDto.java │ │ │ │ ├── entity/ │ │ │ │ │ ├── Product.java │ │ │ │ │ └── ProductComment.java │ │ │ │ ├── repository/ │ │ │ │ │ ├── ProductCommentRepository.java │ │ │ │ │ └── ProductRepository.java │ │ │ │ └── service/ │ │ │ │ └── UserService.java │ │ │ └── util/ │ │ │ └── HibernatePhysicalNamingNamingStrategy.java │ │ └── resources/ │ │ ├── .h2.server.properties │ │ ├── application.properties │ │ ├── banner.txt │ │ ├── bootstrap.properties │ │ ├── data.sql │ │ ├── logback-spring.xml │ │ └── schema.sql │ ├── service-discovery/ │ │ ├── pom.xml │ │ └── src/ │ │ └── main/ │ │ ├── java/ │ │ │ └── com/ │ │ │ └── cd826dong/ │ │ │ └── clouddemo/ │ │ │ └── Application.java │ │ └── resources/ │ │ ├── application.properties │ │ └── banner.txt │ ├── user-service/ │ │ ├── pom.xml │ │ └── src/ │ │ └── main/ │ │ ├── java/ │ │ │ └── com/ │ │ │ └── cd826dong/ │ │ │ └── clouddemo/ │ │ │ ├── Application.java │ │ │ ├── user/ │ │ │ │ ├── api/ │ │ │ │ │ ├── UserDto.java │ │ │ │ │ └── UserEndpoint.java │ │ │ │ ├── entity/ │ │ │ │ │ └── User.java │ │ │ │ └── repository/ │ │ │ │ └── UserRepository.java │ │ │ └── util/ │ │ │ └── HibernatePhysicalNamingNamingStrategy.java │ │ └── resources/ │ │ ├── .h2.server.properties │ │ ├── application.properties │ │ ├── banner.txt │ │ ├── bootstrap.properties │ │ ├── data.sql │ │ ├── logback-spring.xml │ │ └── schema.sql │ ├── zipkin-server/ │ │ ├── pom.xml │ │ └── src/ │ │ └── main/ │ │ ├── java/ │ │ │ └── com/ │ │ │ └── cd826dong/ │ │ │ └── clouddemo/ │ │ │ └── Application.java │ │ └── resources/ │ │ ├── application.properties │ │ └── banner.txt │ └── zuul-server/ │ ├── pom.xml │ └── src/ │ └── main/ │ ├── java/ │ │ └── com/ │ │ └── cd826dong/ │ │ └── clouddemo/ │ │ ├── Application.java │ │ └── filters/ │ │ └── TraceIdFilter.java │ └── resources/ │ ├── application.properties │ └── banner.txt ├── chapter09 -- stream/ │ ├── README.md │ ├── config-server/ │ │ ├── pom.xml │ │ └── src/ │ │ └── main/ │ │ ├── java/ │ │ │ └── com/ │ │ │ └── cd826dong/ │ │ │ └── clouddemo/ │ │ │ └── Application.java │ │ └── resources/ │ │ ├── application.properties │ │ ├── banner.txt │ │ └── bootstrap.properties │ ├── parent/ │ │ └── pom.xml │ ├── pom.xml │ ├── product-service/ │ │ ├── pom.xml │ │ └── src/ │ │ └── main/ │ │ ├── java/ │ │ │ └── com/ │ │ │ └── cd826dong/ │ │ │ └── clouddemo/ │ │ │ ├── Application.java │ │ │ ├── bus/ │ │ │ │ └── MyBusEvent.java │ │ │ ├── product/ │ │ │ │ ├── api/ │ │ │ │ │ ├── ConfigTestEndpoint.java │ │ │ │ │ ├── ProductCommentDto.java │ │ │ │ │ ├── ProductEndpoint.java │ │ │ │ │ └── UserDto.java │ │ │ │ ├── entity/ │ │ │ │ │ ├── Product.java │ │ │ │ │ └── ProductComment.java │ │ │ │ ├── mq/ │ │ │ │ │ ├── SpringCloudBookChannels.java │ │ │ │ │ ├── UserMsg.java │ │ │ │ │ └── UserMsgListener.java │ │ │ │ ├── redis/ │ │ │ │ │ ├── RedisConfig.java │ │ │ │ │ └── repository/ │ │ │ │ │ └── UserRedisRepository.java │ │ │ │ ├── repository/ │ │ │ │ │ ├── ProductCommentRepository.java │ │ │ │ │ └── ProductRepository.java │ │ │ │ └── service/ │ │ │ │ ├── UserRemoteClient.java │ │ │ │ ├── UserService.java │ │ │ │ └── impl/ │ │ │ │ ├── MyBusEventListener.java │ │ │ │ └── UserServiceImpl.java │ │ │ └── util/ │ │ │ ├── ApplicationContextHolder.java │ │ │ └── HibernatePhysicalNamingNamingStrategy.java │ │ └── resources/ │ │ ├── .h2.server.properties │ │ ├── application.properties │ │ ├── banner.txt │ │ ├── bootstrap.properties │ │ ├── data.sql │ │ └── schema.sql │ ├── service-discovery/ │ │ ├── pom.xml │ │ └── src/ │ │ └── main/ │ │ ├── java/ │ │ │ └── com/ │ │ │ └── cd826dong/ │ │ │ └── clouddemo/ │ │ │ └── Application.java │ │ └── resources/ │ │ ├── application.properties │ │ └── banner.txt │ └── user-service/ │ ├── pom.xml │ └── src/ │ └── main/ │ ├── java/ │ │ └── com/ │ │ └── cd826dong/ │ │ └── clouddemo/ │ │ ├── Application.java │ │ ├── bus/ │ │ │ └── MyBusEvent.java │ │ ├── user/ │ │ │ ├── api/ │ │ │ │ ├── UserDto.java │ │ │ │ ├── UserEndpoint.java │ │ │ │ └── UserEventEndpoint.java │ │ │ ├── entity/ │ │ │ │ └── User.java │ │ │ ├── repository/ │ │ │ │ └── UserRepository.java │ │ │ └── service/ │ │ │ ├── UserMsg.java │ │ │ ├── UserMsgSender.java │ │ │ └── UserService.java │ │ └── util/ │ │ ├── ApplicationContextHolder.java │ │ └── HibernatePhysicalNamingNamingStrategy.java │ └── resources/ │ ├── .h2.server.properties │ ├── application.properties │ ├── banner.txt │ ├── bootstrap.properties │ ├── data.sql │ └── schema.sql ├── chapter10 -- security-boot/ │ ├── README.md │ ├── parent/ │ │ └── pom.xml │ ├── pom.xml │ ├── product-service/ │ │ ├── pom.xml │ │ └── src/ │ │ └── main/ │ │ ├── java/ │ │ │ └── com/ │ │ │ └── cd826dong/ │ │ │ └── clouddemo/ │ │ │ ├── Application.java │ │ │ ├── product/ │ │ │ │ ├── api/ │ │ │ │ │ ├── ProductCommentDto.java │ │ │ │ │ ├── ProductEndpoint.java │ │ │ │ │ └── UserDto.java │ │ │ │ ├── config/ │ │ │ │ │ └── SecurityConfig.java │ │ │ │ ├── entity/ │ │ │ │ │ ├── Product.java │ │ │ │ │ └── ProductComment.java │ │ │ │ ├── repository/ │ │ │ │ │ ├── ProductCommentRepository.java │ │ │ │ │ └── ProductRepository.java │ │ │ │ └── service/ │ │ │ │ └── UserService.java │ │ │ └── util/ │ │ │ └── HibernatePhysicalNamingNamingStrategy.java │ │ └── resources/ │ │ ├── .h2.server.properties │ │ ├── application.properties │ │ ├── banner.txt │ │ ├── data.sql │ │ └── schema.sql │ ├── service-discovery/ │ │ ├── pom.xml │ │ └── src/ │ │ └── main/ │ │ ├── java/ │ │ │ └── com/ │ │ │ └── cd826dong/ │ │ │ └── clouddemo/ │ │ │ └── Application.java │ │ └── resources/ │ │ ├── application-sdpeer1.properties │ │ ├── application-sdpeer2.properties │ │ ├── application-sdpeer3.properties │ │ ├── application.properties │ │ └── banner.txt │ └── user-service/ │ ├── pom.xml │ └── src/ │ └── main/ │ ├── java/ │ │ └── com/ │ │ └── cd826dong/ │ │ └── clouddemo/ │ │ ├── Application.java │ │ ├── user/ │ │ │ ├── api/ │ │ │ │ ├── UserDto.java │ │ │ │ └── UserEndpoint.java │ │ │ ├── entity/ │ │ │ │ └── User.java │ │ │ ├── repository/ │ │ │ │ ├── UserRepository.java │ │ │ │ ├── UserRepositoryEx.java │ │ │ │ └── UserRepositoryImpl.java │ │ │ └── service/ │ │ │ └── UserService.java │ │ └── util/ │ │ └── HibernatePhysicalNamingNamingStrategy.java │ └── resources/ │ ├── .h2.server.properties │ ├── application.properties │ ├── banner.txt │ ├── data.sql │ └── schema.sql ├── chapter10 -- security-jwt/ │ ├── README.md │ ├── auth-server/ │ │ ├── pom.xml │ │ └── src/ │ │ └── main/ │ │ ├── java/ │ │ │ └── com/ │ │ │ └── cd826dong/ │ │ │ └── clouddemo/ │ │ │ └── authserver/ │ │ │ ├── Application.java │ │ │ ├── config/ │ │ │ │ ├── JWTTokenConfig.java │ │ │ │ ├── OAuthConfig.java │ │ │ │ ├── OAuthWebSecurityConfigurer.java │ │ │ │ └── ServiceConfig.java │ │ │ └── jwt/ │ │ │ └── JWTTokenEnhancer.java │ │ └── resources/ │ │ ├── application.properties │ │ └── banner.txt │ ├── parent/ │ │ └── pom.xml │ ├── pom.xml │ ├── product-service/ │ │ ├── pom.xml │ │ └── src/ │ │ └── main/ │ │ ├── java/ │ │ │ └── com/ │ │ │ └── cd826dong/ │ │ │ └── clouddemo/ │ │ │ ├── Application.java │ │ │ ├── product/ │ │ │ │ ├── api/ │ │ │ │ │ ├── ProductCommentDto.java │ │ │ │ │ ├── ProductEndpoint.java │ │ │ │ │ └── UserDto.java │ │ │ │ ├── config/ │ │ │ │ │ └── ResourceServerConfiguration.java │ │ │ │ ├── entity/ │ │ │ │ │ ├── Product.java │ │ │ │ │ └── ProductComment.java │ │ │ │ ├── repository/ │ │ │ │ │ ├── ProductCommentRepository.java │ │ │ │ │ └── ProductRepository.java │ │ │ │ └── service/ │ │ │ │ ├── UserService.java │ │ │ │ └── impl/ │ │ │ │ └── UserServiceImpl.java │ │ │ └── util/ │ │ │ ├── HibernatePhysicalNamingNamingStrategy.java │ │ │ ├── JWTOAuthTokenInterceptor.java │ │ │ ├── UserContext.java │ │ │ └── UserContextFilter.java │ │ └── resources/ │ │ ├── .h2.server.properties │ │ ├── application.properties │ │ ├── banner.txt │ │ ├── data.sql │ │ └── schema.sql │ ├── service-discovery/ │ │ ├── pom.xml │ │ └── src/ │ │ └── main/ │ │ ├── java/ │ │ │ └── com/ │ │ │ └── cd826dong/ │ │ │ └── clouddemo/ │ │ │ └── Application.java │ │ └── resources/ │ │ ├── application-sdpeer1.properties │ │ ├── application-sdpeer2.properties │ │ ├── application-sdpeer3.properties │ │ ├── application.properties │ │ └── banner.txt │ ├── user-service/ │ │ ├── pom.xml │ │ └── src/ │ │ └── main/ │ │ ├── java/ │ │ │ └── com/ │ │ │ └── cd826dong/ │ │ │ └── clouddemo/ │ │ │ ├── Application.java │ │ │ ├── user/ │ │ │ │ ├── api/ │ │ │ │ │ ├── UserDto.java │ │ │ │ │ └── UserEndpoint.java │ │ │ │ ├── config/ │ │ │ │ │ ├── JWTTokenConfig.java │ │ │ │ │ ├── ResourceServerConfiguration.java │ │ │ │ │ └── ServiceConfig.java │ │ │ │ ├── entity/ │ │ │ │ │ └── User.java │ │ │ │ ├── repository/ │ │ │ │ │ ├── UserRepository.java │ │ │ │ │ ├── UserRepositoryEx.java │ │ │ │ │ └── UserRepositoryImpl.java │ │ │ │ └── service/ │ │ │ │ └── UserService.java │ │ │ └── util/ │ │ │ ├── HibernatePhysicalNamingNamingStrategy.java │ │ │ ├── JWTOAuthTokenInterceptor.java │ │ │ ├── JWTTokenEnhancer.java │ │ │ ├── UserContext.java │ │ │ └── UserContextFilter.java │ │ └── resources/ │ │ ├── .h2.server.properties │ │ ├── application.properties │ │ ├── banner.txt │ │ ├── data.sql │ │ └── schema.sql │ └── zuul-server/ │ ├── pom.xml │ └── src/ │ └── main/ │ ├── java/ │ │ └── com/ │ │ └── cd826dong/ │ │ └── clouddemo/ │ │ └── zuul/ │ │ ├── Application.java │ │ ├── config/ │ │ │ └── ServiceConfig.java │ │ └── filters/ │ │ ├── FilterUtils.java │ │ └── JWTTokenFilter.java │ └── resources/ │ ├── application.properties │ └── banner.txt └── chapter10 -- security-oauth/ ├── README.md ├── auth-server/ │ ├── pom.xml │ └── src/ │ └── main/ │ ├── java/ │ │ └── com/ │ │ └── cd826dong/ │ │ └── clouddemo/ │ │ ├── authserver/ │ │ │ ├── Application.java │ │ │ └── config/ │ │ │ ├── OAuthConfig.java │ │ │ └── OAuthWebSecurityConfigurer.java │ │ └── security/ │ │ └── InspectHeaderFilter.java │ └── resources/ │ ├── application.properties │ └── banner.txt ├── parent/ │ └── pom.xml ├── pom.xml ├── product-service/ │ ├── pom.xml │ └── src/ │ └── main/ │ ├── java/ │ │ └── com/ │ │ └── cd826dong/ │ │ └── clouddemo/ │ │ ├── product/ │ │ │ ├── Application.java │ │ │ ├── api/ │ │ │ │ ├── ProductCommentDto.java │ │ │ │ ├── ProductEndpoint.java │ │ │ │ └── UserDto.java │ │ │ ├── config/ │ │ │ │ └── ResourceServerConfiguration.java │ │ │ ├── entity/ │ │ │ │ ├── Product.java │ │ │ │ └── ProductComment.java │ │ │ ├── repository/ │ │ │ │ ├── ProductCommentRepository.java │ │ │ │ └── ProductRepository.java │ │ │ └── service/ │ │ │ ├── UserService.java │ │ │ └── impl/ │ │ │ └── UserServiceImpl.java │ │ └── util/ │ │ └── HibernatePhysicalNamingNamingStrategy.java │ └── resources/ │ ├── .h2.server.properties │ ├── application.properties │ ├── banner.txt │ ├── data.sql │ └── schema.sql ├── service-discovery/ │ ├── pom.xml │ └── src/ │ └── main/ │ ├── java/ │ │ └── com/ │ │ └── cd826dong/ │ │ └── clouddemo/ │ │ └── Application.java │ └── resources/ │ ├── application-sdpeer1.properties │ ├── application-sdpeer2.properties │ ├── application-sdpeer3.properties │ ├── application.properties │ └── banner.txt ├── user-service/ │ ├── pom.xml │ └── src/ │ └── main/ │ ├── java/ │ │ └── com/ │ │ └── cd826dong/ │ │ └── clouddemo/ │ │ ├── Application.java │ │ ├── user/ │ │ │ ├── api/ │ │ │ │ ├── UserDto.java │ │ │ │ └── UserEndpoint.java │ │ │ ├── config/ │ │ │ │ └── ResourceServerConfiguration.java │ │ │ ├── entity/ │ │ │ │ └── User.java │ │ │ ├── repository/ │ │ │ │ ├── UserRepository.java │ │ │ │ ├── UserRepositoryEx.java │ │ │ │ └── UserRepositoryImpl.java │ │ │ └── service/ │ │ │ └── UserService.java │ │ └── util/ │ │ └── HibernatePhysicalNamingNamingStrategy.java │ └── resources/ │ ├── .h2.server.properties │ ├── application.properties │ ├── banner.txt │ ├── data.sql │ └── schema.sql └── zuul-server/ ├── pom.xml └── src/ └── main/ ├── java/ │ └── com/ │ └── cd826dong/ │ └── clouddemo/ │ └── zuul/ │ └── zuulserver/ │ └── Application.java └── resources/ ├── application.properties ├── banner.txt └── logback.xml ================================================ FILE CONTENTS ================================================ ================================================ FILE: README.md ================================================ # 《Spring Cloud微服务架构开发实战》配套源码 --- ## 勘误表 #### P295 ``` java $ docker pull microserv/openjdk:1.0.0 ``` 应为: ```java $ docker build -t microserv/openjdk:1.0.0 . ``` ================================================ FILE: chapter02 -- boot/README.md ================================================ # chapter02. 微服务基础-Spring Boot 这是微服务基础Spring Boot示例项目 ================================================ FILE: chapter02 -- boot/pom.xml ================================================ 4.0.0 org.springframework.boot spring-boot-starter-parent 1.5.2.RELEASE cd826dong.cloud cd826dong-clouds-boot 0.0.1-SNAPSHOT jar SpringCloud Demo Projects -- Spring Boot UTF-8 1.8 ${java.version} ${java.version} 20.0 2.6.1 org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-starter-actuator org.springframework.boot spring-boot-starter-data-jpa com.h2database h2 com.google.guava guava ${guava.version} io.springfox springfox-swagger-ui ${swagger.version} io.springfox springfox-swagger2 ${swagger.version} org.springframework.boot spring-boot-starter-test test CD826 CD826Dong cd826Dong@gmail.com Project leader +8 Hu hucw hcw2175@163.com Project leader +8 Apache License, Version 2.0 http://www.apache.org/licenses/LICENSE-2.0 Github https://github.com/cd826/springcloud-book/issues https://github.com/cd826/springcloud-book scm:git:git://github.com/cd826/springcloud-book.git scm:git:ssh://git@github.com:cd826/springcloud-book.git org.apache.maven.plugins maven-compiler-plugin 3.5.1 1.8 1.8 org.springframework.boot spring-boot-maven-plugin ================================================ FILE: chapter02 -- boot/src/main/java/com/cd826dong/clouddemo/Application.java ================================================ /* * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.cd826dong.clouddemo; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.context.annotation.ComponentScan; /** * 应用主应用类 * * @author CD826 * @since 1.0.0 */ @SpringBootApplication @ComponentScan("com.cd826dong.**") public class Application { public static void main(String[] args) throws Exception { SpringApplication.run(Application.class, args); } } ================================================ FILE: chapter02 -- boot/src/main/java/com/cd826dong/clouddemo/config/Swagger2Config.java ================================================ /** * Copyright (c) 2015 - 广州小橙信息科技有限公司 * All rights reserved. * * Created on 2016-10-10 */ package com.cd826dong.clouddemo.config; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import springfox.documentation.builders.ApiInfoBuilder; import springfox.documentation.builders.PathSelectors; import springfox.documentation.builders.RequestHandlerSelectors; import springfox.documentation.service.ApiInfo; import springfox.documentation.service.ApiListingReference; import springfox.documentation.spi.DocumentationType; import springfox.documentation.spring.web.plugins.Docket; import springfox.documentation.swagger2.annotations.EnableSwagger2; import java.util.ArrayList; import java.util.List; /** * Swagger配置信息 * * @author CD826 * @since 1.0.0 */ @Configuration @EnableSwagger2 public class Swagger2Config { @Bean public Docket createRestApi() { List apiListingReferenceList = new ArrayList<>(); apiListingReferenceList.add(new ApiListingReference("", "", 0)); return new Docket(DocumentationType.SWAGGER_2) .apiInfo(apiInfo()) .select() .apis(RequestHandlerSelectors.basePackage("com.cd826dong")) .paths(PathSelectors.any()) .build(); } private ApiInfo apiInfo() { return new ApiInfoBuilder() .title("SpringCloud Demo Projects RESTful APIs") .description("http://api.cd826dong.com/") .termsOfServiceUrl("https://cd826dong.com/") .contact("CD826") .version("1.0.0") .build(); } } ================================================ FILE: chapter02 -- boot/src/main/java/com/cd826dong/clouddemo/product/api/ProductEndpoint.java ================================================ /* * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.cd826dong.clouddemo.product.api; import com.cd826dong.clouddemo.product.dto.ProductCommentDto; import com.cd826dong.clouddemo.product.dto.ProductDto; import com.cd826dong.clouddemo.product.service.ProductService; import com.cd826dong.clouddemo.user.dto.UserDto; import com.cd826dong.clouddemo.user.repository.UserRepository; import com.cd826dong.clouddemo.product.entity.Product; import com.cd826dong.clouddemo.product.entity.ProductComment; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RestController; import java.util.Collections; import java.util.List; import java.util.stream.Collectors; /** * 产品管理的Endpoint * * @author CD826 * @since 1.0.0 */ @RestController @RequestMapping("/products") @Api(value = "ProductEndpoint", description = "商品管理相关Api") public class ProductEndpoint { @Autowired private ProductService productService; @Autowired private UserRepository userRepository; /** * 获取产品信息列表 * @return */ @RequestMapping(method = RequestMethod.GET) @ApiOperation(value = "获取商品分页数据", notes = "获取商品分页数据", httpMethod = "GET", tags = "商品管理相关Api") @ApiImplicitParams({ @ApiImplicitParam(name = "page", value = "第几页,从0开始,默认为第0页", dataType = "int", paramType = "query"), @ApiImplicitParam(name = "size", value = "每一页记录数的大小,默认为20", dataType = "int", paramType = "query"), @ApiImplicitParam(name = "sort", value = "排序,格式为:property,property(,ASC|DESC)的方式组织,如sort=firstname&sort=lastname,desc", dataType = "String", paramType = "query") }) public List list(Pageable pageable) { Page page = this.productService.getPage(pageable); if (null != page) { return page.getContent().stream().map((product) -> { return new ProductDto(product); }).collect(Collectors.toList()); } return Collections.EMPTY_LIST; } @RequestMapping(value = "/{id}", method = RequestMethod.GET) @ApiOperation(value = "获取商品详情数据", notes = "获取商品详情数据", httpMethod = "GET", tags = "商品管理相关Api") @ApiImplicitParams({ @ApiImplicitParam(name = "id", value = "商品的主键", dataType = "int", paramType = "path") }) public ProductDto detail(@PathVariable Long id){ Product product = this.productService.load(id); if (null == product) return null; return new ProductDto(product); } @RequestMapping(value = "/{id}/comments", method = RequestMethod.GET) @ApiOperation(value = "获取商品的评论列表", notes = "获取商品的评论列表", httpMethod = "GET", tags = "商品管理相关Api") @ApiImplicitParams({ @ApiImplicitParam(name = "id", value = "商品的主键", dataType = "int", paramType = "path") }) public List comments(@PathVariable Long id){ List commentList = this.productService.findAllByProduct(id); if (null == commentList || commentList.isEmpty()) return Collections.emptyList(); ProductDto productDto = new ProductDto(this.productService.load(id)); return commentList.stream().map((comment) -> { ProductCommentDto dto = new ProductCommentDto(comment); dto.setProduct(productDto); dto.setAuthor(new UserDto(this.userRepository.findOne(comment.getAuthorId()))); return dto; }).collect(Collectors.toList()); } } ================================================ FILE: chapter02 -- boot/src/main/java/com/cd826dong/clouddemo/product/dto/ProductCommentDto.java ================================================ /* * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.cd826dong.clouddemo.product.dto; import com.cd826dong.clouddemo.product.entity.ProductComment; import com.cd826dong.clouddemo.user.dto.UserDto; import com.google.common.base.MoreObjects; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import java.io.Serializable; import java.util.Date; /** * 商品评论信息DTO定义 * * @author CD826(CD826Dong@gmail.com) * @since 1.0.0 */ @ApiModel(value = "商品评论信息包") public class ProductCommentDto implements Serializable { private static final long serialVersionUID = 1L; // ======================================================================== // fields ================================================================= @ApiModelProperty(value="评论主键Id") private Long id; @ApiModelProperty(value="所属商品") private ProductDto product; @ApiModelProperty(value="评论作者") private UserDto author; @ApiModelProperty(value="评论内容") private String content; @ApiModelProperty(value="创建时间") private Date created; public ProductCommentDto() { } public ProductCommentDto(ProductComment productComment) { this.id = productComment.getId(); this.content = productComment.getContent(); this.created = productComment.getCreated(); } @Override public String toString() { return this.toStringHelper().toString(); } protected MoreObjects.ToStringHelper toStringHelper() { return MoreObjects.toStringHelper(this) .add("id", getId()) .add("productId", getProduct()); } // ======================================================================== // setter/getter ========================================================== public Long getId() { return id; } public void setId(Long id) { this.id = id; } public ProductDto getProduct() { return product; } public void setProduct(ProductDto product) { this.product = product; } public UserDto getAuthor() { return author; } public void setAuthor(UserDto author) { this.author = author; } public String getContent() { return content; } public void setContent(String content) { this.content = content; } public Date getCreated() { return created; } public void setCreated(Date created) { this.created = created; } } ================================================ FILE: chapter02 -- boot/src/main/java/com/cd826dong/clouddemo/product/dto/ProductDto.java ================================================ /* * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.cd826dong.clouddemo.product.dto; import com.cd826dong.clouddemo.product.entity.Product; import com.cd826dong.clouddemo.product.entity.ProductComment; import com.google.common.base.MoreObjects; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.Table; import java.io.Serializable; /** * 商品信息DTO定义 * * @author CD826(CD826Dong@gmail.com) * @since 1.0.0 */ @ApiModel(value = "商品信息包") public class ProductDto implements Serializable { private static final long serialVersionUID = 1L; // ======================================================================== // fields ================================================================= @ApiModelProperty(value="商品主键Id") private Long id; @ApiModelProperty(value="商品名称") private String name; @ApiModelProperty(value="商品封面图片") private String coverImage; @ApiModelProperty(value="商品价格(单位:分)") private int price; public ProductDto() { } public ProductDto(Product product) { this.id = product.getId(); this.name = product.getName(); this.coverImage = product.getCoverImage(); this.price = product.getPrice(); } @Override public String toString() { return this.toStringHelper().toString(); } protected MoreObjects.ToStringHelper toStringHelper() { return MoreObjects.toStringHelper(this) .add("id", getId()) .add("name", getName()); } // ======================================================================== // setter/getter ========================================================== public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getCoverImage() { return coverImage; } public void setCoverImage(String coverImage) { this.coverImage = coverImage; } public int getPrice() { return price; } public void setPrice(int price) { this.price = price; } } ================================================ FILE: chapter02 -- boot/src/main/java/com/cd826dong/clouddemo/product/entity/Product.java ================================================ /* * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.cd826dong.clouddemo.product.entity; import com.google.common.base.MoreObjects; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.Table; import java.io.Serializable; /** * 产品信息定义 * * @author CD826(CD826Dong@gmail.com) * @since 1.0.0 */ @Entity @Table(name = "tbProduct") public class Product implements Serializable { private static final long serialVersionUID = 1L; // ======================================================================== // fields ================================================================= @Id @GeneratedValue /** 商品数据库主键 */ private Long id; /** 商品名称 */ private String name; /** 商品封面图片 */ private String coverImage; /** 商品价格(分) */ private int price; @Override public String toString() { return MoreObjects.toStringHelper(this) .add("id", getId()) .add("name", getName()).toString(); } // ======================================================================== // setter/getter ========================================================== public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getCoverImage() { return coverImage; } public void setCoverImage(String coverImage) { this.coverImage = coverImage; } public int getPrice() { return price; } public void setPrice(int price) { this.price = price; } } ================================================ FILE: chapter02 -- boot/src/main/java/com/cd826dong/clouddemo/product/entity/ProductComment.java ================================================ /* * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.cd826dong.clouddemo.product.entity; import com.google.common.base.MoreObjects; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.Table; import java.io.Serializable; import java.util.Date; /** * 商品评论信息定义 * * @author CD826(CD826Dong@gmail.com) * @since 1.0.0 */ @Entity @Table(name = "tbProduct_Comment") public class ProductComment implements Serializable { private static final long serialVersionUID = 1L; // ======================================================================== // fields ================================================================= @Id @GeneratedValue /** 商品评论数据库主键 */ private Long id; /** 所示商品的Id */ private Long productId; /** 评论作者的Id */ private Long authorId; /** 评论的具体内容 */ private String content; /** 评论创建时间 */ private Date created; @Override public String toString() { return MoreObjects.toStringHelper(this) .add("id", getId()) .add("productId", getProductId()) .add("authorId", getAuthorId()) .add("content", getContent()).toString(); } // ======================================================================== // setter/getter ========================================================== public Long getId() { return id; } public void setId(Long id) { this.id = id; } public Long getProductId() { return productId; } public void setProductId(Long productId) { this.productId = productId; } public Long getAuthorId() { return authorId; } public void setAuthorId(Long authorId) { this.authorId = authorId; } public String getContent() { return content; } public void setContent(String content) { this.content = content; } public Date getCreated() { return created; } public void setCreated(Date created) { this.created = created; } } ================================================ FILE: chapter02 -- boot/src/main/java/com/cd826dong/clouddemo/product/repository/ProductCommentRepository.java ================================================ /* * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.cd826dong.clouddemo.product.repository; import com.cd826dong.clouddemo.product.entity.ProductComment; import org.springframework.data.jpa.repository.JpaRepository; import java.util.List; /** * 商品评论管理repository * * @author CD826 * @since 1.0.0 */ public interface ProductCommentRepository extends JpaRepository { List findByProductIdOrderByCreated(Long productId); } ================================================ FILE: chapter02 -- boot/src/main/java/com/cd826dong/clouddemo/product/repository/ProductRepository.java ================================================ /* * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.cd826dong.clouddemo.product.repository; import com.cd826dong.clouddemo.product.entity.Product; import org.springframework.data.jpa.repository.JpaRepository; /** * 产品管理repository * * @author CD826 * @since 1.0.0 */ public interface ProductRepository extends JpaRepository { } ================================================ FILE: chapter02 -- boot/src/main/java/com/cd826dong/clouddemo/product/service/ProductService.java ================================================ /* * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.cd826dong.clouddemo.product.service; import com.cd826dong.clouddemo.product.entity.Product; import com.cd826dong.clouddemo.product.entity.ProductComment; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import java.util.List; /** * 产品管理服务 * * @author CD826 * @since 1.0.0 */ public interface ProductService { /** * 获取商品配置的分页数据 * @param pageable 分页参数 * @return 分页数据 */ Page getPage(Pageable pageable); /** * 加载指定的商品配置 * @param id 商品配置ID * @return */ Product load(Long id); /** * 加载指定商品的评论列表 * @param productId * @return */ List findAllByProduct(Long productId); } ================================================ FILE: chapter02 -- boot/src/main/java/com/cd826dong/clouddemo/product/service/impl/ProductServiceImpl.java ================================================ /* * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.cd826dong.clouddemo.product.service.impl; import com.cd826dong.clouddemo.product.entity.Product; import com.cd826dong.clouddemo.product.entity.ProductComment; import com.cd826dong.clouddemo.product.repository.ProductCommentRepository; import com.cd826dong.clouddemo.product.repository.ProductRepository; import com.cd826dong.clouddemo.product.service.ProductService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.stereotype.Service; import java.util.List; /** * 产品管理服务的默认实现 * * @author CD826 * @since 1.0.0 */ @Service public class ProductServiceImpl implements ProductService { @Autowired protected ProductRepository productRepository; @Autowired protected ProductCommentRepository productCommentRepository; @Override public Page getPage(Pageable pageable) { return this.productRepository.findAll(pageable); } @Override public Product load(Long id) { return this.productRepository.findOne(id); } @Override public List findAllByProduct(Long productId) { return this.productCommentRepository.findByProductIdOrderByCreated(productId); } } ================================================ FILE: chapter02 -- boot/src/main/java/com/cd826dong/clouddemo/user/api/UserEndpoint.java ================================================ /* * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.cd826dong.clouddemo.user.api; import com.cd826dong.clouddemo.user.dto.UserDto; import com.cd826dong.clouddemo.user.entity.User; import com.cd826dong.clouddemo.user.service.UserService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.web.bind.annotation.*; import java.util.Collections; import java.util.List; import java.util.stream.Collectors; /** * 用户管理的Endpoint * * @author CD826 * @since 1.0.0 */ @RestController @RequestMapping("/users") @Api(value = "UserEndpoint", description = "用户管理相关Api") public class UserEndpoint { @Autowired private UserService userService; /** * 获取用户列表 * @return */ @RequestMapping(method = RequestMethod.GET) @ApiOperation(value = "获取用户分页数据", notes = "获取用户分页数据", httpMethod = "GET", tags = "用户管理相关Api") @ApiImplicitParams({ @ApiImplicitParam(name = "page", value = "第几页,从0开始,默认为第0页", dataType = "int", paramType = "query"), @ApiImplicitParam(name = "size", value = "每一页记录数的大小,默认为20", dataType = "int", paramType = "query"), @ApiImplicitParam(name = "sort", value = "排序,格式为:property,property(,ASC|DESC)的方式组织,如sort=firstname&sort=lastname,desc", dataType = "String", paramType = "query") }) public List findAll(Pageable pageable){ Page page = this.userService.getPage(pageable); if (null != page) { return page.getContent().stream().map((user) -> { return new UserDto(user); }).collect(Collectors.toList()); } return Collections.EMPTY_LIST; } /** * 获取用户详情 * @param id * @return */ @RequestMapping(value = "/{id}", method = RequestMethod.GET) @ApiOperation(value = "获取用户详情数据", notes = "获取用户详情数据", httpMethod = "GET", tags = "用户管理相关Api") @ApiImplicitParams({ @ApiImplicitParam(name = "id", value = "用户的主键", dataType = "int", paramType = "path") }) public UserDto detail(@PathVariable Long id){ User user = this.userService.load(id); return (null != user) ? new UserDto(user) : null; } /** * 更新用户详情 * @param id * @return */ @RequestMapping(value = "/{id}", method = RequestMethod.POST) @ApiOperation(value = "更新用户详情数据", notes = "更新用户详情数据", httpMethod = "POST", tags = "用户管理相关Api") @ApiImplicitParams({ @ApiImplicitParam(name = "id", value = "用户的主键", dataType = "int", paramType = "path"), @ApiImplicitParam(name = "userDto", value = "用户详情数据", dataType = "UserDto", paramType = "body"), }) public UserDto update(@PathVariable Long id, @RequestBody UserDto userDto){ userDto.setId(id); User user = this.userService.save(userDto); return (null != user) ? new UserDto(user) : null; } /** * 删除用户 * @param id * @return */ @RequestMapping(value = "/{id}", method = RequestMethod.DELETE) @ApiOperation(value = "删除指定用户", notes = "删除指定用户", httpMethod = "DELETE", tags = "用户管理相关Api") @ApiImplicitParams({ @ApiImplicitParam(name = "id", value = "所要删除用户的主键", dataType = "int", paramType = "path") }) public boolean delete(@PathVariable Long id){ this.userService.delete(id); return true; } } ================================================ FILE: chapter02 -- boot/src/main/java/com/cd826dong/clouddemo/user/dto/UserDto.java ================================================ /* * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.cd826dong.clouddemo.user.dto; import com.cd826dong.clouddemo.user.entity.User; import com.google.common.base.MoreObjects; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import java.io.Serializable; /** * 用户信息定义 * * @author CD826(CD826Dong@gmail.com) * @since 1.0.0 */ @ApiModel(value = "用户信息包") public class UserDto implements Serializable { private static final long serialVersionUID = 1L; // ======================================================================== // fields ================================================================= @ApiModelProperty(value="主键Id") private Long id; @ApiModelProperty(value="用户昵称") private String nickname; @ApiModelProperty(value="用户头像") private String avatar; public UserDto() { } public UserDto(User user) { this.id = user.getId(); this.nickname = user.getNickname(); this.avatar = user.getAvatar(); } @Override public String toString() { return this.toStringHelper().toString(); } protected MoreObjects.ToStringHelper toStringHelper() { return MoreObjects.toStringHelper(this) .add("id", getId()) .add("nickname", getNickname()); } // ======================================================================== // setter/getter ========================================================== public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getNickname() { return nickname; } public void setNickname(String nickname) { this.nickname = nickname; } public String getAvatar() { return avatar; } public void setAvatar(String avatar) { this.avatar = avatar; } } ================================================ FILE: chapter02 -- boot/src/main/java/com/cd826dong/clouddemo/user/entity/User.java ================================================ /* * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.cd826dong.clouddemo.user.entity; import com.google.common.base.MoreObjects; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.Table; import java.io.Serializable; /** * 用户信息定义 * * @author CD826(CD826Dong@gmail.com) * @since 1.0.0 */ @Entity @Table(name = "tbUser") public class User implements Serializable { private static final long serialVersionUID = 1L; // ======================================================================== // fields ================================================================= @Id @GeneratedValue /** 用户数据库主键 */ private Long id; /** 用户昵称 */ private String nickname; /** 用户头像 */ private String avatar; @Override public String toString() { return MoreObjects.toStringHelper(this) .add("id", getId()) .add("nickname", getNickname()).toString(); } protected MoreObjects.ToStringHelper toStringHelper() { return MoreObjects.toStringHelper(this) .add("id", getId()) .add("nickname", getNickname()); } // ======================================================================== // setter/getter ========================================================== public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getNickname() { return nickname; } public void setNickname(String nickname) { this.nickname = nickname; } public String getAvatar() { return avatar; } public void setAvatar(String avatar) { this.avatar = avatar; } } ================================================ FILE: chapter02 -- boot/src/main/java/com/cd826dong/clouddemo/user/repository/UserRepository.java ================================================ /* * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.cd826dong.clouddemo.user.repository; import com.cd826dong.clouddemo.user.entity.User; import org.springframework.data.jpa.repository.JpaRepository; /** * 用户信息repository * * @author CD826 * @since 1.0.0 */ public interface UserRepository extends JpaRepository { } ================================================ FILE: chapter02 -- boot/src/main/java/com/cd826dong/clouddemo/user/service/UserService.java ================================================ /* * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.cd826dong.clouddemo.user.service; import com.cd826dong.clouddemo.user.dto.UserDto; import com.cd826dong.clouddemo.user.entity.User; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; /** * 用户服务 * * @author CD826 * @since 1.0.0 */ public interface UserService { /** * 获取商品配置的分页数据 * @param pageable 分页参数 * @return 分页数据 */ Page getPage(Pageable pageable); /** * 加载指定的用户信息 * @param id 用户主键 * @return */ User load(Long id); /** * 保存/更新用户 * @param userDto * @return */ User save(UserDto userDto); /** * 删除指定的用户 * @param id 所要删除的用户主键 */ void delete(Long id); } ================================================ FILE: chapter02 -- boot/src/main/java/com/cd826dong/clouddemo/user/service/impl/UserServiceImpl.java ================================================ /* * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.cd826dong.clouddemo.user.service.impl; import com.cd826dong.clouddemo.user.dto.UserDto; import com.cd826dong.clouddemo.user.entity.User; import com.cd826dong.clouddemo.user.repository.UserRepository; import com.cd826dong.clouddemo.user.service.UserService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; /** * 用户管理服务的默认实现 * * @author CD826 * @since 1.0.0 */ @Service public class UserServiceImpl implements UserService { @Autowired protected UserRepository userRepository; @Override public Page getPage(Pageable pageable) { return this.userRepository.findAll(pageable); } @Override public User load(Long id) { return this.userRepository.findOne(id); } @Override @Transactional public User save(UserDto userDto) { User user = this.userRepository.findOne(userDto.getId()); if (null == user) { user = new User(); } user.setNickname(userDto.getNickname()); user.setAvatar(userDto.getAvatar()); return this.userRepository.save(user); } @Override @Transactional public void delete(Long id) { this.userRepository.delete(id); } } ================================================ FILE: chapter02 -- boot/src/main/java/com/cd826dong/clouddemo/util/HibernatePhysicalNamingNamingStrategy.java ================================================ /* * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.cd826dong.clouddemo.util; import org.hibernate.boot.model.naming.Identifier; import org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl; import org.hibernate.engine.jdbc.env.spi.JdbcEnvironment; import org.springframework.util.StringUtils; import javax.persistence.MappedSuperclass; /** * Hibernate命名方法: * 1)保持Entity类中对数据库表命名的不变; * * @author CD826(CD826Dong@gmail.com) * @since 1.0.0 */ @MappedSuperclass public class HibernatePhysicalNamingNamingStrategy extends PhysicalNamingStrategyStandardImpl { @Override public Identifier toPhysicalTableName(Identifier name, JdbcEnvironment context) { return new Identifier(name.getText(), name.isQuoted()); } @Override public Identifier toPhysicalColumnName(Identifier identifier, JdbcEnvironment jdbcEnv) { return convert(identifier); } private Identifier convert(Identifier identifier) { if (identifier == null || !StringUtils.hasText(identifier.getText())) { return identifier; } String regex = "([a-z])([A-Z])"; String replacement = "$1_$2"; String newName = identifier.getText().replaceAll(regex, replacement).toLowerCase(); return Identifier.toIdentifier(newName); } } ================================================ FILE: chapter02 -- boot/src/main/resources/.h2.server.properties ================================================ #H2 Server Properties #Mon Mar 06 13:35:06 CST 2017 0=TestDB(Embedded)|org.h2.Driver|jdbc\:h2\:mem\:testdb|sa webAllowOthers=false webPort=8090 webSSL=false ================================================ FILE: chapter02 -- boot/src/main/resources/application.properties ================================================ server.port=8080 logging.level.org.springframework=INFO logging.level.org.springframework.web=ERROR logging.level.org.springframework.boot.web=ERROR logging.level.org.springframework.jdbc=ERROR logging.level.org.hibernate=ERROR logging.level.org.springframework.boot.actuate=ERROR logging.level.springfox=ERROR logging.level.com.cd826dong=DEBUG # ===================================================================================================================== # == JPA (Hibernate) == # ===================================================================================================================== spring.jpa.open-in-view=true spring.jpa.hibernate.ddl-auto=none spring.jpa.show-sql=false spring.jpa.properties.hibernate.physical_naming_strategy=com.cd826dong.clouddemo.util.HibernatePhysicalNamingNamingStrategy # ============================================================================= # == H2 Datasource Properties == # ============================================================================= spring.jpa.database=H2 spring.datasource.driverClassName=org.h2.Driver spring.datasource.url=jdbc:h2:~/testdb #spring.datasource.url=jdbc\:h2\:mem\:testdb;DB_CLOSE_DELAY=-1; spring.datasource.username=sa spring.datasource.password= spring.h2.console.enabled=true spring.h2.console.path=/h2-console ================================================ FILE: chapter02 -- boot/src/main/resources/banner.txt ================================================ ======================================================================================================================= == == == == == _______ ______ _____ _______ ______ _______ _ _______ ______ == == ( ____ \( __ \ / ___ \ / ___ ) / ____ \ ( ____ \( \ ( ___ )|\ /|( __ \ == == | ( \/| ( \ )( (___) )\/ ) |( ( \/ | ( \/| ( | ( ) || ) ( || ( \ ) == == | | | | ) | \ / / )| (____ _____ | | | | | | | || | | || | ) | == == | | | | | | / ___ \ _/ / | ___ \(_____)| | | | | | | || | | || | | | == == | | | | ) |( ( ) ) / _/ | ( ) ) | | | | | | | || | | || | ) | == == | (____/\| (__/ )( (___) )( (__/\( (___) ) | (____/\| (____/\| (___) || (___) || (__/ ) == == (_______/(______/ \_____/ \_______/ \_____/ (_______/(_______/(_______)(_______)(______/ == == == == == ======================================================================================================================= :: SpringBoot Demo (v0.0.1 BUILD-SNAPSHOT) BUILD-BY: CD826(CD826Dong@gamil.com) ================================================ FILE: chapter02 -- boot/src/main/resources/data.sql ================================================ -- 导入测试商品列表 insert into tbProduct (id, name, cover_image, price) values(1, '测试商品-001', '/products/cover/001.png', 100); insert into tbProduct (id, name, cover_image, price) values(2, '测试商品-002', '/products/cover/002.png', 200); insert into tbProduct (id, name, cover_image, price) values(3, '测试商品-003', '/products/cover/003.png', 300); insert into tbProduct (id, name, cover_image, price) values(4, '测试商品-004', '/products/cover/004.png', 400); insert into tbProduct (id, name, cover_image, price) values(5, '测试商品-005', '/products/cover/005.png', 500); -- 导入测试用户列表 insert into tbUser (id, nickname, avatar) values(1, 'zhangSan', '/users/avatar/zhangsan.png'); insert into tbUser (id, nickname, avatar) values(2, 'lisi', '/users/avatar/lisi.png'); insert into tbUser (id, nickname, avatar) values(3, 'wangwu', '/users/avatar/wangwu.png'); insert into tbUser (id, nickname, avatar) values(4, 'yanxiaoliu', '/users/avatar/yanxiaoliu.png'); -- 导入商品3的评论列表 insert into tbProduct_Comment (id, product_id, author_id, content, created) values(1, 3, 1, '非常不错的商品', CURRENT_TIMESTAMP()); insert into tbProduct_Comment (id, product_id, author_id, content, created) values(2, 3, 3, '非常不错的商品+1', CURRENT_TIMESTAMP()); insert into tbProduct_Comment (id, product_id, author_id, content, created) values(3, 3, 4, '哈哈,谁用谁知道', CURRENT_TIMESTAMP()); ================================================ FILE: chapter02 -- boot/src/main/resources/schema.sql ================================================ drop table if exists tbProduct; drop table if exists tbProduct_Comment; drop table if exists tbUser; -- 商品表 create table tbProduct ( id int unsigned not null auto_increment comment '主键', name varchar(100) comment '商品名称', cover_image varchar(100) comment '商品封面图片', price int not null default 0 comment '商品价格(分)', primary key (id) ); -- 商品评论表 create table tbProduct_Comment ( id int unsigned not null auto_increment comment '主键', product_id int unsigned comment '所属商品', author_id int unsigned comment '作者Id', content varchar(200) comment '评论内容', created TIMESTAMP comment '创建时间', primary key (id) ); -- 用户表 create table tbUser ( id int unsigned not null auto_increment comment '主键', nickname varchar(50) comment '用户昵称', avatar varchar(255) comment '用户头像', primary key (id) ); ================================================ FILE: chapter02 -- boot/src/main/webapp/swagger/css/print.css ================================================ .swagger-section pre code{display:block;padding:.5em;background:#f0f0f0}.swagger-section pre .clojure .built_in,.swagger-section pre .lisp .title,.swagger-section pre .nginx .title,.swagger-section pre .subst,.swagger-section pre .tag .title,.swagger-section pre code{color:#000}.swagger-section pre .addition,.swagger-section pre .aggregate,.swagger-section pre .apache .cbracket,.swagger-section pre .apache .tag,.swagger-section pre .bash .variable,.swagger-section pre .constant,.swagger-section pre .django .variable,.swagger-section pre .erlang_repl .function_or_atom,.swagger-section pre .flow,.swagger-section pre .markdown .header,.swagger-section pre .parent,.swagger-section pre .preprocessor,.swagger-section pre .ruby .symbol,.swagger-section pre .ruby .symbol .string,.swagger-section pre .rules .value,.swagger-section pre .rules .value .number,.swagger-section pre .smalltalk .class,.swagger-section pre .stream,.swagger-section pre .string,.swagger-section pre .tag .value,.swagger-section pre .template_tag,.swagger-section pre .tex .command,.swagger-section pre .tex .special,.swagger-section pre .title{color:#800}.swagger-section pre .annotation,.swagger-section pre .chunk,.swagger-section pre .comment,.swagger-section pre .diff .header,.swagger-section pre .markdown .blockquote,.swagger-section pre .template_comment{color:#888}.swagger-section pre .change,.swagger-section pre .date,.swagger-section pre .go .constant,.swagger-section pre .literal,.swagger-section pre .markdown .bullet,.swagger-section pre .markdown .link_url,.swagger-section pre .number,.swagger-section pre .regexp,.swagger-section pre .smalltalk .char,.swagger-section pre .smalltalk .symbol{color:#080}.swagger-section pre .apache .sqbracket,.swagger-section pre .array,.swagger-section pre .attr_selector,.swagger-section pre .clojure .attribute,.swagger-section pre .coffeescript .property,.swagger-section pre .decorator,.swagger-section pre .deletion,.swagger-section pre .doctype,.swagger-section pre .envvar,.swagger-section pre .erlang_repl .reserved,.swagger-section pre .filter .argument,.swagger-section pre .important,.swagger-section pre .javadoc,.swagger-section pre .label,.swagger-section pre .localvars,.swagger-section pre .markdown .link_label,.swagger-section pre .nginx .built_in,.swagger-section pre .pi,.swagger-section pre .prompt,.swagger-section pre .pseudo,.swagger-section pre .ruby .string,.swagger-section pre .shebang,.swagger-section pre .tex .formula,.swagger-section pre .vhdl .attribute{color:#88f}.swagger-section pre .aggregate,.swagger-section pre .apache .tag,.swagger-section pre .bash .variable,.swagger-section pre .built_in,.swagger-section pre .css .tag,.swagger-section pre .go .typename,.swagger-section pre .id,.swagger-section pre .javadoctag,.swagger-section pre .keyword,.swagger-section pre .markdown .strong,.swagger-section pre .phpdoc,.swagger-section pre .request,.swagger-section pre .smalltalk .class,.swagger-section pre .status,.swagger-section pre .tex .command,.swagger-section pre .title,.swagger-section pre .winutils,.swagger-section pre .yardoctag{font-weight:700}.swagger-section pre .markdown .emphasis{font-style:italic}.swagger-section pre .nginx .built_in{font-weight:400}.swagger-section pre .coffeescript .javascript,.swagger-section pre .javascript .xml,.swagger-section pre .tex .formula,.swagger-section pre .xml .cdata,.swagger-section pre .xml .css,.swagger-section pre .xml .javascript,.swagger-section pre .xml .vbscript{opacity:.5}.swagger-section .hljs{display:block;overflow-x:auto;padding:.5em;background:#f0f0f0}.swagger-section .hljs,.swagger-section .hljs-subst{color:#444}.swagger-section .hljs-attribute,.swagger-section .hljs-doctag,.swagger-section .hljs-keyword,.swagger-section .hljs-meta-keyword,.swagger-section .hljs-name,.swagger-section .hljs-selector-tag{font-weight:700}.swagger-section .hljs-addition,.swagger-section .hljs-built_in,.swagger-section .hljs-bullet,.swagger-section .hljs-code,.swagger-section .hljs-literal{color:#1f811f}.swagger-section .hljs-link,.swagger-section .hljs-regexp,.swagger-section .hljs-selector-attr,.swagger-section .hljs-selector-pseudo,.swagger-section .hljs-symbol,.swagger-section .hljs-template-variable,.swagger-section .hljs-variable{color:#bc6060}.swagger-section .hljs-deletion,.swagger-section .hljs-number,.swagger-section .hljs-quote,.swagger-section .hljs-selector-class,.swagger-section .hljs-selector-id,.swagger-section .hljs-string,.swagger-section .hljs-template-tag,.swagger-section .hljs-type{color:#800}.swagger-section .hljs-section,.swagger-section .hljs-title{color:#800;font-weight:700}.swagger-section .hljs-comment{color:#888}.swagger-section .hljs-meta{color:#2b6ea1}.swagger-section .hljs-emphasis{font-style:italic}.swagger-section .hljs-strong{font-weight:700}.swagger-section .swagger-ui-wrap{line-height:1;font-family:Droid Sans,sans-serif;min-width:760px;max-width:960px;margin-left:auto;margin-right:auto}.swagger-section .swagger-ui-wrap b,.swagger-section .swagger-ui-wrap strong{font-family:Droid Sans,sans-serif;font-weight:700}.swagger-section .swagger-ui-wrap blockquote,.swagger-section .swagger-ui-wrap q{quotes:none}.swagger-section .swagger-ui-wrap p{line-height:1.4em;padding:0 0 10px;color:#333}.swagger-section .swagger-ui-wrap blockquote:after,.swagger-section .swagger-ui-wrap blockquote:before,.swagger-section .swagger-ui-wrap q:after,.swagger-section .swagger-ui-wrap q:before{content:none}.swagger-section .swagger-ui-wrap .heading_with_menu h1,.swagger-section .swagger-ui-wrap .heading_with_menu h2,.swagger-section .swagger-ui-wrap .heading_with_menu h3,.swagger-section .swagger-ui-wrap .heading_with_menu h4,.swagger-section .swagger-ui-wrap .heading_with_menu h5,.swagger-section .swagger-ui-wrap .heading_with_menu h6{display:block;clear:none;float:left;-ms-box-sizing:border-box;box-sizing:border-box;width:60%}.swagger-section .swagger-ui-wrap table{border-collapse:collapse;border-spacing:0}.swagger-section .swagger-ui-wrap table thead tr th{padding:5px;font-size:.9em;color:#666;border-bottom:1px solid #999}.swagger-section .swagger-ui-wrap table tbody tr:last-child td{border-bottom:none}.swagger-section .swagger-ui-wrap table tbody tr.offset{background-color:#f0f0f0}.swagger-section .swagger-ui-wrap table tbody tr td{padding:6px;font-size:.9em;border-bottom:1px solid #ccc;vertical-align:top;line-height:1.3em}.swagger-section .swagger-ui-wrap ol{margin:0 0 10px;padding:0 0 0 18px;list-style-type:decimal}.swagger-section .swagger-ui-wrap ol li{padding:5px 0;font-size:.9em;color:#333}.swagger-section .swagger-ui-wrap ol,.swagger-section .swagger-ui-wrap ul{list-style:none}.swagger-section .swagger-ui-wrap h1 a,.swagger-section .swagger-ui-wrap h2 a,.swagger-section .swagger-ui-wrap h3 a,.swagger-section .swagger-ui-wrap h4 a,.swagger-section .swagger-ui-wrap h5 a,.swagger-section .swagger-ui-wrap h6 a{text-decoration:none}.swagger-section .swagger-ui-wrap h1 a:hover,.swagger-section .swagger-ui-wrap h2 a:hover,.swagger-section .swagger-ui-wrap h3 a:hover,.swagger-section .swagger-ui-wrap h4 a:hover,.swagger-section .swagger-ui-wrap h5 a:hover,.swagger-section .swagger-ui-wrap h6 a:hover{text-decoration:underline}.swagger-section .swagger-ui-wrap h1 span.divider,.swagger-section .swagger-ui-wrap h2 span.divider,.swagger-section .swagger-ui-wrap h3 span.divider,.swagger-section .swagger-ui-wrap h4 span.divider,.swagger-section .swagger-ui-wrap h5 span.divider,.swagger-section .swagger-ui-wrap h6 span.divider{color:#aaa}.swagger-section .swagger-ui-wrap a{color:#547f00}.swagger-section .swagger-ui-wrap a img{border:none}.swagger-section .swagger-ui-wrap article,.swagger-section .swagger-ui-wrap aside,.swagger-section .swagger-ui-wrap details,.swagger-section .swagger-ui-wrap figcaption,.swagger-section .swagger-ui-wrap figure,.swagger-section .swagger-ui-wrap footer,.swagger-section .swagger-ui-wrap header,.swagger-section .swagger-ui-wrap hgroup,.swagger-section .swagger-ui-wrap menu,.swagger-section .swagger-ui-wrap nav,.swagger-section .swagger-ui-wrap section,.swagger-section .swagger-ui-wrap summary{display:block}.swagger-section .swagger-ui-wrap pre{font-family:Anonymous Pro,Menlo,Consolas,Bitstream Vera Sans Mono,Courier New,monospace;background-color:#fcf6db;border:1px solid #e5e0c6;padding:10px}.swagger-section .swagger-ui-wrap pre code{line-height:1.6em;background:none}.swagger-section .swagger-ui-wrap .content>.content-type>div>label{clear:both;display:block;color:#0f6ab4;font-size:1.1em;margin:0;padding:15px 0 5px}.swagger-section .swagger-ui-wrap .content pre{font-size:12px;margin-top:5px;padding:5px}.swagger-section .swagger-ui-wrap .icon-btn{cursor:pointer}.swagger-section .swagger-ui-wrap .info_title{padding-bottom:10px;font-weight:700;font-size:25px}.swagger-section .swagger-ui-wrap .footer{margin-top:20px}.swagger-section .swagger-ui-wrap div.big p,.swagger-section .swagger-ui-wrap p.big{font-size:1em;margin-bottom:10px}.swagger-section .swagger-ui-wrap form.fullwidth ol li.numeric input,.swagger-section .swagger-ui-wrap form.fullwidth ol li.string input,.swagger-section .swagger-ui-wrap form.fullwidth ol li.text textarea,.swagger-section .swagger-ui-wrap form.fullwidth ol li.url input{width:500px!important}.swagger-section .swagger-ui-wrap .info_license,.swagger-section .swagger-ui-wrap .info_tos{padding-bottom:5px}.swagger-section .swagger-ui-wrap .message-fail{color:#c00}.swagger-section .swagger-ui-wrap .info_email,.swagger-section .swagger-ui-wrap .info_name,.swagger-section .swagger-ui-wrap .info_url{padding-bottom:5px}.swagger-section .swagger-ui-wrap .info_description{padding-bottom:10px;font-size:15px}.swagger-section .swagger-ui-wrap .markdown ol li,.swagger-section .swagger-ui-wrap .markdown ul li{padding:3px 0;line-height:1.4em;color:#333}.swagger-section .swagger-ui-wrap form.formtastic fieldset.inputs ol li.numeric input,.swagger-section .swagger-ui-wrap form.formtastic fieldset.inputs ol li.string input,.swagger-section .swagger-ui-wrap form.formtastic fieldset.inputs ol li.url input{display:block;padding:4px;width:auto;clear:both}.swagger-section .swagger-ui-wrap form.formtastic fieldset.inputs ol li.numeric input.title,.swagger-section .swagger-ui-wrap form.formtastic fieldset.inputs ol li.string input.title,.swagger-section .swagger-ui-wrap form.formtastic fieldset.inputs ol li.url input.title{font-size:1.3em}.swagger-section .swagger-ui-wrap table.fullwidth{width:100%}.swagger-section .swagger-ui-wrap .model-signature{font-family:Droid Sans,sans-serif;font-size:1em;line-height:1.5em}.swagger-section .swagger-ui-wrap .model-signature .signature-nav a{text-decoration:none;color:#aaa}.swagger-section .swagger-ui-wrap .model-signature .signature-nav a:hover{text-decoration:underline;color:#000}.swagger-section .swagger-ui-wrap .model-signature .signature-nav .selected{color:#000;text-decoration:none}.swagger-section .swagger-ui-wrap .model-signature .propType{color:#55a}.swagger-section .swagger-ui-wrap .model-signature pre:hover{background-color:#ffd}.swagger-section .swagger-ui-wrap .model-signature pre{font-size:.85em;line-height:1.2em;overflow:auto;height:200px;resize:vertical;cursor:pointer}.swagger-section .swagger-ui-wrap .model-signature ul.signature-nav{display:block;min-width:230px;margin:0;padding:0}.swagger-section .swagger-ui-wrap .model-signature ul.signature-nav li:last-child{padding-right:0;border-right:none}.swagger-section .swagger-ui-wrap .model-signature ul.signature-nav li{float:left;margin:0 5px 5px 0;padding:2px 5px 2px 0;border-right:1px solid #ddd}.swagger-section .swagger-ui-wrap .model-signature .propOpt{color:#555}.swagger-section .swagger-ui-wrap .model-signature .snippet small{font-size:.75em}.swagger-section .swagger-ui-wrap .model-signature .propOptKey{font-style:italic}.swagger-section .swagger-ui-wrap .model-signature .description .strong{font-weight:700;color:#000;font-size:.9em}.swagger-section .swagger-ui-wrap .model-signature .description div{font-size:.9em;line-height:1.5em;margin-left:1em}.swagger-section .swagger-ui-wrap .model-signature .description .stronger{font-weight:700;color:#000}.swagger-section .swagger-ui-wrap .model-signature .description .propWrap .optionsWrapper{border-spacing:0;position:absolute;background-color:#fff;border:1px solid #bbb;display:none;font-size:11px;max-width:400px;line-height:30px;color:#000;padding:5px;margin-left:10px}.swagger-section .swagger-ui-wrap .model-signature .description .propWrap .optionsWrapper th{text-align:center;background-color:#eee;border:1px solid #bbb;font-size:11px;color:#666;font-weight:700;padding:5px;line-height:15px}.swagger-section .swagger-ui-wrap .model-signature .description .propWrap .optionsWrapper .optionName{font-weight:700}.swagger-section .swagger-ui-wrap .model-signature .description .propDesc.markdown>p:first-child,.swagger-section .swagger-ui-wrap .model-signature .description .propDesc.markdown>p:last-child{display:inline}.swagger-section .swagger-ui-wrap .model-signature .description .propDesc.markdown>p:not(:first-child):before{display:block;content:""}.swagger-section .swagger-ui-wrap .model-signature .description span:last-of-type.propDesc.markdown>p:only-child{margin-right:-3px}.swagger-section .swagger-ui-wrap .model-signature .propName{font-weight:700}.swagger-section .swagger-ui-wrap .model-signature .signature-container{clear:both}.swagger-section .swagger-ui-wrap .body-textarea{width:300px;height:100px;border:1px solid #aaa}.swagger-section .swagger-ui-wrap .markdown li code,.swagger-section .swagger-ui-wrap .markdown p code{font-family:Anonymous Pro,Menlo,Consolas,Bitstream Vera Sans Mono,Courier New,monospace;background-color:#f0f0f0;color:#000;padding:1px 3px}.swagger-section .swagger-ui-wrap .required{font-weight:700}.swagger-section .swagger-ui-wrap .editor_holder{font-family:Anonymous Pro,Menlo,Consolas,Bitstream Vera Sans Mono,Courier New,monospace;font-size:.9em}.swagger-section .swagger-ui-wrap .editor_holder label{font-weight:400!important}.swagger-section .swagger-ui-wrap .editor_holder label.required{font-weight:700!important}.swagger-section .swagger-ui-wrap input.parameter{width:300px;border:1px solid #aaa}.swagger-section .swagger-ui-wrap h1{color:#000;font-size:1.5em;line-height:1.3em;padding:10px 0;font-family:Droid Sans,sans-serif;font-weight:700}.swagger-section .swagger-ui-wrap .heading_with_menu{float:none;clear:both;overflow:hidden;display:block}.swagger-section .swagger-ui-wrap .heading_with_menu ul{display:block;clear:none;float:right;-ms-box-sizing:border-box;box-sizing:border-box;margin-top:10px}.swagger-section .swagger-ui-wrap h2{color:#000;font-size:1.3em;padding:10px 0}.swagger-section .swagger-ui-wrap h2 a{color:#000}.swagger-section .swagger-ui-wrap h2 span.sub{font-size:.7em;color:#999;font-style:italic}.swagger-section .swagger-ui-wrap h2 span.sub a{color:#777}.swagger-section .swagger-ui-wrap span.weak{color:#666}.swagger-section .swagger-ui-wrap .message-success{color:#89bf04}.swagger-section .swagger-ui-wrap caption,.swagger-section .swagger-ui-wrap td,.swagger-section .swagger-ui-wrap th{text-align:left;font-weight:400;vertical-align:middle}.swagger-section .swagger-ui-wrap .code{font-family:Anonymous Pro,Menlo,Consolas,Bitstream Vera Sans Mono,Courier New,monospace}.swagger-section .swagger-ui-wrap form.formtastic fieldset.inputs ol li.text textarea{font-family:Droid Sans,sans-serif;height:250px;padding:4px;display:block;clear:both}.swagger-section .swagger-ui-wrap form.formtastic fieldset.inputs ol li.select select{display:block;clear:both}.swagger-section .swagger-ui-wrap form.formtastic fieldset.inputs ol li.boolean{float:none;clear:both;overflow:hidden;display:block}.swagger-section .swagger-ui-wrap form.formtastic fieldset.inputs ol li.boolean label{display:block;float:left;clear:none;margin:0;padding:0}.swagger-section .swagger-ui-wrap form.formtastic fieldset.inputs ol li.boolean input{display:block;float:left;clear:none;margin:0 5px 0 0}.swagger-section .swagger-ui-wrap form.formtastic fieldset.inputs ol li.required label{color:#000}.swagger-section .swagger-ui-wrap form.formtastic fieldset.inputs ol li label{display:block;clear:both;width:auto;padding:0 0 3px;color:#666}.swagger-section .swagger-ui-wrap form.formtastic fieldset.inputs ol li label abbr{padding-left:3px;color:#888}.swagger-section .swagger-ui-wrap form.formtastic fieldset.inputs ol li p.inline-hints{margin-left:0;font-style:italic;font-size:.9em;margin:0}.swagger-section .swagger-ui-wrap form.formtastic fieldset.buttons{margin:0;padding:0}.swagger-section .swagger-ui-wrap span.blank,.swagger-section .swagger-ui-wrap span.empty{color:#888;font-style:italic}.swagger-section .swagger-ui-wrap .markdown h3{color:#547f00}.swagger-section .swagger-ui-wrap .markdown h4{color:#666}.swagger-section .swagger-ui-wrap .markdown pre{font-family:Anonymous Pro,Menlo,Consolas,Bitstream Vera Sans Mono,Courier New,monospace;background-color:#fcf6db;border:1px solid #e5e0c6;padding:10px;margin:0 0 10px}.swagger-section .swagger-ui-wrap .markdown pre code{line-height:1.6em;overflow:auto}.swagger-section .swagger-ui-wrap div.gist{margin:20px 0 25px!important}.swagger-section .swagger-ui-wrap ul#resources{font-family:Droid Sans,sans-serif;font-size:.9em}.swagger-section .swagger-ui-wrap ul#resources li.resource{border-bottom:1px solid #ddd}.swagger-section .swagger-ui-wrap ul#resources li.resource.active div.heading h2 a,.swagger-section .swagger-ui-wrap ul#resources li.resource:hover div.heading h2 a{color:#000}.swagger-section .swagger-ui-wrap ul#resources li.resource.active div.heading ul.options li a,.swagger-section .swagger-ui-wrap ul#resources li.resource:hover div.heading ul.options li a{color:#555}.swagger-section .swagger-ui-wrap ul#resources li.resource:last-child{border-bottom:none}.swagger-section .swagger-ui-wrap ul#resources li.resource div.heading{border:1px solid transparent;float:none;clear:both;overflow:hidden;display:block}.swagger-section .swagger-ui-wrap ul#resources li.resource div.heading ul.options{overflow:hidden;padding:0;display:block;clear:none;float:right;margin:14px 10px 0 0}.swagger-section .swagger-ui-wrap ul#resources li.resource div.heading ul.options li{float:left;clear:none;margin:0;padding:2px 10px;border-right:1px solid #ddd;color:#666;font-size:.9em}.swagger-section .swagger-ui-wrap ul#resources li.resource div.heading ul.options li a{color:#aaa;text-decoration:none}.swagger-section .swagger-ui-wrap ul#resources li.resource div.heading ul.options li a:hover{text-decoration:underline;color:#000}.swagger-section .swagger-ui-wrap ul#resources li.resource div.heading ul.options li a.active,.swagger-section .swagger-ui-wrap ul#resources li.resource div.heading ul.options li a:active,.swagger-section .swagger-ui-wrap ul#resources li.resource div.heading ul.options li a:hover{text-decoration:underline}.swagger-section .swagger-ui-wrap ul#resources li.resource div.heading ul.options li.first,.swagger-section .swagger-ui-wrap ul#resources li.resource div.heading ul.options li:first-child{padding-left:0}.swagger-section .swagger-ui-wrap ul#resources li.resource div.heading ul.options li.last,.swagger-section .swagger-ui-wrap ul#resources li.resource div.heading ul.options li:last-child{padding-right:0;border-right:none}.swagger-section .swagger-ui-wrap ul#resources li.resource div.heading ul.options.first,.swagger-section .swagger-ui-wrap ul#resources li.resource div.heading ul.options:first-child{padding-left:0}.swagger-section .swagger-ui-wrap ul#resources li.resource div.heading h2{color:#999;padding-left:0;display:block;clear:none;float:left;font-family:Droid Sans,sans-serif;font-weight:700}.swagger-section .swagger-ui-wrap ul#resources li.resource div.heading h2 a{color:#999}.swagger-section .swagger-ui-wrap ul#resources li.resource div.heading h2 a:hover{color:#000}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation{float:none;clear:both;overflow:hidden;display:block;margin:0 0 10px;padding:0}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.heading{float:none;clear:both;overflow:hidden;display:block;margin:0;padding:0}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.heading h3{display:block;clear:none;float:left;width:auto;margin:0;padding:0;line-height:1.1em;color:#000}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.heading h3 span.path{padding-left:10px}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.heading h3 span.path a{color:#000;text-decoration:none}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.heading h3 span.path a.toggleOperation.deprecated{text-decoration:line-through}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.heading h3 span.path a:hover{text-decoration:underline}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.heading h3 span.http_method a{text-transform:uppercase;text-decoration:none;color:#fff;display:inline-block;width:50px;font-size:.7em;text-align:center;padding:7px 0 4px;border-radius:2px}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.heading h3 span{margin:0;padding:0}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.heading ul.options{overflow:hidden;padding:0;display:block;clear:none;float:right;margin:6px 10px 0 0}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.heading ul.options li{float:left;clear:none;margin:0;padding:2px 10px;font-size:.9em}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.heading ul.options li a{text-decoration:none}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.heading ul.options li a .markdown p{color:inherit;padding:0;line-height:inherit}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.heading ul.options li a .nickname{color:#aaa;padding:0;line-height:inherit}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.heading ul.options li.access{color:#000}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.content{border-top:none;padding:10px;border-bottom-left-radius:6px;border-bottom-right-radius:6px;margin:0 0 20px}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.content h4{font-size:1.1em;margin:0;padding:15px 0 5px}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.content div.sandbox_header{float:none;clear:both;overflow:hidden;display:block}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.content div.sandbox_header a{padding:4px 0 0 10px;display:inline-block;font-size:.9em}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.content div.sandbox_header input.submit{display:block;clear:none;float:left;padding:6px 8px}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.content div.sandbox_header span.response_throbber{background-image:url(../images/throbber.gif);width:128px;height:16px;display:block;clear:none;float:right}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.content form input[type=text].error{outline:2px solid #000;outline-color:#c00}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.content form select[name=parameterContentType]{max-width:300px}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.content div.response div.block pre{font-family:Anonymous Pro,Menlo,Consolas,Bitstream Vera Sans Mono,Courier New,monospace;padding:10px;font-size:.9em;max-height:400px;overflow-y:auto}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.put div.heading{background-color:#f9f2e9;border:1px solid #f0e0ca}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.put div.heading h3 span.http_method a{background-color:#c5862b}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.put div.heading ul.options li{border-right:1px solid #ddd;border-right-color:#f0e0ca;color:#c5862b}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.put div.heading ul.options li a{color:#c5862b}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.put div.content{background-color:#faf5ee;border:1px solid #f0e0ca}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.put div.content h4{color:#c5862b}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.put div.content div.sandbox_header a{color:#dcb67f}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.head div.heading{background-color:#fcffcd;border:1px solid #000;border-color:#ffd20f}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.head div.heading h3 span.http_method a{text-transform:uppercase;background-color:#ffd20f}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.head div.heading ul.options li{border-right:1px solid #ddd;border-right-color:#ffd20f;color:#ffd20f}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.head div.heading ul.options li a{color:#ffd20f}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.head div.content{background-color:#fcffcd;border:1px solid #000;border-color:#ffd20f}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.head div.content h4{color:#ffd20f}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.head div.content div.sandbox_header a{color:#6fc992}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.delete div.heading{background-color:#f5e8e8;border:1px solid #e8c6c7}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.delete div.heading h3 span.http_method a{text-transform:uppercase;background-color:#a41e22}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.delete div.heading ul.options li{border-right:1px solid #ddd;border-right-color:#e8c6c7;color:#a41e22}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.delete div.heading ul.options li a{color:#a41e22}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.delete div.content{background-color:#f7eded;border:1px solid #e8c6c7}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.delete div.content h4{color:#a41e22}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.delete div.content div.sandbox_header a{color:#c8787a}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.post div.heading{background-color:#e7f6ec;border:1px solid #c3e8d1}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.post div.heading h3 span.http_method a{background-color:#10a54a}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.post div.heading ul.options li{border-right:1px solid #ddd;border-right-color:#c3e8d1;color:#10a54a}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.post div.heading ul.options li a{color:#10a54a}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.post div.content{background-color:#ebf7f0;border:1px solid #c3e8d1}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.post div.content h4{color:#10a54a}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.post div.content div.sandbox_header a{color:#6fc992}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.patch div.heading{background-color:#fce9e3;border:1px solid #f5d5c3}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.patch div.heading h3 span.http_method a{background-color:#d38042}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.patch div.heading ul.options li{border-right:1px solid #ddd;border-right-color:#f0cecb;color:#d38042}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.patch div.heading ul.options li a{color:#d38042}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.patch div.content{background-color:#faf0ef;border:1px solid #f0cecb}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.patch div.content h4{color:#d38042}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.patch div.content div.sandbox_header a{color:#dcb67f}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.get div.heading{background-color:#e7f0f7;border:1px solid #c3d9ec}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.get div.heading h3 span.http_method a{background-color:#0f6ab4}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.get div.heading ul.options li{border-right:1px solid #ddd;border-right-color:#c3d9ec;color:#0f6ab4}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.get div.heading ul.options li a{color:#0f6ab4}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.get div.content{background-color:#ebf3f9;border:1px solid #c3d9ec}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.get div.content h4{color:#0f6ab4}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.get div.content div.sandbox_header a{color:#6fa5d2}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.options div.heading{background-color:#e7f0f7;border:1px solid #c3d9ec}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.options div.heading h3 span.http_method a{background-color:#0f6ab4}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.options div.heading ul.options li{border-right:1px solid #ddd;border-right-color:#c3d9ec;color:#0f6ab4}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.options div.heading ul.options li a{color:#0f6ab4}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.options div.content{background-color:#ebf3f9;border:1px solid #c3d9ec}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.options div.content h4{color:#0f6ab4}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.options div.content div.sandbox_header a{color:#6fa5d2}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.delete div.content,.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.get div.content,.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.head div.content,.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.patch div.content,.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.post div.content,.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.put div.content{border-top:none}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.delete div.heading ul.options li.last,.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.delete div.heading ul.options li:last-child,.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.get div.heading ul.options li.last,.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.get div.heading ul.options li:last-child,.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.head div.heading ul.options li.last,.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.head div.heading ul.options li:last-child,.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.patch div.heading ul.options li.last,.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.patch div.heading ul.options li:last-child,.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.post div.heading ul.options li.last,.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.post div.heading ul.options li:last-child,.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.put div.heading ul.options li.last,.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.put div.heading ul.options li:last-child{padding-right:0;border-right:none}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations ul.options li a.active,.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations ul.options li a:active,.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations ul.options li a:hover{text-decoration:underline}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations.first,.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations:first-child,.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations ul.options li.first,.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations ul.options li:first-child{padding-left:0}.swagger-section .swagger-ui-wrap p#colophon{margin:0 15px 40px;padding:10px 0;font-size:.8em;border-top:1px solid #ddd;font-family:Droid Sans,sans-serif;color:#999;font-style:italic}.swagger-section .swagger-ui-wrap p#colophon a{text-decoration:none;color:#547f00}.swagger-section .swagger-ui-wrap h3{color:#000;font-size:1.1em;padding:10px 0}.swagger-section .swagger-ui-wrap .markdown ol,.swagger-section .swagger-ui-wrap .markdown ul{font-family:Droid Sans,sans-serif;margin:5px 0 10px;padding:0 0 0 18px;list-style-type:disc}.swagger-section .swagger-ui-wrap form.form_box{background-color:#ebf3f9;border:1px solid #c3d9ec;padding:10px}.swagger-section .swagger-ui-wrap form.form_box label{color:#0f6ab4!important}.swagger-section .swagger-ui-wrap form.form_box input[type=submit]{display:block;padding:10px}.swagger-section .swagger-ui-wrap form.form_box p.weak{font-size:.8em}.swagger-section .swagger-ui-wrap form.form_box p{font-size:.9em;padding:0 0 15px;color:#7e7b6d}.swagger-section .swagger-ui-wrap form.form_box p a{color:#646257}.swagger-section .swagger-ui-wrap form.form_box p strong{color:#000}.swagger-section .swagger-ui-wrap .operation-status td.markdown>p:last-child{padding-bottom:0}.swagger-section .title{font-style:bold}.swagger-section .secondary_form{display:none}.swagger-section .main_image{display:block;margin-left:auto;margin-right:auto}.swagger-section .oauth_body{margin-left:100px;margin-right:100px}.swagger-section .oauth_submit{text-align:center;display:inline-block}.swagger-section .authorize-wrapper{margin:15px 0 10px}.swagger-section .authorize-wrapper_operation{float:right}.swagger-section .authorize__btn:hover{text-decoration:underline;cursor:pointer}.swagger-section .authorize__btn_operation:hover .authorize-scopes{display:block}.swagger-section .authorize-scopes{position:absolute;margin-top:20px;background:#fff;border:1px solid #ccc;border-radius:5px;display:none;font-size:13px;max-width:300px;line-height:30px;color:#000;padding:5px}.swagger-section .authorize-scopes .authorize__scope{text-decoration:none}.swagger-section .authorize__btn_operation{height:18px;vertical-align:middle;display:inline-block;background:url(../images/explorer_icons.png) no-repeat}.swagger-section .authorize__btn_operation_login{background-position:0 0;width:18px;margin-top:-6px;margin-left:4px}.swagger-section .authorize__btn_operation_logout{background-position:-30px 0;width:18px;margin-top:-6px;margin-left:4px}.swagger-section #auth_container{color:#fff;display:inline-block;border:none;padding:5px;width:87px;height:13px}.swagger-section #auth_container .authorize__btn{color:#fff}.swagger-section .auth_container{padding:0 0 10px;margin-bottom:5px;border-bottom:1px solid #ccc;font-size:.9em}.swagger-section .auth_container .auth__title{color:#547f00;font-size:1.2em}.swagger-section .auth_container .basic_auth__label{display:inline-block;width:60px}.swagger-section .auth_container .auth__description{color:#999;margin-bottom:5px}.swagger-section .auth_container .auth__button{margin-top:10px;height:30px}.swagger-section .auth_container .key_auth__field{margin:5px 0}.swagger-section .auth_container .key_auth__label{display:inline-block;width:60px}.swagger-section .api-popup-dialog{position:absolute;display:none}.swagger-section .api-popup-dialog-wrapper{z-index:2;width:500px;background:#fff;padding:20px;border:1px solid #ccc;border-radius:5px;font-size:13px;color:#777;position:fixed;top:50%;left:50%;transform:translate(-50%,-50%)}.swagger-section .api-popup-dialog-shadow{position:fixed;top:0;left:0;width:100%;height:100%;opacity:.2;background-color:gray;z-index:1}.swagger-section .api-popup-dialog .api-popup-title{font-size:24px;padding:10px 0}.swagger-section .api-popup-dialog .error-msg{padding-left:5px;padding-bottom:5px}.swagger-section .api-popup-dialog .api-popup-content{max-height:500px;overflow-y:auto}.swagger-section .api-popup-dialog .api-popup-authbtn,.swagger-section .api-popup-dialog .api-popup-cancel{height:30px}.swagger-section .api-popup-scopes{padding:10px 20px}.swagger-section .api-popup-scopes li{padding:5px 0;line-height:20px}.swagger-section .api-popup-scopes li input{position:relative;top:2px}.swagger-section .api-popup-scopes .api-scope-desc{padding-left:20px;font-style:italic}.swagger-section .api-popup-actions{padding-top:10px}.swagger-section fieldset{padding-bottom:10px;padding-left:20px}#header{display:none}.swagger-section .swagger-ui-wrap .model-signature pre{max-height:none}.swagger-section .swagger-ui-wrap .body-textarea,.swagger-section .swagger-ui-wrap input.parameter{width:100px}.swagger-section .swagger-ui-wrap ul#resources li.resource div.heading ul.options{display:none}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints,.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.content{display:block!important} ================================================ FILE: chapter02 -- boot/src/main/webapp/swagger/css/reset.css ================================================ a,abbr,acronym,address,applet,article,aside,audio,b,big,blockquote,body,canvas,caption,center,cite,code,dd,del,details,dfn,div,dl,dt,em,embed,fieldset,figcaption,figure,footer,form,h1,h2,h3,h4,h5,h6,header,hgroup,html,i,iframe,img,ins,kbd,label,legend,li,mark,menu,nav,object,ol,output,p,pre,q,ruby,s,samp,section,small,span,strike,strong,sub,summary,sup,table,tbody,td,tfoot,th,thead,time,tr,tt,u,ul,var,video{margin:0;padding:0;border:0;font-size:100%;font:inherit;vertical-align:baseline}article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{display:block}body{line-height:1}ol,ul{list-style:none}blockquote,q{quotes:none}blockquote:after,blockquote:before,q:after,q:before{content:"";content:none}table{border-collapse:collapse;border-spacing:0} ================================================ FILE: chapter02 -- boot/src/main/webapp/swagger/css/screen.css ================================================ .swagger-section pre code{display:block;padding:.5em;background:#f0f0f0}.swagger-section pre .clojure .built_in,.swagger-section pre .lisp .title,.swagger-section pre .nginx .title,.swagger-section pre .subst,.swagger-section pre .tag .title,.swagger-section pre code{color:#000}.swagger-section pre .addition,.swagger-section pre .aggregate,.swagger-section pre .apache .cbracket,.swagger-section pre .apache .tag,.swagger-section pre .bash .variable,.swagger-section pre .constant,.swagger-section pre .django .variable,.swagger-section pre .erlang_repl .function_or_atom,.swagger-section pre .flow,.swagger-section pre .markdown .header,.swagger-section pre .parent,.swagger-section pre .preprocessor,.swagger-section pre .ruby .symbol,.swagger-section pre .ruby .symbol .string,.swagger-section pre .rules .value,.swagger-section pre .rules .value .number,.swagger-section pre .smalltalk .class,.swagger-section pre .stream,.swagger-section pre .string,.swagger-section pre .tag .value,.swagger-section pre .template_tag,.swagger-section pre .tex .command,.swagger-section pre .tex .special,.swagger-section pre .title{color:#800}.swagger-section pre .annotation,.swagger-section pre .chunk,.swagger-section pre .comment,.swagger-section pre .diff .header,.swagger-section pre .markdown .blockquote,.swagger-section pre .template_comment{color:#888}.swagger-section pre .change,.swagger-section pre .date,.swagger-section pre .go .constant,.swagger-section pre .literal,.swagger-section pre .markdown .bullet,.swagger-section pre .markdown .link_url,.swagger-section pre .number,.swagger-section pre .regexp,.swagger-section pre .smalltalk .char,.swagger-section pre .smalltalk .symbol{color:#080}.swagger-section pre .apache .sqbracket,.swagger-section pre .array,.swagger-section pre .attr_selector,.swagger-section pre .clojure .attribute,.swagger-section pre .coffeescript .property,.swagger-section pre .decorator,.swagger-section pre .deletion,.swagger-section pre .doctype,.swagger-section pre .envvar,.swagger-section pre .erlang_repl .reserved,.swagger-section pre .filter .argument,.swagger-section pre .important,.swagger-section pre .javadoc,.swagger-section pre .label,.swagger-section pre .localvars,.swagger-section pre .markdown .link_label,.swagger-section pre .nginx .built_in,.swagger-section pre .pi,.swagger-section pre .prompt,.swagger-section pre .pseudo,.swagger-section pre .ruby .string,.swagger-section pre .shebang,.swagger-section pre .tex .formula,.swagger-section pre .vhdl .attribute{color:#88f}.swagger-section pre .aggregate,.swagger-section pre .apache .tag,.swagger-section pre .bash .variable,.swagger-section pre .built_in,.swagger-section pre .css .tag,.swagger-section pre .go .typename,.swagger-section pre .id,.swagger-section pre .javadoctag,.swagger-section pre .keyword,.swagger-section pre .markdown .strong,.swagger-section pre .phpdoc,.swagger-section pre .request,.swagger-section pre .smalltalk .class,.swagger-section pre .status,.swagger-section pre .tex .command,.swagger-section pre .title,.swagger-section pre .winutils,.swagger-section pre .yardoctag{font-weight:700}.swagger-section pre .markdown .emphasis{font-style:italic}.swagger-section pre .nginx .built_in{font-weight:400}.swagger-section pre .coffeescript .javascript,.swagger-section pre .javascript .xml,.swagger-section pre .tex .formula,.swagger-section pre .xml .cdata,.swagger-section pre .xml .css,.swagger-section pre .xml .javascript,.swagger-section pre .xml .vbscript{opacity:.5}.swagger-section .hljs{display:block;overflow-x:auto;padding:.5em;background:#f0f0f0}.swagger-section .hljs,.swagger-section .hljs-subst{color:#444}.swagger-section .hljs-attribute,.swagger-section .hljs-doctag,.swagger-section .hljs-keyword,.swagger-section .hljs-meta-keyword,.swagger-section .hljs-name,.swagger-section .hljs-selector-tag{font-weight:700}.swagger-section .hljs-addition,.swagger-section .hljs-built_in,.swagger-section .hljs-bullet,.swagger-section .hljs-code,.swagger-section .hljs-literal{color:#1f811f}.swagger-section .hljs-link,.swagger-section .hljs-regexp,.swagger-section .hljs-selector-attr,.swagger-section .hljs-selector-pseudo,.swagger-section .hljs-symbol,.swagger-section .hljs-template-variable,.swagger-section .hljs-variable{color:#bc6060}.swagger-section .hljs-deletion,.swagger-section .hljs-number,.swagger-section .hljs-quote,.swagger-section .hljs-selector-class,.swagger-section .hljs-selector-id,.swagger-section .hljs-string,.swagger-section .hljs-template-tag,.swagger-section .hljs-type{color:#800}.swagger-section .hljs-section,.swagger-section .hljs-title{color:#800;font-weight:700}.swagger-section .hljs-comment{color:#888}.swagger-section .hljs-meta{color:#2b6ea1}.swagger-section .hljs-emphasis{font-style:italic}.swagger-section .hljs-strong{font-weight:700}.swagger-section .swagger-ui-wrap{line-height:1;font-family:Droid Sans,sans-serif;min-width:760px;max-width:960px;margin-left:auto;margin-right:auto}.swagger-section .swagger-ui-wrap b,.swagger-section .swagger-ui-wrap strong{font-family:Droid Sans,sans-serif;font-weight:700}.swagger-section .swagger-ui-wrap blockquote,.swagger-section .swagger-ui-wrap q{quotes:none}.swagger-section .swagger-ui-wrap p{line-height:1.4em;padding:0 0 10px;color:#333}.swagger-section .swagger-ui-wrap blockquote:after,.swagger-section .swagger-ui-wrap blockquote:before,.swagger-section .swagger-ui-wrap q:after,.swagger-section .swagger-ui-wrap q:before{content:none}.swagger-section .swagger-ui-wrap .heading_with_menu h1,.swagger-section .swagger-ui-wrap .heading_with_menu h2,.swagger-section .swagger-ui-wrap .heading_with_menu h3,.swagger-section .swagger-ui-wrap .heading_with_menu h4,.swagger-section .swagger-ui-wrap .heading_with_menu h5,.swagger-section .swagger-ui-wrap .heading_with_menu h6{display:block;clear:none;float:left;-ms-box-sizing:border-box;box-sizing:border-box;width:60%}.swagger-section .swagger-ui-wrap table{border-collapse:collapse;border-spacing:0}.swagger-section .swagger-ui-wrap table thead tr th{padding:5px;font-size:.9em;color:#666;border-bottom:1px solid #999}.swagger-section .swagger-ui-wrap table tbody tr:last-child td{border-bottom:none}.swagger-section .swagger-ui-wrap table tbody tr.offset{background-color:#f0f0f0}.swagger-section .swagger-ui-wrap table tbody tr td{padding:6px;font-size:.9em;border-bottom:1px solid #ccc;vertical-align:top;line-height:1.3em}.swagger-section .swagger-ui-wrap ol{margin:0 0 10px;padding:0 0 0 18px;list-style-type:decimal}.swagger-section .swagger-ui-wrap ol li{padding:5px 0;font-size:.9em;color:#333}.swagger-section .swagger-ui-wrap ol,.swagger-section .swagger-ui-wrap ul{list-style:none}.swagger-section .swagger-ui-wrap h1 a,.swagger-section .swagger-ui-wrap h2 a,.swagger-section .swagger-ui-wrap h3 a,.swagger-section .swagger-ui-wrap h4 a,.swagger-section .swagger-ui-wrap h5 a,.swagger-section .swagger-ui-wrap h6 a{text-decoration:none}.swagger-section .swagger-ui-wrap h1 a:hover,.swagger-section .swagger-ui-wrap h2 a:hover,.swagger-section .swagger-ui-wrap h3 a:hover,.swagger-section .swagger-ui-wrap h4 a:hover,.swagger-section .swagger-ui-wrap h5 a:hover,.swagger-section .swagger-ui-wrap h6 a:hover{text-decoration:underline}.swagger-section .swagger-ui-wrap h1 span.divider,.swagger-section .swagger-ui-wrap h2 span.divider,.swagger-section .swagger-ui-wrap h3 span.divider,.swagger-section .swagger-ui-wrap h4 span.divider,.swagger-section .swagger-ui-wrap h5 span.divider,.swagger-section .swagger-ui-wrap h6 span.divider{color:#aaa}.swagger-section .swagger-ui-wrap a{color:#547f00}.swagger-section .swagger-ui-wrap a img{border:none}.swagger-section .swagger-ui-wrap article,.swagger-section .swagger-ui-wrap aside,.swagger-section .swagger-ui-wrap details,.swagger-section .swagger-ui-wrap figcaption,.swagger-section .swagger-ui-wrap figure,.swagger-section .swagger-ui-wrap footer,.swagger-section .swagger-ui-wrap header,.swagger-section .swagger-ui-wrap hgroup,.swagger-section .swagger-ui-wrap menu,.swagger-section .swagger-ui-wrap nav,.swagger-section .swagger-ui-wrap section,.swagger-section .swagger-ui-wrap summary{display:block}.swagger-section .swagger-ui-wrap pre{font-family:Anonymous Pro,Menlo,Consolas,Bitstream Vera Sans Mono,Courier New,monospace;background-color:#fcf6db;border:1px solid #e5e0c6;padding:10px}.swagger-section .swagger-ui-wrap pre code{line-height:1.6em;background:none}.swagger-section .swagger-ui-wrap .content>.content-type>div>label{clear:both;display:block;color:#0f6ab4;font-size:1.1em;margin:0;padding:15px 0 5px}.swagger-section .swagger-ui-wrap .content pre{font-size:12px;margin-top:5px;padding:5px}.swagger-section .swagger-ui-wrap .icon-btn{cursor:pointer}.swagger-section .swagger-ui-wrap .info_title{padding-bottom:10px;font-weight:700;font-size:25px}.swagger-section .swagger-ui-wrap .footer{margin-top:20px}.swagger-section .swagger-ui-wrap div.big p,.swagger-section .swagger-ui-wrap p.big{font-size:1em;margin-bottom:10px}.swagger-section .swagger-ui-wrap form.fullwidth ol li.numeric input,.swagger-section .swagger-ui-wrap form.fullwidth ol li.string input,.swagger-section .swagger-ui-wrap form.fullwidth ol li.text textarea,.swagger-section .swagger-ui-wrap form.fullwidth ol li.url input{width:500px!important}.swagger-section .swagger-ui-wrap .info_license,.swagger-section .swagger-ui-wrap .info_tos{padding-bottom:5px}.swagger-section .swagger-ui-wrap .message-fail{color:#c00}.swagger-section .swagger-ui-wrap .info_email,.swagger-section .swagger-ui-wrap .info_name,.swagger-section .swagger-ui-wrap .info_url{padding-bottom:5px}.swagger-section .swagger-ui-wrap .info_description{padding-bottom:10px;font-size:15px}.swagger-section .swagger-ui-wrap .markdown ol li,.swagger-section .swagger-ui-wrap .markdown ul li{padding:3px 0;line-height:1.4em;color:#333}.swagger-section .swagger-ui-wrap form.formtastic fieldset.inputs ol li.numeric input,.swagger-section .swagger-ui-wrap form.formtastic fieldset.inputs ol li.string input,.swagger-section .swagger-ui-wrap form.formtastic fieldset.inputs ol li.url input{display:block;padding:4px;width:auto;clear:both}.swagger-section .swagger-ui-wrap form.formtastic fieldset.inputs ol li.numeric input.title,.swagger-section .swagger-ui-wrap form.formtastic fieldset.inputs ol li.string input.title,.swagger-section .swagger-ui-wrap form.formtastic fieldset.inputs ol li.url input.title{font-size:1.3em}.swagger-section .swagger-ui-wrap table.fullwidth{width:100%}.swagger-section .swagger-ui-wrap .model-signature{font-family:Droid Sans,sans-serif;font-size:1em;line-height:1.5em}.swagger-section .swagger-ui-wrap .model-signature .signature-nav a{text-decoration:none;color:#aaa}.swagger-section .swagger-ui-wrap .model-signature .signature-nav a:hover{text-decoration:underline;color:#000}.swagger-section .swagger-ui-wrap .model-signature .signature-nav .selected{color:#000;text-decoration:none}.swagger-section .swagger-ui-wrap .model-signature .propType{color:#55a}.swagger-section .swagger-ui-wrap .model-signature pre:hover{background-color:#ffd}.swagger-section .swagger-ui-wrap .model-signature pre{font-size:.85em;line-height:1.2em;overflow:auto;height:200px;resize:vertical;cursor:pointer}.swagger-section .swagger-ui-wrap .model-signature ul.signature-nav{display:block;min-width:230px;margin:0;padding:0}.swagger-section .swagger-ui-wrap .model-signature ul.signature-nav li:last-child{padding-right:0;border-right:none}.swagger-section .swagger-ui-wrap .model-signature ul.signature-nav li{float:left;margin:0 5px 5px 0;padding:2px 5px 2px 0;border-right:1px solid #ddd}.swagger-section .swagger-ui-wrap .model-signature .propOpt{color:#555}.swagger-section .swagger-ui-wrap .model-signature .snippet small{font-size:.75em}.swagger-section .swagger-ui-wrap .model-signature .propOptKey{font-style:italic}.swagger-section .swagger-ui-wrap .model-signature .description .strong{font-weight:700;color:#000;font-size:.9em}.swagger-section .swagger-ui-wrap .model-signature .description div{font-size:.9em;line-height:1.5em;margin-left:1em}.swagger-section .swagger-ui-wrap .model-signature .description .stronger{font-weight:700;color:#000}.swagger-section .swagger-ui-wrap .model-signature .description .propWrap .optionsWrapper{border-spacing:0;position:absolute;background-color:#fff;border:1px solid #bbb;display:none;font-size:11px;max-width:400px;line-height:30px;color:#000;padding:5px;margin-left:10px}.swagger-section .swagger-ui-wrap .model-signature .description .propWrap .optionsWrapper th{text-align:center;background-color:#eee;border:1px solid #bbb;font-size:11px;color:#666;font-weight:700;padding:5px;line-height:15px}.swagger-section .swagger-ui-wrap .model-signature .description .propWrap .optionsWrapper .optionName{font-weight:700}.swagger-section .swagger-ui-wrap .model-signature .description .propDesc.markdown>p:first-child,.swagger-section .swagger-ui-wrap .model-signature .description .propDesc.markdown>p:last-child{display:inline}.swagger-section .swagger-ui-wrap .model-signature .description .propDesc.markdown>p:not(:first-child):before{display:block;content:""}.swagger-section .swagger-ui-wrap .model-signature .description span:last-of-type.propDesc.markdown>p:only-child{margin-right:-3px}.swagger-section .swagger-ui-wrap .model-signature .propName{font-weight:700}.swagger-section .swagger-ui-wrap .model-signature .signature-container{clear:both}.swagger-section .swagger-ui-wrap .body-textarea{width:300px;height:100px;border:1px solid #aaa}.swagger-section .swagger-ui-wrap .markdown li code,.swagger-section .swagger-ui-wrap .markdown p code{font-family:Anonymous Pro,Menlo,Consolas,Bitstream Vera Sans Mono,Courier New,monospace;background-color:#f0f0f0;color:#000;padding:1px 3px}.swagger-section .swagger-ui-wrap .required{font-weight:700}.swagger-section .swagger-ui-wrap .editor_holder{font-family:Anonymous Pro,Menlo,Consolas,Bitstream Vera Sans Mono,Courier New,monospace;font-size:.9em}.swagger-section .swagger-ui-wrap .editor_holder label{font-weight:400!important}.swagger-section .swagger-ui-wrap .editor_holder label.required{font-weight:700!important}.swagger-section .swagger-ui-wrap input.parameter{width:300px;border:1px solid #aaa}.swagger-section .swagger-ui-wrap h1{color:#000;font-size:1.5em;line-height:1.3em;padding:10px 0;font-family:Droid Sans,sans-serif;font-weight:700}.swagger-section .swagger-ui-wrap .heading_with_menu{float:none;clear:both;overflow:hidden;display:block}.swagger-section .swagger-ui-wrap .heading_with_menu ul{display:block;clear:none;float:right;-ms-box-sizing:border-box;box-sizing:border-box;margin-top:10px}.swagger-section .swagger-ui-wrap h2{color:#000;font-size:1.3em;padding:10px 0}.swagger-section .swagger-ui-wrap h2 a{color:#000}.swagger-section .swagger-ui-wrap h2 span.sub{font-size:.7em;color:#999;font-style:italic}.swagger-section .swagger-ui-wrap h2 span.sub a{color:#777}.swagger-section .swagger-ui-wrap span.weak{color:#666}.swagger-section .swagger-ui-wrap .message-success{color:#89bf04}.swagger-section .swagger-ui-wrap caption,.swagger-section .swagger-ui-wrap td,.swagger-section .swagger-ui-wrap th{text-align:left;font-weight:400;vertical-align:middle}.swagger-section .swagger-ui-wrap .code{font-family:Anonymous Pro,Menlo,Consolas,Bitstream Vera Sans Mono,Courier New,monospace}.swagger-section .swagger-ui-wrap form.formtastic fieldset.inputs ol li.text textarea{font-family:Droid Sans,sans-serif;height:250px;padding:4px;display:block;clear:both}.swagger-section .swagger-ui-wrap form.formtastic fieldset.inputs ol li.select select{display:block;clear:both}.swagger-section .swagger-ui-wrap form.formtastic fieldset.inputs ol li.boolean{float:none;clear:both;overflow:hidden;display:block}.swagger-section .swagger-ui-wrap form.formtastic fieldset.inputs ol li.boolean label{display:block;float:left;clear:none;margin:0;padding:0}.swagger-section .swagger-ui-wrap form.formtastic fieldset.inputs ol li.boolean input{display:block;float:left;clear:none;margin:0 5px 0 0}.swagger-section .swagger-ui-wrap form.formtastic fieldset.inputs ol li.required label{color:#000}.swagger-section .swagger-ui-wrap form.formtastic fieldset.inputs ol li label{display:block;clear:both;width:auto;padding:0 0 3px;color:#666}.swagger-section .swagger-ui-wrap form.formtastic fieldset.inputs ol li label abbr{padding-left:3px;color:#888}.swagger-section .swagger-ui-wrap form.formtastic fieldset.inputs ol li p.inline-hints{margin-left:0;font-style:italic;font-size:.9em;margin:0}.swagger-section .swagger-ui-wrap form.formtastic fieldset.buttons{margin:0;padding:0}.swagger-section .swagger-ui-wrap span.blank,.swagger-section .swagger-ui-wrap span.empty{color:#888;font-style:italic}.swagger-section .swagger-ui-wrap .markdown h3{color:#547f00}.swagger-section .swagger-ui-wrap .markdown h4{color:#666}.swagger-section .swagger-ui-wrap .markdown pre{font-family:Anonymous Pro,Menlo,Consolas,Bitstream Vera Sans Mono,Courier New,monospace;background-color:#fcf6db;border:1px solid #e5e0c6;padding:10px;margin:0 0 10px}.swagger-section .swagger-ui-wrap .markdown pre code{line-height:1.6em;overflow:auto}.swagger-section .swagger-ui-wrap div.gist{margin:20px 0 25px!important}.swagger-section .swagger-ui-wrap ul#resources{font-family:Droid Sans,sans-serif;font-size:.9em}.swagger-section .swagger-ui-wrap ul#resources li.resource{border-bottom:1px solid #ddd}.swagger-section .swagger-ui-wrap ul#resources li.resource.active div.heading h2 a,.swagger-section .swagger-ui-wrap ul#resources li.resource:hover div.heading h2 a{color:#000}.swagger-section .swagger-ui-wrap ul#resources li.resource.active div.heading ul.options li a,.swagger-section .swagger-ui-wrap ul#resources li.resource:hover div.heading ul.options li a{color:#555}.swagger-section .swagger-ui-wrap ul#resources li.resource:last-child{border-bottom:none}.swagger-section .swagger-ui-wrap ul#resources li.resource div.heading{border:1px solid transparent;float:none;clear:both;overflow:hidden;display:block}.swagger-section .swagger-ui-wrap ul#resources li.resource div.heading ul.options{overflow:hidden;padding:0;display:block;clear:none;float:right;margin:14px 10px 0 0}.swagger-section .swagger-ui-wrap ul#resources li.resource div.heading ul.options li{float:left;clear:none;margin:0;padding:2px 10px;border-right:1px solid #ddd;color:#666;font-size:.9em}.swagger-section .swagger-ui-wrap ul#resources li.resource div.heading ul.options li a{color:#aaa;text-decoration:none}.swagger-section .swagger-ui-wrap ul#resources li.resource div.heading ul.options li a:hover{text-decoration:underline;color:#000}.swagger-section .swagger-ui-wrap ul#resources li.resource div.heading ul.options li a.active,.swagger-section .swagger-ui-wrap ul#resources li.resource div.heading ul.options li a:active,.swagger-section .swagger-ui-wrap ul#resources li.resource div.heading ul.options li a:hover{text-decoration:underline}.swagger-section .swagger-ui-wrap ul#resources li.resource div.heading ul.options li.first,.swagger-section .swagger-ui-wrap ul#resources li.resource div.heading ul.options li:first-child{padding-left:0}.swagger-section .swagger-ui-wrap ul#resources li.resource div.heading ul.options li.last,.swagger-section .swagger-ui-wrap ul#resources li.resource div.heading ul.options li:last-child{padding-right:0;border-right:none}.swagger-section .swagger-ui-wrap ul#resources li.resource div.heading ul.options.first,.swagger-section .swagger-ui-wrap ul#resources li.resource div.heading ul.options:first-child{padding-left:0}.swagger-section .swagger-ui-wrap ul#resources li.resource div.heading h2{color:#999;padding-left:0;display:block;clear:none;float:left;font-family:Droid Sans,sans-serif;font-weight:700}.swagger-section .swagger-ui-wrap ul#resources li.resource div.heading h2 a{color:#999}.swagger-section .swagger-ui-wrap ul#resources li.resource div.heading h2 a:hover{color:#000}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation{float:none;clear:both;overflow:hidden;display:block;margin:0 0 10px;padding:0}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.heading{float:none;clear:both;overflow:hidden;display:block;margin:0;padding:0}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.heading h3{display:block;clear:none;float:left;width:auto;margin:0;padding:0;line-height:1.1em;color:#000}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.heading h3 span.path{padding-left:10px}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.heading h3 span.path a{color:#000;text-decoration:none}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.heading h3 span.path a.toggleOperation.deprecated{text-decoration:line-through}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.heading h3 span.path a:hover{text-decoration:underline}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.heading h3 span.http_method a{text-transform:uppercase;text-decoration:none;color:#fff;display:inline-block;width:50px;font-size:.7em;text-align:center;padding:7px 0 4px;border-radius:2px}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.heading h3 span{margin:0;padding:0}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.heading ul.options{overflow:hidden;padding:0;display:block;clear:none;float:right;margin:6px 10px 0 0}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.heading ul.options li{float:left;clear:none;margin:0;padding:2px 10px;font-size:.9em}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.heading ul.options li a{text-decoration:none}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.heading ul.options li a .markdown p{color:inherit;padding:0;line-height:inherit}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.heading ul.options li a .nickname{color:#aaa;padding:0;line-height:inherit}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.heading ul.options li.access{color:#000}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.content{border-top:none;padding:10px;border-bottom-left-radius:6px;border-bottom-right-radius:6px;margin:0 0 20px}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.content h4{font-size:1.1em;margin:0;padding:15px 0 5px}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.content div.sandbox_header{float:none;clear:both;overflow:hidden;display:block}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.content div.sandbox_header a{padding:4px 0 0 10px;display:inline-block;font-size:.9em}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.content div.sandbox_header input.submit{display:block;clear:none;float:left;padding:6px 8px}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.content div.sandbox_header span.response_throbber{background-image:url(../images/throbber.gif);width:128px;height:16px;display:block;clear:none;float:right}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.content form input[type=text].error{outline:2px solid #000;outline-color:#c00}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.content form select[name=parameterContentType]{max-width:300px}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.content div.response div.block pre{font-family:Anonymous Pro,Menlo,Consolas,Bitstream Vera Sans Mono,Courier New,monospace;padding:10px;font-size:.9em;max-height:400px;overflow-y:auto}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.put div.heading{background-color:#f9f2e9;border:1px solid #f0e0ca}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.put div.heading h3 span.http_method a{background-color:#c5862b}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.put div.heading ul.options li{border-right:1px solid #ddd;border-right-color:#f0e0ca;color:#c5862b}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.put div.heading ul.options li a{color:#c5862b}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.put div.content{background-color:#faf5ee;border:1px solid #f0e0ca}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.put div.content h4{color:#c5862b}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.put div.content div.sandbox_header a{color:#dcb67f}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.head div.heading{background-color:#fcffcd;border:1px solid #000;border-color:#ffd20f}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.head div.heading h3 span.http_method a{text-transform:uppercase;background-color:#ffd20f}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.head div.heading ul.options li{border-right:1px solid #ddd;border-right-color:#ffd20f;color:#ffd20f}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.head div.heading ul.options li a{color:#ffd20f}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.head div.content{background-color:#fcffcd;border:1px solid #000;border-color:#ffd20f}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.head div.content h4{color:#ffd20f}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.head div.content div.sandbox_header a{color:#6fc992}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.delete div.heading{background-color:#f5e8e8;border:1px solid #e8c6c7}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.delete div.heading h3 span.http_method a{text-transform:uppercase;background-color:#a41e22}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.delete div.heading ul.options li{border-right:1px solid #ddd;border-right-color:#e8c6c7;color:#a41e22}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.delete div.heading ul.options li a{color:#a41e22}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.delete div.content{background-color:#f7eded;border:1px solid #e8c6c7}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.delete div.content h4{color:#a41e22}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.delete div.content div.sandbox_header a{color:#c8787a}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.post div.heading{background-color:#e7f6ec;border:1px solid #c3e8d1}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.post div.heading h3 span.http_method a{background-color:#10a54a}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.post div.heading ul.options li{border-right:1px solid #ddd;border-right-color:#c3e8d1;color:#10a54a}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.post div.heading ul.options li a{color:#10a54a}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.post div.content{background-color:#ebf7f0;border:1px solid #c3e8d1}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.post div.content h4{color:#10a54a}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.post div.content div.sandbox_header a{color:#6fc992}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.patch div.heading{background-color:#fce9e3;border:1px solid #f5d5c3}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.patch div.heading h3 span.http_method a{background-color:#d38042}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.patch div.heading ul.options li{border-right:1px solid #ddd;border-right-color:#f0cecb;color:#d38042}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.patch div.heading ul.options li a{color:#d38042}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.patch div.content{background-color:#faf0ef;border:1px solid #f0cecb}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.patch div.content h4{color:#d38042}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.patch div.content div.sandbox_header a{color:#dcb67f}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.get div.heading{background-color:#e7f0f7;border:1px solid #c3d9ec}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.get div.heading h3 span.http_method a{background-color:#0f6ab4}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.get div.heading ul.options li{border-right:1px solid #ddd;border-right-color:#c3d9ec;color:#0f6ab4}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.get div.heading ul.options li a{color:#0f6ab4}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.get div.content{background-color:#ebf3f9;border:1px solid #c3d9ec}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.get div.content h4{color:#0f6ab4}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.get div.content div.sandbox_header a{color:#6fa5d2}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.options div.heading{background-color:#e7f0f7;border:1px solid #c3d9ec}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.options div.heading h3 span.http_method a{background-color:#0f6ab4}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.options div.heading ul.options li{border-right:1px solid #ddd;border-right-color:#c3d9ec;color:#0f6ab4}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.options div.heading ul.options li a{color:#0f6ab4}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.options div.content{background-color:#ebf3f9;border:1px solid #c3d9ec}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.options div.content h4{color:#0f6ab4}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.options div.content div.sandbox_header a{color:#6fa5d2}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.delete div.content,.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.get div.content,.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.head div.content,.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.patch div.content,.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.post div.content,.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.put div.content{border-top:none}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.delete div.heading ul.options li.last,.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.delete div.heading ul.options li:last-child,.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.get div.heading ul.options li.last,.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.get div.heading ul.options li:last-child,.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.head div.heading ul.options li.last,.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.head div.heading ul.options li:last-child,.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.patch div.heading ul.options li.last,.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.patch div.heading ul.options li:last-child,.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.post div.heading ul.options li.last,.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.post div.heading ul.options li:last-child,.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.put div.heading ul.options li.last,.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.put div.heading ul.options li:last-child{padding-right:0;border-right:none}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations ul.options li a.active,.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations ul.options li a:active,.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations ul.options li a:hover{text-decoration:underline}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations.first,.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations:first-child,.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations ul.options li.first,.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations ul.options li:first-child{padding-left:0}.swagger-section .swagger-ui-wrap p#colophon{margin:0 15px 40px;padding:10px 0;font-size:.8em;border-top:1px solid #ddd;font-family:Droid Sans,sans-serif;color:#999;font-style:italic}.swagger-section .swagger-ui-wrap p#colophon a{text-decoration:none;color:#547f00}.swagger-section .swagger-ui-wrap h3{color:#000;font-size:1.1em;padding:10px 0}.swagger-section .swagger-ui-wrap .markdown ol,.swagger-section .swagger-ui-wrap .markdown ul{font-family:Droid Sans,sans-serif;margin:5px 0 10px;padding:0 0 0 18px;list-style-type:disc}.swagger-section .swagger-ui-wrap form.form_box{background-color:#ebf3f9;border:1px solid #c3d9ec;padding:10px}.swagger-section .swagger-ui-wrap form.form_box label{color:#0f6ab4!important}.swagger-section .swagger-ui-wrap form.form_box input[type=submit]{display:block;padding:10px}.swagger-section .swagger-ui-wrap form.form_box p.weak{font-size:.8em}.swagger-section .swagger-ui-wrap form.form_box p{font-size:.9em;padding:0 0 15px;color:#7e7b6d}.swagger-section .swagger-ui-wrap form.form_box p a{color:#646257}.swagger-section .swagger-ui-wrap form.form_box p strong{color:#000}.swagger-section .swagger-ui-wrap .operation-status td.markdown>p:last-child{padding-bottom:0}.swagger-section .title{font-style:bold}.swagger-section .secondary_form{display:none}.swagger-section .main_image{display:block;margin-left:auto;margin-right:auto}.swagger-section .oauth_body{margin-left:100px;margin-right:100px}.swagger-section .oauth_submit{text-align:center;display:inline-block}.swagger-section .authorize-wrapper{margin:15px 0 10px}.swagger-section .authorize-wrapper_operation{float:right}.swagger-section .authorize__btn:hover{text-decoration:underline;cursor:pointer}.swagger-section .authorize__btn_operation:hover .authorize-scopes{display:block}.swagger-section .authorize-scopes{position:absolute;margin-top:20px;background:#fff;border:1px solid #ccc;border-radius:5px;display:none;font-size:13px;max-width:300px;line-height:30px;color:#000;padding:5px}.swagger-section .authorize-scopes .authorize__scope{text-decoration:none}.swagger-section .authorize__btn_operation{height:18px;vertical-align:middle;display:inline-block;background:url(../images/explorer_icons.png) no-repeat}.swagger-section .authorize__btn_operation_login{background-position:0 0;width:18px;margin-top:-6px;margin-left:4px}.swagger-section .authorize__btn_operation_logout{background-position:-30px 0;width:18px;margin-top:-6px;margin-left:4px}.swagger-section #auth_container{color:#fff;display:inline-block;border:none;padding:5px;width:87px;height:13px}.swagger-section #auth_container .authorize__btn{color:#fff}.swagger-section .auth_container{padding:0 0 10px;margin-bottom:5px;border-bottom:1px solid #ccc;font-size:.9em}.swagger-section .auth_container .auth__title{color:#547f00;font-size:1.2em}.swagger-section .auth_container .basic_auth__label{display:inline-block;width:60px}.swagger-section .auth_container .auth__description{color:#999;margin-bottom:5px}.swagger-section .auth_container .auth__button{margin-top:10px;height:30px}.swagger-section .auth_container .key_auth__field{margin:5px 0}.swagger-section .auth_container .key_auth__label{display:inline-block;width:60px}.swagger-section .api-popup-dialog{position:absolute;display:none}.swagger-section .api-popup-dialog-wrapper{z-index:2;width:500px;background:#fff;padding:20px;border:1px solid #ccc;border-radius:5px;font-size:13px;color:#777;position:fixed;top:50%;left:50%;transform:translate(-50%,-50%)}.swagger-section .api-popup-dialog-shadow{position:fixed;top:0;left:0;width:100%;height:100%;opacity:.2;background-color:gray;z-index:1}.swagger-section .api-popup-dialog .api-popup-title{font-size:24px;padding:10px 0}.swagger-section .api-popup-dialog .error-msg{padding-left:5px;padding-bottom:5px}.swagger-section .api-popup-dialog .api-popup-content{max-height:500px;overflow-y:auto}.swagger-section .api-popup-dialog .api-popup-authbtn,.swagger-section .api-popup-dialog .api-popup-cancel{height:30px}.swagger-section .api-popup-scopes{padding:10px 20px}.swagger-section .api-popup-scopes li{padding:5px 0;line-height:20px}.swagger-section .api-popup-scopes li input{position:relative;top:2px}.swagger-section .api-popup-scopes .api-scope-desc{padding-left:20px;font-style:italic}.swagger-section .api-popup-actions{padding-top:10px}.swagger-section fieldset{padding-bottom:10px;padding-left:20px}.swagger-section .access,.swagger-section .auth{float:right}.swagger-section .api-ic{height:18px;vertical-align:middle;display:inline-block;background:url(../images/explorer_icons.png) no-repeat}.swagger-section .api-ic .api_information_panel{position:relative;margin-top:20px;margin-left:-5px;background:#fff;border:1px solid #ccc;border-radius:5px;display:none;font-size:13px;max-width:300px;line-height:30px;color:#000;padding:5px}.swagger-section .api-ic .api_information_panel p .api-msg-enabled{color:green}.swagger-section .api-ic .api_information_panel p .api-msg-disabled{color:red}.swagger-section .api-ic:hover .api_information_panel{position:absolute;display:block}.swagger-section .ic-info{background-position:0 0;width:18px;margin-top:-6px;margin-left:4px}.swagger-section .ic-warning{background-position:-60px 0;width:18px;margin-top:-6px;margin-left:4px}.swagger-section .ic-error{background-position:-30px 0;width:18px;margin-top:-6px;margin-left:4px}.swagger-section .ic-off{background-position:-90px 0;width:58px;margin-top:-4px;cursor:pointer}.swagger-section .ic-on{background-position:-160px 0;width:58px;margin-top:-4px;cursor:pointer}.swagger-section #header{background-color:#89bf04;padding:9px 14px 19px;height:23px;min-width:775px}.swagger-section #input_baseUrl{width:400px}.swagger-section #api_selector{display:block;clear:none;float:right}.swagger-section #api_selector .input{display:inline-block;clear:none;margin:0 10px 0 0}.swagger-section #api_selector input{font-size:.9em;padding:3px;margin:0}.swagger-section #input_apiKey{width:200px}.swagger-section #auth_container .authorize__btn,.swagger-section #explore{display:block;text-decoration:none;font-weight:700;padding:6px 8px;font-size:.9em;color:#fff;background-color:#547f00;border-radius:4px}.swagger-section #auth_container .authorize__btn:hover,.swagger-section #explore:hover{background-color:#547f00}.swagger-section #header #logo{font-size:1.5em;font-weight:700;text-decoration:none;color:#fff}.swagger-section #header #logo .logo__img{display:block;float:left;margin-top:2px}.swagger-section #header #logo .logo__title{display:inline-block;padding:5px 0 0 10px}.swagger-section #content_message{margin:10px 15px;font-style:italic;color:#999}.swagger-section #message-bar{min-height:30px;text-align:center;padding-top:10px}.swagger-section .swagger-collapse:before{content:"-"}.swagger-section .swagger-expand:before{content:"+"}.swagger-section .error{outline-color:#c00;background-color:#f2dede} ================================================ FILE: chapter02 -- boot/src/main/webapp/swagger/css/style.css ================================================ .swagger-section #header a#logo{font-size:1.5em;font-weight:700;text-decoration:none;padding:20px 0 20px 40px}#text-head{font-size:80px;font-family:Roboto,sans-serif;color:#fff;float:right;margin-right:20%}.navbar-fixed-top .navbar-brand,.navbar-fixed-top .navbar-nav,.navbar-header{height:auto}.navbar-inverse{background-color:#000;border-color:#000}#navbar-brand{margin-left:20%}.navtext{font-size:10px}.h1,h1{font-size:60px}.navbar-default .navbar-header .navbar-brand{color:#a2dfee}.swagger-section .swagger-ui-wrap ul#resources li.resource div.heading h2 a{color:#393939;font-family:Arvo,serif;font-size:1.5em}.swagger-section .swagger-ui-wrap ul#resources li.resource div.heading h2 a:hover{color:#000}.swagger-section .swagger-ui-wrap ul#resources li.resource div.heading h2{color:#525252;padding-left:0;display:block;clear:none;float:left;font-family:Arvo,serif;font-weight:700}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#0a0a0a}.container1{width:1500px;margin:auto;margin-top:0;background-repeat:no-repeat;background-position:-40px -20px;margin-bottom:210px}.container-inner{width:1200px;margin:auto;background-color:hsla(192,8%,88%,.75);padding-bottom:40px;padding-top:40px;border-radius:15px}.header-content{padding:0;width:1000px}.title1{font-size:80px;font-family:Vollkorn,serif;color:#404040;text-align:center;padding-top:40px;padding-bottom:100px}#icon{margin-top:-18px}.subtext{font-size:25px;font-style:italic;color:#08b;text-align:right;padding-right:250px}.bg-primary{background-color:#00468b}.navbar-default .nav>li>a,.navbar-default .nav>li>a:focus,.navbar-default .nav>li>a:focus:hover,.navbar-default .nav>li>a:hover{color:#08b}.text-faded{font-size:25px;font-family:Vollkorn,serif}.section-heading{font-family:Vollkorn,serif;font-size:45px;padding-bottom:10px}hr{border-color:#00468b;padding-bottom:10px}.description{margin-top:20px;padding-bottom:200px}.description li{font-family:Vollkorn,serif;font-size:25px;color:#525252;margin-left:28%;padding-top:5px}.gap{margin-top:200px}.troubleshootingtext{color:hsla(0,0%,100%,.7);padding-left:30%}.troubleshootingtext li{list-style-type:circle;font-size:25px;padding-bottom:5px}.overlay{position:absolute;top:0;left:0;width:100%;height:100%;z-index:1}.block.response_body.json:hover{cursor:pointer}.backdrop{color:blue}#myModal{height:100%}.modal-backdrop{bottom:0;position:fixed}.curl{padding:10px;font-family:Anonymous Pro,Menlo,Consolas,Bitstream Vera Sans Mono,Courier New,monospace;font-size:.9em;max-height:400px;margin-top:5px;overflow-y:auto;background-color:#fcf6db;border:1px solid #e5e0c6;border-radius:4px}.curl_title{font-size:1.1em;margin:0;padding:15px 0 5px;font-family:Open Sans,Helvetica Neue,Arial,sans-serif;font-weight:500;line-height:1.1}.footer{display:none}.swagger-section .swagger-ui-wrap h2{padding:0}h2{margin:0;margin-bottom:5px}.markdown p,.swagger-section .swagger-ui-wrap .code{font-size:15px;font-family:Arvo,serif}.swagger-section .swagger-ui-wrap b{font-family:Arvo,serif}#signin:hover{cursor:pointer}.dropdown-menu{padding:15px}.navbar-right .dropdown-menu{left:0;right:auto}#signinbutton{width:100%;height:32px;font-size:13px;font-weight:700;color:#08b}.navbar-default .nav>li .details{color:#000;text-transform:none;font-size:15px;font-weight:400;font-family:Open Sans,sans-serif;font-style:italic;line-height:20px;top:-2px}.navbar-default .nav>li .details:hover{color:#000}#signout{width:100%;height:32px;font-size:13px;font-weight:700;color:#08b} ================================================ FILE: chapter02 -- boot/src/main/webapp/swagger/css/typography.css ================================================ ================================================ FILE: chapter02 -- boot/src/main/webapp/swagger/index.html ================================================ Swagger UI
 
================================================ FILE: chapter02 -- boot/src/main/webapp/swagger/lang/ca.js ================================================ 'use strict'; /* jshint quotmark: double */ window.SwaggerTranslator.learn({ "Warning: Deprecated":"Advertència: Obsolet", "Implementation Notes":"Notes d'implementació", "Response Class":"Classe de la Resposta", "Status":"Estatus", "Parameters":"Paràmetres", "Parameter":"Paràmetre", "Value":"Valor", "Description":"Descripció", "Parameter Type":"Tipus del Paràmetre", "Data Type":"Tipus de la Dada", "Response Messages":"Missatges de la Resposta", "HTTP Status Code":"Codi d'Estatus HTTP", "Reason":"Raó", "Response Model":"Model de la Resposta", "Request URL":"URL de la Sol·licitud", "Response Body":"Cos de la Resposta", "Response Code":"Codi de la Resposta", "Response Headers":"Capçaleres de la Resposta", "Hide Response":"Amagar Resposta", "Try it out!":"Prova-ho!", "Show/Hide":"Mostrar/Amagar", "List Operations":"Llista Operacions", "Expand Operations":"Expandir Operacions", "Raw":"Cru", "can't parse JSON. Raw result":"no puc analitzar el JSON. Resultat cru", "Example Value":"Valor d'Exemple", "Model Schema":"Esquema del Model", "Model":"Model", "apply":"aplicar", "Username":"Nom d'usuari", "Password":"Contrasenya", "Terms of service":"Termes del servei", "Created by":"Creat per", "See more at":"Veure més en", "Contact the developer":"Contactar amb el desenvolupador", "api version":"versió de la api", "Response Content Type":"Tipus de Contingut de la Resposta", "fetching resource":"recollint recurs", "fetching resource list":"recollins llista de recursos", "Explore":"Explorant", "Show Swagger Petstore Example Apis":"Mostrar API d'Exemple Swagger Petstore", "Can't read from server. It may not have the appropriate access-control-origin settings.":"No es pot llegir del servidor. Potser no teniu la configuració de control d'accés apropiada.", "Please specify the protocol for":"Si us plau, especifiqueu el protocol per a", "Can't read swagger JSON from":"No es pot llegir el JSON de swagger des de", "Finished Loading Resource Information. Rendering Swagger UI":"Finalitzada la càrrega del recurs informatiu. Renderitzant Swagger UI", "Unable to read api":"No es pot llegir l'api", "from path":"des de la ruta", "server returned":"el servidor ha retornat" }); ================================================ FILE: chapter02 -- boot/src/main/webapp/swagger/lang/el.js ================================================ 'use strict'; /* jshint quotmark: double */ window.SwaggerTranslator.learn({ "Warning: Deprecated":"Προειδοποίηση: Έχει αποσυρθεί", "Implementation Notes":"Σημειώσεις Υλοποίησης", "Response Class":"Απόκριση", "Status":"Κατάσταση", "Parameters":"Παράμετροι", "Parameter":"Παράμετρος", "Value":"Τιμή", "Description":"Περιγραφή", "Parameter Type":"Τύπος Παραμέτρου", "Data Type":"Τύπος Δεδομένων", "Response Messages":"Μηνύματα Απόκρισης", "HTTP Status Code":"Κωδικός Κατάστασης HTTP", "Reason":"Αιτιολογία", "Response Model":"Μοντέλο Απόκρισης", "Request URL":"URL Αιτήματος", "Response Body":"Σώμα Απόκρισης", "Response Code":"Κωδικός Απόκρισης", "Response Headers":"Επικεφαλίδες Απόκρισης", "Hide Response":"Απόκρυψη Απόκρισης", "Headers":"Επικεφαλίδες", "Try it out!":"Δοκιμάστε το!", "Show/Hide":"Εμφάνιση/Απόκρυψη", "List Operations":"Λίστα Λειτουργιών", "Expand Operations":"Ανάπτυξη Λειτουργιών", "Raw":"Ακατέργαστο", "can't parse JSON. Raw result":"αδυναμία ανάλυσης JSON. Ακατέργαστο αποτέλεσμα", "Example Value":"Παράδειγμα Τιμής", "Model Schema":"Σχήμα Μοντέλου", "Model":"Μοντέλο", "Click to set as parameter value":"Πατήστε για να θέσετε τιμή παραμέτρου", "apply":"εφαρμογή", "Username":"Όνομα χρήση", "Password":"Κωδικός πρόσβασης", "Terms of service":"Όροι χρήσης", "Created by":"Δημιουργήθηκε από", "See more at":"Δείτε περισσότερα στο", "Contact the developer":"Επικοινωνήστε με τον προγραμματιστή", "api version":"έκδοση api", "Response Content Type":"Τύπος Περιεχομένου Απόκρισης", "Parameter content type:":"Τύπος περιεχομένου παραμέτρου:", "fetching resource":"παραλαβή πόρου", "fetching resource list":"παραλαβή λίστας πόρων", "Explore":"Εξερεύνηση", "Show Swagger Petstore Example Apis":"Εμφάνιση Api Δειγμάτων Petstore του Swagger", "Can't read from server. It may not have the appropriate access-control-origin settings.":"Αδυναμία ανάγνωσης από τον εξυπηρετητή. Μπορεί να μην έχει κατάλληλες ρυθμίσεις για access-control-origin.", "Please specify the protocol for":"Παρακαλώ προσδιορίστε το πρωτόκολλο για", "Can't read swagger JSON from":"Αδυναμία ανάγνωσης swagger JSON από", "Finished Loading Resource Information. Rendering Swagger UI":"Ολοκλήρωση Φόρτωσης Πληροφορικών Πόρου. Παρουσίαση Swagger UI", "Unable to read api":"Αδυναμία ανάγνωσης api", "from path":"από το μονοπάτι", "server returned":"ο εξυπηρετηρής επέστρεψε" }); ================================================ FILE: chapter02 -- boot/src/main/webapp/swagger/lang/en.js ================================================ 'use strict'; /* jshint quotmark: double */ window.SwaggerTranslator.learn({ "Warning: Deprecated":"Warning: Deprecated", "Implementation Notes":"Implementation Notes", "Response Class":"Response Class", "Status":"Status", "Parameters":"Parameters", "Parameter":"Parameter", "Value":"Value", "Description":"Description", "Parameter Type":"Parameter Type", "Data Type":"Data Type", "Response Messages":"Response Messages", "HTTP Status Code":"HTTP Status Code", "Reason":"Reason", "Response Model":"Response Model", "Request URL":"Request URL", "Response Body":"Response Body", "Response Code":"Response Code", "Response Headers":"Response Headers", "Hide Response":"Hide Response", "Headers":"Headers", "Try it out!":"Try it out!", "Show/Hide":"Show/Hide", "List Operations":"List Operations", "Expand Operations":"Expand Operations", "Raw":"Raw", "can't parse JSON. Raw result":"can't parse JSON. Raw result", "Example Value":"Example Value", "Model Schema":"Model Schema", "Model":"Model", "Click to set as parameter value":"Click to set as parameter value", "apply":"apply", "Username":"Username", "Password":"Password", "Terms of service":"Terms of service", "Created by":"Created by", "See more at":"See more at", "Contact the developer":"Contact the developer", "api version":"api version", "Response Content Type":"Response Content Type", "Parameter content type:":"Parameter content type:", "fetching resource":"fetching resource", "fetching resource list":"fetching resource list", "Explore":"Explore", "Show Swagger Petstore Example Apis":"Show Swagger Petstore Example Apis", "Can't read from server. It may not have the appropriate access-control-origin settings.":"Can't read from server. It may not have the appropriate access-control-origin settings.", "Please specify the protocol for":"Please specify the protocol for", "Can't read swagger JSON from":"Can't read swagger JSON from", "Finished Loading Resource Information. Rendering Swagger UI":"Finished Loading Resource Information. Rendering Swagger UI", "Unable to read api":"Unable to read api", "from path":"from path", "server returned":"server returned" }); ================================================ FILE: chapter02 -- boot/src/main/webapp/swagger/lang/es.js ================================================ 'use strict'; /* jshint quotmark: double */ window.SwaggerTranslator.learn({ "Warning: Deprecated":"Advertencia: Obsoleto", "Implementation Notes":"Notas de implementación", "Response Class":"Clase de la Respuesta", "Status":"Status", "Parameters":"Parámetros", "Parameter":"Parámetro", "Value":"Valor", "Description":"Descripción", "Parameter Type":"Tipo del Parámetro", "Data Type":"Tipo del Dato", "Response Messages":"Mensajes de la Respuesta", "HTTP Status Code":"Código de Status HTTP", "Reason":"Razón", "Response Model":"Modelo de la Respuesta", "Request URL":"URL de la Solicitud", "Response Body":"Cuerpo de la Respuesta", "Response Code":"Código de la Respuesta", "Response Headers":"Encabezados de la Respuesta", "Hide Response":"Ocultar Respuesta", "Try it out!":"Pruébalo!", "Show/Hide":"Mostrar/Ocultar", "List Operations":"Listar Operaciones", "Expand Operations":"Expandir Operaciones", "Raw":"Crudo", "can't parse JSON. Raw result":"no puede parsear el JSON. Resultado crudo", "Example Value":"Valor de Ejemplo", "Model Schema":"Esquema del Modelo", "Model":"Modelo", "apply":"aplicar", "Username":"Nombre de usuario", "Password":"Contraseña", "Terms of service":"Términos de Servicio", "Created by":"Creado por", "See more at":"Ver más en", "Contact the developer":"Contactar al desarrollador", "api version":"versión de la api", "Response Content Type":"Tipo de Contenido (Content Type) de la Respuesta", "fetching resource":"buscando recurso", "fetching resource list":"buscando lista del recurso", "Explore":"Explorar", "Show Swagger Petstore Example Apis":"Mostrar Api Ejemplo de Swagger Petstore", "Can't read from server. It may not have the appropriate access-control-origin settings.":"No se puede leer del servidor. Tal vez no tiene la configuración de control de acceso de origen (access-control-origin) apropiado.", "Please specify the protocol for":"Por favor, especificar el protocola para", "Can't read swagger JSON from":"No se puede leer el JSON de swagger desde", "Finished Loading Resource Information. Rendering Swagger UI":"Finalizada la carga del recurso de Información. Mostrando Swagger UI", "Unable to read api":"No se puede leer la api", "from path":"desde ruta", "server returned":"el servidor retornó" }); ================================================ FILE: chapter02 -- boot/src/main/webapp/swagger/lang/fr.js ================================================ 'use strict'; /* jshint quotmark: double */ window.SwaggerTranslator.learn({ "Warning: Deprecated":"Avertissement : Obsolète", "Implementation Notes":"Notes d'implémentation", "Response Class":"Classe de la réponse", "Status":"Statut", "Parameters":"Paramètres", "Parameter":"Paramètre", "Value":"Valeur", "Description":"Description", "Parameter Type":"Type du paramètre", "Data Type":"Type de données", "Response Messages":"Messages de la réponse", "HTTP Status Code":"Code de statut HTTP", "Reason":"Raison", "Response Model":"Modèle de réponse", "Request URL":"URL appelée", "Response Body":"Corps de la réponse", "Response Code":"Code de la réponse", "Response Headers":"En-têtes de la réponse", "Hide Response":"Cacher la réponse", "Headers":"En-têtes", "Try it out!":"Testez !", "Show/Hide":"Afficher/Masquer", "List Operations":"Liste des opérations", "Expand Operations":"Développer les opérations", "Raw":"Brut", "can't parse JSON. Raw result":"impossible de décoder le JSON. Résultat brut", "Example Value":"Exemple la valeur", "Model Schema":"Définition du modèle", "Model":"Modèle", "apply":"appliquer", "Username":"Nom d'utilisateur", "Password":"Mot de passe", "Terms of service":"Conditions de service", "Created by":"Créé par", "See more at":"Voir plus sur", "Contact the developer":"Contacter le développeur", "api version":"version de l'api", "Response Content Type":"Content Type de la réponse", "fetching resource":"récupération de la ressource", "fetching resource list":"récupération de la liste de ressources", "Explore":"Explorer", "Show Swagger Petstore Example Apis":"Montrer les Apis de l'exemple Petstore de Swagger", "Can't read from server. It may not have the appropriate access-control-origin settings.":"Impossible de lire à partir du serveur. Il se peut que les réglages access-control-origin ne soient pas appropriés.", "Please specify the protocol for":"Veuillez spécifier un protocole pour", "Can't read swagger JSON from":"Impossible de lire le JSON swagger à partir de", "Finished Loading Resource Information. Rendering Swagger UI":"Chargement des informations terminé. Affichage de Swagger UI", "Unable to read api":"Impossible de lire l'api", "from path":"à partir du chemin", "server returned":"réponse du serveur" }); ================================================ FILE: chapter02 -- boot/src/main/webapp/swagger/lang/geo.js ================================================ 'use strict'; /* jshint quotmark: double */ window.SwaggerTranslator.learn({ "Warning: Deprecated":"ყურადღება: აღარ გამოიყენება", "Implementation Notes":"იმპლემენტაციის აღწერა", "Response Class":"რესპონს კლასი", "Status":"სტატუსი", "Parameters":"პარამეტრები", "Parameter":"პარამეტრი", "Value":"მნიშვნელობა", "Description":"აღწერა", "Parameter Type":"პარამეტრის ტიპი", "Data Type":"მონაცემის ტიპი", "Response Messages":"პასუხი", "HTTP Status Code":"HTTP სტატუსი", "Reason":"მიზეზი", "Response Model":"რესპონს მოდელი", "Request URL":"მოთხოვნის URL", "Response Body":"პასუხის სხეული", "Response Code":"პასუხის კოდი", "Response Headers":"პასუხის ჰედერები", "Hide Response":"დამალე პასუხი", "Headers":"ჰედერები", "Try it out!":"ცადე !", "Show/Hide":"გამოჩენა/დამალვა", "List Operations":"ოპერაციების სია", "Expand Operations":"ოპერაციები ვრცლად", "Raw":"ნედლი", "can't parse JSON. Raw result":"JSON-ის დამუშავება ვერ მოხერხდა. ნედლი პასუხი", "Example Value":"მაგალითი", "Model Schema":"მოდელის სტრუქტურა", "Model":"მოდელი", "Click to set as parameter value":"პარამეტრისთვის მნიშვნელობის მისანიჭებლად, დააკლიკე", "apply":"გამოყენება", "Username":"მოხმარებელი", "Password":"პაროლი", "Terms of service":"მომსახურების პირობები", "Created by":"შექმნა", "See more at":"ნახე ვრცლად", "Contact the developer":"დაუკავშირდი დეველოპერს", "api version":"api ვერსია", "Response Content Type":"პასუხის კონტენტის ტიპი", "Parameter content type:":"პარამეტრის კონტენტის ტიპი:", "fetching resource":"რესურსების მიღება", "fetching resource list":"რესურსების სიის მიღება", "Explore":"ნახვა", "Show Swagger Petstore Example Apis":"ნახე Swagger Petstore სამაგალითო Api", "Can't read from server. It may not have the appropriate access-control-origin settings.":"სერვერთან დაკავშირება ვერ ხერხდება. შეამოწმეთ access-control-origin.", "Please specify the protocol for":"მიუთითეთ პროტოკოლი", "Can't read swagger JSON from":"swagger JSON წაკითხვა ვერ მოხერხდა", "Finished Loading Resource Information. Rendering Swagger UI":"რესურსების ჩატვირთვა სრულდება. Swagger UI რენდერდება", "Unable to read api":"api წაკითხვა ვერ მოხერხდა", "from path":"მისამართიდან", "server returned":"სერვერმა დააბრუნა" }); ================================================ FILE: chapter02 -- boot/src/main/webapp/swagger/lang/it.js ================================================ 'use strict'; /* jshint quotmark: double */ window.SwaggerTranslator.learn({ "Warning: Deprecated":"Attenzione: Deprecato", "Implementation Notes":"Note di implementazione", "Response Class":"Classe della risposta", "Status":"Stato", "Parameters":"Parametri", "Parameter":"Parametro", "Value":"Valore", "Description":"Descrizione", "Parameter Type":"Tipo di parametro", "Data Type":"Tipo di dato", "Response Messages":"Messaggi della risposta", "HTTP Status Code":"Codice stato HTTP", "Reason":"Motivo", "Response Model":"Modello di risposta", "Request URL":"URL della richiesta", "Response Body":"Corpo della risposta", "Response Code":"Oggetto della risposta", "Response Headers":"Intestazioni della risposta", "Hide Response":"Nascondi risposta", "Try it out!":"Provalo!", "Show/Hide":"Mostra/Nascondi", "List Operations":"Mostra operazioni", "Expand Operations":"Espandi operazioni", "Raw":"Grezzo (raw)", "can't parse JSON. Raw result":"non è possibile parsare il JSON. Risultato grezzo (raw).", "Model Schema":"Schema del modello", "Model":"Modello", "apply":"applica", "Username":"Nome utente", "Password":"Password", "Terms of service":"Condizioni del servizio", "Created by":"Creato da", "See more at":"Informazioni aggiuntive:", "Contact the developer":"Contatta lo sviluppatore", "api version":"versione api", "Response Content Type":"Tipo di contenuto (content type) della risposta", "fetching resource":"recuperando la risorsa", "fetching resource list":"recuperando lista risorse", "Explore":"Esplora", "Show Swagger Petstore Example Apis":"Mostra le api di esempio di Swagger Petstore", "Can't read from server. It may not have the appropriate access-control-origin settings.":"Non è possibile leggere dal server. Potrebbe non avere le impostazioni di controllo accesso origine (access-control-origin) appropriate.", "Please specify the protocol for":"Si prega di specificare il protocollo per", "Can't read swagger JSON from":"Impossibile leggere JSON swagger da:", "Finished Loading Resource Information. Rendering Swagger UI":"Lettura informazioni risorse termianta. Swagger UI viene mostrata", "Unable to read api":"Impossibile leggere la api", "from path":"da cartella", "server returned":"il server ha restituito" }); ================================================ FILE: chapter02 -- boot/src/main/webapp/swagger/lang/ja.js ================================================ 'use strict'; /* jshint quotmark: double */ window.SwaggerTranslator.learn({ "Warning: Deprecated":"警告: 廃止予定", "Implementation Notes":"実装メモ", "Response Class":"レスポンスクラス", "Status":"ステータス", "Parameters":"パラメータ群", "Parameter":"パラメータ", "Value":"値", "Description":"説明", "Parameter Type":"パラメータタイプ", "Data Type":"データタイプ", "Response Messages":"レスポンスメッセージ", "HTTP Status Code":"HTTPステータスコード", "Reason":"理由", "Response Model":"レスポンスモデル", "Request URL":"リクエストURL", "Response Body":"レスポンスボディ", "Response Code":"レスポンスコード", "Response Headers":"レスポンスヘッダ", "Hide Response":"レスポンスを隠す", "Headers":"ヘッダ", "Try it out!":"実際に実行!", "Show/Hide":"表示/非表示", "List Operations":"操作一覧", "Expand Operations":"操作の展開", "Raw":"未加工", "can't parse JSON. Raw result":"JSONへ解釈できません. 未加工の結果", "Example Value":"値の例", "Model Schema":"モデルスキーマ", "Model":"モデル", "Click to set as parameter value":"パラメータ値と設定するにはクリック", "apply":"実行", "Username":"ユーザ名", "Password":"パスワード", "Terms of service":"サービス利用規約", "Created by":"Created by", "See more at":"詳細を見る", "Contact the developer":"開発者に連絡", "api version":"APIバージョン", "Response Content Type":"レスポンス コンテンツタイプ", "Parameter content type:":"パラメータコンテンツタイプ:", "fetching resource":"リソースの取得", "fetching resource list":"リソース一覧の取得", "Explore":"調査", "Show Swagger Petstore Example Apis":"SwaggerペットストアAPIの表示", "Can't read from server. It may not have the appropriate access-control-origin settings.":"サーバから読み込めません. 適切なaccess-control-origin設定を持っていない可能性があります.", "Please specify the protocol for":"プロトコルを指定してください", "Can't read swagger JSON from":"次からswagger JSONを読み込めません", "Finished Loading Resource Information. Rendering Swagger UI":"リソース情報の読み込みが完了しました. Swagger UIを描画しています", "Unable to read api":"APIを読み込めません", "from path":"次のパスから", "server returned":"サーバからの返答" }); ================================================ FILE: chapter02 -- boot/src/main/webapp/swagger/lang/ko-kr.js ================================================ 'use strict'; /* jshint quotmark: double */ window.SwaggerTranslator.learn({ "Warning: Deprecated":"경고:폐기예정됨", "Implementation Notes":"구현 노트", "Response Class":"응답 클래스", "Status":"상태", "Parameters":"매개변수들", "Parameter":"매개변수", "Value":"값", "Description":"설명", "Parameter Type":"매개변수 타입", "Data Type":"데이터 타입", "Response Messages":"응답 메세지", "HTTP Status Code":"HTTP 상태 코드", "Reason":"원인", "Response Model":"응답 모델", "Request URL":"요청 URL", "Response Body":"응답 본문", "Response Code":"응답 코드", "Response Headers":"응답 헤더", "Hide Response":"응답 숨기기", "Headers":"헤더", "Try it out!":"써보기!", "Show/Hide":"보이기/숨기기", "List Operations":"목록 작업", "Expand Operations":"전개 작업", "Raw":"원본", "can't parse JSON. Raw result":"JSON을 파싱할수 없음. 원본결과:", "Model Schema":"모델 스키마", "Model":"모델", "apply":"적용", "Username":"사용자 이름", "Password":"암호", "Terms of service":"이용약관", "Created by":"작성자", "See more at":"추가정보:", "Contact the developer":"개발자에게 문의", "api version":"api버전", "Response Content Type":"응답Content Type", "fetching resource":"리소스 가져오기", "fetching resource list":"리소스 목록 가져오기", "Explore":"탐색", "Show Swagger Petstore Example Apis":"Swagger Petstore 예제 보기", "Can't read from server. It may not have the appropriate access-control-origin settings.":"서버로부터 읽어들일수 없습니다. access-control-origin 설정이 올바르지 않을수 있습니다.", "Please specify the protocol for":"다음을 위한 프로토콜을 정하세요", "Can't read swagger JSON from":"swagger JSON 을 다음으로 부터 읽을수 없습니다", "Finished Loading Resource Information. Rendering Swagger UI":"리소스 정보 불러오기 완료. Swagger UI 랜더링", "Unable to read api":"api를 읽을 수 없습니다.", "from path":"다음 경로로 부터", "server returned":"서버 응답함." }); ================================================ FILE: chapter02 -- boot/src/main/webapp/swagger/lang/pl.js ================================================ 'use strict'; /* jshint quotmark: double */ window.SwaggerTranslator.learn({ "Warning: Deprecated":"Uwaga: Wycofane", "Implementation Notes":"Uwagi Implementacji", "Response Class":"Klasa Odpowiedzi", "Status":"Status", "Parameters":"Parametry", "Parameter":"Parametr", "Value":"Wartość", "Description":"Opis", "Parameter Type":"Typ Parametru", "Data Type":"Typ Danych", "Response Messages":"Wiadomości Odpowiedzi", "HTTP Status Code":"Kod Statusu HTTP", "Reason":"Przyczyna", "Response Model":"Model Odpowiedzi", "Request URL":"URL Wywołania", "Response Body":"Treść Odpowiedzi", "Response Code":"Kod Odpowiedzi", "Response Headers":"Nagłówki Odpowiedzi", "Hide Response":"Ukryj Odpowiedź", "Headers":"Nagłówki", "Try it out!":"Wypróbuj!", "Show/Hide":"Pokaż/Ukryj", "List Operations":"Lista Operacji", "Expand Operations":"Rozwiń Operacje", "Raw":"Nieprzetworzone", "can't parse JSON. Raw result":"nie można przetworzyć pliku JSON. Nieprzetworzone dane", "Model Schema":"Schemat Modelu", "Model":"Model", "apply":"użyj", "Username":"Nazwa użytkownika", "Password":"Hasło", "Terms of service":"Warunki używania", "Created by":"Utworzone przez", "See more at":"Zobacz więcej na", "Contact the developer":"Kontakt z deweloperem", "api version":"wersja api", "Response Content Type":"Typ Zasobu Odpowiedzi", "fetching resource":"ładowanie zasobu", "fetching resource list":"ładowanie listy zasobów", "Explore":"Eksploruj", "Show Swagger Petstore Example Apis":"Pokaż Przykładowe Api Swagger Petstore", "Can't read from server. It may not have the appropriate access-control-origin settings.":"Brak połączenia z serwerem. Może on nie mieć odpowiednich ustawień access-control-origin.", "Please specify the protocol for":"Proszę podać protokół dla", "Can't read swagger JSON from":"Nie można odczytać swagger JSON z", "Finished Loading Resource Information. Rendering Swagger UI":"Ukończono Ładowanie Informacji o Zasobie. Renderowanie Swagger UI", "Unable to read api":"Nie można odczytać api", "from path":"ze ścieżki", "server returned":"serwer zwrócił" }); ================================================ FILE: chapter02 -- boot/src/main/webapp/swagger/lang/pt.js ================================================ 'use strict'; /* jshint quotmark: double */ window.SwaggerTranslator.learn({ "Warning: Deprecated":"Aviso: Depreciado", "Implementation Notes":"Notas de Implementação", "Response Class":"Classe de resposta", "Status":"Status", "Parameters":"Parâmetros", "Parameter":"Parâmetro", "Value":"Valor", "Description":"Descrição", "Parameter Type":"Tipo de parâmetro", "Data Type":"Tipo de dados", "Response Messages":"Mensagens de resposta", "HTTP Status Code":"Código de status HTTP", "Reason":"Razão", "Response Model":"Modelo resposta", "Request URL":"URL requisição", "Response Body":"Corpo da resposta", "Response Code":"Código da resposta", "Response Headers":"Cabeçalho da resposta", "Headers":"Cabeçalhos", "Hide Response":"Esconder resposta", "Try it out!":"Tente agora!", "Show/Hide":"Mostrar/Esconder", "List Operations":"Listar operações", "Expand Operations":"Expandir operações", "Raw":"Cru", "can't parse JSON. Raw result":"Falha ao analisar JSON. Resulto cru", "Model Schema":"Modelo esquema", "Model":"Modelo", "apply":"Aplicar", "Username":"Usuário", "Password":"Senha", "Terms of service":"Termos do serviço", "Created by":"Criado por", "See more at":"Veja mais em", "Contact the developer":"Contate o desenvolvedor", "api version":"Versão api", "Response Content Type":"Tipo de conteúdo da resposta", "fetching resource":"busca recurso", "fetching resource list":"buscando lista de recursos", "Explore":"Explorar", "Show Swagger Petstore Example Apis":"Show Swagger Petstore Example Apis", "Can't read from server. It may not have the appropriate access-control-origin settings.":"Não é possível ler do servidor. Pode não ter as apropriadas configurações access-control-origin", "Please specify the protocol for":"Por favor especifique o protocolo", "Can't read swagger JSON from":"Não é possível ler o JSON Swagger de", "Finished Loading Resource Information. Rendering Swagger UI":"Carregar informação de recurso finalizada. Renderizando Swagger UI", "Unable to read api":"Não foi possível ler api", "from path":"do caminho", "server returned":"servidor retornou" }); ================================================ FILE: chapter02 -- boot/src/main/webapp/swagger/lang/ru.js ================================================ 'use strict'; /* jshint quotmark: double */ window.SwaggerTranslator.learn({ "Warning: Deprecated":"Предупреждение: Устарело", "Implementation Notes":"Заметки", "Response Class":"Пример ответа", "Status":"Статус", "Parameters":"Параметры", "Parameter":"Параметр", "Value":"Значение", "Description":"Описание", "Parameter Type":"Тип параметра", "Data Type":"Тип данных", "HTTP Status Code":"HTTP код", "Reason":"Причина", "Response Model":"Структура ответа", "Request URL":"URL запроса", "Response Body":"Тело ответа", "Response Code":"HTTP код ответа", "Response Headers":"Заголовки ответа", "Hide Response":"Спрятать ответ", "Headers":"Заголовки", "Response Messages":"Что может прийти в ответ", "Try it out!":"Попробовать!", "Show/Hide":"Показать/Скрыть", "List Operations":"Операции кратко", "Expand Operations":"Операции подробно", "Raw":"В сыром виде", "can't parse JSON. Raw result":"Не удается распарсить ответ:", "Example Value":"Пример", "Model Schema":"Структура", "Model":"Описание", "Click to set as parameter value":"Нажмите, чтобы испльзовать в качестве значения параметра", "apply":"применить", "Username":"Имя пользователя", "Password":"Пароль", "Terms of service":"Условия использования", "Created by":"Разработано", "See more at":"Еще тут", "Contact the developer":"Связаться с разработчиком", "api version":"Версия API", "Response Content Type":"Content Type ответа", "Parameter content type:":"Content Type параметра:", "fetching resource":"Получение ресурса", "fetching resource list":"Получение ресурсов", "Explore":"Показать", "Show Swagger Petstore Example Apis":"Показать примеры АПИ", "Can't read from server. It may not have the appropriate access-control-origin settings.":"Не удается получить ответ от сервера. Возможно, проблема с настройками доступа", "Please specify the protocol for":"Пожалуйста, укажите протокол для", "Can't read swagger JSON from":"Не получается прочитать swagger json из", "Finished Loading Resource Information. Rendering Swagger UI":"Загрузка информации о ресурсах завершена. Рендерим", "Unable to read api":"Не удалось прочитать api", "from path":"по адресу", "server returned":"сервер сказал" }); ================================================ FILE: chapter02 -- boot/src/main/webapp/swagger/lang/tr.js ================================================ 'use strict'; /* jshint quotmark: double */ window.SwaggerTranslator.learn({ "Warning: Deprecated":"Uyarı: Deprecated", "Implementation Notes":"Gerçekleştirim Notları", "Response Class":"Dönen Sınıf", "Status":"Statü", "Parameters":"Parametreler", "Parameter":"Parametre", "Value":"Değer", "Description":"Açıklama", "Parameter Type":"Parametre Tipi", "Data Type":"Veri Tipi", "Response Messages":"Dönüş Mesajı", "HTTP Status Code":"HTTP Statü Kodu", "Reason":"Gerekçe", "Response Model":"Dönüş Modeli", "Request URL":"İstek URL", "Response Body":"Dönüş İçeriği", "Response Code":"Dönüş Kodu", "Response Headers":"Dönüş Üst Bilgileri", "Hide Response":"Dönüşü Gizle", "Headers":"Üst Bilgiler", "Try it out!":"Dene!", "Show/Hide":"Göster/Gizle", "List Operations":"Operasyonları Listele", "Expand Operations":"Operasyonları Aç", "Raw":"Ham", "can't parse JSON. Raw result":"JSON çözümlenemiyor. Ham sonuç", "Model Schema":"Model Şema", "Model":"Model", "apply":"uygula", "Username":"Kullanıcı Adı", "Password":"Parola", "Terms of service":"Servis şartları", "Created by":"Oluşturan", "See more at":"Daha fazlası için", "Contact the developer":"Geliştirici ile İletişime Geçin", "api version":"api versiyon", "Response Content Type":"Dönüş İçerik Tipi", "fetching resource":"kaynak getiriliyor", "fetching resource list":"kaynak listesi getiriliyor", "Explore":"Keşfet", "Show Swagger Petstore Example Apis":"Swagger Petstore Örnek Api'yi Gör", "Can't read from server. It may not have the appropriate access-control-origin settings.":"Sunucudan okuma yapılamıyor. Sunucu access-control-origin ayarlarınızı kontrol edin.", "Please specify the protocol for":"Lütfen istenen adres için protokol belirtiniz", "Can't read swagger JSON from":"Swagger JSON bu kaynaktan okunamıyor", "Finished Loading Resource Information. Rendering Swagger UI":"Kaynak baglantısı tamamlandı. Swagger UI gösterime hazırlanıyor", "Unable to read api":"api okunamadı", "from path":"yoldan", "server returned":"sunucuya dönüldü" }); ================================================ FILE: chapter02 -- boot/src/main/webapp/swagger/lang/translator.js ================================================ 'use strict'; /** * Translator for documentation pages. * * To enable translation you should include one of language-files in your index.html * after . * For example - * * If you wish to translate some new texts you should do two things: * 1. Add a new phrase pair ("New Phrase": "New Translation") into your language file (for example lang/ru.js). It will be great if you add it in other language files too. * 2. Mark that text it templates this way New Phrase or . * The main thing here is attribute data-sw-translate. Only inner html, title-attribute and value-attribute are going to translate. * */ window.SwaggerTranslator = { _words:[], translate: function(sel) { var $this = this; sel = sel || '[data-sw-translate]'; $(sel).each(function() { $(this).html($this._tryTranslate($(this).html())); $(this).val($this._tryTranslate($(this).val())); $(this).attr('title', $this._tryTranslate($(this).attr('title'))); }); }, _tryTranslate: function(word) { return this._words[$.trim(word)] !== undefined ? this._words[$.trim(word)] : word; }, learn: function(wordsMap) { this._words = wordsMap; } }; ================================================ FILE: chapter02 -- boot/src/main/webapp/swagger/lang/zh-cn.js ================================================ 'use strict'; /* jshint quotmark: double */ window.SwaggerTranslator.learn({ "Warning: Deprecated":"警告:已过时", "Implementation Notes":"实现备注", "Response Class":"响应类", "Status":"状态", "Parameters":"参数", "Parameter":"参数", "Value":"值", "Description":"描述", "Parameter Type":"参数类型", "Data Type":"数据类型", "Response Messages":"响应消息", "HTTP Status Code":"HTTP状态码", "Reason":"原因", "Response Model":"响应模型", "Request URL":"请求URL", "Response Body":"响应体", "Response Code":"响应码", "Response Headers":"响应头", "Hide Response":"隐藏响应", "Headers":"头", "Try it out!":"试一下!", "Show/Hide":"显示/隐藏", "List Operations":"显示操作", "Expand Operations":"展开操作", "Raw":"原始", "can't parse JSON. Raw result":"无法解析JSON. 原始结果", "Example Value":"示例", "Click to set as parameter value":"点击设置参数", "Model Schema":"模型架构", "Model":"模型", "apply":"应用", "Username":"用户名", "Password":"密码", "Terms of service":"服务条款", "Created by":"创建者", "See more at":"查看更多:", "Contact the developer":"联系开发者", "api version":"api版本", "Response Content Type":"响应Content Type", "Parameter content type:":"参数类型:", "fetching resource":"正在获取资源", "fetching resource list":"正在获取资源列表", "Explore":"浏览", "Show Swagger Petstore Example Apis":"显示 Swagger Petstore 示例 Apis", "Can't read from server. It may not have the appropriate access-control-origin settings.":"无法从服务器读取。可能没有正确设置access-control-origin。", "Please specify the protocol for":"请指定协议:", "Can't read swagger JSON from":"无法读取swagger JSON于", "Finished Loading Resource Information. Rendering Swagger UI":"已加载资源信息。正在渲染Swagger UI", "Unable to read api":"无法读取api", "from path":"从路径", "server returned":"服务器返回" }); ================================================ FILE: chapter02 -- boot/src/main/webapp/swagger/lib/backbone-min.js ================================================ !function(t,e){if("function"==typeof define&&define.amd)define(["underscore","jquery","exports"],function(i,n,s){t.Backbone=e(t,s,i,n)});else if("undefined"!=typeof exports){var i=require("underscore");e(t,exports,i)}else t.Backbone=e(t,{},t._,t.jQuery||t.Zepto||t.ender||t.$)}(this,function(t,e,i,n){var s=t.Backbone,r=[],a=(r.push,r.slice);r.splice;e.VERSION="1.1.2",e.$=n,e.noConflict=function(){return t.Backbone=s,this},e.emulateHTTP=!1,e.emulateJSON=!1;var o=e.Events={on:function(t,e,i){if(!c(this,"on",t,[e,i])||!e)return this;this._events||(this._events={});var n=this._events[t]||(this._events[t]=[]);return n.push({callback:e,context:i,ctx:i||this}),this},once:function(t,e,n){if(!c(this,"once",t,[e,n])||!e)return this;var s=this,r=i.once(function(){s.off(t,r),e.apply(this,arguments)});return r._callback=e,this.on(t,r,n)},off:function(t,e,n){var s,r,a,o,h,u,l,d;if(!this._events||!c(this,"off",t,[e,n]))return this;if(!t&&!e&&!n)return this._events=void 0,this;for(o=t?[t]:i.keys(this._events),h=0,u=o.length;h").attr(t);this.setElement(n,!1)}}}),e.sync=function(t,n,s){var r=E[t];i.defaults(s||(s={}),{emulateHTTP:e.emulateHTTP,emulateJSON:e.emulateJSON});var a={type:r,dataType:"json"};if(s.url||(a.url=i.result(n,"url")||j()),null!=s.data||!n||"create"!==t&&"update"!==t&&"patch"!==t||(a.contentType="application/json",a.data=JSON.stringify(s.attrs||n.toJSON(s))),s.emulateJSON&&(a.contentType="application/x-www-form-urlencoded",a.data=a.data?{model:a.data}:{}),s.emulateHTTP&&("PUT"===r||"DELETE"===r||"PATCH"===r)){a.type="POST",s.emulateJSON&&(a.data._method=r);var o=s.beforeSend;s.beforeSend=function(t){if(t.setRequestHeader("X-HTTP-Method-Override",r),o)return o.apply(this,arguments)}}"GET"===a.type||s.emulateJSON||(a.processData=!1),"PATCH"===a.type&&x&&(a.xhr=function(){return new ActiveXObject("Microsoft.XMLHTTP")});var h=s.xhr=e.ajax(i.extend(a,s));return n.trigger("request",n,h,s),h};var x=!("undefined"==typeof window||!window.ActiveXObject||window.XMLHttpRequest&&(new XMLHttpRequest).dispatchEvent),E={create:"POST",update:"PUT",patch:"PATCH","delete":"DELETE",read:"GET"};e.ajax=function(){return e.$.ajax.apply(e.$,arguments)};var k=e.Router=function(t){t||(t={}),t.routes&&(this.routes=t.routes),this._bindRoutes(),this.initialize.apply(this,arguments)},T=/\((.*?)\)/g,$=/(\(\?)?:\w+/g,S=/\*\w+/g,H=/[\-{}\[\]+?.,\\\^$|#\s]/g;i.extend(k.prototype,o,{initialize:function(){},route:function(t,n,s){i.isRegExp(t)||(t=this._routeToRegExp(t)),i.isFunction(n)&&(s=n,n=""),s||(s=this[n]);var r=this;return e.history.route(t,function(i){var a=r._extractParameters(t,i);r.execute(s,a),r.trigger.apply(r,["route:"+n].concat(a)),r.trigger("route",n,a),e.history.trigger("route",r,n,a)}),this},execute:function(t,e){t&&t.apply(this,e)},navigate:function(t,i){return e.history.navigate(t,i),this},_bindRoutes:function(){if(this.routes){this.routes=i.result(this,"routes");for(var t,e=i.keys(this.routes);null!=(t=e.pop());)this.route(t,this.routes[t])}},_routeToRegExp:function(t){return t=t.replace(H,"\\$&").replace(T,"(?:$1)?").replace($,function(t,e){return e?t:"([^/?]+)"}).replace(S,"([^?]*?)"),new RegExp("^"+t+"(?:\\?([\\s\\S]*))?$")},_extractParameters:function(t,e){var n=t.exec(e).slice(1);return i.map(n,function(t,e){return e===n.length-1?t||null:t?decodeURIComponent(t):null})}});var A=e.History=function(){this.handlers=[],i.bindAll(this,"checkUrl"),"undefined"!=typeof window&&(this.location=window.location,this.history=window.history)},I=/^[#\/]|\s+$/g,N=/^\/+|\/+$/g,R=/msie [\w.]+/,O=/\/$/,P=/#.*$/;A.started=!1,i.extend(A.prototype,o,{interval:50,atRoot:function(){return this.location.pathname.replace(/[^\/]$/,"$&/")===this.root},getHash:function(t){var e=(t||this).location.href.match(/#(.*)$/);return e?e[1]:""},getFragment:function(t,e){if(null==t)if(this._hasPushState||!this._wantsHashChange||e){t=decodeURI(this.location.pathname+this.location.search);var i=this.root.replace(O,"");t.indexOf(i)||(t=t.slice(i.length))}else t=this.getHash();return t.replace(I,"")},start:function(t){if(A.started)throw new Error("Backbone.history has already been started");A.started=!0,this.options=i.extend({root:"/"},this.options,t),this.root=this.options.root,this._wantsHashChange=this.options.hashChange!==!1,this._wantsPushState=!!this.options.pushState,this._hasPushState=!!(this.options.pushState&&this.history&&this.history.pushState);var n=this.getFragment(),s=document.documentMode,r=R.exec(navigator.userAgent.toLowerCase())&&(!s||s<=7);if(this.root=("/"+this.root+"/").replace(N,"/"),r&&this._wantsHashChange){var a=e.$('