After i spent some time onto your site i stepped to your new demo QuickTickets, I really like the Look’n’Feel of
the Application and would get my hands on the SourceCode if its available. Is it possible that you publish the
QuickTickets SourceCode?
So we’re going to publish the source pretty soon. I plan to write the first part of the blog series at the same time, so check the blog to know when it’s available.
Agreed- a fantastic way to intro Vaadin 7. I’ve been (slowly) re-factoring my stuff for Vaadin 7, having seen how sexy it can be, I have an incentive to adopt sooner!
Very nice work on the demo and Vaadin 7.
EDIT : I am also interested in the source to see how to do some of the nifty things the demo does.
If you have any questions about the source, just ask here, and I’ll try to answer them. The source is quite a mess to follow (without any comments), but hopefully you find something useful there
Thanks for sharing the source code. I’m having some trouble building it because the pom.xml refers to a parent pom com.vaadin.demo:demo, which I didn’t find from anywhere.
Yes, that’s a known issue currently, and there’s a note of that in the readme file in the repo. I’ll have to see how we incorporate the parent pom.xml, but for now, you can download it from the attachements in this post. 12812.xml (5.1 KB)
I just tried to get this running in GAE but get a NPE because of a null CommunicationManager in the VaadinServlet. Does anyone have any thoughts on what I missed?
com.vaadin.server.DefaultErrorHandler doDefault:
java.lang.NullPointerException
at com.vaadin.server.VaadinServlet.service(VaadinServlet.java:330)
at com.vaadin.server.VaadinServlet.service(VaadinServlet.java:201)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1166)
at com.google.apphosting.utils.servlet.ParseBlobUploadFilter.doFilter(ParseBlobUploadFilter.java:125)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
at com.google.apphosting.runtime.jetty.SaveSessionFilter.doFilter(SaveSessionFilter.java:35)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
at com.google.apphosting.utils.servlet.TransactionCleanupFilter.doFilter(TransactionCleanupFilter.java:43)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:388)
at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182)
at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765)
at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:418)
at com.google.apphosting.runtime.jetty.AppVersionHandlerMap.handle(AppVersionHandlerMap.java:266)
at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
at org.mortbay.jetty.Server.handle(Server.java:326)
at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542)
at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:923)
at com.google.apphosting.runtime.jetty.RpcRequestParser.parseAvailable(RpcRequestParser.java:76)
at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404)
at com.google.apphosting.runtime.jetty.JettyServletEngineAdapter.serviceRequest(JettyServletEngineAdapter.java:146)
at com.google.apphosting.runtime.JavaRuntime$RequestRunnable.run(JavaRuntime.java:447)
at com.google.tracing.TraceContext$TraceContextRunnable.runInContext(TraceContext.java:454)
at com.google.tracing.TraceContext$TraceContextRunnable$1.run(TraceContext.java:461)
at com.google.tracing.TraceContext.runInContext(TraceContext.java:703)
at com.google.tracing.TraceContext$AbstractTraceContextCallback.runInInheritedContextNoUnref(TraceContext.java:338)
at com.google.tracing.TraceContext$AbstractTraceContextCallback.runInInheritedContext(TraceContext.java:330)
at com.google.tracing.TraceContext$TraceContextRunnable.run(TraceContext.java:458)
at com.google.apphosting.runtime.ThreadGroupPool$PoolEntry.run(ThreadGroupPool.java:251)
at java.lang.Thread.run(Thread.java:722)
Line 330 in VaadinServlet is:
if (communicationManager.handleOtherRequest(request, response)) {
I’m guessing there might also be other issues as the project was not designed to run on GAE, but at least you should use GAEVaadinServlet instead of VaadinServlet.
Thanks Henri. You are correct. I had some configuration problems that were hiding the real problems. DataProvider uses classes that aren’t allowed in GAE, like FileWriter.
I created a portal-friendly version of the quicktickets-dashboard demo, works at least in Liferay 6.1.1 (with Vaadin upgrade to 7.0.0). The code itself is about 99% unchanged, just few minor changes:
Disabled the login screen (it doesn’t make any sense in portal env)
Forced height of of the root layot to 600px (100% in portal = 0 px)
Displaying real username from the portal instead of a random one
Building requires some custom Maven repositories to be configured, please try to add e.g. following repo (in settings.xml or directly in the pom.xml). It also includes a version of the parent pom com.vaadin.demo:demo: