Archive for the Category 'groovy'

Automatically converting password hashes in Grails spring-security-core

Friday, December 20th, 2013

I was looking at this Stack Overflow question about converting password hashes and realized that it’s possible and rather convenient when using the spring-security-core plugin to automate the process.

To start, we’ll need a PasswordEncoder that can work with both algorithms. Here I’m assuming that you’ll be converting from SHA-256 (optionally with a salt) to bcrypt, but the general approach is mostly independent of the algorithms. Sha256ToBCryptPasswordEncoder will always hash new passwords using bcrypt, but can detect the difference between hashes from SHA-256 and bcrypt in isPasswordValid:

package com.burtbeckwith.grails.security;

import grails.plugin.springsecurity.authentication.encoding.BCryptPasswordEncoder;

import org.springframework.security.authentication.encoding.MessageDigestPasswordEncoder;

public class Sha256ToBCryptPasswordEncoder
       implements org.springframework.security.authentication.encoding.PasswordEncoder {

   protected MessageDigestPasswordEncoder sha256PasswordEncoder;
   protected BCryptPasswordEncoder bcryptPasswordEncoder;

   public String encodePassword(String rawPass, Object salt) {
      return bcryptPasswordEncoder.encodePassword(rawPass, null);
   }

   public boolean isPasswordValid(String encPass,
            String rawPass, Object salt) {
      if (encPass.startsWith("$2a$10$") && encPass.length() == 60) {
         // already bcrypt
         return bcryptPasswordEncoder.isPasswordValid(
                    encPass, rawPass, null);
      }

      if (encPass.length() == 64) {
         return sha256PasswordEncoder.isPasswordValid(
                    encPass, rawPass, salt);
      }

      // TODO
      return false;
   }

   /**
    * Dependency injection for the bcrypt password encoder
    * @param encoder the encoder
    */
   public void setBcryptPasswordEncoder(BCryptPasswordEncoder encoder) {
      bcryptPasswordEncoder = encoder;
   }

   /**
    * Dependency injection for the SHA-256 password encoder
    * @param encoder the encoder
    */
   public void setSha256PasswordEncoder(
           MessageDigestPasswordEncoder encoder) {
      sha256PasswordEncoder = encoder;
   }
}

This needs dependency injections for properly configured SHA-256 and bcrypt encoders, and we’ll see that in a bit.

Sha256ToBCryptPasswordEncoder cannot make any changes as only password information is available, so we’ll subclass DaoAuthenticationProvider and do this work in additionalAuthenticationChecks:

package com.burtbeckwith.grails.security

import grails.plugin.springsecurity.SpringSecurityUtils
import grails.plugin.springsecurity.userdetails.GrailsUser

import org.springframework.security.authentication.UsernamePasswordAuthenticationToken
import org.springframework.security.authentication.dao.DaoAuthenticationProvider
import org.springframework.security.core.AuthenticationException
import org.springframework.security.core.userdetails.UserDetails

class PasswordFixingDaoAuthenticationProvider
extends DaoAuthenticationProvider {

   def grailsApplication

   protected void additionalAuthenticationChecks(
         UserDetails userDetails,
         UsernamePasswordAuthenticationToken authentication)
            throws AuthenticationException {
      super.additionalAuthenticationChecks userDetails, authentication

      // if we got this far the password was ok

      String oldHashedPassword = userDetails.getPassword()
      if (oldHashedPassword.startsWith('$2a$10$') &&
            oldHashedPassword.length() == 60) {
         // already bcrypt
         return
      }

      if (oldHashedPassword.length() != 64) {
         // TODO
         return
      }

      String bcryptPassword = getPasswordEncoder().encodePassword(
               authentication.credentials, null) 

      // use HQL to update the password in the database directly

      def conf = SpringSecurityUtils.securityConfig
      String userClassName = conf.userLookup.userDomainClassName
      Class<?> User = grailsApplication.getDomainClass(userClassName).clazz

      def args = [p: bcryptPassword]
      String hql = 'update ' + User.name + ' u set u.password=:p where '
      if (userDetails instanceof GrailsUser) {
         hql += 'u.id=:id'
         args.id = userDetails.id
      }
      else {
         hql += 'u.' + conf.userLookup.usernamePropertyName + '=:un'
         args.un = userDetails.username
      }

      User.withNewSession {
         User.withTransaction {
            User.executeUpdate hql, args
         }
      }
   }
}

Calling super.additionalAuthenticationChecks() will ensure that a password was provided and it will be verified using either SHA-256 or bcrypt by Sha256ToBCryptPasswordEncoder, so if there is no exception thrown it’s safe to update the password. Note that the update code is generic and can be made more compact by hard-coding your class and property names.

We register Sha256ToBCryptPasswordEncoder as the passwordEncoder bean, and create bcryptPasswordEncoder and sha256PasswordEncoder beans, configured with the SHA-256 settings that were being used, and the bcrypt settings that will be used (configure those in Config.groovy as described in the docs). Also configure the bean override of daoAuthenticationProvider to be a PasswordFixingDaoAuthenticationProvider with the same configuration as is done in SpringSecurityCoreGrailsPlugin.groovy with the addition of the grailsApplication reference:

import grails.plugin.springsecurity.SpringSecurityUtils
import grails.plugin.springsecurity.authentication.encoding.BCryptPasswordEncoder

import org.springframework.security.authentication.encoding.MessageDigestPasswordEncoder

import com.burtbeckwith.grails.security.PasswordFixingDaoAuthenticationProvider
import com.burtbeckwith.grails.security.Sha256ToBCryptPasswordEncoder

beans = {

   def conf = SpringSecurityUtils.securityConfig

   bcryptPasswordEncoder(BCryptPasswordEncoder, conf.password.bcrypt.logrounds) // 10

   sha256PasswordEncoder(MessageDigestPasswordEncoder, conf.password.algorithm) {
      encodeHashAsBase64 = conf.password.encodeHashAsBase64 // false
      iterations = conf.password.hash.iterations // 10000
   }

   passwordEncoder(Sha256ToBCryptPasswordEncoder) {
      bcryptPasswordEncoder = ref('bcryptPasswordEncoder')
      sha256PasswordEncoder = ref('sha256PasswordEncoder')
   }

   daoAuthenticationProvider(PasswordFixingDaoAuthenticationProvider) {
      userDetailsService = ref('userDetailsService')
      passwordEncoder = ref('passwordEncoder')
      userCache = ref('userCache')
      saltSource = ref('saltSource')
      preAuthenticationChecks = ref('preAuthenticationChecks')
      postAuthenticationChecks = ref('postAuthenticationChecks')
      authoritiesMapper = ref('authoritiesMapper')
      hideUserNotFoundExceptions = conf.dao.hideUserNotFoundExceptions // true
      grailsApplication = ref('grailsApplication')
   }
}

With this configuration, new users’ passwords will be hashed with bcrypt, and valid existing users’ passwords will be converted to bcrypt using the plaintext passwords used during login. Once your users are converted, back out these changes and convert to the standard bcrypt approach. This would involve deleting the grails.plugin.springsecurity.password.algorithm attribute and all salt configuration since bcrypt doesn’t support a salt, deleting Sha256ToBCryptPasswordEncoder and PasswordFixingDaoAuthenticationProvider, and removing the bcryptPasswordEncoder and sha256PasswordEncoder bean definitions and passwordEncoder and daoAuthenticationProvider overrides from resources.groovy since the beans configured by the plugin using Config.groovy settings will be sufficient. Also if you had added salt to the User class encodePassword method, e.g.

protected void encodePassword() {
   password = springSecurityService.encodePassword(password, username)
}

convert it back to the default without a salt:

protected void encodePassword() {
   password = springSecurityService.encodePassword(password)
}

This Week in Grails (2013-20)

Saturday, May 25th, 2013

The big news is that Grails 2.3 M1 was released. 2.3 will be a big update with many fixes, enhancements, and new features. M1 only has a subset of what’s coming and it’s already packed with cool new stuff. Graeme did some writeups on what’s coming, Grails 2.3 M1 and Upcoming M2 and Road to Grails 2.3: RESTful URL Mappings and URL Mapping Reports.

Be sure to check out this cool video on Grails that the folks at Orange & Bronze created.

I released two plugins, standalone-tomcat-memcached and standalone-tomcat-redis. These are like the database-session plugin in that they reconfigure the web server to store session data in a datastore instead of the traditional approach, but these only work with Tomcat since they work directly with the Tomcat APIs instead of intercepting and replacing the real sessions. I’ve been working on reconfiguring how Grails applications deploy to Heroku, changing from using an embedded Jetty instance to using the standalone plugin (either with Tomcat or Jetty). Along the way since Heroku doesn’t support sticky sessions I created these plugins to get things working smoothly with the heroku plugin. More on this later.


If you want to keep up with these “This Week in Grails” posts you can access them directly via their category link or in an RSS reader with the feed for just these posts.


Translations of this post:



Plugins

There were 7 new plugins released:

  • apidocs version 0.1. Generates REST API documentation
  • criteria-js version 0.3. GORM criteria for JavaScript
  • db-helper-rest version 0.3. Provides methods for dropping, creating and initialization of database schema from the project bootstrap
  • httplogger version 1.0. Logs HTTP traffic
  • required-parameters version 1.0.0. Enables verifying required parameters for controller actions using simple annotations
  • standalone-tomcat-memcached version 0.1. Uses Memcached as the Tomcat session manager
  • standalone-tomcat-redis version 0.1. Uses Redis as the Tomcat session manager

and 26 updated plugins:

  • goodform version 1.0.2. Create extremely usable complex forms with rules based flow that work well in browsers
  • airbrake version 0.9.3. Notifier plugin for integrating apps with Airbrake
  • asynchronous-mail version 1.0-RC5. Send email asynchronously by storing them in the database and sending with a Quartz job
  • aws-sdk version 1.4.3. Use the Amazon Web Services infrastructure services
  • closure-templates-resources version 0.2.3. Supports server-side compilation of .soy template files to JavaScript files
  • easyui version 1.3. Supplies jQuery EasyUI resources and taglibs
  • external-config-reload version 1.3.0. Polls for changes to external configuration files (files added to grails.config.locations), reloads the configuration when a change has occurred, and notifies specified plugins by firing the onConfigChange event in each
  • font-awesome-resources version 3.1. Integrates the Font Awesome icon set
  • google-visualization version 0.6.2. Provides a taglib for the interactive charts of the Google Visualization API
  • grails-melody version 1.44. Integrates the JavaMelody system monitoring tool
  • hibernate version 3.6.10.M3. Provides integration between Grails and Hibernate through GORM
  • i18n-fields version 0.6.4. Provides a declarative way of localizing domain classes’ fields for different languages
  • jrimum-bopepo version 0.3. Allows you to create Boletos Bancarios for Banks of Brazil using the Jrimum Bopepo library
  • neo4j version 1.0.0.RC2. GORM for Neo4j
  • newrelic version 1.0-2.18.0. Adds the NewRelic Real User Monitoring feature to your GSP pages
  • pusher version 0.5. Wrapper for pusher.com REST api
  • recaptcha version 0.6.5. Integrates ReCaptcha and Mailhide services
  • remote-pagination version 0.4.4. Provides tags for pagination and to sort columns without page refresh using Ajax and loads only the list of objects needed
  • segmentio version 0.2.0. Use Segment.io to send your analytics data to any service you want, without you having to integrate with each one individually
  • spring-security-mock version 1.0.2. Mock authentication support for Spring Security
  • standalone version 1.2.1. Runs a Grails application as a JAR file with an embedded Tomcat server
  • vaadin version 1.7.5. Adds Vaadin (http://vaadin.com/) integration
  • validate-config version 0.4.2. Adds methods to ConfigObject for validating expected and required properties
  • war-exec version 1.0.3. Makes the war files generated by Grails executable (java -jar myapp.war) by embedding Jetty. Jetty can be configured using properties in Config.groovy
  • webdriver version 0.4.2. Integrates Webdriver with Grails to allow functional testing in both HtmlUnit and real browsers
  • xwiki-rendering version 1.0-RC3. Convert texts using XWiki Rendering Framework

Interesting Tweets

Jobs



User groups and Conferences

This Week in Grails (2013-17)

Tuesday, May 07th, 2013

We released Grails 2.1.5 and Grails 2.2.2 this week. Grails 2.3.M1 is tentatively planned for next Tuesday will be released soon.

I linked to Peter Ledbrook’s Where next for Grails? post previously and there have been two interesting followup posts, one from David Dawson and one from Graeme.

Ticket sales for GR8Conf EU end soon, so be sure to get yours.

Several new Grails presentations have become available:

Programming Grails is printing, and I got my copy this week. You can get yours at the O’Reilly website and at Amazon, and there is also a sample chapter available. You can save 50% until May 8th.


If you want to keep up with these “This Week in Grails” posts you can access them directly via their category link or in an RSS reader with the feed for just these posts.


Translations of this post:



Plugins

There were 5 new plugins released:

  • jquery-date-time-picker version 0.1.0. Makes it easy to use jQuery date and time pickers
  • keywords-and-tags version 0.1. Provides a taglib able to highlight keywords/tags on your pages for SEO purposes
  • poly-driver version 0.2. Lets you specify a different preferred browser for each specific Geb specification class in a test suite
  • restrpc version 0.1. RESTRPC is an interceptor api that allows the user to associate more than one method/function per request method while still being compliant with the REST standard thus creating a ONE-TO-MANY pairing
  • scaffolding version 1.0.0. Handles the configuration of dynamic scaffolding

and 25 updated plugins:

  • atmosphere-meteor version 0.4.3. Incorporates the Atmosphere Framework (https://github.com/Atmosphere/atmosphere/wiki) and can form the basis for a traditional XMPP server with a browser-based client without the limitations of BOSH
  • aws-sdk version 1.4.2. Use the Amazon Web Services infrastructure services
  • barcode4j version 0.3. Generates barcodes using http://barcode4j.sourceforge.net/
  • build-test-data version 2.0.5. Enables the easy creation of test data by automatic inspection of constraints
  • cors version 1.1.0. Installs a servlet filter to set Access-Control-Allow-Origin and other CORS related headers to enable cross site AJAX requests to your Grails application
  • database-migration version 1.3.3. Official Grails plugin for database migrations
  • dojo version 1.6.1.17. Integrates the Dojo javascript toolkit
  • easyui version 1.0. Supplies jQuery EasyUI resources and taglibs
  • filterpane version 2.1.5. Adds filtering capabilities
  • hibernate version 3.6.10.M1. Provides integration between Grails and Hibernate through GORM
  • html5-mobile-scaffolding version 0.6.1. Scaffolds HTML5 mobile application using jQuery mobile in a single page
  • jaxrs version 0.8. Supports the development of RESTful web services based on the Java API for RESTful Web Services (JSR 311: JAX-RS)
  • marshallers version 0.3. Easy registration and usage of custom XML and JSON marshallers supporting hierarchical configurations
  • multi-tenant-single-db version 0.8.3. Multi tenant setup focused on single database mode
  • plastic-criteria version 0.9. Mock Grails Criteria for Unit Tests
  • plugin-config version 0.1.8. Simplifies plugin configuration tasks
  • quartz version 1.0-RC7. Schedules jobs to be executed with a specified interval or cron expression using the Quartz Enterprise Job Scheduler
  • recaptcha version 0.6.4. Integrates ReCaptcha and Mailhide services
  • release version 3.0.0. Publishes Grails plugins either to a public or private repository
  • rendering version 0.4.4. Render GSPs as PDFs, JPEGs, GIFs and PNGs
  • spring-security-facebook version 0.14. Plugin for Facebook Authentication, as extension to Grails Spring Security Core plugin
  • tomcat version 7.0.39. Makes Tomcat 7.0 the default servlet container for Grails at development time
  • vaadin version 1.7.4. Adds Vaadin (http://vaadin.com/) integration
  • validate-config version 0.4.1. Adds methods to ConfigObject for validating expected and required properties
  • zk version 2.2.0. Adds ZK Ajax framework (www.zkoss.org) support to Grails applications

Interesting Tweets

Jobs



User groups and Conferences


This Week in Grails (2013-15)

Saturday, April 20th, 2013

The Groovy team released Groovy 2.0.8 and 2.1.3 this week.

Peter Ledbrook wrote up some thoughts about the future of Grails on his blog.

Check out this recent GGUG talk on Grails services, command objects and design approaches.


If you want to keep up with these “This Week in Grails” posts you can access them directly via their category link or in an RSS reader with the feed for just these posts.


Translations of this post:



Plugins

There were 3 new plugins released:

  • grooscript-vertx version 0.2.5. Convert your Groovy files to Javascript
  • search-fields version 0.1. Auto-generate search query based on DSL in domain classes
  • yui-war-minify version 1.2. Runs yui-compressor on css and javascript resources at WAR creation time

and 11 updated plugins:

  • build-info version 1.2.4. Provides a controller/view that display basic information about the war file
  • coffeescript-resources version 0.3.8. Create coffeescript modules that automatically compiles on every file change with jCoffeeScript
  • cxf version 1.1.1. Expose Grails services as SOAP web services via CXF
  • cxf-client version 1.5.3. Use existing (or new) Apache CXF wsdl2java generated content to invoke SOAP services
  • easyui version 0.9. Supplies jQuery EasyUI resources and taglibs
  • ember-templates-precompiler version 0.4.1. Precompiles EmberJS powered Handlebars templates
  • envers version 2.1.0. Integrates with Hibernate Envers
  • filterpane version 2.1.3. Adds filtering capabilities
  • gson version 1.1.4. Provides alternate JSON (de)serialization using Google’s Gson library
  • paypal version 0.6.9. Adds PayPal integration
  • uploadr version 0.7.3. HTML5 Drag and Drop file uploader

Interesting Tweets

User groups and Conferences

This Week in Grails (2013-14)

Sunday, April 14th, 2013

SpringSource has moved from VMware to EMC as part of Pivotal. Check out Adrian Colyer’s blog post for information about how this will affect Grails, Groovy, and Spring and what the future looks like for us.

The Groovy team did an extensive interview with ZeroTurnaround, lots of interesting stuff there.

Happy Birthday to Grails, the 0.1 release was 7 years ago.

I wrote a blog post about a new plugin that integrates Netty with Grails. It will probably take an integration into Grails core to see real benefits, but there should be some opportunities to improve scalability and performance with this plugin.


If you want to keep up with these “This Week in Grails” posts you can access them directly via their category link or in an RSS reader with the feed for just these posts.


Translations of this post:



Plugins

There were 3 new plugins released:

  • domain-locking version 0.3. Provides an easy way to use optimistic/pessimistic lock
  • nettymvc version 0.1. Adds support for using Netty in Grails
  • typescript version 0.4.1. Helps you manage typescript code in your Grails application

and 16 updated plugins:

  • facebook-sdk version 0.4.10. Allows your application to use the Facebook Platform and develop Facebook apps on Facebook.com or on web sites (with Facebook Connect)
  • file-server version 0.2. Serves files from any directories on disk
  • force-response-download version 0.1.5. Forces the browser to open a dialog for downloading content produced within controller actions
  • geasyui version 0.8. Supplies jQuery EasyUI resources and taglibs
  • geb version 0.9.0. Geb is a library for headless web browsing on the JVM, suitable for automation and functional web testing
  • gorm-interceptors version 0.1.1. Interceptors for GORM methods (excluding find, countBy, addTo, removeFrom methods)
  • gson version 1.1.3. Provides alternate JSON (de)serialization using Google’s Gson library
  • handlebars-resources version 0.3.6. Supports using Handlebars.js templates with the Grails Resources Plugin
  • plastic-criteria version 0.8. Mock Grails Criteria for Unit Tests
  • remote-pagination version 0.4.3. Provides tags for pagination and to sort columns without page refresh using Ajax and loads only the list of objects needed
  • sharding version 1.0. Defines multiple database shards to horizontally scale data
  • slug-generator version 0.3.1. Generates unique slugs for String properties, for example to generate unique ‘nice’ urls for access to domain objects
  • spring-security-twitter version 0.5. Twitter authentication as extension to the Spring Security Core plugin
  • uploadr version 0.7.2. HTML5 Drag and Drop file uploader
  • vaadin version 1.7.3. Adds Vaadin (http://vaadin.com/) integration
  • zkui version 0.5.6. Seamlessly integrates ZK with Grails’ infrastructures; uses the Grails’ infrastructures such as GSP, controllers rather than zk’s zul as in ZKGrails plugin

Interesting Tweets

Jobs



User groups and Conferences

This Week in Grails (2013-12)

Saturday, March 30th, 2013

The Groovy team released version 2.1.2 this week.

Check out Graeme’s blog post on the new async features in Grails 2.3.


If you want to keep up with these “This Week in Grails” posts you can access them directly via their category link or in an RSS reader with the feed for just these posts.


Translations of this post:



Plugins

There were 7 new plugins released:

  • google-analytics-tracker version 0.1. Provides a simple way to embed your web application with page view tracking and event tracking of Google Analytics
  • gorm-interceptors version 0.1. Interceptors for GORM methods (excluding find, countBy, addTo, removeFrom methods)
  • mixpanel version 1.0. Integration with www.mixpanel.com analytics
  • sanchez version 1.0. Integration for sanchez.js javascript/html/GSP templates on client and server-side
  • segmentio version 0.1.7. Use Segment.io to send your analytics data to any service you want, without you having to integrate with each one individually
  • tika-parser version 1.3.0. Bundles the Apache Tika toolkit along with a parser service
  • validate-config version 0.4. Adds methods to ConfigObject for validating expected and required properties

and 13 updated plugins:

  • aws-sdk version 1.4.1. Use the Amazon Web Services infrastructure services
  • clover version 3.1.11. Integrates the Clover code coverage tool
  • code-coverage version 1.2.6. Generates code coverage reports using Cobertura
  • facebook-sdk version 0.4.9. Allows your application to use the Facebook Platform and develop Facebook apps on Facebook.com or on web sites (with Facebook Connect)
  • geasyui version 0.7. Supplies jQuery EasyUI resources and taglibs
  • gson version 1.1.2. Provides alternate JSON (de)serialization using Google’s Gson library
  • jaxrs version 0.7. Supports the development of RESTful web services based on the Java API for RESTful Web Services (JSR 311: JAX-RS)
  • jdbc-pool version 7.0.37. Replaces default Grails Commons DBCP Pool with Tomcat JDBC Pool” target=’_blank’>http://people.apache.org/~fhanik/jdbc-pool/)
  • jesque version 0.6.1. Groovier approach to using jesque
  • jquery-validation-ui version 1.4.4. Client Side Validation without writing JavaScript
  • recaptcha version 0.6.3. Integrates ReCaptcha and Mailhide services
  • spring-security-facebook version 0.13.2. Plugin for Facebook Authentication, as extension to Grails Spring Security Core plugin
  • uploadr version 0.7.1. HTML5 Drag and Drop file uploader

Interesting Tweets

Jobs



User groups and Conferences


This Week in Grails (2013-11)

Monday, March 18th, 2013

Graeme has been working on adding more asynchronous support for Grails 2.3, with additional controller features and new support for async GORM. Check out the initial documentation.

You can now register for GR8Conf EU at the “early bird” rates – be sure to get your tickets before the prices go up. They have announced the speaker lineup, and they are looking for sponsors. You can also check out their Laynrd page.

Registration for GR8Conf US is also open, and you have until the end of the week to get your ticket at the “Door Buster” rate.

The SpringOne 2GX call for papers call for papers is open, so submit a talk if you’re interested in speaking there in September. If you want to attend, register here before their prices go up.


If you want to keep up with these “This Week in Grails” posts you can access them directly via their category link or in an RSS reader with the feed for just these posts.


Translations of this post:



Plugins

There was one new plugin released:

and 11 updated plugins:

  • coffeescript-resources version 0.3.7. Create coffeescript modules that automatically compiles on every file change with jCoffeeScript
  • console-enhancements version 1.0. Enhances the grails console output for better visibility
  • cxf-client version 1.5.2. Use existing (or new) Apache CXF wsdl2java generated content to invoke SOAP services
  • geasyui version 0.6. Supplies jQuery EasyUI resources and taglibs
  • goblin version 0.3.3. A browser game framework
  • gson version 1.1. Provides alternate JSON (de)serialization using Google’s Gson library
  • health-control version 0.2. Automated control of services, resources and other things that might fail from time to time
  • plastic-criteria version 0.7. Mock Grails Criteria for Unit Tests
  • spring-security-facebook version 0.13. Plugin for Facebook Authentication, as extension to Grails Spring Security Core plugin
  • spring-security-saml version 1.0.0.M20. SAML 2.x support for the Spring Security Plugin
  • webflow version 2.0.8. Integrates Spring Web Flow with Grails

Interesting Tweets

Jobs



User groups and Conferences


This Week in Grails (2013-10)

Tuesday, March 12th, 2013

The speaker lineup for GR8Conf US has been announced, and a partial list of speakers have been announced for GR8Conf EU. Be sure to get your tickets now before the prices go up.

I released a new plugin this week that adds Dropwizard support for Grails. Check out the introductory blog post for usage information and a test project.


If you want to keep up with these “This Week in Grails” posts you can access them directly via their category link or in an RSS reader with the feed for just these posts.


Translations of this post:



Plugins

There were 3 new plugins released:

  • dropwizard version 0.1. Adds support for Dropwizard
  • file-server version 0.1. Serves files from any directories on disk
  • health-control version 0.1. Automated control of services, resources and other things that might fail from time to time

and 14 updated plugins:

  • aws-sdk version 1.3.33. Use the Amazon Web Services infrastructure services
  • bootstrap-crumbs version 1.0.2. Provide simple breadcrumb functionality using the twitter bootstrap library
  • coffeescript-compiler version 0.9.2. Compiles .coffee source files into .js files
  • cxf-client version 1.5.1. Use existing (or new) Apache CXF wsdl2java generated content to invoke SOAP services
  • gson version 1.0.1. Provides alternate JSON (de)serialization using Google’s Gson library
  • hd-image-utils version 0.4. High quality image manipulation plugin for scaling and cropping images. Uses the pure Java java-image-scaling library
  • ic-alendar version 0.3.5. Export event data in the iCalendar format
  • jesque version 0.6.0. Groovier approach to using jesque
  • kickstart-with-bootstrap version 0.9.6. Start your project with a good looking frontend, with adapted scaffolding templates for standard CRUD pages using Twitter Bootstrap
  • mongodb version 1.2.0. Aims to provide an object-mapping layer on top of MongoDB
  • recaptcha version 0.6.2. Integrates ReCaptcha and Mailhide services
  • resources version 1.2. A resource management and processing framework
  • sharding version 0.9. Defines multiple database shards to horizontally scale data
  • wslite version 0.7.2.0. Integrates the https://github.com/jwagenleitner/groovy-wslite library

Interesting Tweets

Jobs



User groups and Conferences


This Week in Grails (2013-09)

Wednesday, March 06th, 2013

We released Grails 2.1.4 and 2.2.1 this week; they are primarily bug fix releases.

Registration for GR8Conf Europe 2013 is now open. Be sure to sign up soon while the prices are very low.

I’ve been seeing a lot of buzz about Dropwizard as a framework for creating REST services. I thought it would be interesting to integrate it with Grails, but it ended up being a lot more work than I expected since the two approaches are very different, and very opinionated. I have an initial implementation available of a plugin and will add some docs and a sample application soon.


If you want to keep up with these “This Week in Grails” posts you can access them directly via their category link or in an RSS reader with the feed for just these posts.


Translations of this post:



Plugins

There was one new plugin released:

and 7 updated plugins:

  • coffeescript-compiler version 0.8.1. Compiles .coffee source files into .js files
  • geasyui version 0.4. Supplies jQuery EasyUI resources and taglibs
  • jquery-validation-ui version 1.4.2. Client Side Validation without writing JavaScript
  • kickstart-with-bootstrap version 0.9.5b. Start your project with a good looking frontend, with adapted scaffolding templates for standard CRUD pages using Twitter Bootstrap
  • localizations version 1.4.4.10. Store i18n strings in a database
  • recaptcha version 0.6.0. Integrates ReCaptcha and Mailhide services
  • redis version 1.3.3. Provides integration with a Redis datastore

Interesting Tweets

User groups and Conferences


This Week in Grails (2013-08)

Wednesday, February 27th, 2013

Rob Fletcher released a new plugin this week for JSON serialization/deserialization using Google’s Gson library.

SpringOne 2GX 2013 has been announced, and it will be September 9-12 in Santa Clara, CA.

Tomas Lin created an interesting looking Grails template project on GitHub that is pre-configured for testing.


If you want to keep up with these “This Week in Grails” posts you can access them directly via their category link or in an RSS reader with the feed for just these posts.


Translations of this post:



Plugins

There were 5 new plugins released:

  • casper-runner version 0.2. Runs functional CapserJS tests
  • goblin version 0.3.2. A browser game framework
  • gson version 1.0. Provides alternate JSON (de)serialization using Google’s Gson library
  • simple-suggestions version 0.1. Suggestion service to provide suggestions to auto complete controls
  • geasyui version 0.3. Supplies jQuery EasyUI resources and taglibs

and 12 updated plugins:

  • aws-sdk version 1.3.32. Use the Amazon Web Services infrastructure services
  • codenarc version 0.18.1. Static code analysis for Groovy
  • dumbster version 0.2. Adds support for the Dumbster SMTP server for testing
  • improx version 0.2. Use interactive mode from other process via TCP
  • jetty version 2.0.3. Makes Jetty the development time container
  • jquery-validation-ui version 1.4.1. Client Side Validation without writing JavaScript
  • kickstart-with-bootstrap version 0.9.2. Start your project with a good looking frontend, with adapted scaffolding templates for standard CRUD pages using Twitter Bootstrap
  • less-resources version 1.3.3.1. Compile .less files into .css files
  • localizations version 1.4.4.9. Store i18n strings in a database
  • plastic-criteria version 0.6. Mock Grails Criteria for Unit Tests
  • release version 2.2.1. Publishes Grails plugins either to a public or private repository
  • vaadin version 1.7.1. Adds Vaadin (http://vaadin.com/) integration

Interesting Tweets

Jobs



User groups and Conferences


Creative Commons License
This work is licensed under a Creative Commons Attribution 3.0 License.