I was stuck this week while trying to install Mule IDE plugin for Eclipse Galileo. Then I came across this. Basically, you have to uncheck “Group items by category” before installing the plugin
Mule IDE for (Eclipse) Galileo
Posted by Paras on October 2, 2009
Posted in Mule | Tagged: Eclipse, Galileo, Mule IDE | 2 Comments »
Grails – Plugin file not found for plugin project
Posted by Paras on September 10, 2009
If you have just renamed your Grails plugin project and getting this error “Plugin file not found for plugin project” and wondering – “What’s going on?”
Consider this. Grails is based on DRY principle. Convention over configuration. By convention, the plugin descripor file should end in the word “GrailsPlugin”
Most likely it would have happened that you wanted to rename AbcDef grails plugin to say Abc plugin
In the process, instead of renaming AbcDefGrailsPlugin.groovy file in your plugin root directoy to AbcGrailsPlugin.grooy, you might have mistakenly renamed it to just AbcPlugin.groovy. Since the word GrailsPlugin was not in the name, it was considered as the normal project instead of Plugin project.
If you look inside $GRAILS_HOME/scripts/_GrailsPluginDev.groovy file, you can see the following code snippet
metadataFile.name, "*GrailsPlugin.groovy",
In short, the solution is to rename the file and the class defined inside it to AbcGrailsPlugin.groovy
Posted in Grails, Grails Plugin | Leave a Comment »
Grails Maven Integration
Posted by Paras on September 10, 2009
Note: Information provided in this post may get outdated soon, because Grails, it’s plugin and dependencies gets updated very frequently.
Today I was trying to integrate my existing grails application with Maven. I had hard time with it. I referred to the following information
- http://grails.org/Maven+Integration
- http://forge.octo.com/maven/sites/mtg/grails-maven-plugin/examples/mavenize-a-grails-app.html
The pom generated by the plugin was of Grails 1.1 and I was using grails 1.1.1 therefore I had to make the following changes in my pom.xml
<dependency> <groupId>org.grails</groupId> <artifactId>grails-crud</artifactId> <version>1.1.1</version> </dependency> <dependency> <groupId>org.grails</groupId> <artifactId>grails-gorm</artifactId> <version>1.1.1</version> </dependency>
Since I was using MySql I had to add this too
<dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>3.1.14</version> </dependency>
Also you need to add this
<dependency> <groupId>org.tmatesoft.svnkit</groupId> <artifactId>svnkit</artifactId> <version>1.2.3.5521</version> <scope>runtime</scope> </dependency>
If you are not using Acegi then this is all you need to do for Maven integration. If you are using Acegi then you might have to make some more changes. In my case, I was getting ClassNotFoundException for net.sf.ehcache.CacheException. I had to manually copy ehcache-1.3.0.jar from $MAVEN_REPOSITORY_HOME/repository/net/sf/ehcache/1.3.0 to $GRAILS_PROJECT_HOME/plugins/acegi/lib. It solved my issue and I was successfully able to run my grails app using mvn grails:run-app
As I said before, information in this post may get outdated very soon. But it solved my problem and it might solve your too.
Posted in Grails, Maven | Tagged: Acegi, ehcache, Grails Maven Integration, Octo | Leave a Comment »
Grails – No such property: save for class
Posted by Paras on September 8, 2009
I suddenly started getting this message in my grails app. I don’t know the root cause of the problem. But for me the cause of the problem was removal of some fields and renaming of certain fields in domain class. If you have rename and/or removed some fields then make sure you follow these steps
- Stopped the running grails application. Changes made in the domains, controllers and other grails-app artifacts sometimes doesn’t get updated while application is running
- Remove and update the reference of the removed or renamed fields from the gsp, constraints block of domain, any other static blocks in referenced domains, messages.properties and other property files.
- If you are not using in-memory db(HSQL) and using mysql or any other persistent database, then corresponding columns of the renamed/removed old fields are not deleted from database. If it does not affect the already existing data in DB then drop the corresponding table. When you restart application, grails will create the table for you again. If your table has foreign key reference, then drop the database altogether and create new DB and grant all privileges to the user used by Grails.
- If the above steps don’t work for you and you are using grails 1.1.1 then try doing MyDomainClass.get(-1) in your Bootstrap.groovy. See http://grails.1312388.n4.nabble.com/No-such-property-save-for-class-td1389894.html
This solved my No such property: save for class issue. YMMV. In your case, the cause may be different.
Posted in Grails | 1 Comment »
Hyphen in MySQL database
Posted by Paras on August 26, 2009
If you have hyphen(-) in your mySQL database you can use back-ticks to escape while issuing commands
like
drop database `alfresco-dev`;
Posted in MySQL | Leave a Comment »
Running grails at some specific port
Posted by Paras on July 7, 2009
By default, jetty will run the application at port 8080, but if you want to run the application at some specific port, for example 8085 you should use
grails -Dserver.port=8085 run-app
Posted in Grails | Tagged: Grails | Leave a Comment »
Grails : No domain class found for name domain-class-name . Please try again and enter a valid domain class name
Posted by Paras on June 23, 2009
Sometimes, even if you create domain objects in grails you get the error that No domain class found.
I am not sure why this happens because I am new to Grails and still learning. But the following steps work for me
i) Stop all the running grails app ctrl+C
ii) grails clean
iii) Now try grails generate-all domain-class-name
This generally works for me. I will update this post if I find the root cause of the problemSom
Posted in Grails, Groovy | Tagged: Grails, Groovy | 2 Comments »
Building Web Apps with Spring 3.0 – Meeting notes
Posted by Paras on June 3, 2009
This presentation and notes are from the May 2009 Java User group meeting in Twin Cities. You can view the details and download the code from http://www.intertech.com/UserGroups/JUGPresentation.aspx?TopicID=135 It was an excellent presentation. Bob has discussed about new cool features in Spring 3 and how it simplifies the Spring MVC development. These presentation slides are created by him and all rights lies with him.
- DispatcherServlet is the central servlet handling requests
- See slide 7. The request handling takes place in the following order
- HTTP Request is first handled by Dispatcher Servlet
- DispatcherServlet refers HandlerMapping find the controller which will handle the request
- DispatcherServlet sends the request to the Controller. Controller returns view and/or model.
- DispatcherServlet refers to ViewResolver to determine the view page based on logical view name
- View is rendered
- Controller hierarchy is deprecated in Spring 3.Just annotation is enough. No need to implement life-cycle methods
- Flexible method arguments. Flexible return types.
- Annotations like
@RequestParam
@ModelAttribute
@RequestMapping
@SessionAttribute
@InitBinder
and WebBindingInitializer - Convention verses configuration
- ControllerClassNameHandlerMapping
- Model and ModelMap
- Rest SupportStateless, cacheable, scalable, communication protocol
HTTP Methods – GET, POST, PUT(Idempotent), DELETE(Idempotent), HEAD, OPTIONS - Spring 3.0 has REST support
Posted in Spring | Tagged: Rest, Spring 3 | Leave a Comment »
GWT exception : Deferred binding result type should not be abstract Or Rebind result must be a class
Posted by Paras on May 19, 2009
In GWT, when you get this error in hosted mode
Deferred binding result type should not be abstract
or
The following error while compiling
Rebind result must be a class
most likely you have forgot to extend your business interface from RemoteService. Therefore GWT engine is trying to instantiate the interface itself. That is , instead of
@RemoteServiceRelativePath("relativeServicePath")
public interface BusinessInterface extends RemoteService
you have written
@RemoteServiceRelativePath("relativeServicePath")
public interface BusinessInterface
Posted in GWT | Tagged: exception, GWT, RPC | 2 Comments »