The future of functional web testing?

Engineering | Peter Ledbrook | August 28, 2010 | ...

The Groovy community is a productive bunch, which means there are a plethora of frameworks, libraries, and tools to make your life easier. The area of testing seems to be particularly fertile ground and I've recently been looking into a couple of tools that, when combined, promise a step change in your productivity when writing functional web tests.

Although my usual focus is Grails, you don't have to use Grails to reap the benefits of these tools: they will work with any web application and will integrate well with any Java-based project/build. As it happens they both have associated plugins…

Reuse your Hibernate/JPA domain model with Grails

Engineering | Peter Ledbrook | August 26, 2010 | ...

It's a common story. You have an existing database and now you want to add a web application for it with the minimum of fuss. Is Grails up to the task? Of course it is! Even better, if you already have a domain model based on JPA or Hibernate configuration files, you can reuse it and still benefit from the great GORM features you're used to.

The first step in reusing an existing domain model is to get the class files on the application's classpath. You can do this either by packaging them up in a JAR file and including it in the application (typically by dropping it in the 'lib' directory), or…

Spring Roo 1.1.0.M3 Released

Engineering | Ben Alex | August 25, 2010 | ...

Update: SpringSource Tool Suite 3.5.0.M3 is now available for download. It includes the latest Spring Roo 1.1.0.M3 and GWT 2.1.0.M3 support.

Many members of the community have been eagerly awaiting Spring Roo 1.1.0.M3, and I'm pleased to announce it is now available (download here). This release incorporates more than 150 new features, enhancements and other improvements since Milestone 2, bringing the cumulative total in the 1.1.0 milestone series to some 500 issues. Many of the improvements in Spring Roo 1.1.0.M3 reflect our continued close collaboration with the Spring Framework, Google Web Toolkit, AspectJ and SpringSource Tool Suite teams, and you can see the results in some of the major new features:
  • Incremental database reverse engineering (or DBRE as it's affectionately known around the office): This has been the most highly-voted for Jira ticket in the history of the Spring Roo project, representing around 130 separate votes. This new feature makes it possible to introspect an existing relational database and emit a series of JPA entities. However, unlike traditional database reverse engineering tools, DBRE can be re-run repeatedly on the same project without undesired side-effects (thus the term "incremental" in the feature name). All of the members that result from the introspection are stored in AspectJ ITDs, which is consistent with the rest of Roo. This keeps your .java files clutter-free and intention-revealing (just like they should be). While introspection is now working well (even for complex situations like composite primary keys and all cardinality types) and allows you to programmatically use the resulting entities in normal Java style, in Roo 1.1.0.M4 we'll be adding web tier support for introspected databases.
  • Latest Google Web Toolkit 2.1.0.M3 features: Our collaboration with GWT enables Roo to produce applications that use the newest features in GWT 2.1.0.M3 (which was also released today). One of the most highly-anticipated new features is relationship support under the RequestFactory infrastructure. You can try this out by using the "script expenses.roo" command, then "mvn gwt:run" and creating related employee objects via the GWT UI. You can read more about the new GWT 2.1.0.M3 features in the GWT blog entry.
  • Automatic JSON support, including in Spring MVC applications: All domain objects produced by Spring Roo will now include automatic JSON-related methods. These allow you to bidirectionally convert between a JSON representation and an object. We introduce these new JSON-related methods via ITDs in the normal Roo style. Roo-managed Spring MVC controllers now also automatically use these methods as well. To see this in action, use "script clinic.roo", then "mvn tomcat:run", create a new Owner via the web user interface, and then try a curl command such as curl -v -H 'Accept: application/json' -X GET http://localhost:8080/petclinic/owners/.
  • 16 social media embedding features: It's now possible to add content from 16 social media web sites to your Spring MVC-based front end with a single Roo command! This includes YouTube, Google Video, Vimeo, Viddler, Screenr, UStream, LiveStream, Flikr, Picasa, Google Presentations, Scribd, SlideShare, Google Maps, Google Wave, Twitter and Wikinvest. It's all available from the new "web mvc embed" command.
  • Library upgrades: We've updated the libraries which Roo automatically uses in projects. Some of the notable updates include shifting to Spring Framework 3.0.4 (with enhanced resource serving by the elimination of the URL rewrite filter) and Spring Web Flow 2.1.1.
  • Automatic Roo annotation JAR upgrades: Now when you upgrade to a new version of Roo, there's no need to edit your project's pom.xml to change the Roo annotation library version. Roo will take care of this automatically for you.
  • Usability enhancements: We've now added a number of new features to improve usability. One item you may notice is the new "flash message" area at the top of the screen. This displays the progress of long-running operations (you can try the "flash test" command for a quick demo). We do recommend you use Linux, Windows or iTerm (for OSX users) for the best flash message experience. Some other less visible improvements include better logging, suppport for "#" comments, tab assist for the "hint" command, a comment at the top of AspectJ ITDs to remind you not to edit them, and many others.

As always, the Spring Roo Reference Guide includes upgrade instructions for those already using Roo, as well as background reading and introductory tutorials for those interested in learning more. The reference guide can be viewed online, plus it's also included in the download ZIP. You can also learn more about Spring Roo by attending SpringOne, JavaOne, Devoxx, Google Developer Days or YOW!2010 over the next few months.

The next release of Spring Roo will be 1.1.0.M4. This will be the final milestone in the series and we expect to reach 1.1.0.RELEASE in mid-0ctober 2010. We maintain our full roadmap dates in Jira for…

(Secure) File Transfer, the Only Way to Fly…err Copy

Engineering | Josh Long | August 23, 2010 | ...

There are many ways to skin a cat. Many applications today rely on messaging (AMQP, JMS) to bridge the gap between disparate systems and data. Others rely on RPC (typically web-services, or REST). For a great many applications, however, file transfer is very much a way of life! There are several common ways of supporting it, but three of the most common are using a shared mount or folder, using a FTP server, and - for more secure exchanges - using SSH (or SFTP). While it's common knowledge that Spring has always provided first-class support for messaging (JMS, AMQP) and RPC (there are far too…

RabbitMQ Plugin for Grails - Early Access

Engineering | Peter Ledbrook | August 23, 2010 | ...

RabbitMQ is a lightweight, reliable, scalable and portable message broker based on the Advanced Message Queueing Protocol (AMQP). It's ideal for heterogeneous systems and cloud platforms, but it can be used for pretty much any messaging requirements, big or small. You don't (typically) access it via the JMS API, and in fact the JMS plugin won't help, but a new plugin is now available that's dedicated to making it easy to use RabbitMQ from Grails applications.

The current version of the plugin (0.2) is relatively limited, but you can already send and receive messages. I encourage you to try it…

Building RabbitMQ apps using Python

Engineering | Greg L. Turnquist | August 19, 2010 | ...

RabbitMQ is a powerful messaging broker based on the Advanced Message Queueing Protocol (AMQP). Thanks to the neutral nature of the AMQP spec, it is easy to connect to it from many platforms, including Python. In this blog entry, we will:

  • Create a simple stock ticker Python application
  • Create a brokerage Python application that decides when to buy and sell.
  • Compare pika, an AMQP library created by the RabbitMQ team, with py-amqplib.
You can find all the source code for this blog at http://github.com/gregturn/amqp-demo. This assumes you have already installed RabbitMQ based on instructions for your platform and fired it up. Personally, I have it running on my Mac OS X machine (snow leopard).

By the way:

The code written in this blog entry is for demonstration purposes only. Do not rely on the algorithms for financial advice.
With that out of the way, let's write some code!

Building the stock ticker

A good example for a messaging solution is a stock ticker system. The stock exchange publishes messages to the broker indicating stock name, price, and time.
import pickle
import random
import time

class Ticker(object):
    def __init__(self, publisher, qname):
        self.publisher = publisher

        # This quickly creates four random stock symbols
        chars = range(ord("A"), ord("Z")+1)
        def random_letter(): return chr(random.choice(chars))
        self.stock_symbols = [random_letter…

Simplified Spring Security with Grails

Engineering | Peter Ledbrook | August 11, 2010 | ...

Spring Security is a powerful library for securing your applications that comes with a bewildering number of options. Based on Spring, it can be readily integrated into a Grails application. But why not save the hassle and use the new improved Grails plugin?

The plugin has gone through several evolutionary stages that started with the Acegi plugin. Its most recent incarnation is a complete rewrite for Spring Security 3 and Spring 3. One of the results of this is that the plugin will only work with Grails 1.2.2 and above. Another significant change is that there is no longer just one Spring…

Virgo Milestone M03 Ships

Engineering | Christopher Frost | August 10, 2010 | ...

Virgo 2.1.0.M03-incubator is available from the Virgo website. The changes include:

  • Further performance improvements, especially for Windows users.
  • Update the version of Logback to 0.9.24 and SLF4J to 1.6.1
  • Minor bug fixes

The performance improvement was achieved by adjusting the log level of entry exit tracing.

As a result of the new version of Logback the syntax of the configuration file 'serviceability.xml' has changed slightly. More information can be found here.

We have now published a plan outline for the future of Virgo so you have a better idea of where we are going.

Hyperic Broadens vSphere Support through vCenter APIs in Version 4.4

Engineering | Charles Lee | August 06, 2010 | ...

SpringSource Hyperic 4.4 was released earlier this week that brings enhanced management of VMware virtualized environments through integration with VMware vCenter.  While Hyperic has long had support for VMware technologies (a.k.a. VMware Infrastructure or VI), the availability of the VI Java API (http://vijava.sf.net) made our jobs much easier, because the power SDK streamlined how a Java application can interact with VI back then.  By adopting the VI Java API, we were able to keep up with VMware's evolution easily from VI to VMware vSphere, as it is known today.  This also allowed us to…

Get the Spring newsletter

Stay connected with the Spring newsletter

Subscribe

Get ahead

VMware offers training and certification to turbo-charge your progress.

Learn more

Get support

Tanzu Spring offers support and binaries for OpenJDK™, Spring, and Apache Tomcat® in one simple subscription.

Learn more

Upcoming events

Check out all the upcoming events in the Spring community.

View all