Code Monkey home page Code Monkey logo

bakery-app-starter-flow-spring's Introduction

⚠️ This starter is not recommended ⚠️

This starter is not recommended for new Vaadin Flow applications. Instead, visit start.vaadin.com to configure and download a Vaadin project that reflects the current best practices.

Running the Project in Development Mode

mvn spring-boot:run or just mvn

Wait for the application to start

Open http://localhost:8080/ to view the application.

Default credentials are [email protected]/admin for admin access and [email protected]/barista for normal user access.

Note that when running in development mode, the application will not work in IE11.

Running Integration Tests and Linter

Integration tests are implemented using TestBench. The tests take a couple of minutes to run and are therefore included in a separate profile. We recommend running tests with a production build to minimize the chance of development time toolchains affecting test stability. To run the tests, execute

mvn verify -Pit,production

and make sure you have a valid TestBench license installed.

Profile it adds the following parameter to run integration tests:

-Dcom.vaadin.testbench.Parameters.runLocally=chrome

if you would like to run a separate test make sure you have added these parameters to VM Options of JUnit run configuration

Automatic Restart and Live Reload

  1. Vaadin Dev Tools interacts spring-boot-devtools and is able to automatically reload the browser when code is changed.

  2. Optionally you might want to avoid the data generator to be run on each single reload, therefore, make H2 database store entities in file-system instead of in memory by adding the following lines to the src/main/resources/application.properties

spring.datasource.url=jdbc:h2:file:~/bakery-test-data
spring.jpa.hibernate.ddl-auto=update

Running the Project in Production Mode

mvn spring-boot:run -Pproduction

The default mode when the application is built or started is 'development'. The 'production' mode is turned on by enabling the production profile when building or starting the app.

Running in Eclipse or IntelliJ

As both IDEs support running Spring Boot applications you just have to import the project and select com.vaadin.starter.bakery.Application as main class if not done automatically. Using an IDE will also allow you to speed up development even more. Just check https://vaadin.com/blog/developing-without-server-restarts.

Running Scalability Tests

NOTE SCALABILITY TESTS ARE BROKEN

The Bakery App Starter includes scalability tests. Once you have deployed a production build of Bakery you can run them to check how the app behaves under load. The scalability tests can be run completely on your local machine, but you might as well want to run locally only the test agents while the Bakery app under test is deployed to an environment that is close to your production.

In order to run the scalability tests locally:

  1. Make sure you are using Java 8 (Gatling Maven plugin does not yet work with Java 9+)

  2. Build and start Bakery in the production mode (e.g. mvn clean spring-boot:run -DskipTests -Pproduction)

  3. Open terminal in the project root

  4. Start a test from the command line:

    mvn -Pscalability gatling:test
  5. Test results are stored into target folder (e.g. to target/gatling/BaristaFlow-1487784042461/index.html)

  6. By default the scalability test starts 100 user sessions at a 100 ms interval for one repeat, all of which connect to a locally running Bakery app. These defaults can be overridden with the gatling.sessionCount, gatling.sessionStartInterval gatling.sessionRepeats, and gatling.baseUrl system properties. See an example execution for 300 users started within 50 s:

    mvn -Pscalability gatling:test -Dgatling.sessionCount=300 -Dgatling.sessionStartInterval=50

Note: If you run Bakery with an in-memory database (like H2, which is the default), it will logically use more memory than when using an external database (like PostgreSQL). It is recommend to run scalability tests for Bakery only after you have configured it to use an external database.

License

This is free and unencumbered software released into the public domain.

For full terms, see LICENSE

NOTE This project uses licensed components listed in the next section, thus licenses for those components are required during development.

Pro components

Pro components used in the starter are :

Also the tests are created using Testbench library.

bakery-app-starter-flow-spring's People

Contributors

alvarezguille avatar artur- avatar caalador avatar dependabot[bot] avatar diegocardoso avatar haiwan avatar jm-ferreira avatar johannesh2 avatar johannest avatar juhopiirainen avatar legioth avatar manolo avatar marcinvaadin avatar mikotin avatar mshabarov avatar oluwasayo avatar paulroemer avatar peppe avatar pleku avatar rogozinds avatar sissbruecker avatar someonetoignore avatar tarekoraby avatar tomivirkki avatar vaadin-bot avatar zhesun88 avatar

Stargazers

 avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

bakery-app-starter-flow-spring's Issues

Remove <jvmArguments> from Spring Boot plugin

If you have <jvmArguments> on the spring boot plugin, it will fork a new JVM when launching Spring Boot. If you run inside Eclipse, this means that when you terminate the mvn spring-boot:run process, you actually only terminate the Maven process and Spring Boot keeps running in the background.

Speed up initial startup time by removing redundant maven repositories

If doing mvn spring-boot:run with an empty local Maven cache (reproducible my removing (or temporarily renaming) your ~/.m2 folder), then Maven fetches 578 different pom.xml files. Each of those are looked up from each of the 7 maven repositories that are active for the project: vaadin-prereleases, webjars-bintray, vaadin-addons, spring-milestone, spring-snapshot, rabbit-milestone, and central. The impact of this is up 4046 separate HTTP requests just to figure out which dependencies to actually download. Depending on the latency of the network connection, this can easily consume more time than actually downloading the dependencies.

Body scrolling not handled correctly with Android Chrome

On Android Chrome, you can scroll the address bar away, but that leads dead white area below navigation bar. Also software itself is easy to crash, but that's totally different issue, so ignore the error dialog (this issue happen also without it).

Easy way to reproduce this is to open user view, and scroll up on users list. This will hide address bar, and break layout.

screenshot_20180402-160350

Service worker returns old cached versions

In the install phase in updateCache(), the version number is used to lookup the cache instance to use. In the fetch part however, matching is done against the whole caches object which can (and will) return an older version of the cached asset once you have upgraded the service worker and used a new version number.

Both caches.match calls should most likely be caches.open('static' + version).then(function(cache) { ....

This is also what the generated service worker for Expense Manager does in https://expensemanager.demo.vaadin.com/es6-bundled/service-worker.js:

      event.respondWith(
        caches.open(cacheName).then(function(cache) {
          return cache.match(urlsToCacheKeys.get(url)).then(function(response) {

Production packaging is broken

The production packaging mvn clean package -Pproduction doesn't work anymore:

[ERROR] Failed to execute goal com.vaadin:vaadin-maven-plugin:10.0.1:package-for-production (default) on project bakery-app-starter-flow-spring: Execution default of goal com.vaadin:vaadin-maven-plugin:10.0.1:package-for-production failed: The fragment file path 'src/views/login/login-view.html' was resolved to '/Users/jotatu/dev/idea/bakery-app-starter-flow-spring/target/frontend/src/views/login/login-view.html', which either does not exist or not a file. -> [Help 1]

It looks like the reason is this commit: 9758aa7

Total sum is wrong after the product is removed

Open any order to edit.
Remove any product by clicking button X.
Check the total sum, which is wrong.
More over, when the last product is removed some brackets appear.

Proper sum is recalculated only if a new product is added. Otherwise it's always stays wrong while editing.

Replace Tabs with spaces

Most Vaadin projects use spaces instead of tabs to avoid ending with mixed space-tabs in files causing confusion when reading code in other editors like vim in command line, or using diff utilities.

Good coding practices recommend the usage of spaces. I don't see a good reason to use tabs just because it's the default in Eclipse, since in most editors is spaces. Having to reconfigure your IDE each time you open this project is not a good DX

IllegalStateException Bakery Flow + Spring

Disclaimer: I hope this is right repository and issue makes sense. I am sorry if it's something is barely understandable. Also, discussion in slack: https://vaadin.slack.com/archives/C6X43FE8M/p1527158187000135

Product: Vaadin 10 Beta (Java) - Full Stack App with spring from https://vaadin.com/start .

If the products or user table have many entries (e.g. 200) and you scroll down the following error happens in the browser

Version : Updated to version 10.0.0.beta10 and now it throws a proper java stacktrace.

Stacktrace:

java.lang.IllegalStateException: The number of items returned by the data provider exceeds the limit specified by the query (50). at com.vaadin.flow.data.provider.DataCommunicator$SizeVerifier.accept(DataCommunicator.java:118) ~[flow-data-1.0.0.beta10.jar:na] at java.util.stream.ReferencePipeline$11$1.accept(ReferencePipeline.java:372) ~[na:1.8.0_172] at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1382) ~[na:1.8.0_172] at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481) ~[na:1.8.0_172] at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471) ~[na:1.8.0_172] at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:151) ~[na:1.8.0_172] at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:174) ~[na:1.8.0_172] at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) ~[na:1.8.0_172] at java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:418) ~[na:1.8.0_172] at com.vaadin.flow.data.provider.DataCommunicator.activate(DataCommunicator.java:612) ~[flow-data-1.0.0.beta10.jar:na] at com.vaadin.flow.data.provider.DataCommunicator.collectKeysToFlush(DataCommunicator.java:565) ~[flow-data-1.0.0.beta10.jar:na] at com.vaadin.flow.data.provider.DataCommunicator.flush(DataCommunicator.java:444) ~[flow-data-1.0.0.beta10.jar:na] at com.vaadin.flow.data.provider.DataCommunicator.lambda$requestFlush$2f364bb9$1(DataCommunicator.java:409) ~[flow-data-1.0.0.beta10.jar:na] at com.vaadin.flow.internal.StateTree.lambda$runExecutionsBeforeClientResponse$1(StateTree.java:340) ~[flow-server-1.0.0.beta10.jar:na] at java.util.ArrayList.forEach(ArrayList.java:1257) ~[na:1.8.0_172] ...

Also customer wrote: it's reproducible in the starter app products view. Increase DataGenerator#createProducts to 200 and load the view.

Mobile view UX fixes

nayttokuva 2018-2-15 kello 11 18 28

The mobile view seems really crowded atm and the overflowing text in the cards make it seem unfinished. Suggested fixes:

  • Fix issue nr. #452 to fix the inbalance between icons and labels
  • Make the time section inside the card 100% and make the content inline.
  • Make the Card details (name, content etc.) 100% underneath the time section and do not show content that overflows or wrap the content if it's too long.
  • Fix the font sizes in the bottom navigation on mobile so that they don't overlap and make the icons a couple of pixels smaller. (on 320px viewport width)

2 failed integration test

StoreFrontViewIT.editOrder() and ProductsViewIT.editProduct() fail when trying to run mvn verify -Pit

Tried to add Thread.sleep(1000) after save button is clicked, which made the tests green. So seems that it just needs to wait for a while after clicking the save button.

No stack trace when navigation fails

I did some changes to my bakery and forgot to add a converter for a textfield. when navigating to the view, it throws an exception, but i get NO STACK TRACE or any logging of any kind. The UI tells me

There was an exception while trying to navigate to 'storefront/5809' with the exception message 'java.lang.Integer cannot be cast to java.lang.String'

That's not good enough.

loadPage null

When changing tabs, sometimes one gets cannot read property loadPage of Null. See the attached screencast below.

2017-09-03 tab change error

Doesn't work with Java 9

Got exception when trying to run(mvn spring-boot:run) the application with Java 9.

[ERROR] Failed to execute goal org.springframework.boot:spring-boot-maven-plugin:1.5.9.RELEASE:run (default-cli) on project bakery-app-starter-flow-spring: An exception occurred while running. null: InvocationTargetException: Error creating bean with name 'entityManagerFactory' defined in class path resource [org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaConfiguration.class]: Invocation of init method failed; nested exception is java.lang.NoClassDefFoundError: javax/xml/bind/JAXBException: javax.xml.bind.JAXBException -> [Help 1]

The visual balance of icons and labels is off

nayttokuva 2018-2-15 kello 12 49 55 kopio

The icons are way more bigger than the icons in both the search input and the icon buttons which make them look ugly. Also the label of the search is straight in the center but the buttons "New..." text is slightly to the top vertically. Line-height issue?

java.util.ConcurrentModificationException: null when testing with ~10 concurrent users

Load testing with Gatling. When the concurrent user count reaches 5-10 users the exception below starts appearing.

Test scenario

  1. Log in with user barista
  2. Click new order
  3. Fill the form and select 2 products
  4. Submit order
  5. Navigate to Dashboard

Exception is got quite randomly from different places of the above scenario, e.g. after 3. or when inputing user's name etc.

java.util.ConcurrentModificationException: null
        at java.util.ArrayList.forEach(ArrayList.java:1252) ~[na:1.8.0_45]
        at com.vaadin.server.communication.rpc.MapSyncRpcHandler.flushPendingChangeEvents(MapSyncRpcHandler.java:81) ~[flow-server-1.0.0.alpha13.jar!/:na]
        at com.vaadin.server.communication.ServerRpcHandler.handleInvocations(ServerRpcHandler.java:346) ~[flow-server-1.0.0.alpha13.jar!/:na]
        at com.vaadin.server.communication.ServerRpcHandler.handleRpc(ServerRpcHandler.java:286) ~[flow-server-1.0.0.alpha13.jar!/:na]
        at com.vaadin.server.communication.UidlRequestHandler.synchronizedHandleRequest(UidlRequestHandler.java:88) ~[flow-server-1.0.0.alpha13.jar!/:na]
        at com.vaadin.server.SynchronizedRequestHandler.handleRequest(SynchronizedRequestHandler.java:40) ~[flow-server-1.0.0.alpha13.jar!/:na]
        at com.vaadin.server.VaadinService.handleRequest(VaadinService.java:1517) ~[flow-server-1.0.0.alpha13.jar!/:na]
        at com.vaadin.server.VaadinServlet.service(VaadinServlet.java:351) [flow-server-1.0.0.alpha13.jar!/:na]
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:790) [javax.servlet-api-3.1.0.jar!/:3.1.0]
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231) [tomcat-embed-core-8.5.23.jar!/:8.5.23]
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) [tomcat-embed-core-8.5.23.jar!/:8.5.23]
        at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:728) [tomcat-embed-core-8.5.23.jar!/:8.5.23]
        at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:467) [tomcat-embed-core-8.5.23.jar!/:8.5.23]
        at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:351) [tomcat-embed-core-8.5.23.jar!/:8.5.23]
        at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:311) [tomcat-embed-core-8.5.23.jar!/:8.5.23]
        at org.springframework.web.servlet.mvc.ServletForwardingController.handleRequestInternal(ServletForwardingController.java:141) [spring-webmvc-5.0.2.RELEASE.jar!/:5.0.2.RELEASE]

Current published starter pack in vaadin.com doesn't work

Tried the starter at /start and running mvn install jetty:run caused:

Exception in thread "main" java.util.ServiceConfigurationError: com.vaadin.server.VaadinServiceInitListener: Provider com.vaadin.starter.bakery.CustomVaadinServiceInitListener not found
        at java.util.ServiceLoader.fail(ServiceLoader.java:239)
        at java.util.ServiceLoader.access$300(ServiceLoader.java:185)
        at java.util.ServiceLoader$LazyIterator.nextService(ServiceLoader.java:372)
        at java.util.ServiceLoader$LazyIterator.next(ServiceLoader.java:404)
        at java.util.ServiceLoader$1.next(ServiceLoader.java:480)
        at com.vaadin.server.VaadinService.init(VaadinService.java:219)
        at com.vaadin.hummingbird.ext.spring.SpringAwareVaadinService.init(SpringAwareVaadinService.java:29)
        at com.vaadin.johannes.BakeryServlet.createServletService(BakeryServlet.java:48)
        at com.vaadin.server.VaadinServlet.init(VaadinServlet.java:105)
        at org.eclipse.jetty.servlet.ServletHolder.initServlet(ServletHolder.java:640)
        at org.eclipse.jetty.servlet.ServletHolder.initialize(ServletHolder.java:419)
        at org.eclipse.jetty.servlet.ServletHandler.initialize(ServletHandler.java:875)
        at org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:350)
        at org.eclipse.jetty.webapp.WebAppContext.startWebapp(WebAppContext.java:1379)
        at org.eclipse.jetty.maven.plugin.JettyWebAppContext.startWebapp(JettyWebAppContext.java:323)
        at org.eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1341)
        at org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:772)
        at org.eclipse.jetty.servlet.ServletContextHandler.doStart(ServletContextHandler.java:263)
        at org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:517)
        at org.eclipse.jetty.maven.plugin.JettyWebAppContext.doStart(JettyWebAppContext.java:398)
        at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
        at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:132)
        at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:114)
        at org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:61)
        at org.eclipse.jetty.server.handler.ContextHandlerCollection.doStart(ContextHandlerCollection.java:161)
        at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
        at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:132)
        at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:114)
        at org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:61)
        at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
        at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:132)
        at org.eclipse.jetty.server.Server.start(Server.java:405)
        at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:106)
        at org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:61)
        at org.eclipse.jetty.server.Server.doStart(Server.java:372)
        at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
        at org.eclipse.jetty.maven.plugin.AbstractJettyMojo.startJetty(AbstractJettyMojo.java:460)
        at org.eclipse.jetty.maven.plugin.AbstractJettyMojo.execute(AbstractJettyMojo.java:328)
        at org.eclipse.jetty.maven.plugin.JettyRunMojo.execute(JettyRunMojo.java:170)
        at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:134)
        at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:207)
        at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
        at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
        at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:116)
        at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:80)
        at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:51)
        at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:128)
        at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:307)
        at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:193)
        at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:106)
        at org.apache.maven.cli.MavenCli.execute(MavenCli.java:863)
        at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:288)
        at org.apache.maven.cli.MavenCli.main(MavenCli.java:199)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289)
        at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229)
        at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415)
        at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356)
[WARNING]
java.lang.NoClassDefFoundError: org/eclipse/jetty/io/ManagedSelector$Accept
        at org.eclipse.jetty.io.SelectorManager.accept(SelectorManager.java:215)
        at org.eclipse.jetty.io.SelectorManager.accept(SelectorManager.java:199)
        at org.eclipse.jetty.server.ServerConnector.accepted(ServerConnector.java:392)
        at org.eclipse.jetty.server.ServerConnector.accept(ServerConnector.java:383)
        at org.eclipse.jetty.server.AbstractConnector$Acceptor.run(AbstractConnector.java:564)
        at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)
        at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)
        at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.ClassNotFoundException: org.eclipse.jetty.io.ManagedSelector$Accept
        at org.codehaus.plexus.classworlds.strategy.SelfFirstStrategy.loadClass(SelfFirstStrategy.java:50)
        at org.codehaus.plexus.classworlds.realm.ClassRealm.unsynchronizedLoadClass(ClassRealm.java:271)
        at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass(ClassRealm.java:247)
        at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass(ClassRealm.java:239)
        ... 8 more
[WARNING]
java.lang.NoClassDefFoundError: org/eclipse/jetty/io/ManagedSelector$Accept
        at org.eclipse.jetty.io.SelectorManager.accept(SelectorManager.java:215)
        at org.eclipse.jetty.io.SelectorManager.accept(SelectorManager.java:199)
        at org.eclipse.jetty.server.ServerConnector.accepted(ServerConnector.java:392)
        at org.eclipse.jetty.server.ServerConnector.accept(ServerConnector.java:383)
        at org.eclipse.jetty.server.AbstractConnector$Acceptor.run(AbstractConnector.java:564)
        at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)
        at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)
        at java.lang.Thread.run(Thread.java:745)```

Maybe OpenJDK naming is a problem

I cloned the repo
Started with mvn clean install
used Safari for localhost:8080
user / password -> ok
Exception

2018-02-15 06:08:24.535  INFO 2124 --- [nio-8080-exec-2] c.vaadin.flow.spring.SpringInstantiator  : The number of beans implementing 'I18NProvider' is 0. Cannot use Spring beans for I18N, falling back to the default behavior
2018-02-15 06:08:24.718  WARN 2124 --- [nio-8080-exec-2] c.v.flow.component.internal.UIInternals  : No @Theme defined for com.vaadin.starter.bakery.ui.views.errors.NotFoundView. See 'trace' level logs for exact components missing theming.
2018-02-15 06:08:33.634  WARN 2124 --- [nio-8080-exec-4] c.v.flow.component.internal.UIInternals  : No @Theme defined for com.vaadin.starter.bakery.ui.views.errors.NotFoundView. See 'trace' level logs for exact components missing theming.
2018-02-15 06:09:01.575  WARN 2124 --- [nio-8080-exec-6] c.v.flow.component.internal.UIInternals  : No @Theme defined for com.vaadin.starter.bakery.ui.views.errors.NotFoundView. See 'trace' level logs for exact components missing theming.
2018-02-15 06:09:31.178  INFO 2124 --- [nio-8080-exec-6] c.vaadin.flow.spring.SpringInstantiator  : The number of beans implementing 'I18NProvider' is 0. Cannot use Spring beans for I18N, falling back to the default behavior
2018-02-15 06:09:52.839  INFO 2124 --- [nio-8080-exec-7] o.h.v.i.engine.ValidatorFactoryImpl      : HV000238: Temporal validation tolerance set to 0.
2018-02-15 06:09:52.884  INFO 2124 --- [nio-8080-exec-7] o.h.v.i.engine.ValidatorFactoryImpl      : HV000238: Temporal validation tolerance set to 0.
2018-02-15 06:09:53.174 ERROR 2124 --- [nio-8080-exec-7] c.v.flow.router.InternalServerError      : There was an exception while trying to navigate to 'vendor.bundle.js'

java.lang.NumberFormatException: For input string: "vendor.bundle.js"
	at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65) ~[na:1.8.0-internal]
	at java.lang.Long.parseLong(Long.java:589) ~[na:1.8.0-internal]
	at java.lang.Long.valueOf(Long.java:803) ~[na:1.8.0-internal]
	at com.vaadin.flow.router.ParameterDeserializer.deserializeParameter(ParameterDeserializer.java:67) ~[flow-server-1.0.0.alpha20.jar:na]
	at com.vaadin.flow.router.ParameterDeserializer.deserializeUrlParameters(ParameterDeserializer.java:100) ~[flow-server-1.0.0.alpha20.jar:na]
	at com.vaadin.flow.router.internal.NavigationStateRenderer.lambda$handle$2(NavigationStateRenderer.java:153) ~[flow-server-1.0.0.alpha20.jar:na]
	at java.util.Optional.ifPresent(Optional.java:159) ~[na:1.8.0-internal]
	at com.vaadin.flow.router.internal.NavigationStateRenderer.handle(NavigationStateRenderer.java:150) ~[flow-server-1.0.0.alpha20.jar:na]
	at com.vaadin.flow.router.Router.navigate(Router.java:154) [flow-server-1.0.0.alpha20.jar:na]
	at com.vaadin.flow.router.Router.initializeUI(Router.java:87) [flow-server-1.0.0.alpha20.jar:na]
	at com.vaadin.flow.component.UI.doInit(UI.java:195) [flow-server-1.0.0.alpha20.jar:na]
	at com.vaadin.flow.server.BootstrapHandler.createAndInitUI(BootstrapHandler.java:947) [flow-server-1.0.0.alpha20.jar:na]
	at com.vaadin.flow.server.BootstrapHandler.synchronizedHandleRequest(BootstrapHandler.java:329) [flow-server-1.0.0.alpha20.jar:na]
	at com.vaadin.flow.server.SynchronizedRequestHandler.handleRequest(SynchronizedRequestHandler.java:40) [flow-server-1.0.0.alpha20.jar:na]
	at com.vaadin.flow.server.VaadinService.handleRequest(VaadinService.java:1512) [flow-server-1.0.0.alpha20.jar:na]
	at com.vaadin.flow.server.VaadinServlet.service(VaadinServlet.java:343) [flow-server-1.0.0.alpha20.jar:na]
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:790) [javax.servlet-api-3.1.0.jar:3.1.0]
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231) [tomcat-embed-core-8.5.23.jar:8.5.23]
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) [tomcat-embed-core-8.5.23.jar:8.5.23]
	at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:728) [tomcat-embed-core-8.5.23.jar:8.5.23]
	at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:467) [tomcat-embed-core-8.5.23.jar:8.5.23]
	at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:351) [tomcat-embed-core-8.5.23.jar:8.5.23]
	at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:311) [tomcat-embed-core-8.5.23.jar:8.5.23]
	at org.springframework.web.servlet.mvc.ServletForwardingController.handleRequestInternal(ServletForwardingController.java:141) [spring-webmvc-5.0.2.RELEASE.jar:5.0.2.RELEASE]
	at org.springframework.web.servlet.mvc.AbstractController.handleRequest(AbstractController.java:177) [spring-webmvc-5.0.2.RELEASE.jar:5.0.2.RELEASE]
	at org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:52) [spring-webmvc-5.0.2.RELEASE.jar:5.0.2.RELEASE]
	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:991) [spring-webmvc-5.0.2.RELEASE.jar:5.0.2.RELEASE]
	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:925) [spring-webmvc-5.0.2.RELEASE.jar:5.0.2.RELEASE]
	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:978) [spring-webmvc-5.0.2.RELEASE.jar:5.0.2.RELEASE]
	at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:870) [spring-webmvc-5.0.2.RELEASE.jar:5.0.2.RELEASE]
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:687) [javax.servlet-api-3.1.0.jar:3.1.0]
	at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:855) [spring-webmvc-5.0.2.RELEASE.jar:5.0.2.RELEASE]
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:790) [javax.servlet-api-3.1.0.jar:3.1.0]
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231) [tomcat-embed-core-8.5.23.jar:8.5.23]
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) [tomcat-embed-core-8.5.23.jar:8.5.23]
	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) [tomcat-embed-websocket-8.5.23.jar:8.5.23]
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) [tomcat-embed-core-8.5.23.jar:8.5.23]
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) [tomcat-embed-core-8.5.23.jar:8.5.23]
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:320) [spring-security-web-5.0.0.RELEASE.jar:5.0.0.RELEASE]
	at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:127) [spring-security-web-5.0.0.RELEASE.jar:5.0.0.RELEASE]
	at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:91) [spring-security-web-5.0.0.RELEASE.jar:5.0.0.RELEASE]
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334) [spring-security-web-5.0.0.RELEASE.jar:5.0.0.RELEASE]
	at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:119) [spring-security-web-5.0.0.RELEASE.jar:5.0.0.RELEASE]
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334) [spring-security-web-5.0.0.RELEASE.jar:5.0.0.RELEASE]
	at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:137) [spring-security-web-5.0.0.RELEASE.jar:5.0.0.RELEASE]
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334) [spring-security-web-5.0.0.RELEASE.jar:5.0.0.RELEASE]
	at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:111) [spring-security-web-5.0.0.RELEASE.jar:5.0.0.RELEASE]
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334) [spring-security-web-5.0.0.RELEASE.jar:5.0.0.RELEASE]
	at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:170) [spring-security-web-5.0.0.RELEASE.jar:5.0.0.RELEASE]
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334) [spring-security-web-5.0.0.RELEASE.jar:5.0.0.RELEASE]
	at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:63) [spring-security-web-5.0.0.RELEASE.jar:5.0.0.RELEASE]
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334) [spring-security-web-5.0.0.RELEASE.jar:5.0.0.RELEASE]
	at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:200) [spring-security-web-5.0.0.RELEASE.jar:5.0.0.RELEASE]
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334) [spring-security-web-5.0.0.RELEASE.jar:5.0.0.RELEASE]
	at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:116) [spring-security-web-5.0.0.RELEASE.jar:5.0.0.RELEASE]
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334) [spring-security-web-5.0.0.RELEASE.jar:5.0.0.RELEASE]
	at org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:64) [spring-security-web-5.0.0.RELEASE.jar:5.0.0.RELEASE]
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) [spring-web-5.0.2.RELEASE.jar:5.0.2.RELEASE]
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334) [spring-security-web-5.0.0.RELEASE.jar:5.0.0.RELEASE]
	at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:105) [spring-security-web-5.0.0.RELEASE.jar:5.0.0.RELEASE]
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334) [spring-security-web-5.0.0.RELEASE.jar:5.0.0.RELEASE]
	at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:56) [spring-security-web-5.0.0.RELEASE.jar:5.0.0.RELEASE]
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) [spring-web-5.0.2.RELEASE.jar:5.0.2.RELEASE]
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334) [spring-security-web-5.0.0.RELEASE.jar:5.0.0.RELEASE]
	at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:215) [spring-security-web-5.0.0.RELEASE.jar:5.0.0.RELEASE]
	at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:178) [spring-security-web-5.0.0.RELEASE.jar:5.0.0.RELEASE]
	at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:357) [spring-web-5.0.2.RELEASE.jar:5.0.2.RELEASE]
	at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:270) [spring-web-5.0.2.RELEASE.jar:5.0.2.RELEASE]
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) [tomcat-embed-core-8.5.23.jar:8.5.23]
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) [tomcat-embed-core-8.5.23.jar:8.5.23]
	at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:99) [spring-web-5.0.2.RELEASE.jar:5.0.2.RELEASE]
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) [spring-web-5.0.2.RELEASE.jar:5.0.2.RELEASE]
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) [tomcat-embed-core-8.5.23.jar:8.5.23]
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) [tomcat-embed-core-8.5.23.jar:8.5.23]
	at org.springframework.web.filter.HttpPutFormContentFilter.doFilterInternal(HttpPutFormContentFilter.java:108) [spring-web-5.0.2.RELEASE.jar:5.0.2.RELEASE]
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) [spring-web-5.0.2.RELEASE.jar:5.0.2.RELEASE]
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) [tomcat-embed-core-8.5.23.jar:8.5.23]
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) [tomcat-embed-core-8.5.23.jar:8.5.23]
	at org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:81) [spring-web-5.0.2.RELEASE.jar:5.0.2.RELEASE]
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) [spring-web-5.0.2.RELEASE.jar:5.0.2.RELEASE]
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) [tomcat-embed-core-8.5.23.jar:8.5.23]
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) [tomcat-embed-core-8.5.23.jar:8.5.23]
	at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:200) [spring-web-5.0.2.RELEASE.jar:5.0.2.RELEASE]
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) [spring-web-5.0.2.RELEASE.jar:5.0.2.RELEASE]
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) [tomcat-embed-core-8.5.23.jar:8.5.23]
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) [tomcat-embed-core-8.5.23.jar:8.5.23]
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:199) [tomcat-embed-core-8.5.23.jar:8.5.23]
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96) [tomcat-embed-core-8.5.23.jar:8.5.23]
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:478) [tomcat-embed-core-8.5.23.jar:8.5.23]
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140) [tomcat-embed-core-8.5.23.jar:8.5.23]
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81) [tomcat-embed-core-8.5.23.jar:8.5.23]
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87) [tomcat-embed-core-8.5.23.jar:8.5.23]
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342) [tomcat-embed-core-8.5.23.jar:8.5.23]
	at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:803) [tomcat-embed-core-8.5.23.jar:8.5.23]
	at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66) [tomcat-embed-core-8.5.23.jar:8.5.23]
	at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:868) [tomcat-embed-core-8.5.23.jar:8.5.23]
	at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1459) [tomcat-embed-core-8.5.23.jar:8.5.23]
	at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) [tomcat-embed-core-8.5.23.jar:8.5.23]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [na:1.8.0-internal]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [na:1.8.0-internal]
	at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) [tomcat-embed-core-8.5.23.jar:8.5.23]
	at java.lang.Thread.run(Thread.java:748) [na:1.8.0-internal]

2018-02-15 06:09:53.175  WARN 2124 --- [nio-8080-exec-7] c.v.flow.component.internal.UIInternals  : No @Theme defined for com.vaadin.flow.router.InternalServerError. See 'trace' level logs for exact components missing theming.

Dirty dialog can be closed by escape press

  1. Open user edit dialog
  2. Modify any text-field.
  3. Press Escape key.

Dirty checking doesn't happen.

Since all the text-fields on the crud forms are not using debouncing, but sending value-change event only on blur, dialog stays not dirty (related issue #622)

Warning about @AllowClientUpdates for OrderCard's header

This happens at least in newest master, in production mode when using Chrome (OsX).

Ignoring model update for header. For security reasons, the property must have a two-way binding in the template, be annotated with @AllowClientUpdates in the model, or be defined as synchronized.

Seems to be fixed when adding @AllowClientUpdates(ClientUpdateMode.ALLOW) above OrderCard's Model's void setHeader(OrderCardHeader header);

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.