Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

1.1 stream of functional tests added to trunk

git-svn-id: https://svn.codehaus.org/grails/trunk@8958 1cfb16fd-6d17-0410-8ff1-b7e8e1e2867d
  • Loading branch information...
commit 48c5b3fc68a9e03feaeceacabf096af6b9d2cada 1 parent dbaeed7
graeme authored
Showing with 40,075 additions and 0 deletions.
  1. +93 −0 apps/HelloWorld/.classpath
  2. +23 −0 apps/HelloWorld/.project
  3. +41 −0 apps/HelloWorld/Hello World.iml
  4. +19 −0 apps/HelloWorld/HelloWorld.launch
  5. +73 −0 apps/HelloWorld/HelloWorld.tmproj
  6. +8 −0 apps/HelloWorld/application.properties
  7. +130 −0 apps/HelloWorld/build.xml
  8. +12 −0 apps/HelloWorld/grails-app/conf/BootStrap.groovy
  9. +62 −0 apps/HelloWorld/grails-app/conf/Config.groovy
  10. +32 −0 apps/HelloWorld/grails-app/conf/DataSource.groovy
  11. +55 −0 apps/HelloWorld/grails-app/conf/UrlMappings.groovy
  12. +4 −0 apps/HelloWorld/grails-app/conf/spring/resources.groovy
  13. +1 −0  apps/HelloWorld/grails-app/conf/test-content.txt
  14. +3 −0  apps/HelloWorld/grails-app/controllers/BaseController.groovy
  15. +4 −0 apps/HelloWorld/grails-app/controllers/CarController.groovy
  16. +5 −0 apps/HelloWorld/grails-app/controllers/ErrorsController.groovy
  17. +15 −0 apps/HelloWorld/grails-app/controllers/FormsController.groovy
  18. +34 −0 apps/HelloWorld/grails-app/controllers/HelloController.groovy
  19. +13 −0 apps/HelloWorld/grails-app/controllers/StemController.groovy
  20. +18 −0 apps/HelloWorld/grails-app/controllers/org/example/FeedsController.groovy
  21. +23 −0 apps/HelloWorld/grails-app/controllers/org/example/FileController.groovy
  22. +15 −0 apps/HelloWorld/grails-app/domain/Car.groovy
  23. +30 −0 apps/HelloWorld/grails-app/i18n/messages.properties
  24. +30 −0 apps/HelloWorld/grails-app/i18n/messages_de.properties
  25. +30 −0 apps/HelloWorld/grails-app/i18n/messages_es.properties
  26. +19 −0 apps/HelloWorld/grails-app/i18n/messages_fr.properties
  27. +19 −0 apps/HelloWorld/grails-app/i18n/messages_it.properties
  28. +19 −0 apps/HelloWorld/grails-app/i18n/messages_ja.properties
  29. +30 −0 apps/HelloWorld/grails-app/i18n/messages_nl.properties
  30. +31 −0 apps/HelloWorld/grails-app/i18n/messages_ru.properties
  31. +30 −0 apps/HelloWorld/grails-app/i18n/messages_th.properties
  32. +18 −0 apps/HelloWorld/grails-app/i18n/messages_zh_CN.properties
  33. +5 −0 apps/HelloWorld/grails-app/taglib/FooTagLib.groovy
  34. +46 −0 apps/HelloWorld/grails-app/views/error.gsp
  35. +11 −0 apps/HelloWorld/grails-app/views/forms/test.gsp
  36. +13 −0 apps/HelloWorld/grails-app/views/forms/test2.gsp
  37. +5 −0 apps/HelloWorld/grails-app/views/hello/kaput.gsp
  38. +8 −0 apps/HelloWorld/grails-app/views/hello/reloadTest.gsp
  39. +16 −0 apps/HelloWorld/grails-app/views/layouts/main.gsp
  40. +8 −0 apps/HelloWorld/grails-app/views/missing.gsp
  41. +11 −0 apps/HelloWorld/grails-app/views/tagUsage.gsp
  42. +6 −0 apps/HelloWorld/test/integration/HelloControllerTests.groovy
  43. +264 −0 apps/HelloWorld/web-app/css/main.css
  44. +58 −0 apps/HelloWorld/web-app/css/tree/check/tree.css
  45. +97 −0 apps/HelloWorld/web-app/css/tree/default/tree.css
  46. +55 −0 apps/HelloWorld/web-app/css/tree/folders/tree.css
  47. +58 −0 apps/HelloWorld/web-app/css/tree/menu/tree.css
  48. BIN  apps/HelloWorld/web-app/images/favicon.ico
  49. BIN  apps/HelloWorld/web-app/images/grails_logo.jpg
  50. BIN  apps/HelloWorld/web-app/images/skin/database_add.png
  51. BIN  apps/HelloWorld/web-app/images/skin/database_delete.png
  52. BIN  apps/HelloWorld/web-app/images/skin/database_edit.png
  53. BIN  apps/HelloWorld/web-app/images/skin/database_save.png
  54. BIN  apps/HelloWorld/web-app/images/skin/database_table.png
  55. BIN  apps/HelloWorld/web-app/images/skin/exclamation.png
  56. BIN  apps/HelloWorld/web-app/images/skin/house.png
  57. BIN  apps/HelloWorld/web-app/images/skin/information.png
  58. BIN  apps/HelloWorld/web-app/images/skin/shadow.jpg
  59. BIN  apps/HelloWorld/web-app/images/skin/sorted_asc.gif
  60. BIN  apps/HelloWorld/web-app/images/skin/sorted_desc.gif
  61. BIN  apps/HelloWorld/web-app/images/spinner.gif
  62. BIN  apps/HelloWorld/web-app/images/tree/bullet.gif
  63. BIN  apps/HelloWorld/web-app/images/tree/check/check0.gif
  64. BIN  apps/HelloWorld/web-app/images/tree/check/check1.gif
  65. BIN  apps/HelloWorld/web-app/images/tree/check/check2.gif
  66. BIN  apps/HelloWorld/web-app/images/tree/check/lm.gif
  67. BIN  apps/HelloWorld/web-app/images/tree/check/lmh.gif
  68. BIN  apps/HelloWorld/web-app/images/tree/check/ln.gif
  69. BIN  apps/HelloWorld/web-app/images/tree/check/loading.gif
  70. BIN  apps/HelloWorld/web-app/images/tree/check/lp.gif
  71. BIN  apps/HelloWorld/web-app/images/tree/check/lph.gif
  72. BIN  apps/HelloWorld/web-app/images/tree/check/tm.gif
  73. BIN  apps/HelloWorld/web-app/images/tree/check/tmh.gif
  74. BIN  apps/HelloWorld/web-app/images/tree/check/tn.gif
  75. BIN  apps/HelloWorld/web-app/images/tree/check/tp.gif
  76. BIN  apps/HelloWorld/web-app/images/tree/check/tph.gif
  77. BIN  apps/HelloWorld/web-app/images/tree/check/vline.gif
  78. BIN  apps/HelloWorld/web-app/images/tree/default/lm.gif
  79. BIN  apps/HelloWorld/web-app/images/tree/default/lmh.gif
  80. BIN  apps/HelloWorld/web-app/images/tree/default/ln.gif
  81. BIN  apps/HelloWorld/web-app/images/tree/default/loading.gif
  82. BIN  apps/HelloWorld/web-app/images/tree/default/lp.gif
  83. BIN  apps/HelloWorld/web-app/images/tree/default/lph.gif
  84. BIN  apps/HelloWorld/web-app/images/tree/default/tm.gif
  85. BIN  apps/HelloWorld/web-app/images/tree/default/tmh.gif
  86. BIN  apps/HelloWorld/web-app/images/tree/default/tn.gif
  87. BIN  apps/HelloWorld/web-app/images/tree/default/tp.gif
  88. BIN  apps/HelloWorld/web-app/images/tree/default/tph.gif
  89. BIN  apps/HelloWorld/web-app/images/tree/default/vline.gif
  90. BIN  apps/HelloWorld/web-app/images/tree/folders/lm.gif
  91. BIN  apps/HelloWorld/web-app/images/tree/folders/lmh.gif
  92. BIN  apps/HelloWorld/web-app/images/tree/folders/ln.gif
  93. BIN  apps/HelloWorld/web-app/images/tree/folders/loading.gif
  94. BIN  apps/HelloWorld/web-app/images/tree/folders/lp.gif
  95. BIN  apps/HelloWorld/web-app/images/tree/folders/lph.gif
  96. BIN  apps/HelloWorld/web-app/images/tree/folders/tm.gif
  97. BIN  apps/HelloWorld/web-app/images/tree/folders/tmh.gif
  98. BIN  apps/HelloWorld/web-app/images/tree/folders/tn.gif
  99. BIN  apps/HelloWorld/web-app/images/tree/folders/tp.gif
  100. BIN  apps/HelloWorld/web-app/images/tree/folders/tph.gif
  101. BIN  apps/HelloWorld/web-app/images/tree/folders/vline.gif
  102. BIN  apps/HelloWorld/web-app/images/tree/greybg.png
  103. BIN  apps/HelloWorld/web-app/images/tree/header.gif
  104. BIN  apps/HelloWorld/web-app/images/tree/logo.gif
  105. BIN  apps/HelloWorld/web-app/images/tree/menu/collapse.gif
  106. BIN  apps/HelloWorld/web-app/images/tree/menu/collapseh.gif
  107. BIN  apps/HelloWorld/web-app/images/tree/menu/collapseon.gif
  108. BIN  apps/HelloWorld/web-app/images/tree/menu/dash.gif
  109. BIN  apps/HelloWorld/web-app/images/tree/menu/expand.gif
  110. BIN  apps/HelloWorld/web-app/images/tree/menu/expandh.gif
  111. BIN  apps/HelloWorld/web-app/images/tree/menu/expandon.gif
  112. BIN  apps/HelloWorld/web-app/images/tree/menu/loading.gif
  113. BIN  apps/HelloWorld/web-app/images/tree/navHover2.png
  114. BIN  apps/HelloWorld/web-app/images/tree/qbottom.png
  115. BIN  apps/HelloWorld/web-app/images/tree/qmiddle.png
  116. BIN  apps/HelloWorld/web-app/images/tree/qtop.png
  117. +20 −0 apps/HelloWorld/web-app/index.gsp
  118. +13 −0 apps/HelloWorld/web-app/js/application.js
  119. +7 −0 apps/HelloWorld/web-app/js/prototype/animation.js
  120. +136 −0 apps/HelloWorld/web-app/js/prototype/builder.js
  121. +965 −0 apps/HelloWorld/web-app/js/prototype/controls.js
  122. +974 −0 apps/HelloWorld/web-app/js/prototype/dragdrop.js
  123. +1,122 −0 apps/HelloWorld/web-app/js/prototype/effects.js
  124. +4,184 −0 apps/HelloWorld/web-app/js/prototype/prototype.js
  125. +2,691 −0 apps/HelloWorld/web-app/js/prototype/rico.js
  126. +58 −0 apps/HelloWorld/web-app/js/prototype/scriptaculous.js
  127. +275 −0 apps/HelloWorld/web-app/js/prototype/slider.js
  128. +55 −0 apps/HelloWorld/web-app/js/prototype/sound.js
  129. +568 −0 apps/HelloWorld/web-app/js/prototype/unittest.js
  130. +18 −0 apps/HelloWorld/webtest/conf/webtest.properties
  131. +84 −0 apps/HelloWorld/webtest/tests/DynamicScaffoldingTest.groovy
  132. +54 −0 apps/HelloWorld/webtest/tests/FormsControllerTest.groovy
  133. +138 −0 apps/HelloWorld/webtest/tests/HelloControllerTest.groovy
  134. +36 −0 apps/HelloWorld/webtest/tests/TestSuite.groovy
  135. +63 −0 apps/HelloWorld/webtest/tests/UrlMappingsTest.groovy
  136. +173 −0 apps/content-negotiation/.classpath
  137. +23 −0 apps/content-negotiation/.project
  138. +3 −0  apps/content-negotiation/.settings/org.codehaus.groovy.eclipse.preferences.prefs
  139. +8 −0 apps/content-negotiation/application.properties
  140. +131 −0 apps/content-negotiation/build.xml
  141. +11 −0 apps/content-negotiation/content-negotiation-test.launch
  142. +19 −0 apps/content-negotiation/content-negotiation.launch
  143. +73 −0 apps/content-negotiation/content-negotiation.tmproj
  144. +7 −0 apps/content-negotiation/grails-app/conf/BootStrap.groovy
  145. +66 −0 apps/content-negotiation/grails-app/conf/Config.groovy
  146. +32 −0 apps/content-negotiation/grails-app/conf/DataSource.groovy
  147. +11 −0 apps/content-negotiation/grails-app/conf/UrlMappings.groovy
  148. +4 −0 apps/content-negotiation/grails-app/conf/spring/resources.groovy
  149. +17 −0 apps/content-negotiation/grails-app/controllers/RequestFormatController.groovy
  150. +34 −0 apps/content-negotiation/grails-app/i18n/messages.properties
  151. +30 −0 apps/content-negotiation/grails-app/i18n/messages_de.properties
  152. +30 −0 apps/content-negotiation/grails-app/i18n/messages_es.properties
  153. +19 −0 apps/content-negotiation/grails-app/i18n/messages_fr.properties
  154. +19 −0 apps/content-negotiation/grails-app/i18n/messages_it.properties
  155. +19 −0 apps/content-negotiation/grails-app/i18n/messages_ja.properties
  156. +34 −0 apps/content-negotiation/grails-app/i18n/messages_nl.properties
  157. +34 −0 apps/content-negotiation/grails-app/i18n/messages_pt_BR.properties
  158. +31 −0 apps/content-negotiation/grails-app/i18n/messages_ru.properties
  159. +30 −0 apps/content-negotiation/grails-app/i18n/messages_th.properties
  160. +18 −0 apps/content-negotiation/grails-app/i18n/messages_zh_CN.properties
  161. +54 −0 apps/content-negotiation/grails-app/views/error.gsp
  162. +20 −0 apps/content-negotiation/grails-app/views/index.gsp
  163. +16 −0 apps/content-negotiation/grails-app/views/layouts/main.gsp
  164. +27 −0 apps/content-negotiation/ivy.xml
  165. +15 −0 apps/content-negotiation/ivysettings.xml
  166. +25 −0 apps/content-negotiation/test/functional/ContentNegotiationFunctionalTests.groovy
  167. +47 −0 apps/content-negotiation/web-app/WEB-INF/applicationContext.xml
  168. +14 −0 apps/content-negotiation/web-app/WEB-INF/sitemesh.xml
  169. +959 −0 apps/content-negotiation/web-app/WEB-INF/tld/grails.tld
  170. +311 −0 apps/content-negotiation/web-app/WEB-INF/tld/spring.tld
  171. +267 −0 apps/content-negotiation/web-app/css/main.css
  172. BIN  apps/content-negotiation/web-app/images/favicon.ico
  173. BIN  apps/content-negotiation/web-app/images/grails_logo.jpg
  174. BIN  apps/content-negotiation/web-app/images/skin/database_add.png
  175. BIN  apps/content-negotiation/web-app/images/skin/database_delete.png
  176. BIN  apps/content-negotiation/web-app/images/skin/database_edit.png
  177. BIN  apps/content-negotiation/web-app/images/skin/database_save.png
  178. BIN  apps/content-negotiation/web-app/images/skin/database_table.png
  179. BIN  apps/content-negotiation/web-app/images/skin/exclamation.png
  180. BIN  apps/content-negotiation/web-app/images/skin/house.png
  181. BIN  apps/content-negotiation/web-app/images/skin/information.png
  182. BIN  apps/content-negotiation/web-app/images/skin/shadow.jpg
  183. BIN  apps/content-negotiation/web-app/images/skin/sorted_asc.gif
  184. BIN  apps/content-negotiation/web-app/images/skin/sorted_desc.gif
  185. BIN  apps/content-negotiation/web-app/images/spinner.gif
  186. +13 −0 apps/content-negotiation/web-app/js/application.js
  187. +7 −0 apps/content-negotiation/web-app/js/prototype/animation.js
  188. +136 −0 apps/content-negotiation/web-app/js/prototype/builder.js
  189. +965 −0 apps/content-negotiation/web-app/js/prototype/controls.js
  190. +974 −0 apps/content-negotiation/web-app/js/prototype/dragdrop.js
  191. +1,122 −0 apps/content-negotiation/web-app/js/prototype/effects.js
  192. +4,184 −0 apps/content-negotiation/web-app/js/prototype/prototype.js
  193. +2,691 −0 apps/content-negotiation/web-app/js/prototype/rico.js
  194. +58 −0 apps/content-negotiation/web-app/js/prototype/scriptaculous.js
  195. +275 −0 apps/content-negotiation/web-app/js/prototype/slider.js
  196. +55 −0 apps/content-negotiation/web-app/js/prototype/sound.js
  197. +568 −0 apps/content-negotiation/web-app/js/prototype/unittest.js
  198. +173 −0 apps/errors/.classpath
  199. +23 −0 apps/errors/.project
  200. +3 −0  apps/errors/.settings/org.codehaus.groovy.eclipse.preferences.prefs
  201. +8 −0 apps/errors/application.properties
  202. +131 −0 apps/errors/build.xml
  203. +19 −0 apps/errors/errors.launch
  204. +73 −0 apps/errors/errors.tmproj
  205. +7 −0 apps/errors/grails-app/conf/BootStrap.groovy
  206. +66 −0 apps/errors/grails-app/conf/Config.groovy
  207. +32 −0 apps/errors/grails-app/conf/DataSource.groovy
  208. +13 −0 apps/errors/grails-app/conf/UrlMappings.groovy
  209. +4 −0 apps/errors/grails-app/conf/spring/resources.groovy
  210. +43 −0 apps/errors/grails-app/controllers/ErrorsController.groovy
  211. +3 −0  apps/errors/grails-app/domain/Book.groovy
  212. +34 −0 apps/errors/grails-app/i18n/messages.properties
  213. +30 −0 apps/errors/grails-app/i18n/messages_de.properties
  214. +30 −0 apps/errors/grails-app/i18n/messages_es.properties
  215. +19 −0 apps/errors/grails-app/i18n/messages_fr.properties
  216. +19 −0 apps/errors/grails-app/i18n/messages_it.properties
  217. +19 −0 apps/errors/grails-app/i18n/messages_ja.properties
  218. +34 −0 apps/errors/grails-app/i18n/messages_nl.properties
  219. +34 −0 apps/errors/grails-app/i18n/messages_pt_BR.properties
  220. +31 −0 apps/errors/grails-app/i18n/messages_ru.properties
  221. +30 −0 apps/errors/grails-app/i18n/messages_th.properties
  222. +18 −0 apps/errors/grails-app/i18n/messages_zh_CN.properties
  223. +8 −0 apps/errors/grails-app/taglib/MyTagLib.groovy
  224. +54 −0 apps/errors/grails-app/views/error.gsp
  225. +55 −0 apps/errors/grails-app/views/errors/displayLayout.gsp
  226. +1 −0  apps/errors/grails-app/views/errors/gstringTagError.gsp
  227. +19 −0 apps/errors/grails-app/views/errors/internalTagError.gsp
  228. +20 −0 apps/errors/grails-app/views/errors/regularExpressionError.gsp
  229. +20 −0 apps/errors/grails-app/views/errors/tagExpressionError.gsp
  230. +20 −0 apps/errors/grails-app/views/index.gsp
  231. +16 −0 apps/errors/grails-app/views/layouts/main.gsp
  232. +12 −0 apps/errors/grails-app/views/layouts/testLayout.gsp
  233. +27 −0 apps/errors/ivy.xml
  234. +15 −0 apps/errors/ivysettings.xml
  235. +94 −0 apps/errors/test/functional/ErrorHandlingFunctionalTests.groovy
  236. +47 −0 apps/errors/web-app/WEB-INF/applicationContext.xml
  237. +14 −0 apps/errors/web-app/WEB-INF/sitemesh.xml
  238. +959 −0 apps/errors/web-app/WEB-INF/tld/grails.tld
  239. +311 −0 apps/errors/web-app/WEB-INF/tld/spring.tld
  240. +267 −0 apps/errors/web-app/css/main.css
  241. BIN  apps/errors/web-app/images/favicon.ico
  242. BIN  apps/errors/web-app/images/grails_logo.jpg
  243. BIN  apps/errors/web-app/images/skin/database_add.png
  244. BIN  apps/errors/web-app/images/skin/database_delete.png
  245. BIN  apps/errors/web-app/images/skin/database_edit.png
  246. BIN  apps/errors/web-app/images/skin/database_save.png
  247. BIN  apps/errors/web-app/images/skin/database_table.png
  248. BIN  apps/errors/web-app/images/skin/exclamation.png
  249. BIN  apps/errors/web-app/images/skin/house.png
  250. BIN  apps/errors/web-app/images/skin/information.png
  251. BIN  apps/errors/web-app/images/skin/shadow.jpg
  252. BIN  apps/errors/web-app/images/skin/sorted_asc.gif
  253. BIN  apps/errors/web-app/images/skin/sorted_desc.gif
  254. BIN  apps/errors/web-app/images/spinner.gif
  255. +13 −0 apps/errors/web-app/js/application.js
  256. +7 −0 apps/errors/web-app/js/prototype/animation.js
  257. +136 −0 apps/errors/web-app/js/prototype/builder.js
  258. +965 −0 apps/errors/web-app/js/prototype/controls.js
  259. +974 −0 apps/errors/web-app/js/prototype/dragdrop.js
  260. +1,122 −0 apps/errors/web-app/js/prototype/effects.js
  261. +4,184 −0 apps/errors/web-app/js/prototype/prototype.js
  262. +2,691 −0 apps/errors/web-app/js/prototype/rico.js
  263. +58 −0 apps/errors/web-app/js/prototype/scriptaculous.js
  264. +275 −0 apps/errors/web-app/js/prototype/slider.js
  265. +55 −0 apps/errors/web-app/js/prototype/sound.js
Sorry, we could not display the entire diff because too many files (869) changed.
View
93 apps/HelloWorld/.classpath
@@ -0,0 +1,93 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+<classpathentry kind="src" path="src/java"/>
+<classpathentry kind="src" path="src/groovy"/>
+<classpathentry kind="src" path="grails-app/conf"/>
+<classpathentry kind="src" path="grails-app/controllers"/>
+<classpathentry kind="src" path="grails-app/domain"/>
+<classpathentry kind="src" path="grails-app/services"/>
+<classpathentry kind="src" path="grails-app/taglib"/>
+<classpathentry kind="src" path="test/integration"/>
+<classpathentry kind="src" path="test/unit"/>
+<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+<classpathentry kind="output" path="web-app/WEB-INF/classes"/>
+<classpathentry kind="var" path="GRAILS_HOME/ant/lib/ant.jar"/>
+<classpathentry kind="var" path="GRAILS_HOME/lib/jetty-util-6.1.14.jar" />
+<classpathentry kind="var" path="GRAILS_HOME/lib/spring-webmvc-2.5.6.jar" />
+<classpathentry kind="var" path="GRAILS_HOME/lib/oscache-2.4.1.jar" />
+<classpathentry kind="var" path="GRAILS_HOME/lib/hibernate-commons-annotations-3.3.0.jar" />
+<classpathentry kind="var" path="GRAILS_HOME/lib/jasper-compiler-jdt-5.5.15.jar" />
+<classpathentry kind="var" path="GRAILS_HOME/lib/org.springframework.webflow-2.0.3.RELEASE.jar" />
+<classpathentry kind="var" path="GRAILS_HOME/lib/gant_groovy1.6-1.6.0.jar" />
+<classpathentry kind="var" path="GRAILS_HOME/lib/serializer.jar" />
+<classpathentry kind="var" path="GRAILS_HOME/lib/commons-beanutils-1.7.0.jar" />
+<classpathentry kind="var" path="GRAILS_HOME/lib/jetty-naming-6.1.14.jar" />
+<classpathentry kind="var" path="GRAILS_HOME/lib/aspectjweaver.jar" />
+<classpathentry kind="var" path="GRAILS_HOME/lib/commons-io-1.4.jar" />
+<classpathentry kind="var" path="GRAILS_HOME/lib/hibernate-annotations-3.3.0.jar" />
+<classpathentry kind="var" path="GRAILS_HOME/lib/standard-2.4.jar" />
+<classpathentry kind="var" path="GRAILS_HOME/lib/jetty-6.1.14.jar" />
+<classpathentry kind="var" path="GRAILS_HOME/lib/commons-lang-2.4.jar" />
+<classpathentry kind="var" path="GRAILS_HOME/lib/commons-fileupload-1.1.1.jar" />
+<classpathentry kind="var" path="GRAILS_HOME/lib/spring-test-2.5.6.jar" />
+<classpathentry kind="var" path="GRAILS_HOME/lib/aspectjrt.jar" />
+<classpathentry kind="var" path="GRAILS_HOME/lib/commons-cli-1.0.jar" />
+<classpathentry kind="var" path="GRAILS_HOME/lib/standard-2.3.jar" />
+<classpathentry kind="var" path="GRAILS_HOME/lib/ognl-2.6.9.jar" />
+<classpathentry kind="var" path="GRAILS_HOME/lib/sitemesh-2.3.jar" />
+<classpathentry kind="var" path="GRAILS_HOME/lib/jcl-over-slf4j-1.5.6.jar" />
+<classpathentry kind="var" path="GRAILS_HOME/lib/jstl-2.4.jar" />
+<classpathentry kind="var" path="GRAILS_HOME/lib/commons-pool-1.2.jar" />
+<classpathentry kind="var" path="GRAILS_HOME/lib/hsqldb-1.8.0.5.jar" />
+<classpathentry kind="var" path="GRAILS_HOME/lib/javassist-3.4.GA.jar" />
+<classpathentry kind="var" path="GRAILS_HOME/lib/commons-collections-3.2.jar" />
+<classpathentry kind="var" path="GRAILS_HOME/lib/log4j-1.2.15.jar" />
+<classpathentry kind="var" path="GRAILS_HOME/lib/hibernate3-3.3.1.jar" />
+<classpathentry kind="var" path="GRAILS_HOME/lib/start.jar" />
+<classpathentry kind="var" path="GRAILS_HOME/lib/jta-1.1.jar" />
+<classpathentry kind="var" path="GRAILS_HOME/lib/ehcache-1.5.0.jar" />
+<classpathentry kind="var" path="GRAILS_HOME/lib/servlet-api-2.5-6.1.14.jar" />
+<classpathentry kind="var" path="GRAILS_HOME/lib/groovy-all-1.6-RC-2.jar" />
+<classpathentry kind="var" path="GRAILS_HOME/lib/ejb3-persistence-3.3.0.jar" />
+<classpathentry kind="var" path="GRAILS_HOME/lib/ivy-2.0.0.jar" />
+<classpathentry kind="var" path="GRAILS_HOME/lib/ant-nodeps-1.7.0.jar" />
+<classpathentry kind="var" path="GRAILS_HOME/lib/commons-validator-1.3.0.jar" />
+<classpathentry kind="var" path="GRAILS_HOME/lib/ant-launcher-1.7.0.jar" />
+<classpathentry kind="var" path="GRAILS_HOME/lib/oro-2.0.8.jar" />
+<classpathentry kind="var" path="GRAILS_HOME/lib/spring-2.5.6.jar" />
+<classpathentry kind="var" path="GRAILS_HOME/lib/jasper-runtime-5.5.15.jar" />
+<classpathentry kind="var" path="GRAILS_HOME/lib/cglib-nodep-2.1_3.jar" />
+<classpathentry kind="var" path="GRAILS_HOME/lib/slf4j-api-1.5.6.jar" />
+<classpathentry kind="var" path="GRAILS_HOME/lib/ant-trax.jar" />
+<classpathentry kind="var" path="GRAILS_HOME/lib/ant-1.7.0.jar" />
+<classpathentry kind="var" path="GRAILS_HOME/lib/svnkit-1.2.0.jar" />
+<classpathentry kind="var" path="GRAILS_HOME/lib/jetty-plus-6.1.14.jar" />
+<classpathentry kind="var" path="GRAILS_HOME/lib/commons-codec-1.3.jar" />
+<classpathentry kind="var" path="GRAILS_HOME/lib/jsp-api-2.1.jar" />
+<classpathentry kind="var" path="GRAILS_HOME/lib/jsr107cache-1.0.jar" />
+<classpathentry kind="var" path="GRAILS_HOME/lib/antlr-2.7.6.jar" />
+<classpathentry kind="var" path="GRAILS_HOME/lib/jsp-api-2.0.jar" />
+<classpathentry kind="var" path="GRAILS_HOME/lib/backport-util-concurrent-3.0.jar" />
+<classpathentry kind="var" path="GRAILS_HOME/lib/xpp3_min-1.1.3.4.O.jar" />
+<classpathentry kind="var" path="GRAILS_HOME/lib/slf4j-log4j12-1.5.6.jar" />
+<classpathentry kind="var" path="GRAILS_HOME/lib/jasper-compiler-5.5.15.jar" />
+<classpathentry kind="var" path="GRAILS_HOME/lib/org.springframework.binding-2.0.3.RELEASE.jar" />
+<classpathentry kind="var" path="GRAILS_HOME/lib/jline-0.9.91.jar" />
+<classpathentry kind="var" path="GRAILS_HOME/lib/dom4j-1.6.1.jar" />
+<classpathentry kind="var" path="GRAILS_HOME/lib/org.springframework.js-2.0.3.RELEASE.jar" />
+<classpathentry kind="var" path="GRAILS_HOME/lib/jstl-2.3.jar" />
+<classpathentry kind="var" path="GRAILS_HOME/lib/commons-el-1.0.jar" />
+<classpathentry kind="var" path="GRAILS_HOME/lib/commons-dbcp-1.2.1.jar" />
+<classpathentry kind="var" path="GRAILS_HOME/lib/junit-3.8.2.jar" />
+<classpathentry kind="var" path="GRAILS_HOME/lib/ant-junit-1.7.0.jar" />
+<classpathentry kind="var" path="GRAILS_HOME/dist/grails-scripts-1.1-SNAPSHOT.jar" />
+<classpathentry kind="var" path="GRAILS_HOME/dist/grails-crud-1.1-SNAPSHOT.jar" />
+<classpathentry kind="var" path="GRAILS_HOME/dist/grails-bootstrap-1.1-SNAPSHOT.jar" />
+<classpathentry kind="var" path="GRAILS_HOME/dist/grails-gorm-1.1-SNAPSHOT.jar" />
+<classpathentry kind="var" path="GRAILS_HOME/dist/grails-test-1.1-SNAPSHOT.jar" />
+<classpathentry kind="var" path="GRAILS_HOME/dist/grails-webflow-1.1-SNAPSHOT.jar" />
+<classpathentry kind="var" path="GRAILS_HOME/dist/grails-spring-1.1-SNAPSHOT.jar" />
+<classpathentry kind="var" path="GRAILS_HOME/dist/grails-web-1.1-SNAPSHOT.jar" />
+<classpathentry kind="var" path="GRAILS_HOME/dist/grails-core-1.1-SNAPSHOT.jar" />
+<classpathentry kind="var" path="GRAILS_HOME/dist/grails-resources-1.1-SNAPSHOT.jar" />
+</classpath>
View
23 apps/HelloWorld/.project
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>HelloWorld</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.codehaus.groovy.eclipse.groovyBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.codehaus.groovy.eclipse.groovyNature</nature>
+ </natures>
+</projectDescription>
View
41 apps/HelloWorld/Hello World.iml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<module relativePaths="true" type="GRAILS_MODULE" version="4">
+ <component name="FacetManager">
+ <facet type="Grails" name="Grails">
+ <configuration />
+ </facet>
+ </component>
+ <component name="NewModuleRootManager" inherit-compiler-output="true">
+ <exclude-output />
+ <content url="file://$MODULE_DIR$">
+ <sourceFolder url="file://$MODULE_DIR$/grails-app/conf" isTestSource="false" />
+ <sourceFolder url="file://$MODULE_DIR$/grails-app/conf/hibernate" isTestSource="false" />
+ <sourceFolder url="file://$MODULE_DIR$/grails-app/controllers" isTestSource="false" />
+ <sourceFolder url="file://$MODULE_DIR$/grails-app/domain" isTestSource="false" />
+ <sourceFolder url="file://$MODULE_DIR$/grails-app/services" isTestSource="false" />
+ <sourceFolder url="file://$MODULE_DIR$/grails-app/taglib" isTestSource="false" />
+ <sourceFolder url="file://$MODULE_DIR$/grails-app/views" isTestSource="false" />
+ <sourceFolder url="file://$MODULE_DIR$/plugins/webtest-0.5/src/groovy" isTestSource="false" />
+ <sourceFolder url="file://$MODULE_DIR$/src/groovy" isTestSource="false" />
+ <sourceFolder url="file://$MODULE_DIR$/src/java" isTestSource="false" />
+ <sourceFolder url="file://$MODULE_DIR$/test/integration" isTestSource="true" />
+ <sourceFolder url="file://$MODULE_DIR$/test/unit" isTestSource="true" />
+ </content>
+ <orderEntry type="library" name="GRAILS" level="application" />
+ <orderEntry type="library" name="grails-1.0.4" level="application" />
+ <orderEntry type="inheritedJdk" />
+ <orderEntry type="sourceFolder" forTests="false" />
+ <orderEntry type="module-library">
+ <library name="Grails User Library">
+ <CLASSES>
+ <root url="file://$MODULE_DIR$/lib" />
+ <root url="file://$MODULE_DIR$/lib" />
+ </CLASSES>
+ <JAVADOC />
+ <SOURCES />
+ <jarDirectory url="file://$MODULE_DIR$/lib" recursive="false" />
+ </library>
+ </orderEntry>
+ </component>
+</module>
+
View
19 apps/HelloWorld/HelloWorld.launch
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<launchConfiguration type="org.eclipse.jdt.launching.localJavaApplication">
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
+<listEntry value="/HelloWorld"/>
+</listAttribute>
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
+<listEntry value="4"/>
+</listAttribute>
+<booleanAttribute key="org.eclipse.debug.core.appendEnvironmentVariables" value="true"/>
+<listAttribute key="org.eclipse.jdt.launching.CLASSPATH">
+<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;&#10;&lt;runtimeClasspathEntry containerPath=&quot;org.eclipse.jdt.launching.JRE_CONTAINER&quot; javaProject=&quot;HelloWorld&quot; path=&quot;1&quot; type=&quot;4&quot;/&gt;&#10;"/>
+<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;&#10;&lt;runtimeClasspathEntry containerPath=&quot;GRAILS_HOME/dist/grails-bootstrap-1.1-SNAPSHOT.jar&quot; path=&quot;3&quot; type=&quot;3&quot;/&gt;&#10;"/>
+<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;&#10;&lt;runtimeClasspathEntry containerPath=&quot;GRAILS_HOME/lib/groovy-all-1.6-RC-2.jar&quot; path=&quot;3&quot; type=&quot;3&quot;/&gt;&#10;"/>
+</listAttribute>
+<booleanAttribute key="org.eclipse.jdt.launching.DEFAULT_CLASSPATH" value="false"/>
+<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="grails.util.GrailsMain"/>
+<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="HelloWorld"/>
+<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Dbase.dir=${workspace_loc}/HelloWorld -Dserver.port=8080 -Dgrails.env=development"/>
+</launchConfiguration>
View
73 apps/HelloWorld/HelloWorld.tmproj
@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>documents</key>
+ <array>
+ <dict>
+ <key>filename</key>
+ <string>HelloWorld.launch</string>
+ </dict>
+ <dict>
+ <key>filename</key>
+ <string>build.xml</string>
+ </dict>
+ <dict>
+ <key>name</key>
+ <string>grails-app</string>
+ <key>regexFolderFilter</key>
+ <string>!.*/(\.[^/]*|CVS|_darcs|_MTN|\{arch\}|blib|.*~\.nib|.*\.(framework|app|pbproj|pbxproj|xcode(proj)?|bundle))$</string>
+ <key>sourceDirectory</key>
+ <string>grails-app</string>
+ </dict>
+ <dict>
+ <key>name</key>
+ <string>test</string>
+ <key>regexFolderFilter</key>
+ <string>!.*/(\.[^/]*|CVS|_darcs|_MTN|\{arch\}|blib|.*~\.nib|.*\.(framework|app|pbproj|pbxproj|xcode(proj)?|bundle))$</string>
+ <key>sourceDirectory</key>
+ <string>test</string>
+ </dict>
+ <dict>
+ <key>name</key>
+ <string>lib</string>
+ <key>regexFolderFilter</key>
+ <string>!.*/(\.[^/]*|CVS|_darcs|_MTN|\{arch\}|blib|.*~\.nib|.*\.(framework|app|pbproj|pbxproj|xcode(proj)?|bundle))$</string>
+ <key>sourceDirectory</key>
+ <string>lib</string>
+ </dict>
+ <dict>
+ <key>name</key>
+ <string>scripts</string>
+ <key>regexFolderFilter</key>
+ <string>!.*/(\.[^/]*|CVS|_darcs|_MTN|\{arch\}|blib|.*~\.nib|.*\.(framework|app|pbproj|pbxproj|xcode(proj)?|bundle))$</string>
+ <key>sourceDirectory</key>
+ <string>scripts</string>
+ </dict>
+ <dict>
+ <key>name</key>
+ <string>src</string>
+ <key>regexFolderFilter</key>
+ <string>!.*/(\.[^/]*|CVS|_darcs|_MTN|\{arch\}|blib|.*~\.nib|.*\.(framework|app|pbproj|pbxproj|xcode(proj)?|bundle))$</string>
+ <key>sourceDirectory</key>
+ <string>src</string>
+ </dict>
+ <dict>
+ <key>name</key>
+ <string>web-app</string>
+ <key>regexFolderFilter</key>
+ <string>!.*/(\.[^/]*|CVS|_darcs|_MTN|\{arch\}|blib|.*~\.nib|.*\.(framework|app|pbproj|pbxproj|xcode(proj)?|bundle))$</string>
+ <key>sourceDirectory</key>
+ <string>web-app</string>
+ </dict>
+ </array>
+ <key>fileHierarchyDrawerWidth</key>
+ <integer>200</integer>
+ <key>metaData</key>
+ <dict/>
+ <key>showFileHierarchyDrawer</key>
+ <true/>
+ <key>windowFrame</key>
+ <string>{{237, 127}, {742, 553}}</string>
+</dict>
+</plist>
View
8 apps/HelloWorld/application.properties
@@ -0,0 +1,8 @@
+#utf-8
+#Fri Feb 06 09:05:48 GMT 2009
+plugins.webtest=0.6
+app.version=0.1
+app.servlet.version=2.4
+app.grails.version=1.1-SNAPSHOT
+plugins.hibernate=1.1-beta3
+app.name=HelloWorld
View
130 apps/HelloWorld/build.xml
@@ -0,0 +1,130 @@
+<project xmlns:ivy="antlib:org.apache.ivy.ant" name="helloworld" default="test">
+ <property environment="env"/>
+ <property name="ivy.install.version" value="2.0.0" />
+ <condition property="ivy.home" value="${env.IVY_HOME}">
+ <isset property="env.IVY_HOME" />
+ </condition>
+ <property name="ivy.home" value="${user.home}/.ant" />
+ <property name="ivy.jar.dir" value="${ivy.home}/lib" />
+ <property name="ivy.jar.file" value="${ivy.jar.dir}/ivy-${ivy.install.version}.jar" />
+
+ <target name="download-ivy" unless="offline">
+ <available file="${ivy.jar.file}" property="ivy.available"/>
+ <antcall target="-download-ivy" />
+ </target>
+
+ <target name="-download-ivy" unless="ivy.available">
+ <mkdir dir="${ivy.jar.dir}"/>
+ <!-- download Ivy from web site so that it can be used even without any special installation -->
+ <get src="http://www.apache.org/dist/ant/ivy/${ivy.install.version}/apache-ivy-${ivy.install.version}-bin.zip"
+ dest="${ivy.home}/ivy.zip" usetimestamp="true" verbose="true"/>
+ <unzip src="${ivy.home}/ivy.zip" dest="${ivy.jar.dir}">
+ <patternset>
+ <include name="**/*.jar"/>
+ </patternset>
+ <mapper type="flatten"/>
+ </unzip>
+ </target>
+
+ <target name="init-ivy" depends="download-ivy" unless="ivy.lib.path">
+ <!-- try to load ivy here from ivy home, in case the user has not already dropped
+ it into ant's lib dir (note that the latter copy will always take precedence).
+ We will not fail as long as local lib dir exists (it may be empty) and
+ ivy is in at least one of ant's lib dir or the local lib dir. -->
+ <path id="ivy.lib.path">
+ <fileset dir="${ivy.jar.dir}" includes="*.jar"/>
+ </path>
+ <taskdef resource="org/apache/ivy/ant/antlib.xml"
+ uri="antlib:org.apache.ivy.ant" classpathref="ivy.lib.path"/>
+ </target>
+
+
+ <property name="lib.dir" value="${basedir}/lib"/>
+
+ <macrodef name="grails">
+ <attribute name="script"/>
+ <sequential>
+ <grailsTask script="@{script}" classpathref="grails.classpath">
+ <compileClasspath refid="compile.classpath"/>
+ <testClasspath refid="test.classpath"/>
+ <runtimeClasspath refid="app.classpath"/>
+ </grailsTask>
+ </sequential>
+ </macrodef>
+
+ <!-- =================================
+ target: resolve
+ ================================= -->
+ <target name="-resolve" description="--> Retrieve dependencies with ivy" depends="init-ivy">
+ <ivy:retrieve pattern="${lib.dir}/[conf]/[artifact]-[revision].[ext]"/>
+ </target>
+
+ <target name="-init-grails" depends="-resolve">
+ <path id="grails.classpath">
+ <fileset dir="${lib.dir}/build"/>
+ </path>
+
+ <path id="compile.classpath">
+ <fileset dir="${lib.dir}/compile"/>
+ </path>
+
+ <path id="test.classpath">
+ <fileset dir="${lib.dir}/test"/>
+ </path>
+
+ <path id="app.classpath">
+ <fileset dir="${lib.dir}/runtime"/>
+ </path>
+
+ <taskdef name="grailsTask"
+ classname="grails.ant.GrailsTask"
+ classpathref="grails.classpath"/>
+ </target>
+
+ <target name="deps-report" depends="-resolve" description="--> Generate report of module dependencies.">
+ <ivy:report conf="*"/>
+ </target>
+
+ <!-- =================================
+ target: clean
+ ================================= -->
+ <target name="clean" depends="-init-grails" description="--> Cleans a Grails application">
+ <grails script="Clean"/>
+ <delete dir="${lib.dir}" includes="**/*"/>
+ </target>
+
+ <!-- =================================
+ target: compile
+ ================================= -->
+ <target name="compile" depends="-init-grails" description="--> Compiles a Grails application">
+ <grails script="Compile"/>
+ </target>
+
+ <!-- =================================
+ target: war
+ ================================= -->
+ <target name="war" depends="-init-grails" description="--> Creates a WAR of a Grails application">
+ <grails script="War"/>
+ </target>
+
+ <!-- =================================
+ target: test
+ ================================= -->
+ <target name="test" depends="-init-grails" description="--> Run a Grails applications unit tests">
+ <grails script="TestApp"/>
+ </target>
+
+ <!-- =================================
+ target: run
+ ================================= -->
+ <target name="run" depends="-init-grails" description="--> Runs a Grails application using embedded Jetty">
+ <grails script="RunApp"/>
+ </target>
+
+ <!-- =================================
+ target: deploy
+ ================================= -->
+ <target name="deploy" depends="war" description="--> The deploy target (initially empty)">
+ <!-- TODO -->
+ </target>
+</project>
View
12 apps/HelloWorld/grails-app/conf/BootStrap.groovy
@@ -0,0 +1,12 @@
+class BootStrap {
+ def init = { servletContext ->
+ new Car(make: "Porsche", dateOfManufacture: new Date(), engineCapacity: 4200, listPrice: 78000G).save()
+ new Car(make: "Renault", dateOfManufacture: new Date(), engineCapacity: 1400, listPrice: 14000G).save()
+ new Car(make: "GM", dateOfManufacture: new Date(), engineCapacity: 2000, listPrice: 16000G).save()
+ new Car(make: "BMW", dateOfManufacture: new Date(), engineCapacity: 3200, listPrice: 54000G).save()
+ new Car(make: "Toyota", dateOfManufacture: new Date(), engineCapacity: 1100, listPrice: 7000G).save()
+ }
+
+ def destroy = {
+ }
+}
View
62 apps/HelloWorld/grails-app/conf/Config.groovy
@@ -0,0 +1,62 @@
+// locations to search for config files that get merged into the main config
+// config files can either be Java properties files or ConfigSlurper scripts
+
+// grails.config.locations = [ "classpath:${appName}-config.properties",
+// "classpath:${appName}-config.groovy",
+// "file:${userHome}/.grails/${appName}-config.properties",
+// "file:${userHome}/.grails/${appName}-config.groovy"]
+
+// if(System.properties["${appName}.config.location"]) {
+// grails.config.locations << "file:" + System.properties["${appName}.config.location"]
+// }
+grails.mime.file.extensions = false // enables the parsing of file extensions from URLs into the request format
+grails.mime.types = [ html: ['text/html','application/xhtml+xml'],
+ xml: ['text/xml', 'application/xml'],
+ text: 'text-plain',
+ js: 'text/javascript',
+ rss: 'application/rss+xml',
+ atom: 'application/atom+xml',
+ css: 'text/css',
+ csv: 'text/csv',
+ all: '*/*',
+ json: ['application/json','text/json'],
+ form: 'application/x-www-form-urlencoded',
+ multipartForm: 'multipart/form-data'
+ ]
+// The default codec used to encode data with ${}
+grails.views.default.codec="none" // none, html, base64
+grails.views.gsp.encoding="UTF-8"
+
+// enabled native2ascii conversion of i18n properties files
+grails.enable.native2ascii = true
+
+// log4j configuration
+log4j {
+ appender.stdout = "org.apache.log4j.ConsoleAppender"
+ appender.'stdout.layout'="org.apache.log4j.PatternLayout"
+ appender.'stdout.layout.ConversionPattern'='[%r] %c{2} %m%n'
+ appender.errors = "org.apache.log4j.FileAppender"
+ appender.'errors.layout'="org.apache.log4j.PatternLayout"
+ appender.'errors.layout.ConversionPattern'='[%r] %c{2} %m%n'
+ appender.'errors.File'="stacktrace.log"
+ rootLogger="error,stdout"
+ logger {
+ grails="error"
+ StackTrace="error,errors"
+ org {
+ codehaus.groovy.grails.web.servlet="error" // controllers
+ codehaus.groovy.grails.web.pages="error" // GSP
+ codehaus.groovy.grails.web.sitemesh="error" // layouts
+ codehaus.groovy.grails."web.mapping.filter"="error" // URL mapping
+ codehaus.groovy.grails."web.mapping"="error" // URL mapping
+ codehaus.groovy.grails.commons="info" // core / classloading
+ codehaus.groovy.grails.plugins="error" // plugins
+ codehaus.groovy.grails.orm.hibernate="error" // hibernate integration
+ springframework="off"
+ hibernate="off"
+ }
+ }
+ additivity.StackTrace=false
+}
+
+
View
32 apps/HelloWorld/grails-app/conf/DataSource.groovy
@@ -0,0 +1,32 @@
+dataSource {
+ pooled = false
+ driverClassName = "org.hsqldb.jdbcDriver"
+ username = "sa"
+ password = ""
+}
+//hibernate {
+// cache.use_second_level_cache=true
+// cache.use_query_cache=true
+// cache.provider_class='org.hibernate.cache.EhCacheProvider'
+//}
+// environment specific settings
+environments {
+ development {
+ dataSource {
+ dbCreate = "create-drop" // one of 'create', 'create-drop','update'
+ url = "jdbc:hsqldb:mem:devDB"
+ }
+ }
+ test {
+ dataSource {
+ dbCreate = "update"
+ url = "jdbc:hsqldb:mem:testDb"
+ }
+ }
+ production {
+ dataSource {
+ dbCreate = "update"
+ url = "jdbc:hsqldb:file:prodDb;shutdown=true"
+ }
+ }
+}
View
55 apps/HelloWorld/grails-app/conf/UrlMappings.groovy
@@ -0,0 +1,55 @@
+class UrlMappings {
+ static mappings = {
+ "/mapping"(controller: "hello", action: "mapping") {
+ something = "test string"
+ }
+
+ "/mapping2" {
+ controller = "hello"
+ action = "mapping"
+ something = "test string"
+ }
+
+ "/$controller/$action?/$id?"{
+ something = "test string"
+
+ constraints {
+ // apply constraints here
+ }
+ }
+
+ // GRAILS-3112
+ "/feeds/contents/$path**"{
+ controller = "feeds"
+ action = "contents"
+ }
+
+ // GRAILS-3087
+ "/files/download/$filename.$ext" (controller: "file", action: "get")
+ "/3087/prefix-$stem/$action-$id?"(controller: "stem")
+
+ // The next two are related to GRAILS-3369. If Grails is not
+ // working correctly, the "example" action remains in the
+ // params map for the web request when the next mapping is
+ // evaluated. Since the "hello" controller does not have such
+ // an action, the next mapping does not match even though it
+ // should.
+ "/$controller/hello/$id?" {
+ action = "example"
+ }
+
+ "/$lang/$controller/$action?" {
+ constraints {
+ lang("matches": /[a-z]{2}/)
+ }
+ }
+
+ "500"(controller: "errors", action: "show") {
+ code = 1001
+ }
+
+ "414"(view: "/missing")
+
+ "444"(controller: "hello", view: "kaput")
+ }
+}
View
4 apps/HelloWorld/grails-app/conf/spring/resources.groovy
@@ -0,0 +1,4 @@
+// Place your Spring DSL code here
+beans = {
+
+}
View
1  apps/HelloWorld/grails-app/conf/test-content.txt
@@ -0,0 +1 @@
+Howdy-doody!
View
3  apps/HelloWorld/grails-app/controllers/BaseController.groovy
@@ -0,0 +1,3 @@
+abstract class BaseController {
+ def beforeInterceptor = {}
+}
View
4 apps/HelloWorld/grails-app/controllers/CarController.groovy
@@ -0,0 +1,4 @@
+class CarController {
+
+ def scaffold = Car
+}
View
5 apps/HelloWorld/grails-app/controllers/ErrorsController.groovy
@@ -0,0 +1,5 @@
+class ErrorsController {
+ def show = {
+ render "Internal server error: ${params['code']}"
+ }
+}
View
15 apps/HelloWorld/grails-app/controllers/FormsController.groovy
@@ -0,0 +1,15 @@
+class FormsController {
+ def defaultAction = "failed"
+
+ def failed = {
+ render("failed")
+ }
+
+ def success = {
+ render("success - Text field: ${params['name']}, Text area: ${params['memo']}, Checkbox: ${params['doCheck']}")
+ }
+
+ def test = {}
+
+ def test2 = {}
+}
View
34 apps/HelloWorld/grails-app/controllers/HelloController.groovy
@@ -0,0 +1,34 @@
+class HelloController extends BaseController {
+
+ def index = {
+ render("${g.message(code: 'default.paginate.prev')}: Hello world!")
+ }
+
+ def mapping = {
+ render "Controller: ${params['controller']}, action: ${params['action']}, other: ${params['something']}"
+ }
+
+ // Sends an internal server error code back to the client.
+ def bad = {
+ response.sendError(500)
+ }
+
+ def error414 = {
+ response.sendError(414)
+ }
+
+ def error444 = {
+ response.sendError(444)
+ }
+
+ def reloadTest = {}
+
+ /**
+ * Test for GRAILS-3929. Makes sure that the stuff in "grails-app/conf"
+ * is on the classpath.
+ */
+ def resourceTest = {
+ String content = getClass().classLoader.rootLoader.getResourceAsStream("test-content.txt").text
+ render content
+ }
+}
View
13 apps/HelloWorld/grails-app/controllers/StemController.groovy
@@ -0,0 +1,13 @@
+/**
+ * Controller designed to test GRAILS-3087.
+ */
+public class StemController {
+ def list = {
+ render contentType: "text/html",
+ text: g.link(action: "show", params: [stem: "fixed"], id: params.id) { "Link for stem ${params.stem}" }
+ }
+
+ def show = {
+ render "Show - ID = ${params.id} - Stem = ${params.stem}"
+ }
+}
View
18 apps/HelloWorld/grails-app/controllers/org/example/FeedsController.groovy
@@ -0,0 +1,18 @@
+package org.example
+
+/**
+ *
+ */
+class FeedsController {
+ def testReverse = {
+ render g.link(
+ controller: "feeds",
+ action: "contents",
+ id: 1,
+ params: [ path: "/my/file/at/some/place" ])
+ }
+
+ def contents = {
+ render "Path: ${params['path']}"
+ }
+}
View
23 apps/HelloWorld/grails-app/controllers/org/example/FileController.groovy
@@ -0,0 +1,23 @@
+package org.example
+
+/**
+ * Controller for accessing files on the system.
+ */
+public class FileController {
+ def get = {
+ def link = g.link(controller: "file", action: "get", params: [filename: "dooby", ext: "pdf"]) {
+ "Link to dooby file"
+ }
+
+ render """\
+<html>
+ <body>
+ <div>Downloading file '${params.filename}.${params.ext}'...</div>
+ <div id="link">
+ ${link}
+ </div>
+ </body>
+</html>
+"""
+ }
+}
View
15 apps/HelloWorld/grails-app/domain/Car.groovy
@@ -0,0 +1,15 @@
+class Car {
+ Date dateOfManufacture
+ String make
+ int engineCapacity
+ BigDecimal listPrice
+ double mpg
+
+ static constraints = {
+ make()
+ engineCapacity()
+ dateOfManufacture()
+ listPrice()
+ mpg()
+ }
+}
View
30 apps/HelloWorld/grails-app/i18n/messages.properties
@@ -0,0 +1,30 @@
+default.doesnt.match.message=Property [{0}] of class [{1}] with value [{2}] does not match the required pattern [{3}]
+default.invalid.url.message=Property [{0}] of class [{1}] with value [{2}] is not a valid URL
+default.invalid.creditCard.message=Property [{0}] of class [{1}] with value [{2}] is not a valid credit card number
+default.invalid.email.message=Property [{0}] of class [{1}] with value [{2}] is not a valid e-mail address
+default.invalid.range.message=Property [{0}] of class [{1}] with value [{2}] does not fall within the valid range from [{3}] to [{4}]
+default.invalid.size.message=Property [{0}] of class [{1}] with value [{2}] does not fall within the valid size range from [{3}] to [{4}]
+default.invalid.max.message=Property [{0}] of class [{1}] with value [{2}] exceeds maximum value [{3}]
+default.invalid.min.message=Property [{0}] of class [{1}] with value [{2}] is less than minimum value [{3}]
+default.invalid.max.size.message=Property [{0}] of class [{1}] with value [{2}] exceeds the maximum size of [{3}]
+default.invalid.min.size.message=Property [{0}] of class [{1}] with value [{2}] is less than the minimum size of [{3}]
+default.invalid.validator.message=Property [{0}] of class [{1}] with value [{2}] does not pass custom validation
+default.not.inlist.message=Property [{0}] of class [{1}] with value [{2}] is not contained within the list [{3}]
+default.blank.message=Property [{0}] of class [{1}] cannot be blank
+default.not.equal.message=Property [{0}] of class [{1}] with value [{2}] cannot equal [{3}]
+default.null.message=Property [{0}] of class [{1}] cannot be null
+default.not.unique.message=Property [{0}] of class [{1}] with value [{2}] must be unique
+
+default.paginate.prev=Previous
+default.paginate.next=Next
+
+# Data binding errors. Use "typeMismatch.$className.$propertyName to customize (eg typeMismatch.Book.author)
+typeMismatch.java.net.URL=Property {0} must be a valid URL
+typeMismatch.java.net.URI=Property {0} must be a valid URI
+typeMismatch.java.util.Date=Property {0} must be a valid Date
+typeMismatch.java.lang.Double=Property {0} must be a valid number
+typeMismatch.java.lang.Integer=Property {0} must be a valid number
+typeMismatch.java.lang.Long=Property {0} must be a valid number
+typeMismatch.java.lang.Short=Property {0} must be a valid number
+typeMismatch.java.math.BigDecimal=Property {0} must be a valid number
+typeMismatch.java.math.BigInteger=Property {0} must be a valid number
View
30 apps/HelloWorld/grails-app/i18n/messages_de.properties
@@ -0,0 +1,30 @@
+default.doesnt.match.message=Die Eigenschaft [{0}] des Typs [{1}] mit dem Wert [{2}] entspricht nicht dem vorgegebenen Muster [{3}]
+default.invalid.url.message=Die Eigenschaft [{0}] des Typs [{1}] mit dem Wert [{2}] ist keine gültige URL
+default.invalid.creditCard.message=Das Die Eigenschaft [{0}] des Typs [{1}] mit dem Wert [{2}] ist keine gültige Kreditkartennummer
+default.invalid.email.message=Die Eigenschaft [{0}] des Typs [{1}] mit dem Wert [{2}] ist keine gültige E-Mail Adresse
+default.invalid.range.message=Die Eigenschaft [{0}] des Typs [{1}] mit dem Wert [{2}] ist nicht im Wertebereich von [{3}] bis [{4}]
+default.invalid.size.message=Die Eigenschaft [{0}] des Typs [{1}] mit dem Wert [{2}] ist nicht im Wertebereich von [{3}] bis [{4}]
+default.invalid.max.message=Die Eigenschaft [{0}] des Typs [{1}] mit dem Wert [{2}] ist größer als der Höchstwert von [{3}]
+default.invalid.min.message=Die Eigenschaft [{0}] des Typs [{1}] mit dem Wert [{2}] ist kleiner als der Mindestwert von [{3}]
+default.invalid.max.size.message=Die Eigenschaft [{0}] des Typs [{1}] mit dem Wert [{2}] übersteigt den Höchstwert von [{3}]
+default.invalid.min.size.message=Die Eigenschaft [{0}] des Typs [{1}] mit dem Wert [{2}] unterschreitet den Mindestwert von [{3}]
+default.invalid.validator.message=Die Eigenschaft [{0}] des Typs [{1}] mit dem Wert [{2}] ist ungültig
+default.not.inlist.message=Die Eigenschaft [{0}] des Typs [{1}] mit dem Wert [{2}] ist nicht in der Liste [{3}] enthalten.
+default.blank.message=Die Eigenschaft [{0}] des Typs [{1}] darf nicht leer sein
+default.not.equal.message=Die Eigenschaft [{0}] des Typs [{1}] mit dem Wert [{2}] darf nicht gleich [{3}] sein
+default.null.message=Die Eigenschaft [{0}] des Typs [{1}] darf nicht null sein
+default.not.unique.message=Die Eigenschaft [{0}] des Typs [{1}] mit dem Wert [{2}] darf nur einmal vorkommen
+
+default.paginate.prev=Vorherige
+default.paginate.next=Nächste
+
+# Data binding errors. Use "typeMismatch.$className.$propertyName to customize (eg typeMismatch.Book.author)
+typeMismatch.java.net.URL=Die Eigenschaft {0} muss eine gültige URL sein
+typeMismatch.java.net.URI=Die Eigenschaft {0} muss eine gültige URI sein
+typeMismatch.java.util.Date=Die Eigenschaft {0} muss ein gültiges Datum sein
+typeMismatch.java.lang.Double=Die Eigenschaft {0} muss eine gültige Zahl sein
+typeMismatch.java.lang.Integer=Die Eigenschaft {0} muss eine gültige Zahl sein
+typeMismatch.java.lang.Long=Die Eigenschaft {0} muss eine gültige Zahl sein
+typeMismatch.java.lang.Short=Die Eigenschaft {0} muss eine gültige Zahl sein
+typeMismatch.java.math.BigDecimal=Die Eigenschaft {0} muss eine gültige Zahl sein
+typeMismatch.java.math.BigInteger=Die Eigenschaft {0} muss eine gültige Zahl sein
View
30 apps/HelloWorld/grails-app/i18n/messages_es.properties
@@ -0,0 +1,30 @@
+default.doesnt.match.message=La propiedad [{0}] de la clase [{1}] con valor [{2}] no corresponde al patrón [{3}]
+default.invalid.url.message=La propiedad [{0}] de la clase [{1}] con valor [{2}] no es una URL válida
+default.invalid.creditCard.message=La propiedad [{0}] de la clase [{1}] con valor [{2}] no es un número de tarjeta de crédito válida
+default.invalid.email.message=La propiedad [{0}] de la clase [{1}] con valor [{2}] no es una dirección de correo electrónico válida
+default.invalid.range.message=La propiedad [{0}] de la clase [{1}] con valor [{2}] no entra en el rango válido de [{3}] a [{4}]
+default.invalid.size.message=La propiedad [{0}] de la clase [{1}] con valor [{2}] no entra en el tamaño válido de [{3}] a [{4}]
+default.invalid.max.message=La propiedad [{0}] de la clase [{1}] con valor [{2}] excede el valor máximo [{3}]
+default.invalid.min.message=La propiedad [{0}] de la clase [{1}] con valor [{2}] es menos que el valor mínimo [{3}]
+default.invalid.max.size.message=La propiedad [{0}] de la clase [{1}] con valor [{2}] excede el tamaño máximo de [{3}]
+default.invalid.min.size.message=La propiedad [{0}] de la clase [{1}] con valor [{2}] es menor que el tamaño mínimo de [{3}]
+default.invalid.validator.message=La propiedad [{0}] de la clase [{1}] con valor [{2}] no es válido
+default.not.inlist.message=La propiedad [{0}] de la clase [{1}] con valor [{2}] no esta contenido dentro de la lista [{3}]
+default.blank.message=La propiedad [{0}] de la clase [{1}] no puede ser vacía
+default.not.equal.message=La propiedad [{0}] de la clase [{1}] con valor [{2}] no puede igualar a [{3}]
+default.null.message=La propiedad [{0}] de la clase [{1}] no puede ser nulo
+default.not.unique.message=La propiedad [{0}] de la clase [{1}] con valor [{2}] debe ser única
+
+default.paginate.prev=Anterior
+default.paginate.next=Siguiente
+
+# Data binding errors. Use "typeMismatch.$className.$propertyName to customize (eg typeMismatch.Book.author)
+typeMismatch.java.net.URL=La propiedad {0} debe ser una URL válida
+typeMismatch.java.net.URI=La propiedad {0} debe ser una URI válida
+typeMismatch.java.util.Date=La propiedad {0} debe ser una fecha válida
+typeMismatch.java.lang.Double=La propiedad {0} debe ser un número válido
+typeMismatch.java.lang.Integer=La propiedad {0} debe ser un número válido
+typeMismatch.java.lang.Long=La propiedad {0} debe ser un número válido
+typeMismatch.java.lang.Short=La propiedad {0} debe ser un número válido
+typeMismatch.java.math.BigDecimal=La propiedad {0} debe ser un número válido
+typeMismatch.java.math.BigInteger=La propiedad {0} debe ser un número válido
View
19 apps/HelloWorld/grails-app/i18n/messages_fr.properties
@@ -0,0 +1,19 @@
+default.doesnt.match.message=La propriété [{0}] de la classe [{1}] avec la valeur [{2}] ne correspond pas au pattern [{3}]
+default.invalid.url.message=La propriété [{0}] de la classe [{1}] avec la valeur [{2}] n'est pas une URL valide
+default.invalid.creditCard.message=La propriété [{0}] de la classe [{1}] avec la valeur [{2}] n'est pas un numéro de carte de crédit valide
+default.invalid.email.message=La propriété [{0}] de la classe [{1}] avec la valeur [{2}] n'est pas une adresse e-mail valide
+default.invalid.range.message=La propriété [{0}] de la classe [{1}] avec la valeur [{2}] n'est pas contenue dans l'intervalle [{3}] à [{4}]
+default.invalid.size.message=La propriété [{0}] de la classe [{1}] avec la valeur [{2}] n'est pas contenue dans l'intervalle [{3}] à [{4}]
+default.invalid.max.message=La propriété [{0}] de la classe [{1}] avec la valeur [{2}] est supérieure à la valeur maximum [{3}]
+default.invalid.min.message=La propriété [{0}] de la classe [{1}] avec la valeur [{2}] est inférieure à la valeur minimum [{3}]
+default.invalid.max.size.message=La propriété [{0}] de la classe [{1}] avec la valeur [{2}] est supérieure à la valeur maximum [{3}]
+default.invalid.min.size.message=La propriété [{0}] de la classe [{1}] avec la valeur [{2}] est inférieure à la valeur minimum [{3}]
+default.invalid.validator.message=La propriété [{0}] de la classe [{1}] avec la valeur [{2}] n'est pas valide
+default.not.inlist.message=La propriété [{0}] de la classe [{1}] avec la valeur [{2}] ne fait pas partie de la liste [{3}]
+default.blank.message=La propriété [{0}] de la classe [{1}] ne peut pas être vide
+default.not.equal.message=La propriété [{0}] de la classe [{1}] avec la valeur [{2}] ne peut pas être égale à [{3}]
+default.null.message=La propriété [{0}] de la classe [{1}] ne peut pas être nulle
+default.not.unique.message=La propriété [{0}] de la classe [{1}] avec la valeur [{2}] doit être unique
+
+default.paginate.prev=Précédent
+default.paginate.next=Suivant
View
19 apps/HelloWorld/grails-app/i18n/messages_it.properties
@@ -0,0 +1,19 @@
+default.doesnt.match.message=La proprietà [{0}] della classe [{1}] con valore [{2}] non corrisponde al pattern [{3}]
+default.invalid.url.message=La proprietà [{0}] della classe [{1}] con valore [{2}] non è un URL valido
+default.invalid.creditCard.message=La proprietà [{0}] della classe [{1}] con valore [{2}] non è un numero di carta di credito valido
+default.invalid.email.message=La proprietà [{0}] della classe [{1}] con valore [{2}] non è un indirizzo email valido
+default.invalid.range.message=La proprietà [{0}] della classe [{1}] con valore [{2}] non rientra nell'intervallo valido da [{3}] a [{4}]
+default.invalid.size.message=La proprietà [{0}] della classe [{1}] con valore [{2}] non rientra nell'intervallo di dimensioni valide da [{3}] a [{4}]
+default.invalid.max.message=La proprietà [{0}] della classe [{1}] con valore [{2}] è maggiore di [{3}]
+default.invalid.min.message=La proprietà [{0}] della classe [{1}] con valore [{2}] è minore di [{3}]
+default.invalid.max.size.message=La proprietà [{0}] della classe [{1}] con valore [{2}] è maggiore di [{3}]
+default.invalid.min.size.message=La proprietà [{0}] della classe [{1}] con valore [{2}] è minore di [{3}]
+default.invalid.validator.message=La proprietà [{0}] della classe [{1}] con valore [{2}] non è valida
+default.not.inlist.message=La proprietà [{0}] della classe [{1}] con valore [{2}] non è contenuta nella lista [{3}]
+default.blank.message=La proprietà [{0}] della classe [{1}] non può essere vuota
+default.not.equal.message=La proprietà [{0}] della classe [{1}] con valore [{2}] non può essere uguale a [{3}]
+default.null.message=La proprietà [{0}] della classe [{1}] non può essere null
+default.not.unique.message=La proprietà [{0}] della classe [{1}] con valore [{2}] deve essere unica
+
+default.paginate.prev=Precedente
+default.paginate.next=Successivo
View
19 apps/HelloWorld/grails-app/i18n/messages_ja.properties
@@ -0,0 +1,19 @@
+default.doesnt.match.message=クラス[{1}]プロパティ[{0}]の値[{2}]は、[{3}]パターンと一致していません。
+default.invalid.url.message=クラス[{1}]プロパティ[{0}]の値[{2}]は、URLではありません。
+default.invalid.creditCard.message=クラス[{1}]プロパティ[{0}]の値[{2}]は、正当なクレジットカード番号ではありません。
+default.invalid.email.message=クラス[{1}]プロパティ[{0}]の値[{2}]は、メールアドレスではありません。
+default.invalid.range.message=クラス[{1}]プロパティ[{0}]の値[{2}]は、[{3}]から[{4}]範囲内を指定してください。
+default.invalid.size.message=クラス[{1}]プロパティ[{0}]の値[{2}]は、[{3}]から[{4}]以内を指定してください。
+default.invalid.max.message=クラス[{1}]プロパティ[{0}]の値[{2}]は、最大値[{3}]より大きいです。
+default.invalid.min.message=クラス[{1}]プロパティ[{0}]の値[{2}]は、最小値[{3}]より小さいです。
+default.invalid.max.size.message=クラス[{1}]プロパティ[{0}]の値[{2}]は、最大値[{3}]より大きいです。
+default.invalid.min.size.message=クラス[{1}]プロパティ[{0}]の値[{2}]は、最小値[{3}]より小さいです。
+default.invalid.validator.message=クラス[{1}]プロパティ[{0}]の値[{2}]は、カスタムバリデーションを通過できません。
+default.not.inlist.message=クラス[{1}]プロパティ[{0}]の値[{2}]は、[{3}]リスト内に存在しません。
+default.blank.message=[{1}]クラスのプロパティ[{0}]の空白は許可されません。
+default.not.equal.message=クラス[{1}]プロパティ[{0}]の値[{2}]は、[{3}]と同等ではありません。
+default.null.message=[{1}]クラスのプロパティ[{0}]にnullは許可されません。
+default.not.unique.message=クラス[{1}]プロパティ[{0}]の値[{2}]は既に使用されています。
+
+default.paginate.prev=戻る
+default.paginate.next=次へ
View
30 apps/HelloWorld/grails-app/i18n/messages_nl.properties
@@ -0,0 +1,30 @@
+default.doesnt.match.message=Attribuut [{0}] van entiteit [{1}] met waarde [{2}] komt niet overeen met het vereiste patroon [{3}]
+default.invalid.url.message=Attribuut [{0}] van entiteit [{1}] met waarde [{2}] is geen geldige URL
+default.invalid.creditCard.message=Attribuut [{0}] van entiteit [{1}] met waarde [{2}] is geen geldig credit card nummer
+default.invalid.email.message=Attribuut [{0}] van entiteit [{1}] met waarde [{2}] is geen geldig e-mailadres
+default.invalid.range.message=Attribuut [{0}] van entiteit [{1}] met waarde [{2}] valt niet in de geldige waardenreeks van [{3}] tot [{4}]
+default.invalid.size.message=Attribuut [{0}] van entiteit [{1}] met waarde [{2}] valt niet in de geldige grootte van [{3}] tot [{4}]
+default.invalid.max.message=Attribuut [{0}] van entiteit [{1}] met waarde [{2}] overschrijdt de maximumwaarde [{3}]
+default.invalid.min.message=Attribuut [{0}] van entiteit [{1}] met waarde [{2}] is minder dan de minimumwaarde [{3}]
+default.invalid.max.size.message=Attribuut [{0}] van entiteit [{1}] met waarde [{2}] overschrijdt de maximumgrootte van [{3}]
+default.invalid.min.size.message=Attribuut [{0}] van entiteit [{1}] met waarde [{2}] is minder dan mainimumgrootte van [{3}]
+default.invalid.validator.message=Attribuut [{0}] van entiteit [{1}] met waarde [{2}] is niet geldig
+default.not.inlist.message=Attribuut [{0}] van entiteit [{1}] met waarde [{2}] komt niet voor in de lijst [{3}]
+default.blank.message=Attribuut [{0}] van entiteit [{1}] mag niet leeg zijn
+default.not.equal.message=Attribuut [{0}] van entiteit [{1}] met waarde [{2}] mag niet gelijk zijn aan [{3}]
+default.null.message=Attribuut [{0}] van entiteit [{1}] mag niet leeg zijn
+default.not.unique.message=Attribuut [{0}] van entiteit [{1}] met waarde [{2}] moet uniek zijn
+
+default.paginate.prev=Vorige
+default.paginate.next=Volgende
+
+# Data binding errors. Use "typeMismatch.$className.$propertyName to customize (eg typeMismatch.Book.author)
+typeMismatch.java.net.URL=Attribuut {0} is geen geldige URL
+typeMismatch.java.net.URI=Attribuut {0} is geen geldige URI
+typeMismatch.java.util.Date=Attribuut {0} is geen geldige datum
+typeMismatch.java.lang.Double=Attribuut {0} is geen geldig nummer
+typeMismatch.java.lang.Integer=Attribuut {0} is geen geldig nummer
+typeMismatch.java.lang.Long=Attribuut {0} is geen geldig nummer
+typeMismatch.java.lang.Short=Attribuut {0} is geen geldig nummer
+typeMismatch.java.math.BigDecimal=Attribuut {0} is geen geldig nummer
+typeMismatch.java.math.BigInteger=Attribuut {0} is geen geldig nummer
View
31 apps/HelloWorld/grails-app/i18n/messages_ru.properties
@@ -0,0 +1,31 @@
+default.doesnt.match.message=Значение [{2}] поля [{0}] класса [{1}] не соответствует образцу [{3}]
+default.invalid.url.message=Значение [{2}] поля [{0}] класса [{1}] не является допустимым URL-адресом
+default.invalid.creditCard.message=Значение [{2}] поля [{0}] класса [{1}] не является допустимым номером кредитной карты
+default.invalid.email.message=Значение [{2}] поля [{0}] класса [{1}] не является допустимым e-mail адресом
+default.invalid.range.message=Значение [{2}] поля [{0}] класса [{1}] не попадает в допустимый интервал от [{3}] до [{4}]
+default.invalid.size.message=Размер поля [{0}] класса [{1}] (значение: [{2}]) не попадает в допустимый интервал от [{3}] до [{4}]
+default.invalid.max.message=Значение [{2}] поля [{0}] класса [{1}] больше чем максимально допустимое значение [{3}]
+default.invalid.min.message=Значение [{2}] поля [{0}] класса [{1}] меньше чем минимально допустимое значение [{3}]
+default.invalid.max.size.message=Размер поля [{0}] класса [{1}] (значение: [{2}]) больше чем максимально допустимый размер [{3}]
+default.invalid.min.size.message=Размер поля [{0}] класса [{1}] (значение: [{2}]) меньше чем минимально допустимый размер [{3}]
+default.invalid.validator.message=Значение [{2}] поля [{0}] класса [{1}] не допустимо
+default.not.inlist.message=Значение [{2}] поля [{0}] класса [{1}] не попадает в список допустимых значений [{3}]
+default.blank.message=Поле [{0}] класса [{1}] не может быть пустым
+default.not.equal.message=Значение [{2}] поля [{0}] класса [{1}] не может быть равно [{3}]
+default.null.message=Поле [{0}] класса [{1}] не может иметь значение null
+default.not.unique.message=Значение [{2}] поля [{0}] класса [{1}] должно быть уникальным
+
+default.paginate.prev=Предыдушая страница
+default.paginate.next=Следующая страница
+
+# Ошибки при присвоении данных. Для точной настройки для полей классов используйте
+# формат "typeMismatch.$className.$propertyName" (например, typeMismatch.Book.author)
+typeMismatch.java.net.URL=Значение поля {0} не является допустимым URL
+typeMismatch.java.net.URI=Значение поля {0} не является допустимым URI
+typeMismatch.java.util.Date=Значение поля {0} не является допустимой датой
+typeMismatch.java.lang.Double=Значение поля {0} не является допустимым числом
+typeMismatch.java.lang.Integer=Значение поля {0} не является допустимым числом
+typeMismatch.java.lang.Long=Значение поля {0} не является допустимым числом
+typeMismatch.java.lang.Short=Значение поля {0} не является допустимым числом
+typeMismatch.java.math.BigDecimal=Значение поля {0} не является допустимым числом
+typeMismatch.java.math.BigInteger=Значение поля {0} не является допустимым числом
View
30 apps/HelloWorld/grails-app/i18n/messages_th.properties
@@ -0,0 +1,30 @@
+default.doesnt.match.message=คุณสมบัติ [{0}] ของคลาส [{1}] ซึ่งมีค่าเป็น [{2}] ไม่ถูกต้องตามรูปแบบที่กำหนดไว้ใน [{3}]
+default.invalid.url.message=คุณสมบัติ [{0}] ของคลาส [{1}] ซึ่งมีค่าเป็น [{2}] ไม่ถูกต้องตามรูปแบบ URL
+default.invalid.creditCard.message=คุณสมบัติ [{0}] ของคลาส [{1}] ซึ่งมีค่าเป็น [{2}] ไม่ถูกต้องตามรูปแบบหมายเลขบัตรเครดิต
+default.invalid.email.message=คุณสมบัติ [{0}] ของคลาส [{1}] ซึ่งมีค่าเป็น [{2}] ไม่ถูกต้องตามรูปแบบอีเมล์
+default.invalid.range.message=คุณสมบัติ [{0}] ของคลาส [{1}] ซึ่งมีค่าเป็น [{2}] ไม่ได้มีค่าที่ถูกต้องในช่วงจาก [{3}] ถึง [{4}]
+default.invalid.size.message=คุณสมบัติ [{0}] ของคลาส [{1}] ซึ่งมีค่าเป็น [{2}] ไม่ได้มีขนาดที่ถูกต้องในช่วงจาก [{3}] ถึง [{4}]
+default.invalid.max.message=คุณสมบัติ [{0}] ของคลาส [{1}] ซึ่งมีค่าเป็น [{2}] มีค่าเกิดกว่าค่ามากสุด [{3}]
+default.invalid.min.message=คุณสมบัติ [{0}] ของคลาส [{1}] ซึ่งมีค่าเป็น [{2}] มีค่าน้อยกว่าค่าต่ำสุด [{3}]
+default.invalid.max.size.message=คุณสมบัติ [{0}] ของคลาส [{1}] ซึ่งมีค่าเป็น [{2}] มีขนาดเกินกว่าขนาดมากสุดของ [{3}]
+default.invalid.min.size.message=คุณสมบัติ [{0}] ของคลาส [{1}] ซึ่งมีค่าเป็น [{2}] มีขนาดต่ำกว่าขนาดต่ำสุดของ [{3}]
+default.invalid.validator.message=คุณสมบัติ [{0}] ของคลาส [{1}] ซึ่งมีค่าเป็น [{2}] ไม่ผ่านการทวนสอบค่าที่ตั้งขึ้น
+default.not.inlist.message=คุณสมบัติ [{0}] ของคลาส [{1}] ซึ่งมีค่าเป็น [{2}] ไม่ได้อยู่ในรายการต่อไปนี้ [{3}]
+default.blank.message=คุณสมบัติ [{0}] ของคลาส [{1}] ไม่สามารถเป็นค่าว่างได้
+default.not.equal.message=คุณสมบัติ [{0}] ของคลาส [{1}] ซึ่งมีค่าเป็น [{2}] ไม่สามารถเท่ากับ [{3}] ได้
+default.null.message=คุณสมบัติ [{0}] ของคลาส [{1}] ไม่สามารถเป็น null ได้
+default.not.unique.message=คุณสมบัติ [{0}] ของคลาส [{1}] ซึ่งมีค่าเป็น [{2}] จะต้องไม่ซ้ำ (unique)
+
+default.paginate.prev=ก่อนหน้า
+default.paginate.next=ถัดไป
+
+# Data binding errors. Use "typeMismatch.$className.$propertyName to customize (eg typeMismatch.Book.author)
+typeMismatch.java.net.URL=คุณสมบัติ '{0}' จะต้องเป็นค่า URL ที่ถูกต้อง
+typeMismatch.java.net.URI=คุณสมบัติ '{0}' จะต้องเป็นค่า URI ที่ถูกต้อง
+typeMismatch.java.util.Date=คุณสมบัติ '{0}' จะต้องมีค่าเป็นวันที่
+typeMismatch.java.lang.Double=คุณสมบัติ '{0}' จะต้องมีค่าเป็นจำนวนประเภท Double
+typeMismatch.java.lang.Integer=คุณสมบัติ '{0}' จะต้องมีค่าเป็นจำนวนประเภท Integer
+typeMismatch.java.lang.Long=คุณสมบัติ '{0}' จะต้องมีค่าเป็นจำนวนประเภท Long
+typeMismatch.java.lang.Short=คุณสมบัติ '{0}' จะต้องมีค่าเป็นจำนวนประเภท Short
+typeMismatch.java.math.BigDecimal=คุณสมบัติ '{0}' จะต้องมีค่าเป็นจำนวนประเภท BigDecimal
+typeMismatch.java.math.BigInteger=คุณสมบัติ '{0}' จะต้องมีค่าเป็นจำนวนประเภท BigInteger
View
18 apps/HelloWorld/grails-app/i18n/messages_zh_CN.properties
@@ -0,0 +1,18 @@
+default.blank.message=[{1}]\u7C7B\u7684\u5C5E\u6027[{0}]\u4E0D\u80FD\u4E3A\u7A7A
+default.doesnt.match.message=[{1}]\u7C7B\u7684\u5C5E\u6027[{0}]\u7684\u503C[{2}]\u4E0E\u5B9A\u4E49\u7684\u6A21\u5F0F [{3}]\u4E0D\u5339\u914D
+default.invalid.creditCard.message=[{1}]\u7C7B\u7684\u5C5E\u6027[{0}]\u7684\u503C[{2}]\u4E0D\u662F\u4E00\u4E2A\u6709\u6548\u7684\u4FE1\u7528\u5361\u53F7
+default.invalid.email.message=[{1}]\u7C7B\u7684\u5C5E\u6027[{0}]\u7684\u503C[{2}]\u4E0D\u662F\u4E00\u4E2A\u5408\u6CD5\u7684\u7535\u5B50\u90AE\u4EF6\u5730\u5740
+default.invalid.max.message=[{1}]\u7C7B\u7684\u5C5E\u6027[{0}]\u7684\u503C[{2}]\u6BD4\u6700\u5927\u503C [{3}]\u8FD8\u5927
+default.invalid.max.size.message=[{1}]\u7C7B\u7684\u5C5E\u6027[{0}]\u7684\u503C[{2}]\u7684\u5927\u5C0F\u6BD4\u6700\u5927\u503C [{3}]\u8FD8\u5927
+default.invalid.min.message=[{1}]\u7C7B\u7684\u5C5E\u6027[{0}]\u7684\u503C[{2}]\u6BD4\u6700\u5C0F\u503C [{3}]\u8FD8\u5C0F
+default.invalid.min.size.message=[{1}]\u7C7B\u7684\u5C5E\u6027[{0}]\u7684\u503C[{2}]\u7684\u5927\u5C0F\u6BD4\u6700\u5C0F\u503C [{3}]\u8FD8\u5C0F
+default.invalid.range.message=[{1}]\u7C7B\u7684\u5C5E\u6027[{0}]\u7684\u503C[{2}]\u4E0D\u5728\u5408\u6CD5\u7684\u8303\u56F4\u5185( [{3}] \uFF5E [{4}] )
+default.invalid.size.message=[{1}]\u7C7B\u7684\u5C5E\u6027[{0}]\u7684\u503C[{2}]\u7684\u5927\u5C0F\u4E0D\u5728\u5408\u6CD5\u7684\u8303\u56F4\u5185( [{3}] \uFF5E [{4}] )
+default.invalid.url.message=[{1}]\u7C7B\u7684\u5C5E\u6027[{0}]\u7684\u503C[{2}]\u4E0D\u662F\u4E00\u4E2A\u5408\u6CD5\u7684URL
+default.invalid.validator.message=[{1}]\u7C7B\u7684\u5C5E\u6027[{0}]\u7684\u503C[{2}]\u672A\u80FD\u901A\u8FC7\u81EA\u5B9A\u4E49\u7684\u9A8C\u8BC1
+default.not.equal.message=[{1}]\u7C7B\u7684\u5C5E\u6027[{0}]\u7684\u503C[{2}]\u4E0E[{3}]\u4E0D\u76F8\u7B49
+default.not.inlist.message=[{1}]\u7C7B\u7684\u5C5E\u6027[{0}]\u7684\u503C[{2}]\u4E0D\u5728\u5217\u8868\u7684\u53D6\u503C\u8303\u56F4\u5185
+default.not.unique.message=[{1}]\u7C7B\u7684\u5C5E\u6027[{0}]\u7684\u503C[{2}]\u5FC5\u987B\u662F\u552F\u4E00\u7684
+default.null.message=[{1}]\u7C7B\u7684\u5C5E\u6027[{0}]\u4E0D\u80FD\u4E3Anull
+default.paginate.next=\u4E0B\u9875
+default.paginate.prev=\u4E0A\u9875
View
5 apps/HelloWorld/grails-app/taglib/FooTagLib.groovy
@@ -0,0 +1,5 @@
+class FooTagLib {
+ def myTag = { attrs ->
+ out << "Hello from myTag!"
+ }
+}
View
46 apps/HelloWorld/grails-app/views/error.gsp
@@ -0,0 +1,46 @@
+<html>
+ <head>
+ <title>Grails Runtime Exception</title>
+ <style type="text/css">
+ .message {
+ border: 1px solid black;
+ padding: 5px;
+ background-color:#E9E9E9;
+ }
+ .stack {
+ border: 1px solid black;
+ padding: 5px;
+ overflow:auto;
+ height: 300px;
+ }
+ .snippet {
+ padding: 5px;
+ background-color:white;
+ border:1px solid black;
+ margin:3px;
+ font-family:courier;
+ }
+ </style>
+ </head>
+
+ <body>
+ <h1>Grails Runtime Exception</h1>
+ <h2>Error Details</h2>
+ <div class="message">
+ <strong>Message:</strong> ${exception.message?.encodeAsHTML()} <br />
+ <strong>Caused by:</strong> ${exception.cause?.message?.encodeAsHTML()} <br />
+ <strong>Class:</strong> ${exception.className} <br />
+ <strong>At Line:</strong> [${exception.lineNumber}] <br />
+ <strong>Code Snippet:</strong><br />
+ <div class="snippet">
+ <g:each var="cs" in="${exception.codeSnippet}">
+ ${cs?.encodeAsHTML()}<br />
+ </g:each>
+ </div>
+ </div>
+ <h2>Stack Trace</h2>
+ <div class="stack">
+ <pre><g:each in="${exception.stackTraceLines}">${it.encodeAsHTML()}<br/></g:each></pre>
+ </div>
+ </body>
+</html>
View
11 apps/HelloWorld/grails-app/views/forms/test.gsp
@@ -0,0 +1,11 @@
+<html>
+<head>
+ <title>Action Submit</title>
+</head>
+<body>
+ <g:form controller="forms">
+ <g:actionSubmit value="Do it right" action="success"/>
+ <g:actionSubmit value="Do it wrong" action="failed"/>
+ </g:form>
+</body>
+</html>
View
13 apps/HelloWorld/grails-app/views/forms/test2.gsp
@@ -0,0 +1,13 @@
+<html>
+<head>
+ <title>Submit Button</title>
+</head>
+<body>
+ <g:form action="success">
+ <g:textField name="name"/>
+ <g:checkBox name="doCheck"/>
+ <g:textArea name="memo" rows="10" cols="50"/>
+ <g:submitButton value="Submit" name="submit"/>
+ </g:form>
+</body>
+</html>
View
5 apps/HelloWorld/grails-app/views/hello/kaput.gsp
@@ -0,0 +1,5 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<html>
+ <head><title>Simple GSP page</title></head>
+ <body>Something is kaput!</body>
+</html>
View
8 apps/HelloWorld/grails-app/views/hello/reloadTest.gsp
@@ -0,0 +1,8 @@
+<html>
+<head>
+ <title>TagLib reloading test</title>
+</head>
+<body>
+ <h2><g:myTag/></h2>
+</body>
+</html>
View
16 apps/HelloWorld/grails-app/views/layouts/main.gsp
@@ -0,0 +1,16 @@
+<html>
+ <head>
+ <title><g:layoutTitle default="Grails" /></title>
+ <link rel="stylesheet" href="${createLinkTo(dir:'css',file:'main.css')}" />
+ <link rel="shortcut icon" href="${createLinkTo(dir:'images',file:'favicon.ico')}" type="image/x-icon" />
+ <g:layoutHead />
+ <g:javascript library="application" />
+ </head>
+ <body>
+ <div id="spinner" class="spinner" style="display:none;">
+ <img src="${createLinkTo(dir:'images',file:'spinner.gif')}" alt="Spinner" />
+ </div>
+ <div class="logo"><img src="${createLinkTo(dir:'images',file:'grails_logo.jpg')}" alt="Grails" /></div>
+ <g:layoutBody />
+ </body>
+</html>
View
8 apps/HelloWorld/grails-app/views/missing.gsp
@@ -0,0 +1,8 @@
+<html>
+<head>
+ <title>Page missing!</title>
+</head>
+<body>
+ <h2>But I still haven't found what I'm looking for...</h2>
+</body>
+</html>
View
11 apps/HelloWorld/grails-app/views/tagUsage.gsp
@@ -0,0 +1,11 @@
+<html>
+<head>
+<title>For taglib tests</title>
+</head>
+<body>
+
+This is the result of &lt;g:myTag/&gt;: <g:myTag/>
+
+</body>
+</html>
+
View
6 apps/HelloWorld/test/integration/HelloControllerTests.groovy
@@ -0,0 +1,6 @@
+class HelloControllerTests extends GroovyTestCase {
+
+ void testSomething() {
+
+ }
+}
View
264 apps/HelloWorld/web-app/css/main.css
@@ -0,0 +1,264 @@
+html * {
+ margin: 0;
+ /*padding: 0; SELECT NOT DISPLAYED CORRECTLY IN FIREFOX */
+}
+
+/* GENERAL */
+
+.spinner {
+ padding: 5px;
+ position: absolute;
+ right: 0;
+}
+
+body {
+ background: #fff;
+ color: #333;
+ font: 11px verdana, arial, helvetica, sans-serif;
+}
+
+a:link, a:visited, a:hover {
+ color: #666;
+ font-weight: bold;
+ text-decoration: none;
+}
+
+h1 {
+ color: #006dba;
+ font-weight: normal;
+ font-size: 16px;
+ margin: .8em 0 .3em 0;
+}
+
+ul {
+ padding-left: 15px;
+}
+
+input, select, textarea {
+ background-color: #fcfcfc;
+ border: 1px solid #ccc;
+ font: 11px verdana, arial, helvetica, sans-serif;
+ margin: 2px 0;
+ padding: 2px 4px;
+}
+select {
+ padding: 2px 2px 2px 0;
+}
+textarea {
+ width: 250px;
+ height: 150px;
+ vertical-align: top;
+}
+
+input:focus, select:focus, textarea:focus {
+ border: 1px solid #b2d1ff;
+}
+
+.body {
+ float: left;
+ margin: 0 15px 10px 15px;
+}
+
+/* NAVIGATION MENU */
+
+.nav {
+ background: #fff url(../images/skin/shadow.jpg) bottom repeat-x;
+ border: 1px solid #ccc;
+ border-style: solid none solid none;
+ margin-top: 5px;
+ padding: 7px 12px;
+}
+
+.menuButton {
+ font-size: 10px;
+ padding: 0 5px;
+}
+.menuButton a {
+ color: #333;
+ padding: 4px 6px;
+}
+.menuButton a.home {
+ background: url(../images/skin/house.png) center left no-repeat;
+ color: #333;
+ padding-left: 25px;
+}
+.menuButton a.list {
+ background: url(../images/skin/database_table.png) center left no-repeat;
+ color: #333;
+ padding-left: 25px;
+}
+.menuButton a.create {
+ background: url(../images/skin/database_add.png) center left no-repeat;
+ color: #333;
+ padding-left: 25px;
+}
+
+/* MESSAGES AND ERRORS */
+
+.message {
+ background: #f3f8fc url(../images/skin/information.png) 8px 50% no-repeat;
+ border: 1px solid #b2d1ff;
+ color: #006dba;
+ margin: 10px 0 5px 0;
+ padding: 5px 5px 5px 30px
+}
+
+div.errors {
+ background: #fff3f3;
+ border: 1px solid red;
+ color: #cc0000;
+ margin: 10px 0 5px 0;
+ padding: 5px 0 5px 0;
+}
+div.errors ul {
+ list-style: none;
+ padding: 0;
+}
+div.errors li {
+ background: url(../images/skin/exclamation.png) 8px 0% no-repeat;
+ line-height: 16px;
+ padding-left: 30px;
+}
+
+td.errors input {
+ border: 1px solid red;
+}
+
+/* TABLES */
+
+table {
+ border: 1px solid #ccc;
+ width: 100%
+}
+tr {
+ border: 0;
+}
+td, th {
+ font: 11px verdana, arial, helvetica, sans-serif;
+ line-height: 12px;
+ padding: 5px 6px;
+ text-align: left;
+ vertical-align: top;
+}
+th {
+ background: #fff url(../images/skin/shadow.jpg);
+ color: #666;
+ font-size: 11px;
+ font-weight: bold;
+ line-height: 17px;
+ padding: 2px 6px;
+}
+th a:link, th a:visited, th a:hover {
+ color: #333;
+ display: block;
+ font-size: 10px;
+ text-decoration: none;
+ width: 100%;
+}
+th.asc a, th.desc a {
+ background-position: right;
+ background-repeat: no-repeat;
+}
+th.asc a {
+ background-image: url(../images/skin/sorted_asc.gif);
+}
+th.desc a {
+ background-image: url(../images/skin/sorted_desc.gif);
+}
+
+.odd {
+ background: #f7f7f7;
+}
+.even {
+ background: #fff;
+}
+
+/* LIST */
+
+.list table {
+ border-collapse: collapse;
+}
+.list th, .list td {
+ border-left: 1px solid #ddd;
+}
+.list th:hover, .list tr:hover {
+ background: #b2d1ff;
+}
+
+/* PAGINATION */
+
+.paginateButtons {
+ background: #fff url(../images/skin/shadow.jpg) bottom repeat-x;
+ border: 1px solid #ccc;
+ border-top: 0;
+ color: #666;
+ font-size: 10px;
+ overflow: hidden;
+ padding: 10px 3px;
+}
+.paginateButtons a {
+ background: #fff;
+ border: 1px solid #ccc;
+ border-color: #ccc #aaa #aaa #ccc;
+ color: #666;
+ margin: 0 3px;
+ padding: 2px 6px;
+}
+.paginateButtons span {
+ padding: 2px 3px;
+}
+
+/* DIALOG */
+
+.dialog table {
+ padding: 5px 0;
+}
+
+.prop {
+ padding: 5px;
+}
+.prop .name {
+ text-align: left;
+ width: 15%;
+ white-space: nowrap;
+}
+.prop .value {
+ text-align: left;
+ width: 85%;
+}
+
+/* ACTION BUTTONS */
+
+.buttons {
+ background: #fff url(../images/skin/shadow.jpg) bottom repeat-x;
+ border: 1px solid #ccc;
+ color: #666;
+ font-size: 10px;
+ margin-top: 5px;
+ overflow: hidden;
+ padding: 0;
+}
+
+.buttons input {
+ background: #fff;
+ border: 0;
+ color: #333;
+ cursor: pointer;
+ font-size: 10px;
+ font-weight: bold;
+ margin-left: 3px;
+ overflow: visible;
+ padding: 2px 6px;
+}
+.buttons input.delete {
+ background: transparent url(../images/skin/database_delete.png) 5px 50% no-repeat;
+ padding-left: 28px;
+}
+.buttons input.edit {
+ background: transparent url(../images/skin/database_edit.png) 5px 50% no-repeat;
+ padding-left: 28px;
+}
+.buttons input.save {
+ background: transparent url(../images/skin/database_save.png) 5px 50% no-repeat;
+ padding-left: 28px;
+}
View
58 apps/HelloWorld/web-app/css/tree/check/tree.css
@@ -0,0 +1,58 @@
+/* Copyright (c) 2006 Yahoo! Inc. All rights reserved. */
+
+/* first or middle sibling, no children */
+.ygtvtn {background: url(../../img/default/tn.gif) 0 0 no-repeat; width:16px; height:22px; }
+
+/* first or middle sibling, collapsable */
+.ygtvtm {background: url(../../img/default/tm.gif) 0 0 no-repeat; width:16px; height:22px; cursor:pointer }
+
+/* first or middle sibling, collapsable, hover */
+.ygtvtmh {background: url(../../img/default/tmh.gif) 0 0 no-repeat; width:16px; height:22px; cursor:pointer }
+
+/* first or middle sibling, expandable */
+.ygtvtp {background: url(../../img/default/tp.gif) 0 0 no-repeat; width:16px; height:22px; cursor:pointer }
+
+/* first or middle sibling, expandable, hover */
+.ygtvtph {background: url(../../img/default/tph.gif) 0 0 no-repeat; width:16px; height:22px; cursor:pointer }
+
+/* last sibling, no children */
+.ygtvln {background: url(../../img/default/ln.gif) 0 0 no-repeat; width:16px; height:22px; }
+
+/* Last sibling, collapsable */
+.ygtvlm {background: url(../../img/default/lm.gif) 0 0 no-repeat; width:16px; height:22px; cursor:pointer }
+
+/* Last sibling, collapsable, hover */
+.ygtvlmh {background: url(../../img/default/lmh.gif) 0 0 no-repeat; width:16px; height:22px; cursor:pointer }
+
+/* Last sibling, expandable */
+.ygtvlp { background: url(../../img/default/lp.gif) 0 0 no-repeat; width:16px; height:22px; cursor:pointer }
+
+/* Last sibling, expandable, hover */
+.ygtvlph { background: url(../../img/default/lph.gif) 0 0 no-repeat; width:16px; height:22px; cursor:pointer }
+
+/* Loading icon */
+.ygtvloading { background: url(../../img/default/loading.gif) 0 0 no-repeat; width:16px; height:22px; }
+
+/* the style for the empty cells that are used for rendering the depth
+ * of the node */
+.ygtvdepthcell { background: url(../../img/default/vline.gif) 0 0 no-repeat; width:16px; height:22px; }
+
+.ygtvblankdepthcell { width:16px; height:22px; }
+
+/* the style of the div around each node */
+.ygtvitem { }
+
+/* the style of the div around each node's collection of children */
+.ygtvchildren { }
+* html .ygtvchildren { height:1%; }
+
+/* the style of the text label in ygTextNode */
+.ygtvlabel, .ygtvlabel:link, .ygtvlabel:visited, .ygtvlabel:hover {
+ margin-left:2px;
+ text-decoration: none;
+}
+
+.ygtvcheck0 { background: url(../../img/check/check0.gif) 0 0 no-repeat; width:16px; height:22px; cursor:pointer }
+.ygtvcheck1 { background: url(../../img/check/check1.gif) 0 0 no-repeat; width:16px; height:22px; cursor:pointer }
+.ygtvcheck2 { background: url(../../img/check/check2.gif) 0 0 no-repeat; width:16px; height:22px; cursor:pointer }
+
View
97 apps/HelloWorld/web-app/css/tree/default/tree.css
@@ -0,0 +1,97 @@
+/* Copyright (c) 2006 Yahoo! Inc. All rights reserved. */
+
+/* first or middle sibling, no children */
+.ygtvtn {
+ width:16px; height:22px;
+ background: url(../../img/default/tn.gif) 0 0 no-repeat;
+}
+
+/* first or middle sibling, collapsable */
+.ygtvtm {
+ width:16px; height:22px;
+ cursor:pointer ;
+ background: url(../../img/default/tm.gif) 0 0 no-repeat;
+}
+
+/* first or middle sibling, collapsable, hover */
+.ygtvtmh {
+ width:16px; height:22px;
+ cursor:pointer ;
+ background: url(../../img/default/tmh.gif) 0 0 no-repeat;
+}
+
+/* first or middle sibling, expandable */
+.ygtvtp {
+ width:16px; height:22px;
+ cursor:pointer ;
+ background: url(../../img/default/tp.gif) 0 0 no-repeat;
+}
+
+/* first or middle sibling, expandable, hover */
+.ygtvtph {
+ width:16px; height:22px;
+ cursor:pointer ;
+ background: url(../../img/default/tph.gif) 0 0 no-repeat;
+}
+
+/* last sibling, no children */
+.ygtvln {
+ width:16px; height:22px;
+ background: url(../../img/default/ln.gif) 0 0 no-repeat;
+}
+
+/* Last sibling, collapsable */
+.ygtvlm {
+ width:16px; height:22px;
+ cursor:pointer ;
+ background: url(../../img/default/lm.gif) 0 0 no-repeat;
+}
+
+/* Last sibling, collapsable, hover */
+.ygtvlmh {
+ width:16px; height:22px;
+ cursor:pointer ;
+ background: url(../../img/default/lmh.gif) 0 0 no-repeat;
+}
+
+/* Last sibling, expandable */
+.ygtvlp {
+ width:16px; height:22px;
+ cursor:pointer ;
+ background: url(../../img/default/lp.gif) 0 0 no-repeat;
+}
+
+/* Last sibling, expandable, hover */
+.ygtvlph {
+ width:17px; height:22px; cursor:pointer ;
+ background: url(../../img/default/lph.gif) 0 0 no-repeat;
+}
+
+/* Loading icon */
+.ygtvloading {
+ width:16px; height:22px;
+ background: url(../../img/default/loading.gif) 0 0 no-repeat;
+}
+
+/* the style for the empty cells that are used for rendering the depth
+ * of the node */
+.ygtvdepthcell {
+ width:16px; height:22px;
+ background: url(../../img/default/vline.gif) 0 0 no-repeat;
+}
+
+.ygtvblankdepthcell { width:16px; height:22px; }
+
+/* the style of the div around each node */
+.ygtvitem { }
+
+/* the style of the div around each node's collection of children */
+.ygtvchildren { }
+* html .ygtvchildren { height:2%; }
+
+/* the style of the text label in ygTextNode */
+.ygtvlabel, .ygtvlabel:link, .ygtvlabel:visited, .ygtvlabel:hover {
+ margin-left:2px;
+ text-decoration: none;
+}
+
View
55 apps/HelloWorld/web-app/css/tree/folders/tree.css
@@ -0,0 +1,55 @@
+/* Copyright (c) 2006 Yahoo! Inc. All rights reserved. */
+
+/* first or middle sibling, no children */
+.ygtvtn { background: url(../../img/folders/tn.gif) 0 0 no-repeat; width:17px; height:22px; }
+
+/* first or middle sibling, collapsable */
+.ygtvtm { background: url(../../img/folders/tm.gif) 0 0 no-repeat; width:34px; height:22px; cursor:pointer }
+
+/* first or middle sibling, collapsable, hover */
+.ygtvtmh { background: url(../../img/folders/tmh.gif) 0 0 no-repeat; width:34px; height:22px; cursor:pointer }
+
+/* first or middle sibling, expandable */
+.ygtvtp { background: url(../../img/folders/tp.gif) 0 0 no-repeat; width:34px; height:22px; cursor:pointer }
+
+/* first or middle sibling, expandable, hover */
+.ygtvtph { background: url(../../img/folders/tph.gif) 0 0 no-repeat; width:34px; height:22px; cursor:pointer }
+
+/* last sibling, no children */
+.ygtvln { background: url(../../img/folders/ln.gif) 0 0 no-repeat; width:17px; height:22px; }
+
+/* Last sibling, collapsable */
+.ygtvlm { background: url(../../img/folders/lm.gif) 0 0 no-repeat; width:34px; height:22px; cursor:pointer }
+
+/* Last sibling, collapsable, hover */
+.ygtvlmh { background: url(../../img/folders/lmh.gif) 0 0 no-repeat; width:34px; height:22px; cursor:pointer }
+
+/* Last sibling, expandable */
+.ygtvlp { background: url(../../img/folders/lp.gif) 0 0 no-repeat; width:34px; height:22px; cursor:pointer }
+
+/* Last sibling, expandable, hover */
+.ygtvlph { background: url(../../img/folders/lph.gif) 0 0 no-repeat; width:34px; height:22px; cursor:pointer }
+
+/* Loading icon */
+.ygtvloading { background: url(../../img/folders/loading.gif) 0 0 no-repeat; width:16px; height:22px; }
+
+/* the style for the empty cells that are used for rendering the depth
+ * of the node */
+.ygtvdepthcell { background: url(../../img/folders/vline.gif) 0 0 no-repeat; width:17px; height:22px; }
+
+.ygtvblankdepthcell { width:17px; height:22px; }
+
+/* the style of the div around each node */
+.ygtvitem { }
+
+/* the style of the div around each node's collection of children */
+.ygtvchildren { }
+* html .ygtvchildren { height:1%; }
+
+/* the style of the text label in ygTextNode */
+.ygtvlabel, .ygtvlabel:link, .ygtvlabel:visited, .ygtvlabel:hover {
+ margin-left:2px;
+ text-decoration: none;
+}
+
+
View
58 apps/HelloWorld/web-app/css/tree/menu/tree.css
@@ -0,0 +1,58 @@
+/* Copyright (c) 2006 Yahoo! Inc. All rights reserved. */
+
+/* first or middle sibling, no children */
+.ygtvtn { width:1em; height:20px; }
+
+/* first or middle sibling, collapsable */
+.ygtvtm { background: url(../../img/menu/collapse.gif) 0 6px no-repeat; width:1em; height:22px; cursor:pointer }
+
+/* first or middle sibling, collapsable, hover */
+.ygtvtmh { background: url(../../img/menu/collapseh.gif) 0 6px no-repeat; width:1em; height:22px; cursor:pointer }
+
+/* first or middle sibling, expandable */
+.ygtvtp { background: url(../../img/menu/expand.gif) 0 6px no-repeat; width:1em; height:22px; cursor:pointer }
+
+/* first or middle sibling, expandable, hover */
+.ygtvtph { background: url(../../img/menu/expandh.gif) 0 6px no-repeat; width:1em; height:22px; cursor:pointer }
+
+/* last sibling, no children */
+.ygtvln { width:1em; height:20px; }
+
+/* Last sibling, collapsable */
+.ygtvlm { background: url(../../img/menu/collapse.gif) 0 6px no-repeat; width:1em; height:22px; cursor:pointer }
+
+/* Last sibling, collapsable, hover */
+.ygtvlmh { background: url(../../img/menu/collapseh.gif) 0 6px no-repeat; width:1em; height:22px; cursor:pointer }
+
+/* Last sibling, expandable */
+.ygtvlp { background: url(../../img/menu/expand.gif) 0 6px no-repeat; width:1em; height:22px; cursor:pointer }
+
+/* Last sibling, expandable, hover */
+.ygtvlph { background: url(../../img/menu/expandh.gif) 0 6px no-repeat; width:1em; height:22px; cursor:pointer }
+
+/* Loading icon */
+.ygtvloading { background: url(../../img/menu/loading.gif) 0 6px no-repeat; width:1em; height:22px; }
+
+/* the style for the empty cells that are used for rendering the depth
+ * of the node */
+.ygtvdepthcell { width:1em; height:20px; }
+
+.ygtvblankdepthcell { width:1em; height:20px; }
+
+/* the style of the div around each node */
+.ygtvitem { border: 0px solid grey; }
+
+/* the style of the div around each node's collection of children */
+.ygtvchildren { }
+* html .ygtvchildren { height:1%; }
+
+/* the style of the text label in ygTextNode */
+.ygtvlabel, .ygtvlabel:link, .ygtvlabel:visited, .ygtvlabel:hover {