<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array">
    <added>
      <filename>hubbub/grails-app/conf/spy.properties</filename>
    </added>
    <added>
      <filename>source-code/ch01/qotd/ivy.xml</filename>
    </added>
    <added>
      <filename>source-code/ch01/qotd/ivysettings.xml</filename>
    </added>
    <added>
      <filename>source-code/ch01/qotd/qotd-test.launch</filename>
    </added>
  </added>
  <modified type="array">
    <modified>
      <diff>@@ -15,6 +15,7 @@ environments {
     development {
         dataSource {
             dbCreate = &quot;update&quot; // one of 'create', 'create-drop','update'
+            driverClassName = &quot;com.p6spy.engine.spy.P6SpyDriver&quot; // use this driver to enable p6spy logging
             url = &quot;jdbc:hsqldb:file:devDb;shutdown=true&quot;
         }
     }</diff>
      <filename>hubbub/grails-app/conf/DataSource.groovy</filename>
    </modified>
    <modified>
      <diff>@@ -1,157 +1,93 @@
 &lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
 &lt;classpath&gt;
-	&lt;classpathentry kind=&quot;src&quot; path=&quot;src/java&quot;/&gt;
-	&lt;classpathentry kind=&quot;src&quot; path=&quot;src/groovy&quot;/&gt;
-	&lt;classpathentry kind=&quot;src&quot; path=&quot;grails-app/conf&quot;/&gt;
-	&lt;classpathentry kind=&quot;src&quot; path=&quot;grails-app/controllers&quot;/&gt;
-	&lt;classpathentry kind=&quot;src&quot; path=&quot;grails-app/domain&quot;/&gt;
-	&lt;classpathentry kind=&quot;src&quot; path=&quot;grails-app/services&quot;/&gt;
-	&lt;classpathentry kind=&quot;src&quot; path=&quot;grails-app/taglib&quot;/&gt;
-	&lt;classpathentry kind=&quot;src&quot; path=&quot;test/integration&quot;/&gt;
-	&lt;classpathentry kind=&quot;src&quot; path=&quot;test/unit&quot;/&gt;
-	&lt;classpathentry kind=&quot;con&quot; path=&quot;org.eclipse.jdt.launching.JRE_CONTAINER&quot;/&gt;
-	&lt;classpathentry kind=&quot;var&quot; path=&quot;GRAILS_HOME/ant/lib/ant.jar&quot;/&gt;
-    &lt;classpathentry kind=&quot;var&quot; path=&quot;GRAILS_HOME/lib/ant-junit.jar&quot; /&gt;
-
-&lt;classpathentry kind=&quot;var&quot; path=&quot;GRAILS_HOME/lib/ant-launcher.jar&quot; /&gt;
-
-&lt;classpathentry kind=&quot;var&quot; path=&quot;GRAILS_HOME/lib/ant-nodeps.jar&quot; /&gt;
-
-&lt;classpathentry kind=&quot;var&quot; path=&quot;GRAILS_HOME/lib/ant-trax.jar&quot; /&gt;
-
-&lt;classpathentry kind=&quot;var&quot; path=&quot;GRAILS_HOME/lib/ant.jar&quot; /&gt;
-
-&lt;classpathentry kind=&quot;var&quot; path=&quot;GRAILS_HOME/lib/antlr-2.7.6.jar&quot; /&gt;
-
-&lt;classpathentry kind=&quot;var&quot; path=&quot;GRAILS_HOME/lib/bsf-2.3.0.jar&quot; /&gt;
-
-&lt;classpathentry kind=&quot;var&quot; path=&quot;GRAILS_HOME/lib/cglib-nodep-2.1_3.jar&quot; /&gt;
-
+&lt;classpathentry kind=&quot;src&quot; path=&quot;src/java&quot;/&gt;
+&lt;classpathentry kind=&quot;src&quot; path=&quot;src/groovy&quot;/&gt;
+&lt;classpathentry kind=&quot;src&quot; path=&quot;grails-app/conf&quot;/&gt;
+&lt;classpathentry kind=&quot;src&quot; path=&quot;grails-app/controllers&quot;/&gt;
+&lt;classpathentry kind=&quot;src&quot; path=&quot;grails-app/domain&quot;/&gt;
+&lt;classpathentry kind=&quot;src&quot; path=&quot;grails-app/services&quot;/&gt;
+&lt;classpathentry kind=&quot;src&quot; path=&quot;grails-app/taglib&quot;/&gt;
+&lt;classpathentry kind=&quot;src&quot; path=&quot;test/integration&quot;/&gt;
+&lt;classpathentry kind=&quot;src&quot; path=&quot;test/unit&quot;/&gt;
+&lt;classpathentry kind=&quot;con&quot; path=&quot;org.eclipse.jdt.launching.JRE_CONTAINER&quot;/&gt;
+&lt;classpathentry kind=&quot;output&quot; path=&quot;web-app/WEB-INF/classes&quot;/&gt;
+&lt;classpathentry kind=&quot;var&quot; path=&quot;GRAILS_HOME/ant/lib/ant.jar&quot;/&gt;
+&lt;classpathentry kind=&quot;var&quot; path=&quot;GRAILS_HOME/lib/jetty-util-6.1.14.jar&quot; /&gt;
+&lt;classpathentry kind=&quot;var&quot; path=&quot;GRAILS_HOME/lib/spring-webmvc-2.5.6.jar&quot; /&gt;
+&lt;classpathentry kind=&quot;var&quot; path=&quot;GRAILS_HOME/lib/oscache-2.4.1.jar&quot; /&gt;
+&lt;classpathentry kind=&quot;var&quot; path=&quot;GRAILS_HOME/lib/hibernate-commons-annotations-3.3.0.jar&quot; /&gt;
+&lt;classpathentry kind=&quot;var&quot; path=&quot;GRAILS_HOME/lib/jasper-compiler-jdt-5.5.15.jar&quot; /&gt;
+&lt;classpathentry kind=&quot;var&quot; path=&quot;GRAILS_HOME/lib/org.springframework.webflow-2.0.3.RELEASE.jar&quot; /&gt;
+&lt;classpathentry kind=&quot;var&quot; path=&quot;GRAILS_HOME/lib/gant_groovy1.6-1.6.0.jar&quot; /&gt;
+&lt;classpathentry kind=&quot;var&quot; path=&quot;GRAILS_HOME/lib/serializer.jar&quot; /&gt;
 &lt;classpathentry kind=&quot;var&quot; path=&quot;GRAILS_HOME/lib/commons-beanutils-1.7.0.jar&quot; /&gt;
-
-&lt;classpathentry kind=&quot;var&quot; path=&quot;GRAILS_HOME/lib/commons-cli-1.0.jar&quot; /&gt;
-
-&lt;classpathentry kind=&quot;var&quot; path=&quot;GRAILS_HOME/lib/commons-collections-3.2.jar&quot; /&gt;
-
-&lt;classpathentry kind=&quot;var&quot; path=&quot;GRAILS_HOME/lib/commons-dbcp-1.2.1.jar&quot; /&gt;
-
-&lt;classpathentry kind=&quot;var&quot; path=&quot;GRAILS_HOME/lib/commons-el-1.0.jar&quot; /&gt;
-
-&lt;classpathentry kind=&quot;var&quot; path=&quot;GRAILS_HOME/lib/commons-fileupload-1.1.1.jar&quot; /&gt;
-
+&lt;classpathentry kind=&quot;var&quot; path=&quot;GRAILS_HOME/lib/jetty-naming-6.1.14.jar&quot; /&gt;
+&lt;classpathentry kind=&quot;var&quot; path=&quot;GRAILS_HOME/lib/aspectjweaver.jar&quot; /&gt;
 &lt;classpathentry kind=&quot;var&quot; path=&quot;GRAILS_HOME/lib/commons-io-1.4.jar&quot; /&gt;
-
-&lt;classpathentry kind=&quot;var&quot; path=&quot;GRAILS_HOME/lib/commons-lang-2.1.jar&quot; /&gt;
-
-&lt;classpathentry kind=&quot;var&quot; path=&quot;GRAILS_HOME/lib/commons-logging-1.1.jar&quot; /&gt;
-
+&lt;classpathentry kind=&quot;var&quot; path=&quot;GRAILS_HOME/lib/hibernate-annotations-3.3.0.jar&quot; /&gt;
+&lt;classpathentry kind=&quot;var&quot; path=&quot;GRAILS_HOME/lib/standard-2.4.jar&quot; /&gt;
+&lt;classpathentry kind=&quot;var&quot; path=&quot;GRAILS_HOME/lib/jetty-6.1.14.jar&quot; /&gt;
+&lt;classpathentry kind=&quot;var&quot; path=&quot;GRAILS_HOME/lib/commons-lang-2.4.jar&quot; /&gt;
+&lt;classpathentry kind=&quot;var&quot; path=&quot;GRAILS_HOME/lib/commons-fileupload-1.1.1.jar&quot; /&gt;
+&lt;classpathentry kind=&quot;var&quot; path=&quot;GRAILS_HOME/lib/spring-test-2.5.6.jar&quot; /&gt;
+&lt;classpathentry kind=&quot;var&quot; path=&quot;GRAILS_HOME/lib/aspectjrt.jar&quot; /&gt;
+&lt;classpathentry kind=&quot;var&quot; path=&quot;GRAILS_HOME/lib/commons-cli-1.0.jar&quot; /&gt;
+&lt;classpathentry kind=&quot;var&quot; path=&quot;GRAILS_HOME/lib/standard-2.3.jar&quot; /&gt;
+&lt;classpathentry kind=&quot;var&quot; path=&quot;GRAILS_HOME/lib/ognl-2.6.9.jar&quot; /&gt;
+&lt;classpathentry kind=&quot;var&quot; path=&quot;GRAILS_HOME/lib/jcl-over-slf4j-1.5.6.jar&quot; /&gt;
+&lt;classpathentry kind=&quot;var&quot; path=&quot;GRAILS_HOME/lib/jstl-2.4.jar&quot; /&gt;
 &lt;classpathentry kind=&quot;var&quot; path=&quot;GRAILS_HOME/lib/commons-pool-1.2.jar&quot; /&gt;
-
-&lt;classpathentry kind=&quot;var&quot; path=&quot;GRAILS_HOME/lib/commons-validator-1.3.0.jar&quot; /&gt;
-
-&lt;classpathentry kind=&quot;var&quot; path=&quot;GRAILS_HOME/lib/dom4j-1.6.1.jar&quot; /&gt;
-
-&lt;classpathentry kind=&quot;var&quot; path=&quot;GRAILS_HOME/lib/ehcache-1.3.0.jar&quot; /&gt;
-
-&lt;classpathentry kind=&quot;var&quot; path=&quot;GRAILS_HOME/lib/ejb3-persistence.jar&quot; /&gt;
-
-&lt;classpathentry kind=&quot;var&quot; path=&quot;GRAILS_HOME/lib/groovy-all-1.5.6.jar&quot; /&gt;
-
-&lt;classpathentry kind=&quot;var&quot; path=&quot;GRAILS_HOME/lib/hibernate-annotations.jar&quot; /&gt;
-
-&lt;classpathentry kind=&quot;var&quot; path=&quot;GRAILS_HOME/lib/hibernate-commons-annotations.jar&quot; /&gt;
-
-&lt;classpathentry kind=&quot;var&quot; path=&quot;GRAILS_HOME/lib/hibernate3.jar&quot; /&gt;
-
 &lt;classpathentry kind=&quot;var&quot; path=&quot;GRAILS_HOME/lib/hsqldb-1.8.0.5.jar&quot; /&gt;
-
-&lt;classpathentry kind=&quot;var&quot; path=&quot;GRAILS_HOME/lib/jasper-compiler-5.5.15.jar&quot; /&gt;
-
-&lt;classpathentry kind=&quot;var&quot; path=&quot;GRAILS_HOME/lib/jasper-compiler-jdt-5.5.15.jar&quot; /&gt;
-
+&lt;classpathentry kind=&quot;var&quot; path=&quot;GRAILS_HOME/lib/javassist-3.4.GA.jar&quot; /&gt;
+&lt;classpathentry kind=&quot;var&quot; path=&quot;GRAILS_HOME/lib/commons-collections-3.2.jar&quot; /&gt;
+&lt;classpathentry kind=&quot;var&quot; path=&quot;GRAILS_HOME/lib/log4j-1.2.15.jar&quot; /&gt;
+&lt;classpathentry kind=&quot;var&quot; path=&quot;GRAILS_HOME/lib/hibernate3-3.3.1.jar&quot; /&gt;
+&lt;classpathentry kind=&quot;var&quot; path=&quot;GRAILS_HOME/lib/start.jar&quot; /&gt;
+&lt;classpathentry kind=&quot;var&quot; path=&quot;GRAILS_HOME/lib/groovy-all-1.6.0.jar&quot; /&gt;
+&lt;classpathentry kind=&quot;var&quot; path=&quot;GRAILS_HOME/lib/jta-1.1.jar&quot; /&gt;
+&lt;classpathentry kind=&quot;var&quot; path=&quot;GRAILS_HOME/lib/ehcache-1.5.0.jar&quot; /&gt;
+&lt;classpathentry kind=&quot;var&quot; path=&quot;GRAILS_HOME/lib/servlet-api-2.5-6.1.14.jar&quot; /&gt;
+&lt;classpathentry kind=&quot;var&quot; path=&quot;GRAILS_HOME/lib/ejb3-persistence-3.3.0.jar&quot; /&gt;
+&lt;classpathentry kind=&quot;var&quot; path=&quot;GRAILS_HOME/lib/ivy-2.0.0.jar&quot; /&gt;
+&lt;classpathentry kind=&quot;var&quot; path=&quot;GRAILS_HOME/lib/ant-nodeps-1.7.0.jar&quot; /&gt;
+&lt;classpathentry kind=&quot;var&quot; path=&quot;GRAILS_HOME/lib/commons-validator-1.3.0.jar&quot; /&gt;
+&lt;classpathentry kind=&quot;var&quot; path=&quot;GRAILS_HOME/lib/ant-launcher-1.7.0.jar&quot; /&gt;
+&lt;classpathentry kind=&quot;var&quot; path=&quot;GRAILS_HOME/lib/oro-2.0.8.jar&quot; /&gt;
+&lt;classpathentry kind=&quot;var&quot; path=&quot;GRAILS_HOME/lib/spring-2.5.6.jar&quot; /&gt;
 &lt;classpathentry kind=&quot;var&quot; path=&quot;GRAILS_HOME/lib/jasper-runtime-5.5.15.jar&quot; /&gt;
-
-&lt;classpathentry kind=&quot;var&quot; path=&quot;GRAILS_HOME/lib/jaxen-1.1-beta-11.jar&quot; /&gt;
-
-&lt;classpathentry kind=&quot;var&quot; path=&quot;GRAILS_HOME/lib/jdbc2_0-stdext.jar&quot; /&gt;
-
-&lt;classpathentry kind=&quot;var&quot; path=&quot;GRAILS_HOME/lib/jetty-6.1.4.jar&quot; /&gt;
-
-&lt;classpathentry kind=&quot;var&quot; path=&quot;GRAILS_HOME/lib/jetty-naming-6.1.4.jar&quot; /&gt;
-
-&lt;classpathentry kind=&quot;var&quot; path=&quot;GRAILS_HOME/lib/jetty-plus-6.1.4.jar&quot; /&gt;
-
-&lt;classpathentry kind=&quot;var&quot; path=&quot;GRAILS_HOME/lib/jetty-util-6.1.4.jar&quot; /&gt;
-
-&lt;classpathentry kind=&quot;var&quot; path=&quot;GRAILS_HOME/lib/jline-0.9.91.jar&quot; /&gt;
-
+&lt;classpathentry kind=&quot;var&quot; path=&quot;GRAILS_HOME/lib/cglib-nodep-2.1_3.jar&quot; /&gt;
+&lt;classpathentry kind=&quot;var&quot; path=&quot;GRAILS_HOME/lib/slf4j-api-1.5.6.jar&quot; /&gt;
+&lt;classpathentry kind=&quot;var&quot; path=&quot;GRAILS_HOME/lib/ant-trax.jar&quot; /&gt;
+&lt;classpathentry kind=&quot;var&quot; path=&quot;GRAILS_HOME/lib/ant-1.7.0.jar&quot; /&gt;
+&lt;classpathentry kind=&quot;var&quot; path=&quot;GRAILS_HOME/lib/svnkit-1.2.0.jar&quot; /&gt;
+&lt;classpathentry kind=&quot;var&quot; path=&quot;GRAILS_HOME/lib/jetty-plus-6.1.14.jar&quot; /&gt;
+&lt;classpathentry kind=&quot;var&quot; path=&quot;GRAILS_HOME/lib/commons-codec-1.3.jar&quot; /&gt;
+&lt;classpathentry kind=&quot;var&quot; path=&quot;GRAILS_HOME/lib/jsp-api-2.1.jar&quot; /&gt;
+&lt;classpathentry kind=&quot;var&quot; path=&quot;GRAILS_HOME/lib/jsr107cache-1.0.jar&quot; /&gt;
+&lt;classpathentry kind=&quot;var&quot; path=&quot;GRAILS_HOME/lib/antlr-2.7.6.jar&quot; /&gt;
 &lt;classpathentry kind=&quot;var&quot; path=&quot;GRAILS_HOME/lib/jsp-api-2.0.jar&quot; /&gt;
-
+&lt;classpathentry kind=&quot;var&quot; path=&quot;GRAILS_HOME/lib/backport-util-concurrent-3.0.jar&quot; /&gt;
+&lt;classpathentry kind=&quot;var&quot; path=&quot;GRAILS_HOME/lib/xpp3_min-1.1.3.4.O.jar&quot; /&gt;
+&lt;classpathentry kind=&quot;var&quot; path=&quot;GRAILS_HOME/lib/slf4j-log4j12-1.5.6.jar&quot; /&gt;
+&lt;classpathentry kind=&quot;var&quot; path=&quot;GRAILS_HOME/lib/jasper-compiler-5.5.15.jar&quot; /&gt;
+&lt;classpathentry kind=&quot;var&quot; path=&quot;GRAILS_HOME/lib/org.springframework.binding-2.0.3.RELEASE.jar&quot; /&gt;
+&lt;classpathentry kind=&quot;var&quot; path=&quot;GRAILS_HOME/lib/jline-0.9.91.jar&quot; /&gt;
+&lt;classpathentry kind=&quot;var&quot; path=&quot;GRAILS_HOME/lib/dom4j-1.6.1.jar&quot; /&gt;
+&lt;classpathentry kind=&quot;var&quot; path=&quot;GRAILS_HOME/lib/org.springframework.js-2.0.3.RELEASE.jar&quot; /&gt;
 &lt;classpathentry kind=&quot;var&quot; path=&quot;GRAILS_HOME/lib/jstl-2.3.jar&quot; /&gt;
-
-&lt;classpathentry kind=&quot;var&quot; path=&quot;GRAILS_HOME/lib/jstl-2.4.jar&quot; /&gt;
-
-&lt;classpathentry kind=&quot;var&quot; path=&quot;GRAILS_HOME/lib/jta.jar&quot; /&gt;
-
+&lt;classpathentry kind=&quot;var&quot; path=&quot;GRAILS_HOME/lib/sitemesh-2.4.jar&quot; /&gt;
+&lt;classpathentry kind=&quot;var&quot; path=&quot;GRAILS_HOME/lib/commons-el-1.0.jar&quot; /&gt;
+&lt;classpathentry kind=&quot;var&quot; path=&quot;GRAILS_HOME/lib/commons-dbcp-1.2.1.jar&quot; /&gt;
 &lt;classpathentry kind=&quot;var&quot; path=&quot;GRAILS_HOME/lib/junit-3.8.2.jar&quot; /&gt;
-
-&lt;classpathentry kind=&quot;var&quot; path=&quot;GRAILS_HOME/lib/log4j-1.2.15.jar&quot; /&gt;
-
-&lt;classpathentry kind=&quot;var&quot; path=&quot;GRAILS_HOME/lib/ognl-2.6.9.jar&quot; /&gt;
-
-&lt;classpathentry kind=&quot;var&quot; path=&quot;GRAILS_HOME/lib/oro-2.0.8.jar&quot; /&gt;
-
-&lt;classpathentry kind=&quot;var&quot; path=&quot;GRAILS_HOME/lib/oscache-2.4.1.jar&quot; /&gt;
-
-&lt;classpathentry kind=&quot;var&quot; path=&quot;GRAILS_HOME/lib/serializer.jar&quot; /&gt;
-
-&lt;classpathentry kind=&quot;var&quot; path=&quot;GRAILS_HOME/lib/servlet-api-2.5-6.1.4.jar&quot; /&gt;
-
-&lt;classpathentry kind=&quot;var&quot; path=&quot;GRAILS_HOME/lib/sitemesh-2.3.jar&quot; /&gt;
-
-&lt;classpathentry kind=&quot;var&quot; path=&quot;GRAILS_HOME/lib/spring-2.5.4.jar&quot; /&gt;
-
-&lt;classpathentry kind=&quot;var&quot; path=&quot;GRAILS_HOME/lib/spring-binding-2.0-m1.jar&quot; /&gt;
-
-&lt;classpathentry kind=&quot;var&quot; path=&quot;GRAILS_HOME/lib/spring-test.jar&quot; /&gt;
-
-&lt;classpathentry kind=&quot;var&quot; path=&quot;GRAILS_HOME/lib/spring-webflow-2.0-m1.jar&quot; /&gt;
-
-&lt;classpathentry kind=&quot;var&quot; path=&quot;GRAILS_HOME/lib/spring-webmvc.jar&quot; /&gt;
-
-&lt;classpathentry kind=&quot;var&quot; path=&quot;GRAILS_HOME/lib/standard-2.3.jar&quot; /&gt;
-
-&lt;classpathentry kind=&quot;var&quot; path=&quot;GRAILS_HOME/lib/standard-2.4.jar&quot; /&gt;
-
-&lt;classpathentry kind=&quot;var&quot; path=&quot;GRAILS_HOME/lib/start.jar&quot; /&gt;
-
-&lt;classpathentry kind=&quot;var&quot; path=&quot;GRAILS_HOME/lib/svnkit.jar&quot; /&gt;
-
-&lt;classpathentry kind=&quot;var&quot; path=&quot;GRAILS_HOME/lib/xalan.jar&quot; /&gt;
-
-&lt;classpathentry kind=&quot;var&quot; path=&quot;GRAILS_HOME/lib/xercesImpl.jar&quot; /&gt;
-
-&lt;classpathentry kind=&quot;var&quot; path=&quot;GRAILS_HOME/lib/xpp3_min-1.1.3.4.O.jar&quot; /&gt;
-
-&lt;classpathentry kind=&quot;var&quot; path=&quot;GRAILS_HOME/lib/xstream-1.2.1.jar&quot; /&gt;
-
-
-	&lt;classpathentry kind=&quot;var&quot; path=&quot;GRAILS_HOME/dist/grails-cli-1.0.3.jar&quot; /&gt;
-
-&lt;classpathentry kind=&quot;var&quot; path=&quot;GRAILS_HOME/dist/grails-core-1.0.3.jar&quot; /&gt;
-
-&lt;classpathentry kind=&quot;var&quot; path=&quot;GRAILS_HOME/dist/grails-crud-1.0.3.jar&quot; /&gt;
-
-&lt;classpathentry kind=&quot;var&quot; path=&quot;GRAILS_HOME/dist/grails-gorm-1.0.3.jar&quot; /&gt;
-
-&lt;classpathentry kind=&quot;var&quot; path=&quot;GRAILS_HOME/dist/grails-spring-1.0.3.jar&quot; /&gt;
-
-&lt;classpathentry kind=&quot;var&quot; path=&quot;GRAILS_HOME/dist/grails-test-1.0.3.jar&quot; /&gt;
-
-&lt;classpathentry kind=&quot;var&quot; path=&quot;GRAILS_HOME/dist/grails-web-1.0.3.jar&quot; /&gt;
-
-&lt;classpathentry kind=&quot;var&quot; path=&quot;GRAILS_HOME/dist/grails-webflow-1.0.3.jar&quot; /&gt;
-
-
-	&lt;classpathentry kind=&quot;output&quot; path=&quot;web-app/WEB-INF/classes&quot;/&gt;
+&lt;classpathentry kind=&quot;var&quot; path=&quot;GRAILS_HOME/lib/ant-junit-1.7.0.jar&quot; /&gt;
+&lt;classpathentry kind=&quot;var&quot; path=&quot;GRAILS_HOME/dist/grails-gorm-1.1.jar&quot; /&gt;
+&lt;classpathentry kind=&quot;var&quot; path=&quot;GRAILS_HOME/dist/grails-spring-1.1.jar&quot; /&gt;
+&lt;classpathentry kind=&quot;var&quot; path=&quot;GRAILS_HOME/dist/grails-scripts-1.1.jar&quot; /&gt;
+&lt;classpathentry kind=&quot;var&quot; path=&quot;GRAILS_HOME/dist/grails-crud-1.1.jar&quot; /&gt;
+&lt;classpathentry kind=&quot;var&quot; path=&quot;GRAILS_HOME/dist/grails-webflow-1.1.jar&quot; /&gt;
+&lt;classpathentry kind=&quot;var&quot; path=&quot;GRAILS_HOME/dist/grails-bootstrap-1.1.jar&quot; /&gt;
+&lt;classpathentry kind=&quot;var&quot; path=&quot;GRAILS_HOME/dist/grails-core-1.1.jar&quot; /&gt;
+&lt;classpathentry kind=&quot;var&quot; path=&quot;GRAILS_HOME/dist/grails-test-1.1.jar&quot; /&gt;
+&lt;classpathentry kind=&quot;var&quot; path=&quot;GRAILS_HOME/dist/grails-web-1.1.jar&quot; /&gt;
+&lt;classpathentry kind=&quot;var&quot; path=&quot;GRAILS_HOME/dist/grails-resources-1.1.jar&quot; /&gt;
 &lt;/classpath&gt;</diff>
      <filename>source-code/ch01/qotd/.classpath</filename>
    </modified>
    <modified>
      <diff>@@ -1,5 +1,7 @@
-#Thu Jun 26 13:41:37 EST 2008
+#utf-8
+#Tue Jun 09 16:23:55 GMT 2009
 app.version=0.1
 app.servlet.version=2.4
-app.grails.version=1.0.3
+app.grails.version=1.1
+plugins.hibernate=1.1
 app.name=qotd</diff>
      <filename>source-code/ch01/qotd/application.properties</filename>
    </modified>
    <modified>
      <diff>@@ -1,8 +1,8 @@
 dataSource {
-	pooled = true
-	driverClassName = &quot;org.hsqldb.jdbcDriver&quot;
-	username = &quot;sa&quot;
-	password = &quot;&quot;
+    pooled = true
+    driverClassName = &quot;org.hsqldb.jdbcDriver&quot;
+    username = &quot;sa&quot;
+    password = &quot;&quot;
 }
 hibernate {
     cache.use_second_level_cache=true
@@ -11,22 +11,23 @@ hibernate {
 }
 // environment specific settings
 environments {
-	development {
-		dataSource {
-			dbCreate = &quot;update&quot; // one of 'create', 'create-drop','update'
-			url = &quot;jdbc:hsqldb:file:devDb;shutdown=true&quot;
-		}
-	}
-	test {
-		dataSource {
-			dbCreate = &quot;update&quot;
-			url = &quot;jdbc:hsqldb:mem:testDb&quot;
-		}
-	}
-	production {
-		dataSource {
-			dbCreate = &quot;update&quot;
-			url = &quot;jdbc:hsqldb:file:prodDb;shutdown=true&quot;
-		}
-	}
-}
\ No newline at end of file
+    development {
+        dataSource {
+            dbCreate = &quot;update&quot; // one of 'create', 'create-drop','update'
+//            url = &quot;jdbc:hsqldb:file:devDb;shutdown=true&quot;
+            url = &quot;jdbc:hsqldb:mem:testDb&quot;
+        }
+    }
+    test {
+        dataSource {
+            dbCreate = &quot;update&quot;
+            url = &quot;jdbc:hsqldb:mem:testDb&quot;
+        }
+    }
+    production {
+        dataSource {
+            dbCreate = &quot;update&quot;
+            url = &quot;jdbc:hsqldb:file:prodDb;shutdown=true&quot;
+        }
+    }
+}</diff>
      <filename>source-code/ch01/qotd/grails-app/conf/DataSource.groovy</filename>
    </modified>
    <modified>
      <diff>@@ -1,21 +1,18 @@
 class QuoteController {
 
-	def scaffold = true
+    def scaffold = true
 
-	def quoteService
+    def quoteService
 
-	def random = {
-		def randomQuote = quoteService.getRandomQuote()
-		[ quote : randomQuote ]
-	}
-	
-	def ajaxRandom = {
-			def randomQuote = quoteService.getRandomQuote()
-			response.outputStream &lt;&lt; &quot;&lt;q&gt;${randomQuote.content}&lt;/q&gt;&quot; +
-						&quot;&lt;p&gt;${randomQuote.author}&quot;
-	}
+    def random = {
+        def randomQuote = quoteService.getRandomQuote()
+        [ quote : randomQuote ]
+    }
 	
+    def ajaxRandom = {
+        def randomQuote = quoteService.getRandomQuote()
+        response.outputStream &lt;&lt; &quot;&lt;q&gt;${randomQuote.content}&lt;/q&gt;&quot; +
+                &quot;&lt;p&gt;${randomQuote.author}&lt;/p&gt;&quot;
+    }
 
 }
-
-	</diff>
      <filename>source-code/ch01/qotd/grails-app/controllers/QuoteController.groovy</filename>
    </modified>
    <modified>
      <diff>@@ -1,13 +1,12 @@
 class Quote {
 	
-	String content
-	String author
-	Date created = new Date()
-	
-	static constraints = {
-		        author(blank:false)
-		        content(maxSize:1000, blank:false)
-	}
+    String content
+    String author
+    Date created = new Date()
 	
+    static constraints = {
+        author(blank:false)
+        content(maxSize:1000, blank:false)
+    }
 
 }</diff>
      <filename>source-code/ch01/qotd/grails-app/domain/Quote.groovy</filename>
    </modified>
    <modified>
      <diff>@@ -2,22 +2,21 @@ class QuoteService {
 
     boolean transactional = false
 
-	def getStaticQuote() {
-		return new Quote(author: &quot;Anonymous&quot;, content: &quot;Real Programmers Don't eat Quiche&quot;)	
-	}
+    def getStaticQuote() {
+        return new Quote(author: &quot;Anonymous&quot;, content: &quot;Real Programmers Don't eat Quiche&quot;)	
+    }
 
     def getRandomQuote() {
 	
-		def allQuotes = Quote.list()
-		def randomQuote = null
-		if (allQuotes.size() &gt; 0) {
-			def randomIdx = new Random().nextInt(allQuotes.size())
-			randomQuote = allQuotes[randomIdx]
-		} else {
-			randomQuote = getStaticQuote()
-		}		
-		return randomQuote
+        def allQuotes = Quote.list()
+        def randomQuote = null
+        if (allQuotes.size() &gt; 0) {
+            def randomIdx = new Random().nextInt(allQuotes.size())
+            randomQuote = allQuotes[randomIdx]
+        } else {
+            randomQuote = getStaticQuote()
+        }		
+        return randomQuote
 
     }
 }
-</diff>
      <filename>source-code/ch01/qotd/grails-app/services/QuoteService.groovy</filename>
    </modified>
    <modified>
      <diff>@@ -1,20 +1,19 @@
 &lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
 &lt;launchConfiguration type=&quot;org.eclipse.jdt.launching.localJavaApplication&quot;&gt;
-&lt;booleanAttribute key=&quot;org.eclipse.jdt.launching.DEFAULT_CLASSPATH&quot; value=&quot;false&quot;/&gt;
-&lt;stringAttribute key=&quot;org.eclipse.jdt.launching.MAIN_TYPE&quot; value=&quot;grails.util.GrailsMain&quot;/&gt;
-&lt;booleanAttribute key=&quot;org.eclipse.jdt.debug.ui.INCLUDE_EXTERNAL_JARS&quot; value=&quot;true&quot;/&gt;
-&lt;listAttribute key=&quot;org.eclipse.jdt.launching.CLASSPATH&quot;&gt;
-&lt;listEntry value=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&amp;#10;&amp;lt;runtimeClasspathEntry containerPath=&amp;quot;org.eclipse.jdt.launching.JRE_CONTAINER&amp;quot; javaProject=&amp;quot;qotd&amp;quot; path=&amp;quot;1&amp;quot; type=&amp;quot;4&amp;quot;/&amp;gt;&amp;#10;&quot;/&gt;
-&lt;listEntry value=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&amp;#10;&amp;lt;runtimeClasspathEntry id=&amp;quot;org.eclipse.jdt.launching.classpathentry.defaultClasspath&amp;quot;&amp;gt;&amp;#10;&amp;lt;memento exportedEntriesOnly=&amp;quot;false&amp;quot; project=&amp;quot;qotd&amp;quot;/&amp;gt;&amp;#10;&amp;lt;/runtimeClasspathEntry&amp;gt;&amp;#10;&quot;/&gt;
-&lt;listEntry value=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&amp;#10;&amp;lt;runtimeClasspathEntry internalArchive=&amp;quot;/qotd&amp;quot; path=&amp;quot;3&amp;quot; type=&amp;quot;2&amp;quot;/&amp;gt;&amp;#10;&quot;/&gt;
+&lt;listAttribute key=&quot;org.eclipse.debug.core.MAPPED_RESOURCE_PATHS&quot;&gt;
+&lt;listEntry value=&quot;/qotd&quot;/&gt;
 &lt;/listAttribute&gt;
 &lt;listAttribute key=&quot;org.eclipse.debug.core.MAPPED_RESOURCE_TYPES&quot;&gt;
 &lt;listEntry value=&quot;4&quot;/&gt;
 &lt;/listAttribute&gt;
-&lt;stringAttribute key=&quot;org.eclipse.jdt.launching.PROJECT_ATTR&quot; value=&quot;qotd&quot;/&gt;
-&lt;stringAttribute key=&quot;org.eclipse.jdt.launching.VM_ARGUMENTS&quot; value=&quot;-Dbase.dir=${project_loc} -Dserver.port=8080 -Dgrails.env=development&quot;/&gt;
-&lt;listAttribute key=&quot;org.eclipse.debug.core.MAPPED_RESOURCE_PATHS&quot;&gt;
-&lt;listEntry value=&quot;/qotd&quot;/&gt;
-&lt;/listAttribute&gt;
 &lt;booleanAttribute key=&quot;org.eclipse.debug.core.appendEnvironmentVariables&quot; value=&quot;true&quot;/&gt;
+&lt;listAttribute key=&quot;org.eclipse.jdt.launching.CLASSPATH&quot;&gt;
+&lt;listEntry value=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&amp;#10;&amp;lt;runtimeClasspathEntry containerPath=&amp;quot;org.eclipse.jdt.launching.JRE_CONTAINER&amp;quot; javaProject=&amp;quot;qotd&amp;quot; path=&amp;quot;1&amp;quot; type=&amp;quot;4&amp;quot;/&amp;gt;&amp;#10;&quot;/&gt;
+&lt;listEntry value=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&amp;#10;&amp;lt;runtimeClasspathEntry containerPath=&amp;quot;GRAILS_HOME/dist/grails-bootstrap-1.1.jar&amp;quot; path=&amp;quot;3&amp;quot; type=&amp;quot;3&amp;quot;/&amp;gt;&amp;#10;&quot;/&gt;
+&lt;listEntry value=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&amp;#10;&amp;lt;runtimeClasspathEntry containerPath=&amp;quot;GRAILS_HOME/lib/groovy-all-1.6.0.jar&amp;quot; path=&amp;quot;3&amp;quot; type=&amp;quot;3&amp;quot;/&amp;gt;&amp;#10;&quot;/&gt;
+&lt;/listAttribute&gt;
+&lt;booleanAttribute key=&quot;org.eclipse.jdt.launching.DEFAULT_CLASSPATH&quot; value=&quot;false&quot;/&gt;
+&lt;stringAttribute key=&quot;org.eclipse.jdt.launching.MAIN_TYPE&quot; value=&quot;grails.util.GrailsMain&quot;/&gt;
+&lt;stringAttribute key=&quot;org.eclipse.jdt.launching.PROJECT_ATTR&quot; value=&quot;qotd&quot;/&gt;
+&lt;stringAttribute key=&quot;org.eclipse.jdt.launching.VM_ARGUMENTS&quot; value=&quot;-Dbase.dir=&amp;quot;${project_loc:qotd}&amp;quot; -Dserver.port=8080 -Dgrails.env=development&quot;/&gt;
 &lt;/launchConfiguration&gt;</diff>
      <filename>source-code/ch01/qotd/qotd.launch</filename>
    </modified>
    <modified>
      <diff>@@ -2,7 +2,7 @@
 &lt;beans xmlns=&quot;http://www.springframework.org/schema/beans&quot;
        xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;
        xsi:schemaLocation=&quot;
-http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd&quot;&gt;
+http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd&quot;&gt;
 
 	&lt;bean id=&quot;grailsApplication&quot; class=&quot;org.codehaus.groovy.grails.commons.GrailsApplicationFactoryBean&quot;&gt;
 		&lt;description&gt;Grails application factory bean&lt;/description&gt;
@@ -17,7 +17,8 @@ http://www.springframework.org/schema/beans http://www.springframework.org/schem
 	&lt;/bean&gt;
 
     &lt;bean id=&quot;pluginMetaManager&quot; class=&quot;org.codehaus.groovy.grails.plugins.DefaultPluginMetaManager&quot;&gt;
-        &lt;constructor-arg value=&quot;classpath*:**/plugins/*/plugin.xml&quot; /&gt;
+        &lt;property name=&quot;grailsApplication&quot; ref=&quot;grailsApplication&quot; /&gt;
+        &lt;property name=&quot;resourcePattern&quot; value=&quot;/WEB-INF/plugins/*/plugin.xml&quot; /&gt;
     &lt;/bean&gt;
 
     &lt;bean id=&quot;grailsConfigurator&quot; class=&quot;org.codehaus.groovy.grails.commons.spring.GrailsRuntimeConfigurator&quot;&gt;</diff>
      <filename>source-code/ch01/qotd/web-app/WEB-INF/applicationContext.xml</filename>
    </modified>
    <modified>
      <diff>@@ -1,311 +1,311 @@
-&lt;?xml version=&quot;1.0&quot; encoding=&quot;ISO-8859-1&quot; ?&gt;
-&lt;!DOCTYPE taglib PUBLIC &quot;-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN&quot; &quot;http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd&quot;&gt;
-
-&lt;taglib&gt;
-
-	&lt;tlib-version&gt;1.1.1&lt;/tlib-version&gt;
-
-	&lt;jsp-version&gt;1.2&lt;/jsp-version&gt;
-
-	&lt;short-name&gt;Spring&lt;/short-name&gt;
-
-	&lt;uri&gt;http://www.springframework.org/tags&lt;/uri&gt;
-
-	&lt;description&gt;Spring Framework JSP Tag Library. Authors: Rod Johnson, Juergen Hoeller&lt;/description&gt;
-
-
-	&lt;tag&gt;
-
-		&lt;name&gt;htmlEscape&lt;/name&gt;
-		&lt;tag-class&gt;org.springframework.web.servlet.tags.HtmlEscapeTag&lt;/tag-class&gt;
-		&lt;body-content&gt;JSP&lt;/body-content&gt;
-
-		&lt;description&gt;
-			Sets default HTML escape value for the current page.
-			Overrides a &quot;defaultHtmlEscape&quot; context-param in web.xml, if any.
-		&lt;/description&gt;
-
-		&lt;attribute&gt;
-			&lt;name&gt;defaultHtmlEscape&lt;/name&gt;
-			&lt;required&gt;true&lt;/required&gt;
-			&lt;rtexprvalue&gt;true&lt;/rtexprvalue&gt;
-		&lt;/attribute&gt;
-
-	&lt;/tag&gt;
-
-
-	&lt;tag&gt;
-
-		&lt;name&gt;escapeBody&lt;/name&gt;
-		&lt;tag-class&gt;org.springframework.web.servlet.tags.EscapeBodyTag&lt;/tag-class&gt;
-		&lt;body-content&gt;JSP&lt;/body-content&gt;
-
-		&lt;description&gt;
-			Escapes its enclosed body content, applying HTML escaping and/or JavaScript escaping.
-			The HTML escaping flag participates in a page-wide or application-wide setting
-			(i.e. by HtmlEscapeTag or a &quot;defaultHtmlEscape&quot; context-param in web.xml).
-		&lt;/description&gt;
-
-		&lt;attribute&gt;
-			&lt;name&gt;htmlEscape&lt;/name&gt;
-			&lt;required&gt;false&lt;/required&gt;
-			&lt;rtexprvalue&gt;true&lt;/rtexprvalue&gt;
-		&lt;/attribute&gt;
-
-		&lt;attribute&gt;
-			&lt;name&gt;javaScriptEscape&lt;/name&gt;
-			&lt;required&gt;false&lt;/required&gt;
-			&lt;rtexprvalue&gt;true&lt;/rtexprvalue&gt;
-		&lt;/attribute&gt;
-
-	&lt;/tag&gt;
-
-
-	&lt;tag&gt;
-
-		&lt;name&gt;message&lt;/name&gt;
-		&lt;tag-class&gt;org.springframework.web.servlet.tags.MessageTag&lt;/tag-class&gt;
-		&lt;body-content&gt;JSP&lt;/body-content&gt;
-
-		&lt;description&gt;
-			Retrieves the message with the given code, or text if code isn't resolvable.
-			The HTML escaping flag participates in a page-wide or application-wide setting
-			(i.e. by HtmlEscapeTag or a &quot;defaultHtmlEscape&quot; context-param in web.xml).
-		&lt;/description&gt;
-
-		&lt;attribute&gt;
-			&lt;name&gt;code&lt;/name&gt;
-			&lt;required&gt;false&lt;/required&gt;
-			&lt;rtexprvalue&gt;true&lt;/rtexprvalue&gt;
-		&lt;/attribute&gt;
-
-		&lt;attribute&gt;
-			&lt;name&gt;arguments&lt;/name&gt;
-			&lt;required&gt;false&lt;/required&gt;
-			&lt;rtexprvalue&gt;true&lt;/rtexprvalue&gt;
-		&lt;/attribute&gt;
-
-		&lt;attribute&gt;
-			&lt;name&gt;text&lt;/name&gt;
-			&lt;required&gt;false&lt;/required&gt;
-			&lt;rtexprvalue&gt;true&lt;/rtexprvalue&gt;
-		&lt;/attribute&gt;
-
-		&lt;attribute&gt;
-			&lt;name&gt;var&lt;/name&gt;
-			&lt;required&gt;false&lt;/required&gt;
-			&lt;rtexprvalue&gt;true&lt;/rtexprvalue&gt;
-		&lt;/attribute&gt;
-
-		&lt;attribute&gt;
-			&lt;name&gt;scope&lt;/name&gt;
-			&lt;required&gt;false&lt;/required&gt;
-			&lt;rtexprvalue&gt;true&lt;/rtexprvalue&gt;
-		&lt;/attribute&gt;
-
-		&lt;attribute&gt;
-			&lt;name&gt;htmlEscape&lt;/name&gt;
-			&lt;required&gt;false&lt;/required&gt;
-			&lt;rtexprvalue&gt;true&lt;/rtexprvalue&gt;
-		&lt;/attribute&gt;
-
-		&lt;attribute&gt;
-			&lt;name&gt;javaScriptEscape&lt;/name&gt;
-			&lt;required&gt;false&lt;/required&gt;
-			&lt;rtexprvalue&gt;true&lt;/rtexprvalue&gt;
-		&lt;/attribute&gt;
-
-	&lt;/tag&gt;
-
-
-	&lt;tag&gt;
-
-		&lt;name&gt;theme&lt;/name&gt;
-		&lt;tag-class&gt;org.springframework.web.servlet.tags.ThemeTag&lt;/tag-class&gt;
-		&lt;body-content&gt;JSP&lt;/body-content&gt;
-
-		&lt;description&gt;
-			Retrieves the theme message with the given code, or text if code isn't resolvable.
-			The HTML escaping flag participates in a page-wide or application-wide setting
-			(i.e. by HtmlEscapeTag or a &quot;defaultHtmlEscape&quot; context-param in web.xml).
-		&lt;/description&gt;
-
-		&lt;attribute&gt;
-			&lt;name&gt;code&lt;/name&gt;
-			&lt;required&gt;false&lt;/required&gt;
-			&lt;rtexprvalue&gt;true&lt;/rtexprvalue&gt;
-		&lt;/attribute&gt;
-
-		&lt;attribute&gt;
-			&lt;name&gt;arguments&lt;/name&gt;
-			&lt;required&gt;false&lt;/required&gt;
-			&lt;rtexprvalue&gt;true&lt;/rtexprvalue&gt;
-		&lt;/attribute&gt;
-
-		&lt;attribute&gt;
-			&lt;name&gt;text&lt;/name&gt;
-			&lt;required&gt;false&lt;/required&gt;
-			&lt;rtexprvalue&gt;true&lt;/rtexprvalue&gt;
-		&lt;/attribute&gt;
-
-		&lt;attribute&gt;
-			&lt;name&gt;var&lt;/name&gt;
-			&lt;required&gt;false&lt;/required&gt;
-			&lt;rtexprvalue&gt;true&lt;/rtexprvalue&gt;
-		&lt;/attribute&gt;
-
-		&lt;attribute&gt;
-			&lt;name&gt;scope&lt;/name&gt;
-			&lt;required&gt;false&lt;/required&gt;
-			&lt;rtexprvalue&gt;true&lt;/rtexprvalue&gt;
-		&lt;/attribute&gt;
-
-		&lt;attribute&gt;
-			&lt;name&gt;htmlEscape&lt;/name&gt;
-			&lt;required&gt;false&lt;/required&gt;
-			&lt;rtexprvalue&gt;true&lt;/rtexprvalue&gt;
-		&lt;/attribute&gt;
-
-		&lt;attribute&gt;
-			&lt;name&gt;javaScriptEscape&lt;/name&gt;
-			&lt;required&gt;false&lt;/required&gt;
-			&lt;rtexprvalue&gt;true&lt;/rtexprvalue&gt;
-		&lt;/attribute&gt;
-
-	&lt;/tag&gt;
-
-
-	&lt;tag&gt;
-
-		&lt;name&gt;hasBindErrors&lt;/name&gt;
-		&lt;tag-class&gt;org.springframework.web.servlet.tags.BindErrorsTag&lt;/tag-class&gt;
-		&lt;body-content&gt;JSP&lt;/body-content&gt;
-
-		&lt;description&gt;
-			Provides Errors instance in case of bind errors.
-			The HTML escaping flag participates in a page-wide or application-wide setting
-			(i.e. by HtmlEscapeTag or a &quot;defaultHtmlEscape&quot; context-param in web.xml).
-		&lt;/description&gt;
-
-		&lt;variable&gt;
-			&lt;name-given&gt;errors&lt;/name-given&gt;
-			&lt;variable-class&gt;org.springframework.validation.Errors&lt;/variable-class&gt;
-		&lt;/variable&gt;
-
-		&lt;attribute&gt;
-			&lt;name&gt;name&lt;/name&gt;
-			&lt;required&gt;true&lt;/required&gt;
-			&lt;rtexprvalue&gt;true&lt;/rtexprvalue&gt;
-		&lt;/attribute&gt;
-
-		&lt;attribute&gt;
-			&lt;name&gt;htmlEscape&lt;/name&gt;
-			&lt;required&gt;false&lt;/required&gt;
-			&lt;rtexprvalue&gt;true&lt;/rtexprvalue&gt;
-		&lt;/attribute&gt;
-
-	&lt;/tag&gt;
-
-
-	&lt;tag&gt;
-
-		&lt;name&gt;nestedPath&lt;/name&gt;
-		&lt;tag-class&gt;org.springframework.web.servlet.tags.NestedPathTag&lt;/tag-class&gt;
-		&lt;body-content&gt;JSP&lt;/body-content&gt;
-
-		&lt;description&gt;
-			Sets a nested path to be used by the bind tag's path.
-		&lt;/description&gt;
-
-		&lt;variable&gt;
-			&lt;name-given&gt;nestedPath&lt;/name-given&gt;
-			&lt;variable-class&gt;java.lang.String&lt;/variable-class&gt;
-		&lt;/variable&gt;
-
-		&lt;attribute&gt;
-			&lt;name&gt;path&lt;/name&gt;
-			&lt;required&gt;true&lt;/required&gt;
-			&lt;rtexprvalue&gt;true&lt;/rtexprvalue&gt;
-		&lt;/attribute&gt;
-
-	&lt;/tag&gt;
-
-
-	&lt;tag&gt;
-
-		&lt;name&gt;bind&lt;/name&gt;
-		&lt;tag-class&gt;org.springframework.web.servlet.tags.BindTag&lt;/tag-class&gt;
-		&lt;body-content&gt;JSP&lt;/body-content&gt;
-
-		&lt;description&gt;
-			Provides BindStatus object for the given bind path.
-			The HTML escaping flag participates in a page-wide or application-wide setting
-			(i.e. by HtmlEscapeTag or a &quot;defaultHtmlEscape&quot; context-param in web.xml).
-		&lt;/description&gt;
-
-		&lt;variable&gt;
-			&lt;name-given&gt;status&lt;/name-given&gt;
-			&lt;variable-class&gt;org.springframework.web.servlet.support.BindStatus&lt;/variable-class&gt;
-		&lt;/variable&gt;
-
-		&lt;attribute&gt;
-			&lt;name&gt;path&lt;/name&gt;
-			&lt;required&gt;true&lt;/required&gt;
-			&lt;rtexprvalue&gt;true&lt;/rtexprvalue&gt;
-		&lt;/attribute&gt;
-
-		&lt;attribute&gt;
-			&lt;name&gt;ignoreNestedPath&lt;/name&gt;
-			&lt;required&gt;false&lt;/required&gt;
-			&lt;rtexprvalue&gt;true&lt;/rtexprvalue&gt;
-		&lt;/attribute&gt;
-
-		&lt;attribute&gt;
-			&lt;name&gt;htmlEscape&lt;/name&gt;
-			&lt;required&gt;false&lt;/required&gt;
-			&lt;rtexprvalue&gt;true&lt;/rtexprvalue&gt;
-		&lt;/attribute&gt;
-
-	&lt;/tag&gt;
-
-
-	&lt;tag&gt;
-
-		&lt;name&gt;transform&lt;/name&gt;
-		&lt;tag-class&gt;org.springframework.web.servlet.tags.TransformTag&lt;/tag-class&gt;
-		&lt;body-content&gt;JSP&lt;/body-content&gt;
-
-		&lt;description&gt;
-			Provides transformation of variables to Strings, using an appropriate
-			custom PropertyEditor from BindTag (can only be used inside BindTag).
-			The HTML escaping flag participates in a page-wide or application-wide setting
-			(i.e. by HtmlEscapeTag or a &quot;defaultHtmlEscape&quot; context-param in web.xml).
-		&lt;/description&gt;
-
-		&lt;attribute&gt;
-			&lt;name&gt;value&lt;/name&gt;
-			&lt;required&gt;true&lt;/required&gt;
-			&lt;rtexprvalue&gt;true&lt;/rtexprvalue&gt;
-		&lt;/attribute&gt;
-
-		&lt;attribute&gt;
-			&lt;name&gt;var&lt;/name&gt;
-			&lt;required&gt;false&lt;/required&gt;
-			&lt;rtexprvalue&gt;true&lt;/rtexprvalue&gt;
-		&lt;/attribute&gt;
-
-		&lt;attribute&gt;
-			&lt;name&gt;scope&lt;/name&gt;
-			&lt;required&gt;false&lt;/required&gt;
-			&lt;rtexprvalue&gt;true&lt;/rtexprvalue&gt;
-		&lt;/attribute&gt;
-
-		&lt;attribute&gt;
-			&lt;name&gt;htmlEscape&lt;/name&gt;
-			&lt;required&gt;false&lt;/required&gt;
-			&lt;rtexprvalue&gt;true&lt;/rtexprvalue&gt;
-		&lt;/attribute&gt;
-
-	&lt;/tag&gt;
-
-&lt;/taglib&gt;
+&lt;?xml version=&quot;1.0&quot; encoding=&quot;ISO-8859-1&quot; ?&gt;
+&lt;!DOCTYPE taglib PUBLIC &quot;-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN&quot; &quot;http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd&quot;&gt;
+
+&lt;taglib&gt;
+
+	&lt;tlib-version&gt;1.1.1&lt;/tlib-version&gt;
+
+	&lt;jsp-version&gt;1.2&lt;/jsp-version&gt;
+
+	&lt;short-name&gt;Spring&lt;/short-name&gt;
+
+	&lt;uri&gt;http://www.springframework.org/tags&lt;/uri&gt;
+
+	&lt;description&gt;Spring Framework JSP Tag Library. Authors: Rod Johnson, Juergen Hoeller&lt;/description&gt;
+
+
+	&lt;tag&gt;
+
+		&lt;name&gt;htmlEscape&lt;/name&gt;
+		&lt;tag-class&gt;org.springframework.web.servlet.tags.HtmlEscapeTag&lt;/tag-class&gt;
+		&lt;body-content&gt;JSP&lt;/body-content&gt;
+
+		&lt;description&gt;
+			Sets default HTML escape value for the current page.
+			Overrides a &quot;defaultHtmlEscape&quot; context-param in web.xml, if any.
+		&lt;/description&gt;
+
+		&lt;attribute&gt;
+			&lt;name&gt;defaultHtmlEscape&lt;/name&gt;
+			&lt;required&gt;true&lt;/required&gt;
+			&lt;rtexprvalue&gt;true&lt;/rtexprvalue&gt;
+		&lt;/attribute&gt;
+
+	&lt;/tag&gt;
+
+
+	&lt;tag&gt;
+
+		&lt;name&gt;escapeBody&lt;/name&gt;
+		&lt;tag-class&gt;org.springframework.web.servlet.tags.EscapeBodyTag&lt;/tag-class&gt;
+		&lt;body-content&gt;JSP&lt;/body-content&gt;
+
+		&lt;description&gt;
+			Escapes its enclosed body content, applying HTML escaping and/or JavaScript escaping.
+			The HTML escaping flag participates in a page-wide or application-wide setting
+			(i.e. by HtmlEscapeTag or a &quot;defaultHtmlEscape&quot; context-param in web.xml).
+		&lt;/description&gt;
+
+		&lt;attribute&gt;
+			&lt;name&gt;htmlEscape&lt;/name&gt;
+			&lt;required&gt;false&lt;/required&gt;
+			&lt;rtexprvalue&gt;true&lt;/rtexprvalue&gt;
+		&lt;/attribute&gt;
+
+		&lt;attribute&gt;
+			&lt;name&gt;javaScriptEscape&lt;/name&gt;
+			&lt;required&gt;false&lt;/required&gt;
+			&lt;rtexprvalue&gt;true&lt;/rtexprvalue&gt;
+		&lt;/attribute&gt;
+
+	&lt;/tag&gt;
+
+
+	&lt;tag&gt;
+
+		&lt;name&gt;message&lt;/name&gt;
+		&lt;tag-class&gt;org.springframework.web.servlet.tags.MessageTag&lt;/tag-class&gt;
+		&lt;body-content&gt;JSP&lt;/body-content&gt;
+
+		&lt;description&gt;
+			Retrieves the message with the given code, or text if code isn't resolvable.
+			The HTML escaping flag participates in a page-wide or application-wide setting
+			(i.e. by HtmlEscapeTag or a &quot;defaultHtmlEscape&quot; context-param in web.xml).
+		&lt;/description&gt;
+
+		&lt;attribute&gt;
+			&lt;name&gt;code&lt;/name&gt;
+			&lt;required&gt;false&lt;/required&gt;
+			&lt;rtexprvalue&gt;true&lt;/rtexprvalue&gt;
+		&lt;/attribute&gt;
+
+		&lt;attribute&gt;
+			&lt;name&gt;arguments&lt;/name&gt;
+			&lt;required&gt;false&lt;/required&gt;
+			&lt;rtexprvalue&gt;true&lt;/rtexprvalue&gt;
+		&lt;/attribute&gt;
+
+		&lt;attribute&gt;
+			&lt;name&gt;text&lt;/name&gt;
+			&lt;required&gt;false&lt;/required&gt;
+			&lt;rtexprvalue&gt;true&lt;/rtexprvalue&gt;
+		&lt;/attribute&gt;
+
+		&lt;attribute&gt;
+			&lt;name&gt;var&lt;/name&gt;
+			&lt;required&gt;false&lt;/required&gt;
+			&lt;rtexprvalue&gt;true&lt;/rtexprvalue&gt;
+		&lt;/attribute&gt;
+
+		&lt;attribute&gt;
+			&lt;name&gt;scope&lt;/name&gt;
+			&lt;required&gt;false&lt;/required&gt;
+			&lt;rtexprvalue&gt;true&lt;/rtexprvalue&gt;
+		&lt;/attribute&gt;
+
+		&lt;attribute&gt;
+			&lt;name&gt;htmlEscape&lt;/name&gt;
+			&lt;required&gt;false&lt;/required&gt;
+			&lt;rtexprvalue&gt;true&lt;/rtexprvalue&gt;
+		&lt;/attribute&gt;
+
+		&lt;attribute&gt;
+			&lt;name&gt;javaScriptEscape&lt;/name&gt;
+			&lt;required&gt;false&lt;/required&gt;
+			&lt;rtexprvalue&gt;true&lt;/rtexprvalue&gt;
+		&lt;/attribute&gt;
+
+	&lt;/tag&gt;
+
+
+	&lt;tag&gt;
+
+		&lt;name&gt;theme&lt;/name&gt;
+		&lt;tag-class&gt;org.springframework.web.servlet.tags.ThemeTag&lt;/tag-class&gt;
+		&lt;body-content&gt;JSP&lt;/body-content&gt;
+
+		&lt;description&gt;
+			Retrieves the theme message with the given code, or text if code isn't resolvable.
+			The HTML escaping flag participates in a page-wide or application-wide setting
+			(i.e. by HtmlEscapeTag or a &quot;defaultHtmlEscape&quot; context-param in web.xml).
+		&lt;/description&gt;
+
+		&lt;attribute&gt;
+			&lt;name&gt;code&lt;/name&gt;
+			&lt;required&gt;false&lt;/required&gt;
+			&lt;rtexprvalue&gt;true&lt;/rtexprvalue&gt;
+		&lt;/attribute&gt;
+
+		&lt;attribute&gt;
+			&lt;name&gt;arguments&lt;/name&gt;
+			&lt;required&gt;false&lt;/required&gt;
+			&lt;rtexprvalue&gt;true&lt;/rtexprvalue&gt;
+		&lt;/attribute&gt;
+
+		&lt;attribute&gt;
+			&lt;name&gt;text&lt;/name&gt;
+			&lt;required&gt;false&lt;/required&gt;
+			&lt;rtexprvalue&gt;true&lt;/rtexprvalue&gt;
+		&lt;/attribute&gt;
+
+		&lt;attribute&gt;
+			&lt;name&gt;var&lt;/name&gt;
+			&lt;required&gt;false&lt;/required&gt;
+			&lt;rtexprvalue&gt;true&lt;/rtexprvalue&gt;
+		&lt;/attribute&gt;
+
+		&lt;attribute&gt;
+			&lt;name&gt;scope&lt;/name&gt;
+			&lt;required&gt;false&lt;/required&gt;
+			&lt;rtexprvalue&gt;true&lt;/rtexprvalue&gt;
+		&lt;/attribute&gt;
+
+		&lt;attribute&gt;
+			&lt;name&gt;htmlEscape&lt;/name&gt;
+			&lt;required&gt;false&lt;/required&gt;
+			&lt;rtexprvalue&gt;true&lt;/rtexprvalue&gt;
+		&lt;/attribute&gt;
+
+		&lt;attribute&gt;
+			&lt;name&gt;javaScriptEscape&lt;/name&gt;
+			&lt;required&gt;false&lt;/required&gt;
+			&lt;rtexprvalue&gt;true&lt;/rtexprvalue&gt;
+		&lt;/attribute&gt;
+
+	&lt;/tag&gt;
+
+
+	&lt;tag&gt;
+
+		&lt;name&gt;hasBindErrors&lt;/name&gt;
+		&lt;tag-class&gt;org.springframework.web.servlet.tags.BindErrorsTag&lt;/tag-class&gt;
+		&lt;body-content&gt;JSP&lt;/body-content&gt;
+
+		&lt;description&gt;
+			Provides Errors instance in case of bind errors.
+			The HTML escaping flag participates in a page-wide or application-wide setting
+			(i.e. by HtmlEscapeTag or a &quot;defaultHtmlEscape&quot; context-param in web.xml).
+		&lt;/description&gt;
+
+		&lt;variable&gt;
+			&lt;name-given&gt;errors&lt;/name-given&gt;
+			&lt;variable-class&gt;org.springframework.validation.Errors&lt;/variable-class&gt;
+		&lt;/variable&gt;
+
+		&lt;attribute&gt;
+			&lt;name&gt;name&lt;/name&gt;
+			&lt;required&gt;true&lt;/required&gt;
+			&lt;rtexprvalue&gt;true&lt;/rtexprvalue&gt;
+		&lt;/attribute&gt;
+
+		&lt;attribute&gt;
+			&lt;name&gt;htmlEscape&lt;/name&gt;
+			&lt;required&gt;false&lt;/required&gt;
+			&lt;rtexprvalue&gt;true&lt;/rtexprvalue&gt;
+		&lt;/attribute&gt;
+
+	&lt;/tag&gt;
+
+
+	&lt;tag&gt;
+
+		&lt;name&gt;nestedPath&lt;/name&gt;
+		&lt;tag-class&gt;org.springframework.web.servlet.tags.NestedPathTag&lt;/tag-class&gt;
+		&lt;body-content&gt;JSP&lt;/body-content&gt;
+
+		&lt;description&gt;
+			Sets a nested path to be used by the bind tag's path.
+		&lt;/description&gt;
+
+		&lt;variable&gt;
+			&lt;name-given&gt;nestedPath&lt;/name-given&gt;
+			&lt;variable-class&gt;java.lang.String&lt;/variable-class&gt;
+		&lt;/variable&gt;
+
+		&lt;attribute&gt;
+			&lt;name&gt;path&lt;/name&gt;
+			&lt;required&gt;true&lt;/required&gt;
+			&lt;rtexprvalue&gt;true&lt;/rtexprvalue&gt;
+		&lt;/attribute&gt;
+
+	&lt;/tag&gt;
+
+
+	&lt;tag&gt;
+
+		&lt;name&gt;bind&lt;/name&gt;
+		&lt;tag-class&gt;org.springframework.web.servlet.tags.BindTag&lt;/tag-class&gt;
+		&lt;body-content&gt;JSP&lt;/body-content&gt;
+
+		&lt;description&gt;
+			Provides BindStatus object for the given bind path.
+			The HTML escaping flag participates in a page-wide or application-wide setting
+			(i.e. by HtmlEscapeTag or a &quot;defaultHtmlEscape&quot; context-param in web.xml).
+		&lt;/description&gt;
+
+		&lt;variable&gt;
+			&lt;name-given&gt;status&lt;/name-given&gt;
+			&lt;variable-class&gt;org.springframework.web.servlet.support.BindStatus&lt;/variable-class&gt;
+		&lt;/variable&gt;
+
+		&lt;attribute&gt;
+			&lt;name&gt;path&lt;/name&gt;
+			&lt;required&gt;true&lt;/required&gt;
+			&lt;rtexprvalue&gt;true&lt;/rtexprvalue&gt;
+		&lt;/attribute&gt;
+
+		&lt;attribute&gt;
+			&lt;name&gt;ignoreNestedPath&lt;/name&gt;
+			&lt;required&gt;false&lt;/required&gt;
+			&lt;rtexprvalue&gt;true&lt;/rtexprvalue&gt;
+		&lt;/attribute&gt;
+
+		&lt;attribute&gt;
+			&lt;name&gt;htmlEscape&lt;/name&gt;
+			&lt;required&gt;false&lt;/required&gt;
+			&lt;rtexprvalue&gt;true&lt;/rtexprvalue&gt;
+		&lt;/attribute&gt;
+
+	&lt;/tag&gt;
+
+
+	&lt;tag&gt;
+
+		&lt;name&gt;transform&lt;/name&gt;
+		&lt;tag-class&gt;org.springframework.web.servlet.tags.TransformTag&lt;/tag-class&gt;
+		&lt;body-content&gt;JSP&lt;/body-content&gt;
+
+		&lt;description&gt;
+			Provides transformation of variables to Strings, using an appropriate
+			custom PropertyEditor from BindTag (can only be used inside BindTag).
+			The HTML escaping flag participates in a page-wide or application-wide setting
+			(i.e. by HtmlEscapeTag or a &quot;defaultHtmlEscape&quot; context-param in web.xml).
+		&lt;/description&gt;
+
+		&lt;attribute&gt;
+			&lt;name&gt;value&lt;/name&gt;
+			&lt;required&gt;true&lt;/required&gt;
+			&lt;rtexprvalue&gt;true&lt;/rtexprvalue&gt;
+		&lt;/attribute&gt;
+
+		&lt;attribute&gt;
+			&lt;name&gt;var&lt;/name&gt;
+			&lt;required&gt;false&lt;/required&gt;
+			&lt;rtexprvalue&gt;true&lt;/rtexprvalue&gt;
+		&lt;/attribute&gt;
+
+		&lt;attribute&gt;
+			&lt;name&gt;scope&lt;/name&gt;
+			&lt;required&gt;false&lt;/required&gt;
+			&lt;rtexprvalue&gt;true&lt;/rtexprvalue&gt;
+		&lt;/attribute&gt;
+
+		&lt;attribute&gt;
+			&lt;name&gt;htmlEscape&lt;/name&gt;
+			&lt;required&gt;false&lt;/required&gt;
+			&lt;rtexprvalue&gt;true&lt;/rtexprvalue&gt;
+		&lt;/attribute&gt;
+
+	&lt;/tag&gt;
+
+&lt;/taglib&gt;</diff>
      <filename>source-code/ch01/qotd/web-app/WEB-INF/tld/spring.tld</filename>
    </modified>
  </modified>
  <removed type="array">
    <removed>
      <filename>source-code/ch01/qotd/devDb.log</filename>
    </removed>
    <removed>
      <filename>source-code/ch01/qotd/devDb.properties</filename>
    </removed>
    <removed>
      <filename>source-code/ch01/qotd/devDb.script</filename>
    </removed>
    <removed>
      <filename>source-code/ch01/qotd/stacktrace.log</filename>
    </removed>
  </removed>
  <parents type="array">
    <parent>
      <id>866d64ba59eaf36182f3b18e6c5ffa0489ef5616</id>
    </parent>
    <parent>
      <id>1f09b269831bb211837395cac4f3fea31242348e</id>
    </parent>
  </parents>
  <author>
    <name>Peter Ledbrook</name>
    <email>peter@cacoethes.co.uk</email>
  </author>
  <url>http://github.com/pledbrook/graina/commit/8e37235defba0ccb345184c2880dc6476c2bb819</url>
  <id>8e37235defba0ccb345184c2880dc6476c2bb819</id>
  <committed-date>2009-06-09T09:43:45-07:00</committed-date>
  <authored-date>2009-06-09T09:43:45-07:00</authored-date>
  <message>Merge branch 'ch16'</message>
  <tree>9a5809709ab3915dc25392a0026a0412d838444e</tree>
  <committer>
    <name>Peter Ledbrook</name>
    <email>peter@cacoethes.co.uk</email>
  </committer>
</commit>
