This looks some interesting tech, I should investigate more
Parallel.js
Code Snippets, Ideas and Rants from a Tech Lead interested primarily in server side web development and leading teams who build web apps.
Thursday, February 28, 2013
Technology Lead
Since taking on a new role as a technology lead in the digital marketing space I have had less and less to do with Grails and Groovy directly.
So I am going to branch out a bit on this blog to include all technology.
So I am going to branch out a bit on this blog to include all technology.
Monday, November 26, 2012
Grails dbconsole
A feature I have never used in Grails is the h2 web browser. A great way to see what the db structure and what the data looks like. This allows you to easily see the db structure your domain classes boil down to.
If you are running an application at
If you are running an application at
localhost:8080/appnameYou can browse to
localhost:8080/appname/dbconsoleFor the JDBC URL use the setting from your DataSource.groovy in my case
jdbc:h2:mem:devDbAnd there we go all domain objects visible. Not only can you run sql queries but you can insert, modify, delete.
Tuesday, November 6, 2012
Using ExpandoMetaClass in unit tests
There is great power in the ExpandoMetaClass, particularly when doing unit tests.
I want to unit test a specific Domain but it uses a service (in this case springSecurityService.encodePassword()) in one of its methods (protected void encodePassword). Rather than have an integration test or mock out the whole service I can just override a method on the fly. This allows me to just test the logic I am interested in.
The code in my test looks like this.
I want to unit test a specific Domain but it uses a service (in this case springSecurityService.encodePassword()) in one of its methods (protected void encodePassword). Rather than have an integration test or mock out the whole service I can just override a method on the fly. This allows me to just test the logic I am interested in.
The code in my test looks like this.
void setUp() {What I have done is overridden the method encodePassword on the class User.
println "setUp()"
User.metaClass.encodePassword = {->
password
}
def user = new User(username: 'user', enabled: true, password: '123').save(flush: true)
assert user
}
Domain event features
The Grails Domain class has some really nice event features in the afterUpdate, beforeUpdate.
What I wanted was if the domain.status was set to completed then domain.completedDate would be filled in with the current date. And if the domain.status was set to anything else, then domain.completedDate would be made null.
Was pretty easy to add this code to the domain
What I wanted was if the domain.status was set to completed then domain.completedDate would be filled in with the current date. And if the domain.status was set to anything else, then domain.completedDate would be made null.
Was pretty easy to add this code to the domain
def afterUpdate() {
if (status == Status.COMPLETED) {
if (completedDate)
completedDate = new Date()
} else {
completedDate = null
}
}
Monday, November 5, 2012
Groovy Enums
Found a neat trick for matching a String back to its enum. For instance if we have the following enum
public enum Status {So if you had a String and wanted to match the enum it is as easy as
INBOX { public String toString() {"Inbox"}},
NEXT { public String toString() {"Next Action"}},
SOMEDAY { public String toString() {"Someday"}} }
def a = "Inbox" as Status
Wednesday, August 29, 2012
Groovy vs Java
Performance Test: Groovy 2.0 vs. Java
Groovy is catching up performance wise. Though speed has never really been it's goal.
I still maintain pure speed is not that important, and you can always drop down to pure Java.
Subscribe to:
Posts (Atom)
