SpringRoo #RooWebScaffold, generate source code - spring

I am partly following quickstart tutorial at http://projects.spring.io/spring-roo/#quick-start.
I created an entity class and generated MVC using web mvc all --package ~.web command.
Question I have is that my controller class has scaffolding done using #RooWebScaffold, how do I generate the code for it? Is there a command synonymous to Grails generate all. In grails this command would actually generate actions called update, edit, delete, insert etc with full code which can be edited.
Thanks

Spring Roo generates code in aspects. These aspects are then integrated into the application code using the ajc compiler.
That is why you do not see any code in the controller. In order to see the code in the controller you need to use the Push-In refactoring that is provided by both Eclipse and IntelliJ IDEs.
Keep in my that if you push-in the aspects into the application code, you will no longer be able to add new code to that controller with Roo.

The code generated by ROO is based on AspectJ.
If you want "pure Java code" in order to adapt it after generation
you should try Telosys Tools http://tools.telosys.org
The tutorial for Spring MVC / JPA is here : https://sites.google.com/site/telosystutorial/

Related

Spring Roo web mvc setup generates error globalsearch.java class doesn't exists or has been deleted

I am quite new to Spring, now trying out Roo. I am following documentation from http://docs.spring.io/spring-roo/docs/2.0.0.M1/reference/html/
I was able to create the entity classes and fields, perform tests as well. Now when I run
roo> web mvc setup
it creates a few files in \config, \validatin, \html\converter but then produces undo create ... for the same files & folders. At the end it says
ERROR: GlobalSearch.java class doesn't exists or has been deleted.
I am running Windows 10 64 bit, STS 3.8 Release, Roo 2.0.0.M2, Maven 3.3.9, Jdk 1.8
Googling this as well as searching in StackOverflow gave just one slightly relevant result without resolution Spring Roo: 'web mvc setup' fails with 'display name required'.
In fact I have been facing many issues, each step of the way and googling my way through, so it has been a very painful experience so far, so any help is greatly appreciated.
I was using a separately downloaded roo (v 2)for this.
Alternatively I used STS and added roo (v 1.3.1RC1) extension thru Help>Dashboard and opened roo console in STS (Window>Show view>Roo shell), was able to run the commands for mvc web setup and mvc web all --package ~.web and generate required files!
But don't know why the separate roo console wouldn't work.
Thanks for all who viewed and tried to help.
First you need to create DAO layer:
repository jpa --all --package ~.repository
This will generate GlobalSearch.java in repository package.

CRUD generator for Struts 2 application

I have an already existing application built on Java 5 & Struts2 MVC framework having Oracle 11g DB.
Application has large number of tables which are often updated using insert queries or update statements
and I am looking to develop a CRUD application and avoid any manual script execution.
Number of tables are very large with dependency over each other, so I was looking for a java framework which can directly generate the code based on existing table structure, with the flexibility to allow upload excel with data and provide a bulk update features.
Tried with Spring Roo but want to know if there are more framework which can be used with existing Struts 2 MVC.
If you want to use CRUD application with Struts2 then you should look into Struts 2 CRUD Tutorial .
The application example from Struts Struts 2 CRUD Example
This example was created to be as simple as possible and as such, it does not use all of the advanced (integration) features such as Spring IoC, Hibernate Open-session-in-view, OS Sitemesh, annotations, etc .
You can also look at other Examples at GitHub.
About java code generation you can use Jboss Tools.
Hibernate Tools provides easy generation, testing and prototyping of your Hibernate or JPA mapped projects. Use it to Run queries, browse mappings and generate code for your data projects.
Consider Reverse Engineering section if you work on generating Java code.
Put Hibernate Tools Reference Guide to the desktop to read and help with any aspects of code-generation with Hibernate.
References:
Struts2 Builder Project
Easy CRUD with Struts 2 video
Basically what you want is :
Given an existing database, avoid coding manually the queries and the Java classes, and let instead {SMART_SOFTWARE} generates them for you.
Struts2 is a front-end MVC framework, it doesn't know anything specific about CRUD; while using Struts2, you are free to choose any persistence technology you like (JDBC, Hibernate, JPA, etc...).
Since the question involves Java EE, the standard is JPA.
If you're ok with using the Java Persistence API, then you're lucky! The software you're looking for is
Eclipse JPA Tools
It's able to map the DB and create the Java classes (JPA Entities) by reverse-engineering the tables.
Note: there are equivalent tools for NetBeans and other IDE, if you're into them.

Is it possible to use Grails validation outside of Grails? How?

Grails has amazing validation; is it possible to use it independent of the Grails framework?
We have a Java/Groovy Camel-based web application we can't convert to a Grails application. I'd love to use the Grails-style validation with the declarative constraints but have been unable to successfully configure the application to work with Grails libraries without converting the whole thing.
The validation provided by Grails is just a wrapper around Spring's bean validation framework. Since Grails is open source you can take a look at how it's done and adapt it to your own needs. The best place to start looking is the GrailsDomainClassValidator and DomainClassGrailsPlugin to get an idea of how it's done. Another point of interest would be the #Validateable AST annotation.
As far as I know, and from what I can see in the source, there isn't a stand alone way to do this outside of a Grails project without writing your own adaptation/implementation.
You can use a external validation without problem. It is possible, for example, using a external "jar" (that do a validation) file on the "lib" folder of your Grails project. Through this way, you can use the API of this jar file. It's a simple way that you can use.

Cannot proceed with Spring Roo: Advaned MVC Problems

I was scheduled to begin work on a new project and decided to make my life easier by adopting a new technology that I had no experience with: Spring!
Specifically Spring Roo, and therein lies my problem.
Spring Roo does so much auto-magical stuff that I really do not know how to proceed. As this runs the risk of turning into a rant, let me be more specific and then follow it up with my question:
Spring works great for setting up my classes and persisting them with Hibernate and all that. The main problem I am having is in trying to scaffold my project.
I am working on a project that manages a few "set" references with many-to-many and many-to-one relationships. This immediately will have problem with the scaffolding application.
Trying to add Google Web Toolkit via 'gwt setup' kills the application immediately. Trying to load in Tomcat server becomes impossible and there is no way to undo the process (as far as I know). Now what? I have to restart my project from the original commands and reapply my changes as far as I can tell.
With this being said it seems to me that the best process is to use ROO to generate my project artifacts and then create my own View/Controller setup. Even here I am having problems though, because the tiles configuration seems so obscured from how it works. I am having a hard time figuring out how to take a custom JSP that can process some of these complex many-to-one relationships (AJAX enabled) and add it to my web front.
Are there any guides for this?
FYI: in the existing Roo Generated MVC I tried
Copying over my JSP
Creating a Form Backing Objects that wraps the different entity types
Modifying the views.xml file in the folder to recognize the page
One this was accomplished, though, I have been unsure how to proceed. How do I access my JSP? Manually typing the URL as it is defined in views.xml does not work.
Should I think about abandoning Roo altogether and starting a Spring project from scratch?
Bet way to learn Spring Roo
read documentation (Spring Roo, enter link description here)
experiment with Roo and watch console output. See files that change, what changes if you add new controller etc.
read and discuss matters in SpringSource forum
follow spring-roo tag in SO
Using Spring Roo for scaffolding
user version control system or backup project. If result does not satisfies you - rollback changes.
Eclipse or SpringSource Tool suite have have hiccups (1, 2). Be aware of them. Use mvn eclipse:clean eclipse:eclipse and re-import project if necessarily.
know the difference between MVC architectural pattern, Web MVC framework and GWT scaffold application.
know limitations and behaviour of scaffolding (ITDs: GWT Style, Expected GWT Add-On Behaviour, JSP Views)
know how Validation, Data Binding, and Type Conversion works, to use effetely in your views
investigate request pipeline (Adding a custom page in spring roo, Adding new Activity in GWT scaffolded app)

Easiest way to add GWT to a Spring MVC application?

I've got a Spring MVC application and I've decided that I'd like to try using GWT for the front end. I'd like to continue using MVC as I'll also be using Spring Security and some other springy stuff.
I'm aware of the GWT-SL project, and I guess I'll use it. The documentation is light on examples unfortunately.
What I'm wondering now is.... how do I reconfigure my project so that I can use GWT? I'm assuming that I'll lose the ability to run in hosted mode, and I suppose that's ok. Do I just add the GWT and GWT-SL jars, reconfigure my web.xml, and add a package to my project for the GWT code?
I'm using Eclipse 3.4. My existing project is standard web project.
With the new version of the GWT plugin, you'd have all the benefits of the hosted mode browser without having to modify any options. The GWTHandler from the GWT-SL will take care of your rpc call mapping. However, you will have a problem with your existing domain objects structure. You will either have to put them in GWT's 'client' package, or mirror your existing domain objects to enable them to be compiled to javascript. I have been looking for a stable non-invasive framework for doing this, but have yet to find one. Gilead looks promising, but you will have to extend its classes on your domain.
I have posted a view month ago my simple project (3 classes) how to integrate GWT with existing Spring MVC application. Simple sample also provided.
Try it, it is clear and simple: http://code.google.com/p/gspring.
You won't lose hosted mode. I don't know if you're using the internal server for that - I use -noserver so I can't help you there.
Other than that, I guess the documentation is quite clear. Have you hit any specific problems?

Resources