Posts

Showing posts with the label GAE

Java, Maven, GAE, Spring and Vaadin all together - part one

In this chapter I will cover how to develop single-paged web applications using the techniques mentioned in title. Source code is available there:  https://github.com/bartprokop/bart-gae-poc/tree/version1 . Working application is available here . Problem: putting all pieces together. Vaadin is great tool for developing Web based business application. It uses GWT for rendering the server side kept UI structures. So basically the whole application - both UI and backend runs on the server, while browser merely renders it. One of the properties of Vaadin application is that UI state is always serialized and kept inside http session. This feature has it's cons and pros. If you correctly persist session, you can run application on a cluster and the app will survive the restart or outage of single node. But everything what is references by any GUI elements must implement java.io.Serializable. As such is necessary to ensure that by accident we will not serialize whole object graph to h...

GAE BigTable datatypes and Vaadin Form Properties

As we already discussed, Vaadin provides easy way to edit JAVA POJO object using its com.vaadin.data.util.BeanItem  representation, that can be used in Vaadin forms, just out of the box. However we cannot expect that our Java POJO's will have only fields of Strings and some primitives/their wrappers. App Engine Datastore itself provides rich set of basic types - see here for complete reference. As we already show, it was very easy to use Vaadin to bind POJO fields (through Vaadin properties) to UI form elements. It worked great for Strings and primitives/their wrappers, but it will not work for other BigTable data types. The reason for that is that Vaadin does not know how to handle such classes as  com.google.appengine.api.datastore.Email , com.google.appengine.api.datastore.Category  or com.google.appengine.api.datastore.GeoPt . However if we look closer into it, we can assume that those types can be quite well represented by java.lang.String with very straightf...