goodbye

i have had enough
i am done with this open source rubbish
i cant work with amateurs
i am going to use Oracle ADF

i have invested over 7 days of my employer’s time
trying to get vaadin and spring roo to work
and it doesn’t

the instructions (where they exist) are wrong
the code (released into production!)
with spelling mistakes wrong versions and buggy
ie. reindeer the default theme doesn’t work !!!

i have given people final warnings for releasing untested code into production

why is this property not corrected by the generators

(and similar for hibernate <property name=“hibernate.hbm2ddl.auto” value=" …)
is this sensible for a default?
do you really want to drop the database, all it’s tables and all it’s data
what are these people thinking?

at least i had a complete set of scripts
to recreate the DB and all it’s data
but i will bet most dont
and i had to run them over night

i cannot enumerate all the issues overcome
just to get all the plugins installed and actually working
none of the instructions given are correct
so it’s all trial and error
hours and hours googling and trying to sort through all the drivel

here is a list of steps that works: (but a warning, the generated code still wont run)
using springsource toolsuite 2.8.1 (eclipse) and oracle 11g (a proper database)

  1. http://www.oracle.com/technetwork/database/enterprise-edition/jdbc-10201-088211.html
    dont bother trying 11.2.0.2 because it is hard coded somewhere that it wants 10

  2. C:\download> mvn install:install-file -DgroupId=com.oracle -DartifactId=ojdbc14 -Dversion=10.2.0.2 -Dpackaging=jar -Dfile=ojdbc14.jar -DgeneratePom=true

  3. in spring: file\new\spring roo project

  4. roo> osgi install --url http://repository.springsource.com/maven/bundles/external/javax/resource/com.springsource.javax.resource/1.5.0/com.springsource.javax.resource-1.5.0.jar

  5. roo> osgi install --url http://repository.springsource.com/maven/bundles/external/javax/transaction/com.springsource.javax.transaction/1.1.0/com.springsource.javax.transaction-1.1.0.jar

  6. roo> osgi install --url file:///C:\Users\info.m2\repository\com\oracle\ojdbc14\10.2.0.2\ojdbc14-10.2.0.2.jar

  7. roo> osgi start --url http://repository.springsource.com/maven/bundles/external/javax/resource/com.springsource.javax.resource/1.5.0/com.springsource.javax.resource-1.5.0.jar

  8. roo> osgi start --url http://repository.springsource.com/maven/bundles/external/javax/transaction/com.springsource.javax.transaction/1.1.0/com.springsource.javax.transaction-1.1.0.jar

  9. roo> osgi start --url file:///C:\Users\info.m2\repository\com\oracle\ojdbc14\10.2.0.2\ojdbc14-10.2.0.2.jar

  10. roo> osgi ps
    the 3 items should be Active

  11. roo> addon create wrapper --topLevelPackage com.oracle.roo.JDBC --groupId com.oracle --artifactId ojdbc14 --version 10.2.0.2 --vendorName Oracle --licenseUrl http://www.oracle.com
    this doesn’t actually seem to do anything but i leave it here because i haven’t tested without it
    get message: file ‘C:\data\work\springsource.…pom.xml’ already exists

  12. http://www.eclipse.org/downloads/download.php?file=/rt/eclipselink/releases/2.2.0/eclipselink-2.2.0.v20110202-r8913.zip
    unzip

  13. C:\download> mvn install:install-file -DgroupId=org.eclipse.persistence -DartifactId=eclipselink -Dversion=2.2.0 -Dpackaging=jar -Dfile=eclipselink.jar -DgeneratePom=true

  14. C:\download>mvn install:install-file -DgroupId=org.eclipse.persistence -DartifactId=javax.persistence -Dversion=2.0.3 -Dpackaging=jar -Dfile=javax.persistence.jar -DgeneratePom=true

  15. roo> persistence setup --provider ECLIPSELINK --database ORACLE --databaseName orcm --userName test --password password
    BEWARE: unless you want your DB to be deleted !!! in persistence.xml change the default

    to

    and similarly for
    <property name=“hibernate.hbm2ddl.auto” value= …
    though i dont recommend HIBERNATE because it gives errors later on
    [s]

  16. roo> pgp trust --keyId 0xBF0451C0
    roo> download accept terms of use
    roo> addon install bundle --bundleSymbolicName com.vaadin.spring.roo.addon
    [/s]
    the above 3 commands (from the tutorial) don’t work
    get message: Could not find specified bundle with symbolic name: com.vaadin.spring.roo.addon
    therefore do the following
    after much searching found here: http://dev.vaadin.com/changeset/18575/svn/addons/SpringRooPlugin/trunk/com.vaadin.spring.roo.addon/readme.txt

  17. roo> osgi obr url add --url http://vaadin.com/springroo/repository.xml

  18. roo> osgi obr deploy --bundleSymbolicName com.vaadin.spring.roo.addon

  19. roo> osgi find --bundleSymbolicName com.vaadin.spring.roo.addon

  20. roo> osgi framework command start [vaadin-plugin-bundle-id]

[vaadin-plugin-bundle-id]
being the 2 digits returned by 18. above

  1. restart roo

  2. roo> database reverse engineer --schema checker --testAutomatically false --enableViews false --includeNonPortableAttributes true
    –includeNonPortableAttributes should be true for any re4al kind of DB
    –excludeTables does not seem to work
    for proper data modellers you will be appalled to see that table names are created with leading capitals (ie. case sensitive code??! what is the world coming to)
    and any “_” are removed and replaced with that aberrant abomination called camelcase (where is hungarian notation these days ha ha! :grin:)

  3. roo> vaadin setup --applicationPackage ~.web --baseName nine --themeName runo --useJpaContainer true
    note that theme reindeer does not currently (2011/11/25) work
    that took about a day and a half to figure out

  4. roo> vaadin generate all --package ~.web.ui --visuallyComposable true

  5. setup a jetty server
    in spring menu: run\external tools\external tools configuration …\program\new
    location: C:\apache-maven-2.2.1\bin\mvn.bat
    workspace: ${workspace_loc:/your project}
    arguments: jetty:run

  6. run that puppy!!!

with HIBERNATE you will get the well known and apparently notorious error message
org.hibernate.LazyInitializationException: could not initialize proxy – no Session
why the generated code does not take care of this beggars my imagination
but after several hours of trying i gave up
it seems i might need access to the source code and i just cant be bothered

with ECLIPSELINK it works for tables that are not referenced by any other
it seems that the forms generated have a totally bizzare strructure
totally unlike any that a normal data modelling programmer would expect
instead of the normal shape where a table has a FK which looks up a single row in another table
the forms are generated the exact opposite!!!
the looked up table tries to select all the other rows that reference it???
imagine an address table with a FK to country
any normal sane person would expect an address form with a field looking up country
but no
what you get is a country form trying to gather all addresses which refer to it
total madness
and it fails
it only works if there are no such addresses
but even then clicking on the country line
to go to the specific country row fails also

a complete waste of time
for a new user like myself
i just want something simple that WORKS
that implements sane patterns (ever heard of master-detail, FK lookups?) and safe defaults
then i can extend my knowledge further
starting with this rubbish that doesn’t work
is totally frustrating and i have better things to do with my time
than bother with reindeer themes released in to production with webkit spelled as wekit
no wonder nothing works

thanks and goodbye

So ironc, that you take 1 hour to wrote this message.

yes it certainly is
however set against the many hours
it took to get to this
it is nothing

i thought i should share

a thankyou would be nice

45 minutes after installing ADF
(the download took longer)
i am where i should have been by now

a first cut successful application
that works!!!
it has master-detail forms and everything
the past week or more of anger and frustration is forgotten

i can take the day off tomorrow and watch the F1
and go to work with my head held high on monday
ready to continue on and be productive and not feel like a worthless fool all the time

compare and contrast
http://download.oracle.com/otn_hosted_doc/jdeveloper/11gdemos/ADF112/ADF112.html

this is really is goodbye this time
i will not be back

good luck

8o SMH

I’m developing for a big automotive company and with vaadin i was able to optimize productivity without huge time effort. Feel free to use any other framework, there are dozens out there. Really no need for hating.

I know I feel a lot smarter since I was able to build a Vaadin app just fine. You’d think he was tricked into using Vaadin+GWT instead of Oracle ADF. His words certainly speak volumes about him. One thing I appreciate about Vaadin is that the forums so rarely include diatribes and accusations without any specifics. We can disagree, we can hope for features or styles yet to come, but there are more attempts at respectfully answering questions here than in many other forums.

I reverse engineered my MySQL DB with Roo and create web-ui with Vaadin addon and I got exactly the same and I was wondering, that what the heck is happening, no sense at all. If somebody can tell how to avoid that and get something useful with Vaadin and Roo, I would appreciate. There was minor bugs in the instructions but with forum and internet, I handled it in couple of hours. The result was useless, but I will continue and figure everything out. In my case forms were even hilarious :slight_smile: No I’ll try to modify those forms so that there is some logic. I have a companyForm where user adds basic information about company and then I have AddressForm. I tried to embed AddressForm to CompanyForm’s layout with Vaadin editor, but I never could see that…

Cheers,
Sami

Hey, dude, I feel your pain. We have all felt like this at some point in our careers. You might want to try Yoga or deep-breathing exercises to get past these difficult moments. :slight_smile:

In my own experience, core Vaadin is high quality and elegantly designed, certainly better than most proprietary technologies. It sounds like your problems stem more from the Vaadin-Roo integration, which is relatively new. Once you start venturing into peripheral technologies, quality becomes more variable. It also seems inherently difficult to test code-generation that can result in so many possible test cases.

So, I hope others don’t get turned off from Vaadin, because of this guy’s rant.

For those looking to integrate Vaadin, Spring and Hibernate, you might want to check out my
ExpressUI project
.

I put a lot effort into making sure these technologies integrate smoothly. Rather than generate code, ExpressUI offers a predefined UI that dynamically handles a wide range of common CRUD interactions. My design strategy was to sacrifice flexibility for a significant increase in productivity and ease-of-use. So, my framework provides patterns that avoid common pitfalls like the dreaded LazyInitializationException.

It might make sense for those who want a technology stack that “just works” and don’t need the flexibility of Roo.

Peace,

Juan

Disclaimer: I am the author of the Vaadin addon for Spring Roo.

It sounds like Oracle ADF is better for you, so I certainly don’t try to change your opinion on that. However, I want to add a few comments for the benefit of future readers of this thread.

Roo itself and the Vaadin addon for Roo are quite recent technology, unlike core Vaadin, and take quite a radical approach (for Java based development) in how they work. They may change quickly and the documentation for them is still limited. Therefore, I always advise caution before using them in any bigger project. They can be very nice to get new projects kickstarted, but in their current form, they should not be expected to produce a whole production system. While I have written about this several times on the forum, this does not seem to be expressed clearly enough elsewhere, something we should improve.

One of the nice things with Roo, though, is that one can “take Roo out of the system” - either on a class by class basis or for the whole project - with an automatic refactoring one can move everything from aspects to the classes and then it is easy to remove any Roo annotations. One can easily get a working project skeleton with Maven, Spring, persistence etc. configured and continue from there either with or without Roo.

While most of the problems enumerated here are generic Roo problems and not related to Vaadin or the Vaadin addon for Roo, I will comment a little on the Vaadin specific points that others might run into in the future.

First, the current version of Vaadin addon for Roo works with the current stable (GA) version of Roo, 1.1.5 but not with the milestone build 1.2.0M1 which is bundled with the latest STS versions. This should be mentioned in some places already, but apparently not on the main pages people use when starting to use Roo. I added some clarifications about this on the wiki and
https://vaadin.com/springroo
.

The themeName parameter refers to the minimal theme to generate for the application, which in turn imports reindeer. If generating a theme called reindeer, it will override the standard reindeer theme and try to import itself recursively.

This is related to the general problem that Hibernate lazy loading does not work across sessions in a transaction per request model, but Hibernate is also not designed for longer transactions. It is designed more for usage patterns like JSP (whole page constructed in one request) or server side service layer where lazy objects are have to be fully loaded in the initial request. Also many other frameworks suffer from the same problem. The Roo addon tries to get around this in some situations, but EclipseLink works better if lazy loading across requests is needed. Some understanding of JPA and tweaking of lazy loading or transaction management is currently required in more complex cases.

While the forms generated by the addon are certainly more appropriate for low-level “admin views” than complex end user interfaces, the strange forms seen here are probably at least in part an artifact of the entity classes and JPA annotations Roo database reverse engineering produced in this case. The forms can be customized by hand, but the addon currently does not even try to produce finished end user interfaces for complex data out of the box.