Skip to content
Browse files

Initial import of plugin source code for the release of version 1.0.0…

…-M1.

First Commit - M1 release
  • Loading branch information...
1 parent 760df43 commit 09b2947ca71e03344d50528fccd0d8f6d398a131 @srinathanantha srinathanantha committed Feb 21, 2012
Showing with 9,677 additions and 0 deletions.
  1. +14 −0 .classpath
  2. +21 −0 .idea/compiler.xml
  3. +5 −0 .idea/copyright/profiles_settings.xml
  4. +5 −0 .idea/encodings.xml
  5. +69 −0 .idea/misc.xml
  6. +10 −0 .idea/modules.xml
  7. +5 −0 .idea/scopes/scope_settings.xml
  8. +125 −0 .idea/uiDesigner.xml
  9. +7 −0 .idea/vcs.xml
  10. +618 −0 .idea/workspace.xml
  11. +19 −0 .project
  12. +49 −0 GrailsRuntimeDocsGrailsPlugin.groovy
  13. +7 −0 application.properties
  14. +31 −0 grails-app/conf/BuildConfig.groovy
  15. +26 −0 grails-app/conf/Config.groovy
  16. +32 −0 grails-app/conf/DataSource.groovy
  17. +13 −0 grails-app/conf/UrlMappings.groovy
  18. 0 grails-app/i18n/messages.properties
  19. +54 −0 grails-app/views/error.gsp
  20. +70 −0 grails-runtime-docs-grailsPlugins.iml
  21. +93 −0 grails-runtime-docs.iml
  22. +157 −0 scripts/RuntimeDocs.groovy
  23. +10 −0 scripts/_Install.groovy
  24. +5 −0 scripts/_Uninstall.groovy
  25. +10 −0 scripts/_Upgrade.groovy
  26. +212 −0 src/groovy/com/imaginea/labs/grails/runtimedocs/ClassDoc.groovy
  27. +49 −0 src/groovy/com/imaginea/labs/grails/runtimedocs/PackageDoc.groovy
  28. +97 −0 src/groovy/com/imaginea/labs/grails/runtimedocs/RootDoc.groovy
  29. +128 −0 src/java/com/imaginea/labs/grails/runtimedocs/GroovyRuntimeDocTemplateEngine.java
  30. +90 −0 src/java/com/imaginea/labs/grails/runtimedocs/GroovyRuntimeDocWriter.java
  31. +701 −0 src/java/com/imaginea/labs/grails/runtimedocs/templates/classLevel/runtimeClassDoc.html
  32. +57 −0 src/java/com/imaginea/labs/grails/runtimedocs/templates/packageLevel/package-frame.html
  33. +124 −0 src/java/com/imaginea/labs/grails/runtimedocs/templates/packageLevel/package-summary.html
  34. +37 −0 src/java/com/imaginea/labs/grails/runtimedocs/templates/topLevel/all-classes-frame.html
  35. +37 −0 src/java/com/imaginea/labs/grails/runtimedocs/templates/topLevel/all-commands-frame.html
  36. +37 −0 src/java/com/imaginea/labs/grails/runtimedocs/templates/topLevel/all-controllers-frame.html
  37. +37 −0 src/java/com/imaginea/labs/grails/runtimedocs/templates/topLevel/all-domains-frame.html
  38. +37 −0 src/java/com/imaginea/labs/grails/runtimedocs/templates/topLevel/all-services-frame.html
  39. +37 −0 src/java/com/imaginea/labs/grails/runtimedocs/templates/topLevel/all-tag-libraries-frame.html
  40. BIN src/java/com/imaginea/labs/grails/runtimedocs/templates/topLevel/groovy.ico
  41. +173 −0 src/java/com/imaginea/labs/grails/runtimedocs/templates/topLevel/help-doc.html
  42. +37 −0 src/java/com/imaginea/labs/grails/runtimedocs/templates/topLevel/index.html
  43. BIN src/java/com/imaginea/labs/grails/runtimedocs/templates/topLevel/inherit.gif
  44. +47 −0 src/java/com/imaginea/labs/grails/runtimedocs/templates/topLevel/overview-frame.html
  45. +116 −0 src/java/com/imaginea/labs/grails/runtimedocs/templates/topLevel/overview-summary.html
  46. +28 −0 src/java/com/imaginea/labs/grails/runtimedocs/templates/topLevel/stylesheet.css
  47. +33 −0 web-app/WEB-INF/applicationContext.xml
  48. +14 −0 web-app/WEB-INF/sitemesh.xml
  49. +572 −0 web-app/WEB-INF/tld/c.tld
  50. +671 −0 web-app/WEB-INF/tld/fmt.tld
  51. +550 −0 web-app/WEB-INF/tld/grails.tld
  52. +311 −0 web-app/WEB-INF/tld/spring.tld
  53. +109 −0 web-app/css/errors.css
  54. +585 −0 web-app/css/main.css
  55. +82 −0 web-app/css/mobile.css
  56. BIN web-app/images/apple-touch-icon-retina.png
  57. BIN web-app/images/apple-touch-icon.png
  58. BIN web-app/images/favicon.ico
  59. BIN web-app/images/grails_logo.jpg
  60. BIN web-app/images/grails_logo.png
  61. BIN web-app/images/leftnav_btm.png
  62. BIN web-app/images/leftnav_midstretch.png
  63. BIN web-app/images/leftnav_top.png
  64. BIN web-app/images/skin/database_add.png
  65. BIN web-app/images/skin/database_delete.png
  66. BIN web-app/images/skin/database_edit.png
  67. BIN web-app/images/skin/database_save.png
  68. BIN web-app/images/skin/database_table.png
  69. BIN web-app/images/skin/exclamation.png
  70. BIN web-app/images/skin/house.png
  71. BIN web-app/images/skin/information.png
  72. BIN web-app/images/skin/shadow.jpg
  73. BIN web-app/images/skin/sorted_asc.gif
  74. BIN web-app/images/skin/sorted_desc.gif
  75. BIN web-app/images/spinner.gif
  76. BIN web-app/images/springsource.png
  77. +9 −0 web-app/js/application.js
  78. +7 −0 web-app/js/prototype/animation.js
  79. +136 −0 web-app/js/prototype/builder.js
  80. +965 −0 web-app/js/prototype/controls.js
  81. +974 −0 web-app/js/prototype/dragdrop.js
  82. +1,123 −0 web-app/js/prototype/effects.js
Sorry, we could not display the entire diff because it was too big.
View
14 .classpath
@@ -0,0 +1,14 @@
+<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="con" path="com.springsource.sts.grails.core.CLASSPATH_CONTAINER"/>
+ <classpathentry kind="output" path="web-app/WEB-INF/classes"/>
+</classpath>
View
21 .idea/compiler.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+ <component name="CompilerConfiguration">
+ <option name="DEFAULT_COMPILER" value="Javac" />
+ <resourceExtensions />
+ <wildcardResourcePatterns>
+ <entry name="?*.properties" />
+ <entry name="?*.xml" />
+ <entry name="?*.gif" />
+ <entry name="?*.png" />
+ <entry name="?*.jpeg" />
+ <entry name="?*.jpg" />
+ <entry name="?*.html" />
+ <entry name="?*.dtd" />
+ <entry name="?*.tld" />
+ <entry name="?*.ftl" />
+ </wildcardResourcePatterns>
+ <annotationProcessing enabled="false" useClasspath="true" />
+ </component>
+</project>
+
View
5 .idea/copyright/profiles_settings.xml
@@ -0,0 +1,5 @@
+<component name="CopyrightManager">
+ <settings default="">
+ <module2copyright />
+ </settings>
+</component>
View
5 .idea/encodings.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+ <component name="Encoding" useUTFGuessing="true" native2AsciiForPropertiesFiles="false" />
+</project>
+
View
69 .idea/misc.xml
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+ <component name="EntryPointsManager">
+ <entry_points version="2.0" />
+ </component>
+ <component name="IdProvider" IDEtalkID="FD84A426E88F0B91AE6780ECFF0BF264" />
+ <component name="JavadocGenerationManager">
+ <option name="OUTPUT_DIRECTORY" />
+ <option name="OPTION_SCOPE" value="protected" />
+ <option name="OPTION_HIERARCHY" value="true" />
+ <option name="OPTION_NAVIGATOR" value="true" />
+ <option name="OPTION_INDEX" value="true" />
+ <option name="OPTION_SEPARATE_INDEX" value="true" />
+ <option name="OPTION_DOCUMENT_TAG_USE" value="false" />
+ <option name="OPTION_DOCUMENT_TAG_AUTHOR" value="false" />
+ <option name="OPTION_DOCUMENT_TAG_VERSION" value="false" />
+ <option name="OPTION_DOCUMENT_TAG_DEPRECATED" value="true" />
+ <option name="OPTION_DEPRECATED_LIST" value="true" />
+ <option name="OTHER_OPTIONS" value="" />
+ <option name="HEAP_SIZE" />
+ <option name="LOCALE" />
+ <option name="OPEN_IN_BROWSER" value="true" />
+ </component>
+ <component name="ProjectResources">
+ <default-html-doctype>http://www.w3.org/1999/xhtml</default-html-doctype>
+ </component>
+ <component name="ProjectRootManager" version="2" languageLevel="JDK_1_5" assert-keyword="true" jdk-15="true" project-jdk-name="1.6" project-jdk-type="JavaSDK">
+ <output url="file://$PROJECT_DIR$/out" />
+ </component>
+ <component name="SvnBranchConfigurationManager">
+ <option name="mySupportsUserInfoFilter" value="true" />
+ </component>
+ <component name="VssConfiguration">
+ <option name="CLIENT_PATH" value="" />
+ <option name="SRCSAFEINI_PATH" value="" />
+ <option name="USER_NAME" value="" />
+ <option name="PWD" value="" />
+ <CheckoutOptions>
+ <option name="COMMENT" value="" />
+ <option name="DO_NOT_GET_LATEST_VERSION" value="false" />
+ <option name="REPLACE_WRITABLE" value="false" />
+ <option name="RECURSIVE" value="false" />
+ </CheckoutOptions>
+ <CheckinOptions>
+ <option name="COMMENT" value="" />
+ <option name="KEEP_CHECKED_OUT" value="false" />
+ <option name="RECURSIVE" value="false" />
+ </CheckinOptions>
+ <AddOptions>
+ <option name="STORE_ONLY_LATEST_VERSION" value="false" />
+ <option name="CHECK_OUT_IMMEDIATELY" value="false" />
+ </AddOptions>
+ <UndocheckoutOptions>
+ <option name="MAKE_WRITABLE" value="false" />
+ <option name="REPLACE_LOCAL_COPY" value="2" />
+ <option name="RECURSIVE" value="false" />
+ </UndocheckoutOptions>
+ <GetOptions>
+ <option name="REPLACE_WRITABLE" value="0" />
+ <option name="MAKE_WRITABLE" value="false" />
+ <option name="ANSWER_NEGATIVELY" value="false" />
+ <option name="ANSWER_POSITIVELY" value="false" />
+ <option name="RECURSIVE" value="false" />
+ <option name="VERSION" />
+ </GetOptions>
+ </component>
+ <component name="WebServicesPlugin" addRequiredLibraries="true" />
+</project>
+
View
10 .idea/modules.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+ <component name="ProjectModuleManager">
+ <modules>
+ <module fileurl="file://$PROJECT_DIR$/grails-runtime-docs.iml" filepath="$PROJECT_DIR$/grails-runtime-docs.iml" />
+ <module fileurl="file://$PROJECT_DIR$/grails-runtime-docs-grailsPlugins.iml" filepath="$PROJECT_DIR$/grails-runtime-docs-grailsPlugins.iml" />
+ </modules>
+ </component>
+</project>
+
View
5 .idea/scopes/scope_settings.xml
@@ -0,0 +1,5 @@
+<component name="DependencyValidationManager">
+ <state>
+ <option name="SKIP_IMPORT_STATEMENTS" value="false" />
+ </state>
+</component>
View
125 .idea/uiDesigner.xml
@@ -0,0 +1,125 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+ <component name="Palette2">
+ <group name="Swing">
+ <item class="com.intellij.uiDesigner.HSpacer" tooltip-text="Horizontal Spacer" icon="/com/intellij/uiDesigner/icons/hspacer.png" removable="false" auto-create-binding="false" can-attach-label="false">
+ <default-constraints vsize-policy="1" hsize-policy="6" anchor="0" fill="1" />
+ </item>
+ <item class="com.intellij.uiDesigner.VSpacer" tooltip-text="Vertical Spacer" icon="/com/intellij/uiDesigner/icons/vspacer.png" removable="false" auto-create-binding="false" can-attach-label="false">
+ <default-constraints vsize-policy="6" hsize-policy="1" anchor="0" fill="2" />
+ </item>
+ <item class="javax.swing.JPanel" icon="/com/intellij/uiDesigner/icons/panel.png" removable="false" auto-create-binding="false" can-attach-label="false">
+ <default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3" />
+ </item>
+ <item class="javax.swing.JScrollPane" icon="/com/intellij/uiDesigner/icons/scrollPane.png" removable="false" auto-create-binding="false" can-attach-label="true">
+ <default-constraints vsize-policy="7" hsize-policy="7" anchor="0" fill="3" />
+ </item>
+ <item class="javax.swing.JButton" icon="/com/intellij/uiDesigner/icons/button.png" removable="false" auto-create-binding="true" can-attach-label="false">
+ <default-constraints vsize-policy="0" hsize-policy="3" anchor="0" fill="1" />
+ <initial-values>
+ <property name="text" value="Button" />
+ </initial-values>
+ </item>
+ <item class="javax.swing.JRadioButton" icon="/com/intellij/uiDesigner/icons/radioButton.png" removable="false" auto-create-binding="true" can-attach-label="false">
+ <default-constraints vsize-policy="0" hsize-policy="3" anchor="8" fill="0" />
+ <initial-values>
+ <property name="text" value="RadioButton" />
+ </initial-values>
+ </item>
+ <item class="javax.swing.JCheckBox" icon="/com/intellij/uiDesigner/icons/checkBox.png" removable="false" auto-create-binding="true" can-attach-label="false">
+ <default-constraints vsize-policy="0" hsize-policy="3" anchor="8" fill="0" />
+ <initial-values>
+ <property name="text" value="CheckBox" />
+ </initial-values>
+ </item>
+ <item class="javax.swing.JLabel" icon="/com/intellij/uiDesigner/icons/label.png" removable="false" auto-create-binding="false" can-attach-label="false">
+ <default-constraints vsize-policy="0" hsize-policy="0" anchor="8" fill="0" />
+ <initial-values>
+ <property name="text" value="Label" />
+ </initial-values>
+ </item>
+ <item class="javax.swing.JTextField" icon="/com/intellij/uiDesigner/icons/textField.png" removable="false" auto-create-binding="true" can-attach-label="true">
+ <default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
+ <preferred-size width="150" height="-1" />
+ </default-constraints>
+ </item>
+ <item class="javax.swing.JPasswordField" icon="/com/intellij/uiDesigner/icons/passwordField.png" removable="false" auto-create-binding="true" can-attach-label="true">
+ <default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
+ <preferred-size width="150" height="-1" />
+ </default-constraints>
+ </item>
+ <item class="javax.swing.JFormattedTextField" icon="/com/intellij/uiDesigner/icons/formattedTextField.png" removable="false" auto-create-binding="true" can-attach-label="true">
+ <default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
+ <preferred-size width="150" height="-1" />
+ </default-constraints>
+ </item>
+ <item class="javax.swing.JTextArea" icon="/com/intellij/uiDesigner/icons/textArea.png" removable="false" auto-create-binding="true" can-attach-label="true">
+ <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
+ <preferred-size width="150" height="50" />
+ </default-constraints>
+ </item>
+ <item class="javax.swing.JTextPane" icon="/com/intellij/uiDesigner/icons/textPane.png" removable="false" auto-create-binding="true" can-attach-label="true">
+ <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
+ <preferred-size width="150" height="50" />
+ </default-constraints>
+ </item>
+ <item class="javax.swing.JEditorPane" icon="/com/intellij/uiDesigner/icons/editorPane.png" removable="false" auto-create-binding="true" can-attach-label="true">
+ <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
+ <preferred-size width="150" height="50" />
+ </default-constraints>
+ </item>
+ <item class="javax.swing.JComboBox" icon="/com/intellij/uiDesigner/icons/comboBox.png" removable="false" auto-create-binding="true" can-attach-label="true">
+ <default-constraints vsize-policy="0" hsize-policy="2" anchor="8" fill="1" />
+ </item>
+ <item class="javax.swing.JTable" icon="/com/intellij/uiDesigner/icons/table.png" removable="false" auto-create-binding="true" can-attach-label="false">
+ <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
+ <preferred-size width="150" height="50" />
+ </default-constraints>
+ </item>
+ <item class="javax.swing.JList" icon="/com/intellij/uiDesigner/icons/list.png" removable="false" auto-create-binding="true" can-attach-label="false">
+ <default-constraints vsize-policy="6" hsize-policy="2" anchor="0" fill="3">
+ <preferred-size width="150" height="50" />
+ </default-constraints>
+ </item>
+ <item class="javax.swing.JTree" icon="/com/intellij/uiDesigner/icons/tree.png" removable="false" auto-create-binding="true" can-attach-label="false">
+ <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
+ <preferred-size width="150" height="50" />
+ </default-constraints>
+ </item>
+ <item class="javax.swing.JTabbedPane" icon="/com/intellij/uiDesigner/icons/tabbedPane.png" removable="false" auto-create-binding="true" can-attach-label="false">
+ <default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3">
+ <preferred-size width="200" height="200" />
+ </default-constraints>
+ </item>
+ <item class="javax.swing.JSplitPane" icon="/com/intellij/uiDesigner/icons/splitPane.png" removable="false" auto-create-binding="false" can-attach-label="false">
+ <default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3">
+ <preferred-size width="200" height="200" />
+ </default-constraints>
+ </item>
+ <item class="javax.swing.JSpinner" icon="/com/intellij/uiDesigner/icons/spinner.png" removable="false" auto-create-binding="true" can-attach-label="true">
+ <default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1" />
+ </item>
+ <item class="javax.swing.JSlider" icon="/com/intellij/uiDesigner/icons/slider.png" removable="false" auto-create-binding="true" can-attach-label="false">
+ <default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1" />
+ </item>
+ <item class="javax.swing.JSeparator" icon="/com/intellij/uiDesigner/icons/separator.png" removable="false" auto-create-binding="false" can-attach-label="false">
+ <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3" />
+ </item>
+ <item class="javax.swing.JProgressBar" icon="/com/intellij/uiDesigner/icons/progressbar.png" removable="false" auto-create-binding="true" can-attach-label="false">
+ <default-constraints vsize-policy="0" hsize-policy="6" anchor="0" fill="1" />
+ </item>
+ <item class="javax.swing.JToolBar" icon="/com/intellij/uiDesigner/icons/toolbar.png" removable="false" auto-create-binding="false" can-attach-label="false">
+ <default-constraints vsize-policy="0" hsize-policy="6" anchor="0" fill="1">
+ <preferred-size width="-1" height="20" />
+ </default-constraints>
+ </item>
+ <item class="javax.swing.JToolBar$Separator" icon="/com/intellij/uiDesigner/icons/toolbarSeparator.png" removable="false" auto-create-binding="false" can-attach-label="false">
+ <default-constraints vsize-policy="0" hsize-policy="0" anchor="0" fill="1" />
+ </item>
+ <item class="javax.swing.JScrollBar" icon="/com/intellij/uiDesigner/icons/scrollbar.png" removable="false" auto-create-binding="true" can-attach-label="false">
+ <default-constraints vsize-policy="6" hsize-policy="0" anchor="0" fill="2" />
+ </item>
+ </group>
+ </component>
+</project>
+
View
7 .idea/vcs.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+ <component name="VcsDirectoryMappings">
+ <mapping directory="" vcs="" />
+ </component>
+</project>
+
View
618 .idea/workspace.xml
@@ -0,0 +1,618 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+ <component name="CCaseConfig">
+ <option name="checkoutReserved" value="false" />
+ <option name="markExternalChangeAsUpToDate" value="true" />
+ <option name="checkInUseHijack" value="true" />
+ <option name="useUcmModel" value="true" />
+ <option name="synchOutside" value="false" />
+ <option name="isHistoryResticted" value="true" />
+ <option name="useIdenticalSwitch" value="true" />
+ <option name="synchActivitiesOnRefresh" value="true" />
+ <option name="lastScr" value="" />
+ <option name="scrTextFileName" value="" />
+ <option name="historyRevisionsNumber" value="4" />
+ </component>
+ <component name="ChangeListManager">
+ <list default="true" id="d08e0036-4918-4716-b265-c5a71906e23e" name="Default" comment="" />
+ <ignored path="$USER_HOME_GRIFFON$/" />
+ <ignored path="$USER_HOME_GRAILS$/" />
+ <option name="TRACKING_ENABLED" value="true" />
+ <option name="SHOW_DIALOG" value="false" />
+ <option name="HIGHLIGHT_CONFLICTS" value="true" />
+ <option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
+ <option name="LAST_RESOLUTION" value="IGNORE" />
+ </component>
+ <component name="ChangesViewManager" flattened_view="true" show_ignored="false" />
+ <component name="CreatePatchCommitExecutor">
+ <option name="PATCH_PATH" value="" />
+ </component>
+ <component name="DaemonCodeAnalyzer">
+ <disable_hints />
+ </component>
+ <component name="DebuggerManager">
+ <breakpoint_any>
+ <breakpoint>
+ <option name="NOTIFY_CAUGHT" value="true" />
+ <option name="NOTIFY_UNCAUGHT" value="true" />
+ <option name="ENABLED" value="false" />
+ <option name="LOG_ENABLED" value="false" />
+ <option name="LOG_EXPRESSION_ENABLED" value="false" />
+ <option name="SUSPEND_POLICY" value="SuspendAll" />
+ <option name="COUNT_FILTER_ENABLED" value="false" />
+ <option name="COUNT_FILTER" value="0" />
+ <option name="CONDITION_ENABLED" value="false" />
+ <option name="CLASS_FILTERS_ENABLED" value="false" />
+ <option name="INSTANCE_FILTERS_ENABLED" value="false" />
+ <option name="CONDITION" value="" />
+ <option name="LOG_MESSAGE" value="" />
+ </breakpoint>
+ <breakpoint>
+ <option name="NOTIFY_CAUGHT" value="true" />
+ <option name="NOTIFY_UNCAUGHT" value="true" />
+ <option name="ENABLED" value="false" />
+ <option name="LOG_ENABLED" value="false" />
+ <option name="LOG_EXPRESSION_ENABLED" value="false" />
+ <option name="SUSPEND_POLICY" value="SuspendAll" />
+ <option name="COUNT_FILTER_ENABLED" value="false" />
+ <option name="COUNT_FILTER" value="0" />
+ <option name="CONDITION_ENABLED" value="false" />
+ <option name="CLASS_FILTERS_ENABLED" value="false" />
+ <option name="INSTANCE_FILTERS_ENABLED" value="false" />
+ <option name="CONDITION" value="" />
+ <option name="LOG_MESSAGE" value="" />
+ </breakpoint>
+ </breakpoint_any>
+ <breakpoint_rules />
+ <ui_properties />
+ </component>
+ <component name="FavoritesManager">
+ <favorites_list name="grails-runtime-docs" />
+ </component>
+ <component name="FileEditorManager">
+ <leaf />
+ </component>
+ <component name="FindManager">
+ <FindUsagesManager>
+ <setting name="OPEN_NEW_TAB" value="false" />
+ </FindUsagesManager>
+ </component>
+ <component name="Git.Settings">
+ <option name="CHECKOUT_INCLUDE_TAGS" value="false" />
+ <option name="UPDATE_CHANGES_POLICY" value="STASH" />
+ </component>
+ <component name="IdeDocumentHistory">
+ <option name="changedFiles">
+ <list>
+ <option value="$PROJECT_DIR$/application.properties" />
+ <option value="$PROJECT_DIR$/src/groovy/com/imaginea/labs/grails/runtimedocs/ClassDoc.groovy" />
+ <option value="$PROJECT_DIR$/plugin.xml" />
+ <option value="$PROJECT_DIR$/GrailsRuntimeDocsGrailsPlugin.groovy" />
+ <option value="$PROJECT_DIR$/scripts/RuntimeDocs.groovy" />
+ </list>
+ </option>
+ </component>
+ <component name="ModuleEditorState">
+ <option name="LAST_EDITED_MODULE_NAME" />
+ <option name="LAST_EDITED_TAB_NAME" />
+ </component>
+ <component name="ProjectFrameBounds">
+ <option name="x" value="-8" />
+ <option name="y" value="-8" />
+ <option name="width" value="1296" />
+ <option name="height" value="1000" />
+ </component>
+ <component name="ProjectInspectionProfilesVisibleTreeState">
+ <entry key="Project Default">
+ <profile-state />
+ </entry>
+ </component>
+ <component name="ProjectLevelVcsManager" settingsEditedManually="false">
+ <OptionsSetting value="true" id="Add" />
+ <OptionsSetting value="true" id="Remove" />
+ <OptionsSetting value="true" id="Checkout" />
+ <OptionsSetting value="true" id="Update" />
+ <OptionsSetting value="true" id="Status" />
+ <OptionsSetting value="true" id="Edit" />
+ <OptionsSetting value="true" id="Undo Check Out" />
+ <OptionsSetting value="true" id="Get Latest Version" />
+ <ConfirmationsSetting value="0" id="Add" />
+ <ConfirmationsSetting value="0" id="Remove" />
+ </component>
+ <component name="ProjectReloadState">
+ <option name="STATE" value="0" />
+ </component>
+ <component name="ProjectView">
+ <navigator currentView="ProjectPane" proportions="" version="1" splitterProportion="0.5">
+ <flattenPackages />
+ <showMembers />
+ <showModules />
+ <showLibraryContents />
+ <hideEmptyPackages ProjectPane="true" />
+ <abbreviatePackageNames />
+ <autoscrollToSource />
+ <autoscrollFromSource />
+ <sortByType />
+ </navigator>
+ <panes>
+ <pane id="ProjectPane">
+ <subPane>
+ <PATH>
+ <PATH_ELEMENT>
+ <option name="myItemId" value="grails-runtime-docs" />
+ <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
+ </PATH_ELEMENT>
+ </PATH>
+ </subPane>
+ </pane>
+ <pane id="PackagesPane" />
+ <pane id="Scope" />
+ <pane id="Favorites" />
+ </panes>
+ </component>
+ <component name="PropertiesComponent">
+ <property name="GoToFile.includeJavaFiles" value="false" />
+ <property name="project.structure.last.edited" value="Project" />
+ <property name="project.structure.proportion" value="0.15" />
+ <property name="options.splitter.main.proportions" value="0.3" />
+ <property name="options.lastSelected" value="preferences.fileTypes" />
+ <property name="MemberChooser.sorted" value="false" />
+ <property name="recentsLimit" value="5" />
+ <property name="project.structure.side.proportion" value="0.2" />
+ <property name="MemberChooser.copyJavadoc" value="false" />
+ <property name="GoToClass.toSaveIncludeLibraries" value="false" />
+ <property name="WebServerToolWindowFactoryState" value="false" />
+ <property name="MemberChooser.showClasses" value="true" />
+ <property name="GoToClass.includeLibraries" value="false" />
+ <property name="options.splitter.details.proportions" value="0.2" />
+ <property name="options.searchVisible" value="true" />
+ </component>
+ <component name="RunManager">
+ <configuration default="true" type="Remote" factoryName="Remote">
+ <option name="USE_SOCKET_TRANSPORT" value="true" />
+ <option name="SERVER_MODE" value="false" />
+ <option name="SHMEM_ADDRESS" value="javadebug" />
+ <option name="HOST" value="localhost" />
+ <option name="PORT" value="5005" />
+ <method>
+ <option name="AntTarget" enabled="false" />
+ <option name="BuildArtifacts" enabled="false" />
+ <option name="Maven.BeforeRunTask" enabled="false" />
+ </method>
+ </configuration>
+ <configuration default="true" type="FlexUnitRunConfigurationType" factoryName="FlexUnit" adl_options="" air_descriptor_path="" air_program_params="" air_publisher_id="" air_root_dir_path="" air_run_mode="AppDescriptor" browser_family="FIREFOX" class_name="" debugger_sdk="Module SDK" html_or_swf_file_path="" launcher_type="OSDefault" main_class_name="" method_name="" module_name="" output_log_level="" package_name="" player_path="FlashPlayer.exe" port="0" run_mode="HtmlOrSwfFile" run_trusted="true" scope="Class" socket_policy_port="0" url_to_launch="http://">
+ <method>
+ <option name="AntTarget" enabled="false" />
+ <option name="BuildArtifacts" enabled="false" />
+ <option name="Make" enabled="true" />
+ <option name="Maven.BeforeRunTask" enabled="false" />
+ </method>
+ </configuration>
+ <configuration default="true" type="TestNG" factoryName="TestNG">
+ <extension name="coverage" enabled="false" merge="false" runner="idea" />
+ <extension name="snapshooter" />
+ <module name="" />
+ <option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
+ <option name="ALTERNATIVE_JRE_PATH" />
+ <option name="SUITE_NAME" />
+ <option name="PACKAGE_NAME" />
+ <option name="MAIN_CLASS_NAME" />
+ <option name="METHOD_NAME" />
+ <option name="GROUP_NAME" />
+ <option name="TEST_OBJECT" value="CLASS" />
+ <option name="VM_PARAMETERS" />
+ <option name="PARAMETERS" />
+ <option name="WORKING_DIRECTORY" />
+ <option name="OUTPUT_DIRECTORY" />
+ <option name="ANNOTATION_TYPE" />
+ <option name="ENV_VARIABLES" />
+ <option name="PASS_PARENT_ENVS" value="true" />
+ <option name="TEST_SEARCH_SCOPE">
+ <value defaultName="moduleWithDependencies" />
+ </option>
+ <option name="USE_DEFAULT_REPORTERS" value="false" />
+ <option name="PROPERTIES_FILE" />
+ <envs />
+ <properties />
+ <listeners />
+ <method>
+ <option name="AntTarget" enabled="false" />
+ <option name="BuildArtifacts" enabled="false" />
+ <option name="Make" enabled="true" />
+ <option name="Maven.BeforeRunTask" enabled="false" />
+ </method>
+ </configuration>
+ <configuration default="true" type="Applet" factoryName="Applet">
+ <module name="" />
+ <option name="MAIN_CLASS_NAME" />
+ <option name="HTML_FILE_NAME" />
+ <option name="HTML_USED" value="false" />
+ <option name="WIDTH" value="400" />
+ <option name="HEIGHT" value="300" />
+ <option name="POLICY_FILE" value="$APPLICATION_HOME_DIR$/bin/appletviewer.policy" />
+ <option name="VM_PARAMETERS" />
+ <option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
+ <option name="ALTERNATIVE_JRE_PATH" />
+ <method>
+ <option name="AntTarget" enabled="false" />
+ <option name="BuildArtifacts" enabled="false" />
+ <option name="Make" enabled="true" />
+ <option name="Maven.BeforeRunTask" enabled="false" />
+ </method>
+ </configuration>
+ <configuration default="true" type="Application" factoryName="Application">
+ <extension name="coverage" enabled="false" merge="false" runner="idea" />
+ <option name="MAIN_CLASS_NAME" />
+ <option name="VM_PARAMETERS" />
+ <option name="PROGRAM_PARAMETERS" />
+ <option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
+ <option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
+ <option name="ALTERNATIVE_JRE_PATH" />
+ <option name="ENABLE_SWING_INSPECTOR" value="false" />
+ <option name="ENV_VARIABLES" />
+ <option name="PASS_PARENT_ENVS" value="true" />
+ <module name="" />
+ <envs />
+ <method>
+ <option name="AntTarget" enabled="false" />
+ <option name="BuildArtifacts" enabled="false" />
+ <option name="Make" enabled="true" />
+ <option name="Maven.BeforeRunTask" enabled="false" />
+ </method>
+ </configuration>
+ <configuration default="true" type="JavascriptDebugSession" factoryName="Local">
+ <JSDebuggerConfigurationSettings>
+ <option name="engineId" value="embedded" />
+ <option name="fileUrl" />
+ </JSDebuggerConfigurationSettings>
+ <method>
+ <option name="AntTarget" enabled="false" />
+ <option name="BuildArtifacts" enabled="false" />
+ <option name="Maven.BeforeRunTask" enabled="false" />
+ </method>
+ </configuration>
+ <configuration default="true" type="JUnit" factoryName="JUnit">
+ <extension name="coverage" enabled="false" merge="false" runner="idea" />
+ <extension name="snapshooter" />
+ <module name="" />
+ <option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
+ <option name="ALTERNATIVE_JRE_PATH" />
+ <option name="PACKAGE_NAME" />
+ <option name="MAIN_CLASS_NAME" />
+ <option name="METHOD_NAME" />
+ <option name="TEST_OBJECT" value="class" />
+ <option name="VM_PARAMETERS" />
+ <option name="PARAMETERS" />
+ <option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
+ <option name="ENV_VARIABLES" />
+ <option name="PASS_PARENT_ENVS" value="true" />
+ <option name="TEST_SEARCH_SCOPE">
+ <value defaultName="moduleWithDependencies" />
+ </option>
+ <envs />
+ <patterns />
+ <method>
+ <option name="AntTarget" enabled="false" />
+ <option name="BuildArtifacts" enabled="false" />
+ <option name="Make" enabled="true" />
+ <option name="Maven.BeforeRunTask" enabled="false" />
+ </method>
+ </configuration>
+ <list size="0" />
+ <configuration name="&lt;template&gt;" type="WebApp" default="true" selected="false">
+ <Host>localhost</Host>
+ <Port>5050</Port>
+ </configuration>
+ </component>
+ <component name="ShelveChangesManager" show_recycled="false" />
+ <component name="StarteamConfiguration">
+ <option name="SERVER" value="" />
+ <option name="PORT" value="49201" />
+ <option name="USER" value="" />
+ <option name="PASSWORD" value="" />
+ <option name="PROJECT" value="" />
+ <option name="VIEW" value="" />
+ <option name="ALTERNATIVE_WORKING_PATH" value="" />
+ <option name="LOCK_ON_CHECKOUT" value="false" />
+ <option name="UNLOCK_ON_CHECKIN" value="false" />
+ </component>
+ <component name="SvnConfiguration" maxAnnotateRevisions="500">
+ <option name="USER" value="" />
+ <option name="PASSWORD" value="" />
+ <option name="LAST_MERGED_REVISION" />
+ <option name="UPDATE_RUN_STATUS" value="false" />
+ <option name="MERGE_DRY_RUN" value="false" />
+ <option name="MERGE_DIFF_USE_ANCESTRY" value="true" />
+ <option name="UPDATE_LOCK_ON_DEMAND" value="false" />
+ <option name="IGNORE_SPACES_IN_MERGE" value="false" />
+ <option name="DETECT_NESTED_COPIES" value="true" />
+ <option name="CHECK_NESTED_FOR_QUICK_MERGE" value="false" />
+ <option name="IGNORE_SPACES_IN_ANNOTATE" value="true" />
+ <option name="SHOW_MERGE_SOURCES_IN_ANNOTATE" value="true" />
+ <configuration useDefault="true">C:\Users\srinath_2\AppData\Roaming\Subversion</configuration>
+ <myIsUseDefaultProxy>false</myIsUseDefaultProxy>
+ <supportedVersion>125</supportedVersion>
+ </component>
+ <component name="TaskManager">
+ <task active="true" id="Default" summary="Default task">
+ <changelist id="d08e0036-4918-4716-b265-c5a71906e23e" name="Default" comment="" />
+ <created>1329397321461</created>
+ <updated>1329397321461</updated>
+ </task>
+ <servers />
+ </component>
+ <component name="ToolWindowManager">
+ <frame x="-8" y="-8" width="1296" height="1000" extended-state="6" />
+ <editor active="false" />
+ <layout>
+ <window_info id="Data Sources" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
+ <window_info id="Changes" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="4" side_tool="false" content_ui="tabs" />
+ <window_info id="Persistence" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="2" side_tool="true" content_ui="tabs" />
+ <window_info id="Palette" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
+ <window_info id="Ant Build" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25" sideWeight="0.5" order="4" side_tool="false" content_ui="tabs" />
+ <window_info id="Debug" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.4" sideWeight="0.5" order="8" side_tool="false" content_ui="tabs" />
+ <window_info id="IDEtalk Messages" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
+ <window_info id="Event Log" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="7" side_tool="true" content_ui="tabs" />
+ <window_info id="Favorites" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="2" side_tool="true" content_ui="tabs" />
+ <window_info id="Grails View" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.32928804" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
+ <window_info id="IDEtalk" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
+ <window_info id="Version Control" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
+ <window_info id="Web" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="0" side_tool="true" content_ui="tabs" />
+ <window_info id="TODO" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="11" side_tool="false" content_ui="tabs" />
+ <window_info id="Structure" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25" sideWeight="0.5" order="3" side_tool="true" content_ui="tabs" />
+ <window_info id="Maven Projects" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
+ <window_info id="Commander" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.4" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
+ <window_info id="Project" active="true" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" weight="0.31037277" sideWeight="0.6709007" order="2" side_tool="false" content_ui="tabs" />
+ <window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
+ <window_info id="Console" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.3290993" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
+ <window_info id="Hierarchy" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25" sideWeight="0.5" order="5" side_tool="false" content_ui="combo" />
+ <window_info id="Cvs" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25" sideWeight="0.5" order="9" side_tool="false" content_ui="tabs" />
+ <window_info id="Message" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="5" side_tool="false" content_ui="tabs" />
+ <window_info id="Find" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.32911393" sideWeight="0.5" order="6" side_tool="false" content_ui="tabs" />
+ <window_info id="Dependency Viewer" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
+ <window_info id="Inspection" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.4" sideWeight="0.5" order="10" side_tool="false" content_ui="tabs" />
+ </layout>
+ </component>
+ <component name="VcsContentAnnotationSettings">
+ <option name="myLimit" value="2678400000" />
+ </component>
+ <component name="VcsManagerConfiguration">
+ <option name="OFFER_MOVE_TO_ANOTHER_CHANGELIST_ON_PARTIAL_COMMIT" value="true" />
+ <option name="CHECK_CODE_SMELLS_BEFORE_PROJECT_COMMIT" value="true" />
+ <option name="CHECK_NEW_TODO" value="true" />
+ <option name="myTodoPanelSettings">
+ <value>
+ <are-packages-shown value="false" />
+ <are-modules-shown value="false" />
+ <flatten-packages value="false" />
+ <is-autoscroll-to-source value="false" />
+ </value>
+ </option>
+ <option name="PERFORM_UPDATE_IN_BACKGROUND" value="true" />
+ <option name="PERFORM_COMMIT_IN_BACKGROUND" value="true" />
+ <option name="PERFORM_EDIT_IN_BACKGROUND" value="true" />
+ <option name="PERFORM_CHECKOUT_IN_BACKGROUND" value="true" />
+ <option name="PERFORM_ADD_REMOVE_IN_BACKGROUND" value="true" />
+ <option name="PERFORM_ROLLBACK_IN_BACKGROUND" value="false" />
+ <option name="CHECK_LOCALLY_CHANGED_CONFLICTS_IN_BACKGROUND" value="false" />
+ <option name="ENABLE_BACKGROUND_PROCESSES" value="false" />
+ <option name="CHANGED_ON_SERVER_INTERVAL" value="60" />
+ <option name="SHOW_ONLY_CHANGED_IN_SELECTION_DIFF" value="true" />
+ <option name="CHECK_COMMIT_MESSAGE_SPELLING" value="true" />
+ <option name="DEFAULT_PATCH_EXTENSION" value="patch" />
+ <option name="SHORT_DIFF_HORISONTALLY" value="true" />
+ <option name="SHORT_DIFF_EXTRA_LINES" value="2" />
+ <option name="SOFT_WRAPS_IN_SHORT_DIFF" value="true" />
+ <option name="INCLUDE_TEXT_INTO_PATCH" value="false" />
+ <option name="INCLUDE_TEXT_INTO_SHELF" value="false" />
+ <option name="CREATE_PATCH_EXPAND_DETAILS_DEFAULT" value="true" />
+ <option name="FORCE_NON_EMPTY_COMMENT" value="false" />
+ <option name="LAST_COMMIT_MESSAGE" />
+ <option name="MAKE_NEW_CHANGELIST_ACTIVE" value="true" />
+ <option name="OPTIMIZE_IMPORTS_BEFORE_PROJECT_COMMIT" value="false" />
+ <option name="CHECK_FILES_UP_TO_DATE_BEFORE_COMMIT" value="false" />
+ <option name="REFORMAT_BEFORE_PROJECT_COMMIT" value="false" />
+ <option name="REFORMAT_BEFORE_FILE_COMMIT" value="false" />
+ <option name="FILE_HISTORY_DIALOG_COMMENTS_SPLITTER_PROPORTION" value="0.8" />
+ <option name="FILE_HISTORY_DIALOG_SPLITTER_PROPORTION" value="0.5" />
+ <option name="ACTIVE_VCS_NAME" />
+ <option name="UPDATE_GROUP_BY_PACKAGES" value="false" />
+ <option name="UPDATE_GROUP_BY_CHANGELIST" value="false" />
+ <option name="SHOW_FILE_HISTORY_AS_TREE" value="false" />
+ <option name="FILE_HISTORY_SPLITTER_PROPORTION" value="0.6" />
+ </component>
+ <component name="XDebuggerManager">
+ <breakpoint-manager />
+ </component>
+ <component name="editorHistoryManager">
+ <entry file="file://$PROJECT_DIR$/grails-runtime-docs.iml">
+ <provider selected="true" editor-type-id="text-editor">
+ <state line="0" column="0" selection-start="0" selection-end="0" vertical-scroll-proportion="0.0" />
+ </provider>
+ </entry>
+ <entry file="file://$PROJECT_DIR$/grails-runtime-docs-grailsPlugins.iml">
+ <provider selected="true" editor-type-id="text-editor">
+ <state line="0" column="0" selection-start="0" selection-end="0" vertical-scroll-proportion="0.0" />
+ </provider>
+ </entry>
+ <entry file="file://$PROJECT_DIR$/src/java/com/imaginea/labs/grails/runtimedocs/GroovyRuntimeDocWriter.java">
+ <provider selected="true" editor-type-id="text-editor">
+ <state line="78" column="31" selection-start="3388" selection-end="3388" vertical-scroll-proportion="0.6299879" />
+ </provider>
+ </entry>
+ <entry file="file://$PROJECT_DIR$/grails-app/conf/BuildConfig.groovy">
+ <provider selected="true" editor-type-id="text-editor">
+ <state line="31" column="0" selection-start="1185" selection-end="1185" vertical-scroll-proportion="0.63724303" />
+ </provider>
+ </entry>
+ <entry file="file://$USER_HOME_GRAILS$/1.3.7/projects/grails-runtime-docs/plugins/release-1.0.1/application.properties">
+ <provider selected="true" editor-type-id="text-editor">
+ <state line="0" column="0" selection-start="0" selection-end="0" vertical-scroll-proportion="0.0" />
+ </provider>
+ </entry>
+ <entry file="file://$PROJECT_DIR$/src/groovy/com/imaginea/labs/grails/runtimedocs/RootDoc.groovy">
+ <provider selected="true" editor-type-id="text-editor">
+ <state line="11" column="6" selection-start="393" selection-end="393" vertical-scroll-proportion="0.18478261" />
+ </provider>
+ </entry>
+ <entry file="file://$PROJECT_DIR$/src/java/com/imaginea/labs/grails/runtimedocs/GroovyRuntimeDocTemplateEngine.java">
+ <provider selected="true" editor-type-id="text-editor">
+ <state line="15" column="13" selection-start="433" selection-end="433" vertical-scroll-proportion="0.020531401" />
+ </provider>
+ </entry>
+ <entry file="jar://$project_jdk_name$/src.zip!/java/lang/Object.java">
+ <provider selected="true" editor-type-id="text-editor">
+ <state line="47" column="33" selection-start="1545" selection-end="1545" vertical-scroll-proportion="0.33293697" />
+ </provider>
+ </entry>
+ <entry file="jar://$project_jdk_name$/src.zip!/java/lang/Class.java">
+ <provider selected="true" editor-type-id="text-editor">
+ <state line="1596" column="18" selection-start="66050" selection-end="66050" vertical-scroll-proportion="0.0" />
+ </provider>
+ </entry>
+ <entry file="file://$PROJECT_DIR$/src/groovy/com/imaginea/labs/grails/runtimedocs/ClassDoc.groovy">
+ <provider selected="true" editor-type-id="text-editor">
+ <state line="139" column="9" selection-start="5426" selection-end="5426" vertical-scroll-proportion="0.061594203" />
+ </provider>
+ </entry>
+ <entry file="file://$PROJECT_DIR$/plugin.xml">
+ <provider selected="true" editor-type-id="text-editor">
+ <state line="0" column="49" selection-start="49" selection-end="49" vertical-scroll-proportion="0.0">
+ <folding />
+ </state>
+ </provider>
+ </entry>
+ <entry file="file://$PROJECT_DIR$/GrailsRuntimeDocsGrailsPlugin.groovy">
+ <provider selected="true" editor-type-id="text-editor">
+ <state line="2" column="27" selection-start="91" selection-end="91" vertical-scroll-proportion="0.0">
+ <folding />
+ </state>
+ </provider>
+ </entry>
+ <entry file="file://$PROJECT_DIR$/application.properties">
+ <provider selected="true" editor-type-id="text-editor">
+ <state line="4" column="33" selection-start="129" selection-end="129" vertical-scroll-proportion="0.08085612" />
+ </provider>
+ </entry>
+ <entry file="jar://$USER_HOME_GRAILS$/ivy-cache/ant/ant/jars/ant-1.6.5.jar!/org/apache/tools/ant/types/Path.class">
+ <provider selected="true" editor-type-id="text-editor">
+ <state line="5" column="13" selection-start="164" selection-end="164" vertical-scroll-proportion="0.08468244">
+ <folding />
+ </state>
+ </provider>
+ </entry>
+ <entry file="file://$PROJECT_DIR$/scripts/RuntimeDocs.groovy">
+ <provider selected="true" editor-type-id="text-editor">
+ <state line="50" column="48" selection-start="1933" selection-end="1933" vertical-scroll-proportion="0.75966185">
+ <folding />
+ </state>
+ </provider>
+ </entry>
+ </component>
+ <component name="grailsSettings">
+ <option name="map">
+ <map>
+ <entry key="grails-runtime-docs">
+ <value>
+ <GrailsSettings>
+ <option name="buildConfigCrc" value="5987499" />
+ <option name="pluginDependenciesCrc" value="-1296210270" />
+ <option name="properties">
+ <map>
+ <entry key="grails.project.class.dir" value="target/classes" />
+ <entry key="grails.project.test.class.dir" value="target/test-classes" />
+ <entry key="grails.project.test.reports.dir" value="target/test-reports" />
+ </map>
+ </option>
+ </GrailsSettings>
+ </value>
+ </entry>
+ <entry key="grails-runtime-docs-grailsPlugins">
+ <value>
+ <GrailsSettings />
+ </value>
+ </entry>
+ </map>
+ </option>
+ </component>
+ <component name="masterDetails">
+ <states>
+ <state key="ArtifactsStructureConfigurable.UI">
+ <settings>
+ <artifact-editor />
+ <splitter-proportions>
+ <option name="proportions">
+ <list>
+ <option value="0.2" />
+ </list>
+ </option>
+ </splitter-proportions>
+ </settings>
+ </state>
+ <state key="Copyright.UI" />
+ <state key="FacetStructureConfigurable.UI">
+ <settings>
+ <last-edited>Hibernate</last-edited>
+ <splitter-proportions>
+ <option name="proportions">
+ <list>
+ <option value="0.2" />
+ </list>
+ </option>
+ </splitter-proportions>
+ </settings>
+ </state>
+ <state key="GlobalLibrariesConfigurable.UI">
+ <settings>
+ <last-edited>grails-1.3.7</last-edited>
+ <splitter-proportions>
+ <option name="proportions">
+ <list>
+ <option value="0.2" />
+ </list>
+ </option>
+ </splitter-proportions>
+ </settings>
+ </state>
+ <state key="JdkListConfigurable.UI">
+ <settings>
+ <last-edited>1.6</last-edited>
+ <splitter-proportions>
+ <option name="proportions">
+ <list>
+ <option value="0.2" />
+ </list>
+ </option>
+ </splitter-proportions>
+ </settings>
+ </state>
+ <state key="ModuleStructureConfigurable.UI">
+ <settings>
+ <last-edited>grails-runtime-docs</last-edited>
+ <splitter-proportions>
+ <option name="proportions">
+ <list>
+ <option value="0.2" />
+ <option value="0.5" />
+ </list>
+ </option>
+ </splitter-proportions>
+ </settings>
+ </state>
+ <state key="ProjectJDKs.UI" />
+ <state key="ProjectLibrariesConfigurable.UI">
+ <settings>
+ <splitter-proportions>
+ <option name="proportions">
+ <list>
+ <option value="0.2" />
+ </list>
+ </option>
+ </splitter-proportions>
+ </settings>
+ </state>
+ <state key="ScopeChooserConfigurable.UI" />
+ </states>
+ </component>
+</project>
+
View
19 .project
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>grails-runtime-docs</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>com.springsource.sts.grails.core.nature</nature>
+ <nature>org.eclipse.jdt.groovy.core.groovyNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ </natures>
+</projectDescription>
View
49 GrailsRuntimeDocsGrailsPlugin.groovy
@@ -0,0 +1,49 @@
+class GrailsRuntimeDocsGrailsPlugin {
+ // the plugin version
+ def version = "1.0.0-M1"
+ // the version or versions of Grails the plugin is designed for
+ def grailsVersion = "1.3.x > *"
+ // the other plugins this plugin depends on
+ def dependsOn = [:]
+ // resources that are excluded from plugin packaging
+ def pluginExcludes = [
+ "grails-app/views/error.gsp"
+ ]
+
+ def environments = ['development', 'test']
+
+ def scopes = [excludes:'war']
+
+ def author = "Srinath Anantha"
+ def authorEmail = "srinath.anantha@gmail.com"
+ def title = "Grails Runtime Docs"
+ def description = '''\\
+Generates Java and Groovy documentation for a Grails Application from runtime including the dynamically added methods and properties.
+Helps to easily navigate through the Grails artifacts by categorising all the classes into Controllers, Services, Domains, Commands
+and Tag Libraries.
+'''
+ def license = "APACHE"
+
+ def organization = [name: "Imaginea", url: "http://www.imaginea.com/"]
+
+ // URL to the plugin's documentation
+ def documentation = "http://grails.org/plugin/grails-runtime-docs"
+
+ def doWithWebDescriptor = { xml ->
+ }
+
+ def doWithSpring = {
+ }
+
+ def doWithDynamicMethods = { ctx ->
+ }
+
+ def doWithApplicationContext = { applicationContext ->
+ }
+
+ def onChange = { event ->
+ }
+
+ def onConfigChange = { event ->
+ }
+}
View
7 application.properties
@@ -0,0 +1,7 @@
+#Grails Metadata file
+#Mon Feb 20 19:01:27 IST 2012
+app.grails.version=2.0.0
+app.name=grails-runtime-docs
+plugins.hibernate=2.0.0
+plugins.release=1.0.1
+plugins.tomcat=2.0.0
View
31 grails-app/conf/BuildConfig.groovy
@@ -0,0 +1,31 @@
+grails.project.class.dir = "target/classes"
+grails.project.test.class.dir = "target/test-classes"
+grails.project.test.reports.dir = "target/test-reports"
+//grails.project.war.file = "target/${appName}-${appVersion}.war"
+grails.project.dependency.resolution = {
+ // inherit Grails' default dependencies
+ inherits("global") {
+ // uncomment to disable ehcache
+ // excludes 'ehcache'
+ }
+ log "warn" // log level of Ivy resolver, either 'error', 'warn', 'info', 'debug' or 'verbose'
+ repositories {
+ grailsPlugins()
+ grailsHome()
+ grailsCentral()
+
+ // uncomment the below to enable remote dependency resolution
+ // from public Maven repositories
+ //mavenLocal()
+ //mavenCentral()
+ //mavenRepo "http://snapshots.repository.codehaus.org"
+ //mavenRepo "http://repository.codehaus.org"
+ //mavenRepo "http://download.java.net/maven/2/"
+ //mavenRepo "http://repository.jboss.com/maven2/"
+ }
+ dependencies {
+ // specify dependencies here under either 'build', 'compile', 'runtime', 'test' or 'provided' scopes eg.
+
+ // runtime 'mysql:mysql-connector-java:5.1.13'
+ }
+}
View
26 grails-app/conf/Config.groovy
@@ -0,0 +1,26 @@
+// configuration for plugin testing - will not be included in the plugin zip
+
+log4j = {
+ // Example of changing the log pattern for the default console
+ // appender:
+ //
+ //appenders {
+ // console name:'stdout', layout:pattern(conversionPattern: '%c{2} %m%n')
+ //}
+
+ error 'org.codehaus.groovy.grails.web.servlet', // controllers
+ 'org.codehaus.groovy.grails.web.pages', // GSP
+ 'org.codehaus.groovy.grails.web.sitemesh', // layouts
+ 'org.codehaus.groovy.grails.web.mapping.filter', // URL mapping
+ 'org.codehaus.groovy.grails.web.mapping', // URL mapping
+ 'org.codehaus.groovy.grails.commons', // core / classloading
+ 'org.codehaus.groovy.grails.plugins', // plugins
+ 'org.codehaus.groovy.grails.orm.hibernate', // hibernate integration
+ 'org.springframework',
+ 'org.hibernate',
+ 'net.sf.ehcache.hibernate'
+
+ warn 'org.mortbay.log'
+}
+grails.views.default.codec="none" // none, html, base64
+grails.views.gsp.encoding="UTF-8"
View
32 grails-app/conf/DataSource.groovy
@@ -0,0 +1,32 @@
+dataSource {
+ pooled = true
+ driverClassName = "org.hsqldb.jdbcDriver"
+ username = "sa"
+ password = ""
+}
+hibernate {
+ cache.use_second_level_cache = true
+ cache.use_query_cache = true
+ cache.provider_class = 'net.sf.ehcache.hibernate.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
13 grails-app/conf/UrlMappings.groovy
@@ -0,0 +1,13 @@
+class UrlMappings {
+
+ static mappings = {
+ "/$controller/$action?/$id?"{
+ constraints {
+ // apply constraints here
+ }
+ }
+
+ "/"(view:"/index")
+ "500"(view:'/error')
+ }
+}
View
0 grails-app/i18n/messages.properties
No changes.
View
54 grails-app/views/error.gsp
@@ -0,0 +1,54 @@
+<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>Error ${request.'javax.servlet.error.status_code'}:</strong> ${request.'javax.servlet.error.message'.encodeAsHTML()}<br/>
+ <strong>Servlet:</strong> ${request.'javax.servlet.error.servlet_name'}<br/>
+ <strong>URI:</strong> ${request.'javax.servlet.error.request_uri'}<br/>
+ <g:if test="${exception}">
+ <strong>Exception 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>
+ </g:if>
+ </div>
+ <g:if test="${exception}">
+ <h2>Stack Trace</h2>
+ <div class="stack">
+ <pre><g:each in="${exception.stackTraceLines}">${it.encodeAsHTML()}<br/></g:each></pre>
+ </div>
+ </g:if>
+ </body>
+</html>
View
70 grails-runtime-docs-grailsPlugins.iml
@@ -0,0 +1,70 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<module type="JAVA_MODULE" version="4">
+ <component name="FacetManager">
+ <facet type="hibernate" name="Hibernate">
+ <configuration>
+ <datasource-map>
+ <unit-entry name="Gorm" />
+ </datasource-map>
+ </configuration>
+ </facet>
+ </component>
+ <component name="NewModuleRootManager" inherit-compiler-output="true">
+ <exclude-output />
+ <content url="file://$USER_HOME_GRAILS$/2.0.0/projects/grails-runtime-docs/plugins/hibernate-2.0.0" />
+ <content url="file://$USER_HOME_GRAILS$/2.0.0/projects/grails-runtime-docs/plugins/release-1.0.1">
+ <sourceFolder url="file://$USER_HOME_GRAILS$/2.0.0/projects/grails-runtime-docs/plugins/release-1.0.1/src/java" isTestSource="false" />
+ <sourceFolder url="file://$USER_HOME_GRAILS$/2.0.0/projects/grails-runtime-docs/plugins/release-1.0.1/src/groovy" isTestSource="false" />
+ </content>
+ <content url="file://$USER_HOME_GRAILS$/2.0.0/projects/grails-runtime-docs/plugins/svn-1.0.2">
+ <sourceFolder url="file://$USER_HOME_GRAILS$/2.0.0/projects/grails-runtime-docs/plugins/svn-1.0.2/src/groovy" isTestSource="false" />
+ </content>
+ <content url="file://$USER_HOME_GRAILS$/2.0.0/projects/grails-runtime-docs/plugins/tomcat-2.0.0" />
+ <orderEntry type="inheritedJdk" />
+ <orderEntry type="sourceFolder" forTests="false" />
+ <orderEntry type="library" scope="PROVIDED" name="grails-2.0.0" level="application" />
+ <orderEntry type="module-library" exported="">
+ <library name="Grails User Library">
+ <CLASSES>
+ <root url="jar://$USER_HOME_GRAILS$/ivy-cache/antlr/antlr/jars/antlr-2.7.6.jar!/" />
+ <root url="jar://$USER_HOME_GRAILS$/ivy-cache/xml-resolver/xml-resolver/jars/xml-resolver-1.2.jar!/" />
+ <root url="jar://$USER_HOME_GRAILS$/ivy-cache/xerces/xercesImpl/jars/xercesImpl-2.8.1.jar!/" />
+ <root url="jar://$USER_HOME_GRAILS$/ivy-cache/net.sourceforge.nekohtml/nekohtml/jars/nekohtml-1.9.9.jar!/" />
+ <root url="jar://$USER_HOME_GRAILS$/ivy-cache/net.sf.ezmorph/ezmorph/jars/ezmorph-1.0.6.jar!/" />
+ <root url="jar://$USER_HOME_GRAILS$/ivy-cache/commons-lang/commons-lang/jars/commons-lang-2.4.jar!/" />
+ <root url="jar://$USER_HOME_GRAILS$/ivy-cache/commons-beanutils/commons-beanutils/jars/commons-beanutils-1.8.0.jar!/" />
+ <root url="jar://$USER_HOME_GRAILS$/ivy-cache/net.sf.json-lib/json-lib/jars/json-lib-2.3-jdk15.jar!/" />
+ <root url="jar://$USER_HOME_GRAILS$/ivy-cache/commons-codec/commons-codec/jars/commons-codec-1.3.jar!/" />
+ <root url="jar://$USER_HOME_GRAILS$/ivy-cache/org.apache.httpcomponents/httpcore/jars/httpcore-4.0.1.jar!/" />
+ <root url="jar://$USER_HOME_GRAILS$/ivy-cache/org.apache.httpcomponents/httpclient/jars/httpclient-4.0.jar!/" />
+ <root url="jar://$USER_HOME_GRAILS$/ivy-cache/org.codehaus.groovy.modules.http-builder/http-builder/jars/http-builder-0.5.0.jar!/" />
+ <root url="jar://$USER_HOME_GRAILS$/ivy-cache/nekohtml/nekohtml/jars/nekohtml-1.9.6.2.jar!/" />
+ <root url="jar://$USER_HOME_GRAILS$/ivy-cache/nekohtml/xercesMinimal/jars/xercesMinimal-1.9.6.2.jar!/" />
+ <root url="jar://$USER_HOME_GRAILS$/ivy-cache/org.apache.maven.wagon/wagon-http-shared/jars/wagon-http-shared-1.0-beta-6.jar!/" />
+ <root url="jar://$USER_HOME_GRAILS$/ivy-cache/org.apache.maven.wagon/wagon-http-lightweight/jars/wagon-http-lightweight-1.0-beta-6.jar!/" />
+ <root url="jar://$USER_HOME_GRAILS$/ivy-cache/org.apache.maven.wagon/wagon-file/jars/wagon-file-1.0-beta-6.jar!/" />
+ <root url="jar://$USER_HOME_GRAILS$/ivy-cache/org.apache.maven/maven-error-diagnostics/jars/maven-error-diagnostics-2.2.1.jar!/" />
+ <root url="jar://$USER_HOME_GRAILS$/ivy-cache/org.apache.maven/maven-plugin-registry/jars/maven-plugin-registry-2.2.1.jar!/" />
+ <root url="jar://$USER_HOME_GRAILS$/ivy-cache/org.apache.maven/maven-profile/jars/maven-profile-2.2.1.jar!/" />
+ <root url="jar://$USER_HOME_GRAILS$/ivy-cache/org.apache.maven/maven-settings/jars/maven-settings-2.2.1.jar!/" />
+ <root url="jar://$USER_HOME_GRAILS$/ivy-cache/org.apache.maven/maven-project/jars/maven-project-2.2.1.jar!/" />
+ <root url="jar://$USER_HOME_GRAILS$/ivy-cache/org.apache.maven/maven-model/jars/maven-model-2.2.1.jar!/" />
+ <root url="jar://$USER_HOME_GRAILS$/ivy-cache/backport-util-concurrent/backport-util-concurrent/jars/backport-util-concurrent-3.1.jar!/" />
+ <root url="jar://$USER_HOME_GRAILS$/ivy-cache/org.apache.maven.wagon/wagon-provider-api/jars/wagon-provider-api-1.0-beta-6.jar!/" />
+ <root url="jar://$USER_HOME_GRAILS$/ivy-cache/org.apache.maven/maven-repository-metadata/jars/maven-repository-metadata-2.2.1.jar!/" />
+ <root url="jar://$USER_HOME_GRAILS$/ivy-cache/org.apache.maven/maven-artifact-manager/jars/maven-artifact-manager-2.2.1.jar!/" />
+ <root url="jar://$USER_HOME_GRAILS$/ivy-cache/org.apache.maven/maven-artifact/jars/maven-artifact-2.2.1.jar!/" />
+ <root url="jar://$USER_HOME_GRAILS$/ivy-cache/org.codehaus.plexus/plexus-interpolation/jars/plexus-interpolation-1.11.jar!/" />
+ <root url="jar://$USER_HOME_GRAILS$/ivy-cache/org.codehaus.plexus/plexus-utils/jars/plexus-utils-1.5.15.jar!/" />
+ <root url="jar://$USER_HOME_GRAILS$/ivy-cache/org.codehaus.plexus/plexus-container-default/jars/plexus-container-default-1.0-alpha-9-stable-1.jar!/" />
+ <root url="jar://$USER_HOME_GRAILS$/ivy-cache/classworlds/classworlds/jars/classworlds-1.1-alpha-2.jar!/" />
+ <root url="jar://$USER_HOME_GRAILS$/ivy-cache/ant/ant/jars/ant-1.6.5.jar!/" />
+ <root url="jar://$USER_HOME_GRAILS$/ivy-cache/org.apache.maven/maven-ant-tasks/jars/maven-ant-tasks-2.1.0.jar!/" />
+ </CLASSES>
+ <JAVADOC />
+ <SOURCES />
+ </library>
+ </orderEntry>
+ </component>
+</module>
+
View
93 grails-runtime-docs.iml
@@ -0,0 +1,93 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<module type="JAVA_MODULE" version="4">
+ <component name="FacetManager">
+ <facet type="Spring" name="Spring">
+ <configuration>
+ <fileset id="Grails" name="Grails" removed="false">
+ <file>file://$MODULE_DIR$/web-app/WEB-INF/applicationContext.xml</file>
+ </fileset>
+ </configuration>
+ </facet>
+ <facet type="web" name="GrailsWeb">
+ <configuration>
+ <webroots>
+ <root url="file://$MODULE_DIR$/web-app" relative="/" />
+ <root url="file://$MODULE_DIR$/grails-app/views" relative="/" />
+ </webroots>
+ <sourceRoots />
+ </configuration>
+ </facet>
+ <facet type="hibernate" name="Hibernate">
+ <configuration>
+ <datasource-map>
+ <unit-entry name="Gorm" />
+ </datasource-map>
+ </configuration>
+ </facet>
+ </component>
+ <component name="NewModuleRootManager" inherit-compiler-output="true">
+ <exclude-output />
+ <content url="file://$MODULE_DIR$">
+ <sourceFolder url="file://$MODULE_DIR$/src/java" isTestSource="false" />
+ <sourceFolder url="file://$MODULE_DIR$/grails-app/utils" isTestSource="false" />
+ <sourceFolder url="file://$MODULE_DIR$/src/groovy" 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$/test/unit" isTestSource="true" />
+ <sourceFolder url="file://$MODULE_DIR$/test/integration" isTestSource="true" />
+ <sourceFolder url="file://$MODULE_DIR$/grails-app/i18n" isTestSource="false" />
+ <excludeFolder url="file://$MODULE_DIR$/target" />
+ </content>
+ <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="jar://$USER_HOME_GRAILS$/ivy-cache/antlr/antlr/jars/antlr-2.7.6.jar!/" />
+ <root url="jar://$USER_HOME_GRAILS$/ivy-cache/xml-resolver/xml-resolver/jars/xml-resolver-1.2.jar!/" />
+ <root url="jar://$USER_HOME_GRAILS$/ivy-cache/xerces/xercesImpl/jars/xercesImpl-2.8.1.jar!/" />
+ <root url="jar://$USER_HOME_GRAILS$/ivy-cache/net.sourceforge.nekohtml/nekohtml/jars/nekohtml-1.9.9.jar!/" />
+ <root url="jar://$USER_HOME_GRAILS$/ivy-cache/net.sf.ezmorph/ezmorph/jars/ezmorph-1.0.6.jar!/" />
+ <root url="jar://$USER_HOME_GRAILS$/ivy-cache/commons-lang/commons-lang/jars/commons-lang-2.4.jar!/" />
+ <root url="jar://$USER_HOME_GRAILS$/ivy-cache/commons-beanutils/commons-beanutils/jars/commons-beanutils-1.8.0.jar!/" />
+ <root url="jar://$USER_HOME_GRAILS$/ivy-cache/net.sf.json-lib/json-lib/jars/json-lib-2.3-jdk15.jar!/" />
+ <root url="jar://$USER_HOME_GRAILS$/ivy-cache/commons-codec/commons-codec/jars/commons-codec-1.3.jar!/" />
+ <root url="jar://$USER_HOME_GRAILS$/ivy-cache/org.apache.httpcomponents/httpcore/jars/httpcore-4.0.1.jar!/" />
+ <root url="jar://$USER_HOME_GRAILS$/ivy-cache/org.apache.httpcomponents/httpclient/jars/httpclient-4.0.jar!/" />
+ <root url="jar://$USER_HOME_GRAILS$/ivy-cache/org.codehaus.groovy.modules.http-builder/http-builder/jars/http-builder-0.5.0.jar!/" />
+ <root url="jar://$USER_HOME_GRAILS$/ivy-cache/nekohtml/nekohtml/jars/nekohtml-1.9.6.2.jar!/" />
+ <root url="jar://$USER_HOME_GRAILS$/ivy-cache/nekohtml/xercesMinimal/jars/xercesMinimal-1.9.6.2.jar!/" />
+ <root url="jar://$USER_HOME_GRAILS$/ivy-cache/org.apache.maven.wagon/wagon-http-shared/jars/wagon-http-shared-1.0-beta-6.jar!/" />
+ <root url="jar://$USER_HOME_GRAILS$/ivy-cache/org.apache.maven.wagon/wagon-http-lightweight/jars/wagon-http-lightweight-1.0-beta-6.jar!/" />
+ <root url="jar://$USER_HOME_GRAILS$/ivy-cache/org.apache.maven.wagon/wagon-file/jars/wagon-file-1.0-beta-6.jar!/" />
+ <root url="jar://$USER_HOME_GRAILS$/ivy-cache/org.apache.maven/maven-error-diagnostics/jars/maven-error-diagnostics-2.2.1.jar!/" />
+ <root url="jar://$USER_HOME_GRAILS$/ivy-cache/org.apache.maven/maven-plugin-registry/jars/maven-plugin-registry-2.2.1.jar!/" />
+ <root url="jar://$USER_HOME_GRAILS$/ivy-cache/org.apache.maven/maven-profile/jars/maven-profile-2.2.1.jar!/" />
+ <root url="jar://$USER_HOME_GRAILS$/ivy-cache/org.apache.maven/maven-settings/jars/maven-settings-2.2.1.jar!/" />
+ <root url="jar://$USER_HOME_GRAILS$/ivy-cache/org.apache.maven/maven-project/jars/maven-project-2.2.1.jar!/" />
+ <root url="jar://$USER_HOME_GRAILS$/ivy-cache/org.apache.maven/maven-model/jars/maven-model-2.2.1.jar!/" />
+ <root url="jar://$USER_HOME_GRAILS$/ivy-cache/backport-util-concurrent/backport-util-concurrent/jars/backport-util-concurrent-3.1.jar!/" />
+ <root url="jar://$USER_HOME_GRAILS$/ivy-cache/org.apache.maven.wagon/wagon-provider-api/jars/wagon-provider-api-1.0-beta-6.jar!/" />
+ <root url="jar://$USER_HOME_GRAILS$/ivy-cache/org.apache.maven/maven-repository-metadata/jars/maven-repository-metadata-2.2.1.jar!/" />
+ <root url="jar://$USER_HOME_GRAILS$/ivy-cache/org.apache.maven/maven-artifact-manager/jars/maven-artifact-manager-2.2.1.jar!/" />
+ <root url="jar://$USER_HOME_GRAILS$/ivy-cache/org.apache.maven/maven-artifact/jars/maven-artifact-2.2.1.jar!/" />
+ <root url="jar://$USER_HOME_GRAILS$/ivy-cache/org.codehaus.plexus/plexus-interpolation/jars/plexus-interpolation-1.11.jar!/" />
+ <root url="jar://$USER_HOME_GRAILS$/ivy-cache/org.codehaus.plexus/plexus-utils/jars/plexus-utils-1.5.15.jar!/" />
+ <root url="jar://$USER_HOME_GRAILS$/ivy-cache/org.codehaus.plexus/plexus-container-default/jars/plexus-container-default-1.0-alpha-9-stable-1.jar!/" />
+ <root url="jar://$USER_HOME_GRAILS$/ivy-cache/classworlds/classworlds/jars/classworlds-1.1-alpha-2.jar!/" />
+ <root url="jar://$USER_HOME_GRAILS$/ivy-cache/ant/ant/jars/ant-1.6.5.jar!/" />
+ <root url="jar://$USER_HOME_GRAILS$/ivy-cache/org.apache.maven/maven-ant-tasks/jars/maven-ant-tasks-2.1.0.jar!/" />
+ </CLASSES>
+ <JAVADOC />
+ <SOURCES />
+ <jarDirectory url="file://$MODULE_DIR$/lib" recursive="false" />
+ </library>
+ </orderEntry>
+ <orderEntry type="module" module-name="grails-runtime-docs-grailsPlugins" />
+ <orderEntry type="library" name="grails-2.0.0" level="application" />
+ </component>
+</module>
+
View
157 scripts/RuntimeDocs.groovy
@@ -0,0 +1,157 @@
+import org.codehaus.groovy.grails.commons.DefaultGrailsApplication
+import org.codehaus.groovy.tools.groovydoc.ClasspathResourceManager
+import org.codehaus.groovy.tools.groovydoc.FileOutputTool
+import org.codehaus.groovy.tools.groovydoc.OutputTool
+
+/**
+ * Gant Script that generates Java and Groovy documentation for a Grails Application
+ * from runtime including the dynamically added methods and properties.
+ *
+ * @author Srinath Anantha
+ */
+
+includeTargets << grailsScript("_GrailsBootstrap")
+includeTargets << grailsScript("_GrailsRun")
+
+javaDocDir = "${grailsSettings.docsOutputDir}\\api"
+groovyDocDir = "${grailsSettings.docsOutputDir}\\gapi"
+docEncoding = "UTF-8"
+docSourceLevel = "1.5"
+links = ['http://java.sun.com/j2se/1.5.0/docs/api/']
+
+target(default: "Generates Java and Groovy documentation for a Grails Application from runtime including the dynamically added methods and properties.") {
+ depends(packageApp, classpath, compile, javadoc, groovydoc, createIndex)
+}
+
+target(setupDoc: "Sets up the doc directories") {
+ ant.mkdir(dir: grailsSettings.docsOutputDir)
+ ant.mkdir(dir: groovyDocDir)
+ ant.mkdir(dir: javaDocDir)
+}
+
+target(javadoc: "Produces Java Documentation") {
+ depends(parseArguments, setupDoc)
+
+ File javaDir = new File("${grailsSettings.sourceDir}/java")
+ if (javaDir.listFiles().find { !it.name.startsWith(".")}) {
+ try {
+ ant.javadoc(access: "protected",
+ destdir: javaDocDir,
+ encoding: docEncoding,
+ classpathref: "grails.compile.classpath",
+ use: "yes",
+ windowtitle: grailsAppName,
+ docencoding: docEncoding,
+ charset: docEncoding,
+ source: docSourceLevel,
+ useexternalfile: "yes",
+ breakiterator: "true",
+ linksource: "yes",
+ maxmemory: "128m",
+ failonerror: false,
+ sourcepath: javaDir.absolutePath) {
+ // Generate javadoc for *.java files in grails-app sub-directories
+ File grailsAppDir = new File("${grailsSettings.baseDir}/grails-app");
+ File[] dirList = grailsAppDir.listFiles();
+ for (int i = 0; i < dirList.length; i++) {
+ if (dirList[i].isDirectory() & !dirList[i].name.startsWith(".")) {
+ sourcepath(location: dirList[i])
+ }
+ }
+ for (i in links) {
+ link(href: i)
+ }
+ }
+ }
+ catch (Exception e) {
+ event("StatusError", ["Error generating javadoc: ${e.message}"])
+ }
+ }
+}
+
+
+target(groovydoc: "Produces Groovy Documentation with runtime properties") {
+ depends(setupDoc, loadApp, runApp)
+
+ Properties properties = new Properties();
+ properties.setProperty("windowTitle", "Groovy Documentation");
+ properties.setProperty("docTitle", "Groovy Documentation");
+ properties.setProperty("footer", "Groovy Documentation");
+ properties.setProperty("header", "Groovy Documentation");
+ properties.setProperty("publicScope", "true");
+ properties.setProperty("protectedScope", "true");
+ properties.setProperty("packageScope", "true");
+ properties.setProperty("privateScope", "true");
+ properties.setProperty("author", "true");
+ properties.setProperty("processScripts", "true");
+ properties.setProperty("includeMainForScripts", "true");
+ properties.setProperty("overviewFile", "");
+
+ String TEMPLATE_BASEDIR = "com/imaginea/labs/grails/runtimedocs/templates/";
+ String[] DEFAULT_DOC_TEMPLATES = [ // top level templates
+ TEMPLATE_BASEDIR + "topLevel/index.html",
+ TEMPLATE_BASEDIR + "topLevel/overview-frame.html",
+ TEMPLATE_BASEDIR + "topLevel/overview-summary.html",
+ TEMPLATE_BASEDIR + "topLevel/all-classes-frame.html",
+ TEMPLATE_BASEDIR + "topLevel/all-controllers-frame.html",
+ TEMPLATE_BASEDIR + "topLevel/all-services-frame.html",
+ TEMPLATE_BASEDIR + "topLevel/all-domains-frame.html",
+ TEMPLATE_BASEDIR + "topLevel/all-commands-frame.html",
+ TEMPLATE_BASEDIR + "topLevel/all-tag-libraries-frame.html",
+ TEMPLATE_BASEDIR + "topLevel/help-doc.html",
+ TEMPLATE_BASEDIR + "topLevel/stylesheet.css",
+ TEMPLATE_BASEDIR + "topLevel/inherit.gif",
+ TEMPLATE_BASEDIR + "topLevel/groovy.ico"
+ ];
+ String[] DEFAULT_PACKAGE_TEMPLATES = [ // package level templates
+ TEMPLATE_BASEDIR + "packageLevel/package-frame.html",
+ TEMPLATE_BASEDIR + "packageLevel/package-summary.html"];
+
+ String[] DEFAULT_CLASS_TEMPLATES = [// class level templates
+ TEMPLATE_BASEDIR + "classLevel/runtimeClassDoc.html"];
+
+ Class[] classArgs = [ClasspathResourceManager.class, String[].class, String[].class, String[].class, Properties.class];
+ Object[] objectArgs = [new ClasspathResourceManager(),
+ DEFAULT_DOC_TEMPLATES,
+ DEFAULT_PACKAGE_TEMPLATES,
+ DEFAULT_CLASS_TEMPLATES,
+ properties];
+
+ def clazz = classLoader.loadClass("com.imaginea.labs.grails.runtimedocs.GroovyRuntimeDocTemplateEngine", true);
+ def templateEngine = clazz.getConstructor(classArgs).newInstance(objectArgs);
+ if (templateEngine != null) {
+ FileOutputTool output = new FileOutputTool();
+ classArgs = [OutputTool.class, templateEngine.getClass(), Properties.class];
+ objectArgs = [output, templateEngine, properties];
+ clazz = classLoader.loadClass("com.imaginea.labs.grails.runtimedocs.GroovyRuntimeDocWriter", true);
+ def writer = clazz.getConstructor(classArgs).newInstance(objectArgs);
+
+ classArgs = [DefaultGrailsApplication.class];
+ objectArgs = [grailsApp];
+ clazz = classLoader.loadClass("com.imaginea.labs.grails.runtimedocs.RootDoc", true);
+ def rootDoc = clazz.getConstructor(classArgs).newInstance(objectArgs);
+
+ writer.writeRoot(rootDoc, groovyDocDir);
+ writer.writePackages(rootDoc, groovyDocDir);
+ writer.writeClasses(rootDoc, groovyDocDir);
+ } else {
+ throw new UnsupportedOperationException("No template engine was found");
+ }
+}
+
+target(createIndex: "Produces an index.html page in the root directory") {
+ new File("${grailsSettings.docsOutputDir}/all-docs.html").withWriter { writer ->
+ writer.write """
+<html>
+ <head>
+ <title>$grailsAppName Documentation</title>
+ </head>
+
+ <body>
+ <a href="api/index.html">Java API docs</a><br />
+ <a href="gapi/index.html">Groovy API docs</a><br />
+ </body>
+</html>
+"""
+ }
+}
View
10 scripts/_Install.groovy
@@ -0,0 +1,10 @@
+//
+// This script is executed by Grails after plugin was installed to project.
+// This script is a Gant script so you can use all special variables provided
+// by Gant (such as 'baseDir' which points on project base dir). You can
+// use 'ant' to access a global instance of AntBuilder
+//
+// For example you can create directory under project tree:
+//
+// ant.mkdir(dir:"${basedir}/grails-app/jobs")
+//
View
5 scripts/_Uninstall.groovy
@@ -0,0 +1,5 @@
+//
+// This script is executed by Grails when the plugin is uninstalled from project.
+// Use this script if you intend to do any additional clean-up on uninstall, but
+// beware of messing up SVN directories!
+//
View
10 scripts/_Upgrade.groovy
@@ -0,0 +1,10 @@
+//
+// This script is executed by Grails during application upgrade ('grails upgrade'
+// command). This script is a Gant script so you can use all special variables
+// provided by Gant (such as 'baseDir' which points on project base dir). You can
+// use 'ant' to access a global instance of AntBuilder
+//
+// For example you can create directory under project tree:
+//
+// ant.mkdir(dir:"${basedir}/grails-app/jobs")
+//
View
212 src/groovy/com/imaginea/labs/grails/runtimedocs/ClassDoc.groovy
@@ -0,0 +1,212 @@
+package com.imaginea.labs.grails.runtimedocs
+
+import java.lang.reflect.Field
+import java.lang.reflect.Method
+import java.lang.reflect.Modifier
+import org.codehaus.groovy.runtime.metaclass.ClosureMetaMethod
+import org.codehaus.groovy.runtime.metaclass.ClosureStaticMetaMethod
+import org.springframework.core.io.UrlResource
+
+class ClassDoc implements Comparable {
+ Class targetClass;
+ ExpandoMetaClass targetMetaClass;
+ UrlResource urlResource;
+ String classComments = "";
+
+ public ClassDoc(Class targetClass, ExpandoMetaClass targetMetaClass, UrlResource urlResource) {
+ this.targetClass = targetClass;
+ this.targetMetaClass = targetMetaClass;
+ this.urlResource = urlResource;
+ readComments();
+ }
+
+ public void readComments() {
+ if (urlResource != null) {
+ BufferedReader reader = new BufferedReader(new InputStreamReader(urlResource.getInputStream()));
+ StringBuilder sourceCode = new StringBuilder();
+ String inputLine;
+ while ((inputLine = reader.readLine()) != null) {
+ if (inputLine.contains(targetClass.getSimpleName())) {
+ int start = sourceCode.lastIndexOf("/*") + 1;
+ int end = sourceCode.lastIndexOf("*/");
+ classComments = (start > 0 && end > 0 && end > start) ? sourceCode.toString().substring(start, end).replace('*', '').replace("\n", "<br/>") : "";
+ break;
+ } else
+ sourceCode.append(inputLine).append("\n");
+ }
+ reader.close();
+ }
+ }
+
+ def methodMissing(String name, args) {
+ Class[] params = args.collect { it.class };
+ Method method = targetClass.class.getMethod(name, params);
+ if (method) {
+ Object returnValue = method.invoke(targetClass, args);
+ return returnValue;
+ } else
+ throw new MissingMethodException(name, targetMetaClass.delegate, args)
+ }
+
+ public boolean isClass() {
+ return !(targetClass.isInterface() || targetClass.isAnnotation() || targetClass.isEnum());
+ }
+
+ public boolean isGroovy() {
+ return GroovyObject.class.isAssignableFrom(targetClass);
+ }
+
+ public boolean isExternalClass(Class clazz) {
+ return RootDoc.getClassDoc(clazz) ? false : true;
+ }
+
+ public boolean isProperty(Field field) {
+ int modifiers = field.getModifiers()
+ return !(Modifier.isPublic(modifiers) || Modifier.isPrivate(modifiers) || Modifier.isProtected(modifiers));
+ }
+
+ public def getAnnotations(def object) {
+ if (object instanceof ClassDoc) {
+ return targetClass.class.getAnnotations();
+ } else if (object.metaClass.respondsTo(object, "getAnnotations"))
+ return object.getAnnotations();
+ }
+
+ public String getClassComments() {
+ return classComments;
+ }
+
+ // TODO
+ public String getCommentText(def input) {
+ return "";
+ }
+
+ public Field[] getDeclaredFields() {
+ return targetClass.getDeclaredFields().findAll { !isProperty(it) && !it.isEnumConstant() };
+ }
+
+ public Field[] getDeclaredProperties() {
+ return targetClass.getDeclaredFields().findAll { isProperty(it) && !it.isEnumConstant() };
+ }
+
+ public String getDocUrl(def type, boolean full) {
+ if (type instanceof Class) {
+ ClassDoc classDoc = RootDoc.getClassDoc(type)
+ if (classDoc) {
+ return "<a href='" + this.getRelativeRootPath() + classDoc.getFullPathName() + ".html'>" + (full ? classDoc.getName() : classDoc.getSimpleName()) + "</a>";
+ } else
+ return type.getName();
+ }
+ return type;
+ }
+
+ public List<MetaMethod> getExpandoMethods() {
+ List<MetaMethod> unmodifiableList = targetMetaClass.getExpandoMethods();
+ List<MetaMethod> newList = new ArrayList(unmodifiableList);
+ return newList.sort { it.getName() }
+ }
+
+ public String getFullPathName() {
+ if (targetClass.getPackage() == null)
+ return RootDoc.DEFAULT_PACKAGE + '/' + targetClass.getName();
+ else
+ return targetClass.getName().replace('.', '/');
+ }
+
+ public String getMethodInfo(MetaMethod metaMethod) {
+ Field field = null;
+ Object value = null;
+ try {
+ field = metaMethod.getClass().getDeclaredField('callable');
+ if (field != null) {
+ field.setAccessible(true);
+ value = field.get(metaMethod);
+ String name = value.getClass().getSimpleName()
+ if ((metaMethod instanceof ClosureMetaMethod || metaMethod instanceof ClosureStaticMetaMethod) &&
+ (name != 'StaticMethodInvokingClosure' && name != 'InstanceMethodInvokingClosure'))
+ return "Added by " + name;
+ else
+ return "Added by " + value.getDelegate().getClass().getSimpleName();
+ }
+ } catch (NoSuchFieldException e) {
+ try {
+ field = metaMethod.getClass().getDeclaredField('val$closure');
+ if (field != null) {
+ field.setAccessible(true);
+ value = field.get(metaMethod);
+ return "Added by " + value.getDelegate().getSimpleName();
+ }
+ } catch (NoSuchFieldException e1) {
+ if (metaMethod.respondsTo("getClosure")) {
+ def delegate = metaMethod.getClosure().getDelegate();
+ if(delegate instanceof Class)
+ return "Added by " + delegate.getSimpleName();
+ else
+ return "Added by " + delegate.getClass().getSimpleName();
+ } else {
+ return "";
+ }
+ }
+ }
+ }
+
+ public String getRelativeRootPath() {
+ StringTokenizer tokenizer = new StringTokenizer(getFullPathName(), "/");
+ StringBuffer sb = new StringBuffer();
+ if (tokenizer.hasMoreTokens()) {
+ tokenizer.nextToken(); // ignore the first token, as we want n-1 parent dirs
+ }
+ while (tokenizer.hasMoreTokens()) {
+ tokenizer.nextToken();
+ sb.append("../");
+ }
+ return sb.toString();
+ }
+
+ public String getPackageName() {
+ return targetClass.getPackage() ? targetClass.getPackage().getName() : RootDoc.DEFAULT_PACKAGE;
+ }
+
+ public List<Class> getParentClasses() {
+ List<Class> parentClasses = new ArrayList<Class>();
+ Class superClass = targetClass.getSuperclass();
+ while (superClass != null) {
+ parentClasses.add(superClass);
+ superClass = superClass.getSuperclass();
+ }
+ return parentClasses;
+ }
+
+ public Set<Class> getParentInterfaces() {
+ Set<Class> parentInterfaces = getParentInterfaces(new HashSet<Class>(), targetClass);
+ return parentInterfaces;
+ }
+
+ private Set<Class> getParentInterfaces(Set<Class> parentInterfaces, Class targetClass) {
+ Class[] interfaces = targetClass.getInterfaces();
+ parentInterfaces.addAll(interfaces);
+ for (Class clazz: interfaces) {
+ getParentInterfaces(parentInterfaces, clazz);
+ }
+ return parentInterfaces;
+ }
+
+ public String getTypeDescription() {
+ if (targetClass.isInterface()) return "Interface";
+ if (targetClass.isAnnotation()) return "Annotation Type";
+ if (targetClass.isEnum()) return "Enum";
+ return "Class";
+ }
+
+ public String getTypeSourceDescription() {
+ if (targetClass.isInterface()) return "interface";
+ if (targetClass.isAnnotation()) return "@interface";
+ if (targetClass.isEnum()) return "enum";
+ return "class";
+ }