diff --git a/.travis.yml b/.travis.yml index 05d6fca..3958cc5 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,7 +1,7 @@ language: java jdk: - - openjdk10 + - openjdk11 script: mvn package diff --git a/README.md b/README.md index 919bb72..152248b 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@ Status](https://travis-ci.org/igor-baiborodine/jpetstore-6-vaadin-spring-boot.sv #### This project is an exercise to port the original [JPetStore-6](https://github.com/mybatis/jpetstore-6) to Vaadin and Spring Boot. ### Branches -* **master** - Java 10, Vaadin 8.5.1 (active) +* **master** - Java 11, Vaadin 8.9.0 (active) * **vaadin-v8-java-v8** - Java 8, Vaadin 8.3.0 (legacy) * **vaadin-v8-with-v7-compatibility** - Vaadin 8.1.5 with Vaadin 7 compatibility (legacy) * **vaadin-v7** - Vaadin 7.7.7 (legacy) @@ -29,7 +29,7 @@ mvn clean package spring-boot:run ``` ### Software and technologies used: -* [Java 10](http://www.oracle.com/technetwork/java/javase/downloads/jdk10-downloads-4416644.html) +* [Java 11](https://www.oracle.com/technetwork/java/javase/downloads/jdk11-downloads-5066655.html) * [Vaadin 8](https://vaadin.com/home) with [Viritin](https://vaadin.com/directory#!addon/viritin) add-on * [Spring 5](http://projects.spring.io/spring-framework/#quick-start) * [Spring Boot 2](http://projects.spring.io/spring-boot/) diff --git a/pom.xml b/pom.xml index 5ffc6da..0c66641 100644 --- a/pom.xml +++ b/pom.xml @@ -5,13 +5,13 @@ com.kiroule jpetstore-6-vaadin-spring-boot - 0.0.3-SNAPSHOT + 0.0.4-SNAPSHOT jar org.springframework.boot spring-boot-starter-parent - 2.0.4.RELEASE + 2.1.8.RELEASE @@ -19,14 +19,15 @@ JPetStore Vaadin 8 with Spring Boot - 8.5.1 - 3.0.0 + 8.9.0 + + 3.2.1 ${vaadin.version} 2.0.0.RELEASE UTF-8 - 10 - 10 + 11 + 11 cdn @@ -135,6 +136,12 @@ vaadin-spring-addon-eventbus ${org.vaadin.spring.version} + + org.springframework.security.oauth + spring-security-oauth2 + 2.3.4.RELEASE + + org.hsqldb hsqldb diff --git a/src/main/java/com/kiroule/jpetstore/vaadinspring/config/ServiceConfig.java b/src/main/java/com/kiroule/jpetstore/vaadinspring/config/ServiceConfig.java index b8a6897..61b1500 100644 --- a/src/main/java/com/kiroule/jpetstore/vaadinspring/config/ServiceConfig.java +++ b/src/main/java/com/kiroule/jpetstore/vaadinspring/config/ServiceConfig.java @@ -2,7 +2,7 @@ import com.kiroule.jpetstore.vaadinspring.service.AccountService; import com.kiroule.jpetstore.vaadinspring.service.CatalogService; -import com.kiroule.jpetstore.vaadinspring.service.LoginService; +import com.kiroule.jpetstore.vaadinspring.service.SigninService; import com.kiroule.jpetstore.vaadinspring.service.OrderService; import org.springframework.context.annotation.Bean; @@ -35,8 +35,8 @@ public OrderService orderService() { } @Bean - public LoginService loginService() { - return new LoginService(); + public SigninService loginService() { + return new SigninService(); } @Bean diff --git a/src/main/java/com/kiroule/jpetstore/vaadinspring/service/LoginService.java b/src/main/java/com/kiroule/jpetstore/vaadinspring/service/SigninService.java similarity index 96% rename from src/main/java/com/kiroule/jpetstore/vaadinspring/service/LoginService.java rename to src/main/java/com/kiroule/jpetstore/vaadinspring/service/SigninService.java index 7ddd2d5..05b5e7d 100644 --- a/src/main/java/com/kiroule/jpetstore/vaadinspring/service/LoginService.java +++ b/src/main/java/com/kiroule/jpetstore/vaadinspring/service/SigninService.java @@ -11,7 +11,7 @@ * @author Igor Baiborodine */ @Component -public class LoginService { +public class SigninService { @Autowired private AccountService accountService; diff --git a/src/main/java/com/kiroule/jpetstore/vaadinspring/ui/component/TopNavBar.java b/src/main/java/com/kiroule/jpetstore/vaadinspring/ui/component/TopNavBar.java index 0dd7f45..2c787b6 100644 --- a/src/main/java/com/kiroule/jpetstore/vaadinspring/ui/component/TopNavBar.java +++ b/src/main/java/com/kiroule/jpetstore/vaadinspring/ui/component/TopNavBar.java @@ -1,7 +1,7 @@ package com.kiroule.jpetstore.vaadinspring.ui.component; import com.kiroule.jpetstore.vaadinspring.domain.Account; -import com.kiroule.jpetstore.vaadinspring.service.LoginService; +import com.kiroule.jpetstore.vaadinspring.service.SigninService; import com.kiroule.jpetstore.vaadinspring.ui.event.UILoginEvent; import com.kiroule.jpetstore.vaadinspring.ui.event.UILogoutEvent; import com.kiroule.jpetstore.vaadinspring.ui.event.UINavigationEvent; @@ -49,17 +49,17 @@ public class TopNavBar extends CssLayout implements HasUIEventBus { private final NavBarButtonUpdater navBarButtonUpdater; private final SigninForm signinForm; - private final LoginService loginService; + private final SigninService signinService; private Button signinButton; private Button signoutButton; private Label userLabel; @Autowired - public TopNavBar(NavBarButtonUpdater navBarButtonUpdater, SigninForm signinForm, LoginService loginService) { + public TopNavBar(NavBarButtonUpdater navBarButtonUpdater, SigninForm signinForm, SigninService signinService) { this.navBarButtonUpdater = navBarButtonUpdater; this.signinForm = signinForm; - this.loginService = loginService; + this.signinService = signinService; } @PostConstruct @@ -89,7 +89,7 @@ public void handleAction(Object sender, Object target) { final Window popup = signinForm.openInModalWidow(); signinForm.addLoginListener(loginEvent -> { try { - Account account = loginService.login(loginEvent.getLoginParameter("username"), + Account account = signinService.login(loginEvent.getLoginParameter("username"), loginEvent.getLoginParameter("password")); getUIEventBus().publish(this, new UILoginEvent(account)); UI.getCurrent().removeWindow(popup); diff --git a/src/main/webapp/VAADIN/themes/jpetstoretheme/styles.css b/src/main/webapp/VAADIN/themes/jpetstoretheme/styles.css index a81af74..535f17c 100644 --- a/src/main/webapp/VAADIN/themes/jpetstoretheme/styles.css +++ b/src/main/webapp/VAADIN/themes/jpetstoretheme/styles.css @@ -1077,7 +1077,7 @@ */ .v-vaadin-version:after { - content: "8.5.1"; + content: "8.9.0"; } .v-widget { @@ -4376,6 +4376,10 @@ div.v-layout.v-horizontal.v-widget { left: 0; } +.jpetstoretheme .v-grid-body .v-grid-header > .v-grid-row { + position: relative; +} + .jpetstoretheme .v-grid-row { display: block; } @@ -4551,6 +4555,8 @@ div.v-layout.v-horizontal.v-widget { -webkit-box-shadow: 1px 0 2px rgba(0, 0, 0, 0.1); box-shadow: 1px 0 2px rgba(0, 0, 0, 0.1); border-right: 1px solid #d4d4d4; + position: relative; + z-index: 11; } .jpetstoretheme .v-grid-cell.frozen + th, .jpetstoretheme .v-grid-cell.frozen + td { @@ -6271,9 +6277,14 @@ div.v-layout.v-horizontal.v-widget { .jpetstoretheme .v-datefield-popup td.v-datefield-calendarpanel-month { width: 148px; + cursor: default; color: #197de1; } +.jpetstoretheme .v-datefield-popup td.v-datefield-calendarpanel-month.header-month-year { + cursor: pointer; +} + .jpetstoretheme .v-datefield-popup .v-datefield-calendarpanel-year td.v-datefield-calendarpanel-month { width: 74px; } @@ -6456,9 +6467,14 @@ div.v-layout.v-horizontal.v-widget { .jpetstoretheme td.v-datefield-calendarpanel-month { width: 148px; + cursor: default; color: #197de1; } +.jpetstoretheme td.v-datefield-calendarpanel-month.header-month-year { + cursor: pointer; +} + .jpetstoretheme .v-datefield-calendarpanel-year td.v-datefield-calendarpanel-month { width: 74px; } @@ -7111,9 +7127,14 @@ div.v-layout.v-horizontal.v-widget { .jpetstoretheme td.v-inline-datefield-calendarpanel-month { width: 148px; + cursor: default; color: #197de1; } +.jpetstoretheme td.v-inline-datefield-calendarpanel-month.header-month-year { + cursor: pointer; +} + .jpetstoretheme .v-inline-datefield-calendarpanel-year td.v-inline-datefield-calendarpanel-month { width: 74px; } @@ -9022,6 +9043,10 @@ div.v-layout.v-horizontal.v-widget { left: 0; } +.jpetstoretheme .v-tree8-body .v-tree8-header > .v-tree8-row { + position: relative; +} + .jpetstoretheme .v-tree8-row { display: block; } @@ -9197,6 +9222,8 @@ div.v-layout.v-horizontal.v-widget { -webkit-box-shadow: 1px 0 2px rgba(0, 0, 0, 0.1); box-shadow: 1px 0 2px rgba(0, 0, 0, 0.1); border-right: 1px solid #d4d4d4; + position: relative; + z-index: 11; } .jpetstoretheme .v-tree8-cell.frozen + th, .jpetstoretheme .v-tree8-cell.frozen + td { @@ -9913,6 +9940,70 @@ div.v-layout.v-horizontal.v-widget { padding-left: 15em; } +.jpetstoretheme .v-tree8-node.depth-16 { + padding-left: 16em; +} + +.jpetstoretheme .v-tree8-node.depth-17 { + padding-left: 17em; +} + +.jpetstoretheme .v-tree8-node.depth-18 { + padding-left: 18em; +} + +.jpetstoretheme .v-tree8-node.depth-19 { + padding-left: 19em; +} + +.jpetstoretheme .v-tree8-node.depth-20 { + padding-left: 20em; +} + +.jpetstoretheme .v-tree8-node.depth-21 { + padding-left: 21em; +} + +.jpetstoretheme .v-tree8-node.depth-22 { + padding-left: 22em; +} + +.jpetstoretheme .v-tree8-node.depth-23 { + padding-left: 23em; +} + +.jpetstoretheme .v-tree8-node.depth-24 { + padding-left: 24em; +} + +.jpetstoretheme .v-tree8-node.depth-25 { + padding-left: 25em; +} + +.jpetstoretheme .v-tree8-node.depth-26 { + padding-left: 26em; +} + +.jpetstoretheme .v-tree8-node.depth-27 { + padding-left: 27em; +} + +.jpetstoretheme .v-tree8-node.depth-28 { + padding-left: 28em; +} + +.jpetstoretheme .v-tree8-node.depth-29 { + padding-left: 29em; +} + +.jpetstoretheme .v-tree8-node.depth-30 { + padding-left: 30em; +} + +.jpetstoretheme .v-tree8-node.depth-31 { + padding-left: 31em; +} + .jpetstoretheme .v-tree8-cell-content { display: inline-block; vertical-align: middle; @@ -10098,6 +10189,10 @@ div.v-layout.v-horizontal.v-widget { left: 0; } +.jpetstoretheme .v-treegrid-body .v-treegrid-header > .v-treegrid-row { + position: relative; +} + .jpetstoretheme .v-treegrid-row { display: block; } @@ -10273,6 +10368,8 @@ div.v-layout.v-horizontal.v-widget { -webkit-box-shadow: 1px 0 2px rgba(0, 0, 0, 0.1); box-shadow: 1px 0 2px rgba(0, 0, 0, 0.1); border-right: 1px solid #d4d4d4; + position: relative; + z-index: 11; } .jpetstoretheme .v-treegrid-cell.frozen + th, .jpetstoretheme .v-treegrid-cell.frozen + td { @@ -10989,6 +11086,70 @@ div.v-layout.v-horizontal.v-widget { padding-left: 15em; } +.jpetstoretheme .v-treegrid-node.depth-16 { + padding-left: 16em; +} + +.jpetstoretheme .v-treegrid-node.depth-17 { + padding-left: 17em; +} + +.jpetstoretheme .v-treegrid-node.depth-18 { + padding-left: 18em; +} + +.jpetstoretheme .v-treegrid-node.depth-19 { + padding-left: 19em; +} + +.jpetstoretheme .v-treegrid-node.depth-20 { + padding-left: 20em; +} + +.jpetstoretheme .v-treegrid-node.depth-21 { + padding-left: 21em; +} + +.jpetstoretheme .v-treegrid-node.depth-22 { + padding-left: 22em; +} + +.jpetstoretheme .v-treegrid-node.depth-23 { + padding-left: 23em; +} + +.jpetstoretheme .v-treegrid-node.depth-24 { + padding-left: 24em; +} + +.jpetstoretheme .v-treegrid-node.depth-25 { + padding-left: 25em; +} + +.jpetstoretheme .v-treegrid-node.depth-26 { + padding-left: 26em; +} + +.jpetstoretheme .v-treegrid-node.depth-27 { + padding-left: 27em; +} + +.jpetstoretheme .v-treegrid-node.depth-28 { + padding-left: 28em; +} + +.jpetstoretheme .v-treegrid-node.depth-29 { + padding-left: 29em; +} + +.jpetstoretheme .v-treegrid-node.depth-30 { + padding-left: 30em; +} + +.jpetstoretheme .v-treegrid-node.depth-31 { + padding-left: 31em; +} + .jpetstoretheme .v-treegrid-cell-content { display: inline-block; vertical-align: middle; @@ -12474,6 +12635,14 @@ div.v-layout.v-horizontal.v-widget { text-align: right; } +.jpetstoretheme .v-tabsheet-right-aligned-tabs .v-tabsheet-spacertd { + display: inline-block !important; +} + +.jpetstoretheme .v-tabsheet-right-aligned-tabs .v-tabsheet-scroller { + padding-left: 9px; +} + .jpetstoretheme .v-tabsheet-padded-tabbar > .v-tabsheet-tabcontainer .v-tabsheet-tabs { padding: 0 9px; } diff --git a/src/test/java/com/kiroule/jpetstore/vaadinspring/Jpetstore6ApplicationIntegrationTest.java b/src/test/java/com/kiroule/jpetstore/vaadinspring/Jpetstore6ApplicationIntegrationTest.java index b869881..9cc80ef 100644 --- a/src/test/java/com/kiroule/jpetstore/vaadinspring/Jpetstore6ApplicationIntegrationTest.java +++ b/src/test/java/com/kiroule/jpetstore/vaadinspring/Jpetstore6ApplicationIntegrationTest.java @@ -2,7 +2,7 @@ import com.kiroule.jpetstore.vaadinspring.persistence.ProductMapper; import com.kiroule.jpetstore.vaadinspring.service.CatalogService; -import com.kiroule.jpetstore.vaadinspring.service.LoginService; +import com.kiroule.jpetstore.vaadinspring.service.SigninService; import org.junit.Test; import org.junit.runner.RunWith; @@ -23,12 +23,12 @@ public class Jpetstore6ApplicationIntegrationTest { @Autowired private CatalogService catalogService; @Autowired - private LoginService loginService; + private SigninService signinService; @Test public void loadContext_shouldLoadApplicationContext() { - assertThat(loginService, notNullValue()); + assertThat(signinService, notNullValue()); assertThat(productMapper, notNullValue()); assertThat(catalogService, notNullValue()); assertThat(getField(catalogService, "productMapper"), notNullValue());