So you've just installed the handy dandy Spring Security plugin (http://grails.org/plugin/acegi), which makes it incredibly easy to secure entire Grails controllers and/or controller actions with annotations, such as the following:
This is enabled by turning on controller annotations in your SecurityConfig.groovy file:
So all is now good in our project. We can secure either controllers or actions with annotations, enabling us to declaratively setup security side-by-side with the code that we're securing in a very straightforward manner.
I gave two lightning talks at CommunityOne today, the first of which described deploying Grails applications to Morph AppSpace.
For the uninitiated, Grails is a Ruby on Rails inspired full stack web development framework which brings “convention over configuration” and “DRY” into the Java web development arena. Unlike Rails, it is not an effort from scratch, but rather stands on the shoulders of proven giants in the Java world like the Spring framework and Hibernate.
Since I last posted on my fork of the Grails PayPal Plugin, I've been invited to be a committer on the Grails Plugins project at the Codehaus. I'll be incorporating my changes into the SVN repository there and updating the documentation on the main Grails Plugins website. Look for these updates coming soon!!!
I'm currently completing the finishing touches on a new e-commerce site for my wife's stationary business. We decided a long time ago to use PayPal for all of the payment processing since we've had a great experience using it for our eBay selling. About a year ago Graeme Rocher polished off the last release of a PayPal plugin that is available in the Grails Plugin repository. It really is a very nice plugin, yet I had a couple of problems with it:
Ever wanted to do drag-n-drop sorting of a grid of images on a page and persist it? Here's my solution using Grails, Prototype, and Script.aculo.us.
Basically what prompted this was the need for my wife to be able to sort the various product images that she had on a screen at any given time in any way that she pleased, and it had to be easy to work with. What follows is by no means a complete solution to this problem, but it represents where I am in the development process and may be useful to you, my hapless reader.
In 2007 I established several professional development goals (and later reported my progress on these), one of which was to learn Groovy and Grails. This goal stemmed from the continually referenced idea from The Pragmatic Programmer to “learn a new language every year.” This idea has become so ubiquitous that it even has it's own four-letter acronym, LOTY (Language of the Year).
Since establishing and reporting on these goals, I've had several things get in the way of fully realizing all of them.
Interesting title, eh? Maybe this one will make it through Glen's filter at GroovyBlogs.org.
On to the meat. I've been steadily working on a couple of Grails applications, one being the website for the Memphis JUG, and another being the e-commerce site for my wife's soon to be launched designer stationery business. Just like your average Grails developer, I've been happily coding away at 127.0.0.1 using the good old development Jetty+MySQL stack.
In finishing up the first release of JUG Nexus, the open source engine (http://github.com/mstine/jug-nexus/tree/master) behind the new Memphis JUG website, I needed to put a good Textile engine in place. I really don't care for writing actual HTML in a content management system, and JUG Nexus being a lightweight CMS, I wanted a lightweight markup syntax for entering the details of upcoming JUG meetings. Textile is exactly that, and is also used for entering content into the very useful JUGEvents system produced by JUG Padova for the Java User Group community at large.
Grails, by far my favorite of the JVM dynamic language frameworks, was released this morning, with a snazzy, new, “Web 2.0 style” website to boot. Congratulations Graeme and company on all of your hard work!
I really enjoyed “The Toy Show” this morning. James Gosling went through a flurry of different demos from around the “cool” Java world. I was especially impressed with Project Wonderland (http://lg3d-wonderland.dev.java.net/), a virtual workplace environment, and with the real-time robotics demos. Unfortunately I was so sucked in that I didn't get any good photos.
If anything you could call this my day on the back end. I attended four sessions, two of which were focused on that.