<!--
RSS generated by JIRA (4.4.1#660-r161644) at Wed May 16 05:56:17 PDT 2012

It is possible to restrict the fields that are returned in this document by specifying the 'field' parameter in your request.
For example, to request only the issue key and summary add field=key&field=summary to the URL of your request.
For example:
http://jira.grails.org/sr/jira.issueviews:searchrequest-xml/temp/SearchRequest.xml?&jqlQuery=project+%3D+GRAILSPLUGINS&tempMax=100&reset=true&decorator=none&field=key&field=summary
-->
<!-- If you wish to do custom client-side styling of RSS, uncomment this:
<?xml-stylesheet href="http://jira.grails.org/styles/jiraxml2html.xsl" type="text/xsl"?>
-->
<rss version="0.92">
    <channel>
        <title>Grails JIRA</title>
        <link>http://jira.grails.org/secure/IssueNavigator.jspa?reset=true&amp;jqlQuery=project+%3D+GRAILSPLUGINS</link>
        <description>An XML representation of a search request</description>
                <language>en-us</language>
                        <issue start="0" end="16" total="16"/>
                <build-info>
            <version>4.4.1</version>
            <build-number>660</build-number>
            <build-date>30-08-2011</build-date>
        </build-info>
<item>
            <title>[GRAILSPLUGINS-2985] Spring Security Ldap Cant Be Externalized</title>
                <link>http://jira.grails.org/browse/GRAILSPLUGINS-2985</link>
                <project id="10021" key="GRAILSPLUGINS">Grails Plugins</project>
                        <description>&lt;p&gt;Trying to externalize my LDAP config. Works normally when put in my Config.groovy file but when put into my properties file, it fails consistently. I can get most of it to pass but it fails always at the context:&lt;/p&gt;

&lt;p&gt;grails.plugins.springsecurity.ldap.context.server=&quot;ldap://my.ldap.server:10389/&quot;&lt;/p&gt;

&lt;p&gt;Can&apos;t use single quotes or it throws error:&lt;/p&gt;

&lt;p&gt;Caused by TokenMgrError: Lexical error at line 1, column 1.  Encountered: &quot;\&apos;&quot; (39), after : &quot;&quot;&lt;/p&gt;


&lt;p&gt;Can&apos;t use colon (which is need by url) or it throws error:&lt;/p&gt;

&lt;p&gt;Caused by TokenMgrError: Lexical error at line 1, column 5.  Encountered: &quot;:&quot; (58), after : &quot;&quot;&lt;/p&gt;


&lt;p&gt;Can&apos;t escape colon; it just throws same error.&lt;/p&gt;</description>
                <environment>Grails version: 2.0.1&lt;br/&gt;
Linux</environment>
            <key id="42246">GRAILSPLUGINS-2985</key>
            <summary>Spring Security Ldap Cant Be Externalized</summary>
                <type id="1" iconUrl="http://jira.grails.org/images/icons/bug.gif">Bug</type>
                                <priority id="3" iconUrl="http://jira.grails.org/images/icons/priority_major.gif">Major</priority>
                    <status id="6" iconUrl="http://jira.grails.org/images/icons/status_closed.gif">Closed</status>
                    <resolution id="6">Not A Bug</resolution>
                                <assignee username="burtbeckwith">Burt Beckwith</assignee>
                                <reporter username="orubel">Owen Rubel</reporter>
                        <labels>
                        <label>ldap</label>
                        <label>spring-security-ldap</label>
                    </labels>
                <created>Mon, 23 Apr 2012 10:16:07 -0700</created>
                <updated>Mon, 23 Apr 2012 11:13:59 -0700</updated>
                    <resolved>Mon, 23 Apr 2012 11:13:59 -0700</resolved>
                            <version>Grails-Spring-Security-Core 1.1.1</version>
                                                <component>Grails-Spring-Security-LDAP</component>
                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                                                    <comments>
                    <comment id="70601" author="burtbeckwith" created="Mon, 23 Apr 2012 11:13:59 -0700"  >&lt;p&gt;If this were a bug, it&apos;d be a Grails bug since it has to do with loading configuration properties files.&lt;/p&gt;

&lt;p&gt;Also, the GRAILSPLUGINS project is a catch-all project for plugins that don&apos;t have their own, but most do and you can find them via the &quot;Issues&quot; link in the plugin pages, e.g. &lt;a href=&quot;http://grails.org/plugin/spring-security-core&quot;&gt;http://grails.org/plugin/spring-security-core&lt;/a&gt; (&lt;a href=&quot;http://jira.grails.org/browse/GPSPRINGSECURITYCORE&quot;&gt;http://jira.grails.org/browse/GPSPRINGSECURITYCORE&lt;/a&gt;) and &lt;a href=&quot;http://grails.org/plugin/spring-security-ldap&quot;&gt;http://grails.org/plugin/spring-security-ldap&lt;/a&gt; (&lt;a href=&quot;http://jira.grails.org/browse/GPSPRINGSECURITYLDAP&quot;&gt;http://jira.grails.org/browse/GPSPRINGSECURITYLDAP&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;You&apos;ll probably have better luck using Groovy config files since they&apos;re easier to work with and can include code. To see how to escape something for a properties file, create a Properties instance and write it out, e.g.&lt;/p&gt;

&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;def p = &lt;span class=&quot;code-keyword&quot;&gt;new&lt;/span&gt; Properties()
p.setProperty &apos;grails.plugins.springsecurity.ldap.context.server&apos;, &apos;ldap:&lt;span class=&quot;code-comment&quot;&gt;//my.ldap.server:10389/&apos;
&lt;/span&gt;def sw = &lt;span class=&quot;code-keyword&quot;&gt;new&lt;/span&gt; StringWriter()
p.store sw, &apos;test&apos;
println sw.toString()&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;which will print&lt;/p&gt;

&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;grails.plugins.springsecurity.ldap.context.server=ldap\:&lt;span class=&quot;code-comment&quot;&gt;//my.ldap.server\:10389/&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                                                        <customfield id="customfield_10210" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                                                                    </customfields>
    </item>

<item>
            <title>[GRAILSPLUGINS-2984] ExtendedGormMappings Plugin broken with grails 2.0.1</title>
                <link>http://jira.grails.org/browse/GRAILSPLUGINS-2984</link>
                <project id="10021" key="GRAILSPLUGINS">Grails Plugins</project>
                        <description>&lt;p&gt;I realize this isn&apos;t a Grails issue, I just couldn&apos;t find a jira project for the ExtendedGormMappings plugin.  The issue is theExtendedMappingLocalSessionFactoryBean (defined in the plugin) which extends ConfigurableLocalSessionFactoryBean but provides its own applicationContext property.  This masks the definition in ConfigurableLocalSessionFactoryBean which then fails initialization (NPE) line 163 as it has a null app context. Fix is to just remove the applicationContext property, getter and setter from ExtendedMappingLocalSessionFactoryBean.  Also, ExtendedMappingLocalSessionFactoryBean does not need to implement ApplicationContextAware since ConfigurableLocalSessionFactoryBean already does.&lt;/p&gt;</description>
                <environment></environment>
            <key id="42008">GRAILSPLUGINS-2984</key>
            <summary>ExtendedGormMappings Plugin broken with grails 2.0.1</summary>
                <type id="1" iconUrl="http://jira.grails.org/images/icons/bug.gif">Bug</type>
                                <priority id="3" iconUrl="http://jira.grails.org/images/icons/priority_major.gif">Major</priority>
                    <status id="1" iconUrl="http://jira.grails.org/images/icons/status_open.gif">Open</status>
                    <resolution id="-1">Unresolved</resolution>
                                <assignee username="-1">Unassigned</assignee>
                                <reporter username="olandere">Eric Olander</reporter>
                        <labels>
                    </labels>
                <created>Sun, 11 Mar 2012 07:12:46 -0700</created>
                <updated>Mon, 12 Mar 2012 04:51:49 -0700</updated>
                                                                            <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                                                            <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                                                        <customfield id="customfield_10210" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                                                                    </customfields>
    </item>

<item>
            <title>[GRAILSPLUGINS-2981] Include libraries into a jar in plugin project using Grails 2.0 not work</title>
                <link>http://jira.grails.org/browse/GRAILSPLUGINS-2981</link>
                <project id="10021" key="GRAILSPLUGINS">Grails Plugins</project>
                        <description>&lt;p&gt;&lt;b&gt;Scenario&lt;/b&gt;:&lt;/p&gt;

&lt;p&gt;When I export the project plugin into a jar format, the libraries (lib directory) is not included in it. &lt;br/&gt;
However when I compile it into a zip format, it&apos;s included.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;To reproduce:&lt;/b&gt;&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;Create a plugin project&lt;/li&gt;
	&lt;li&gt;Include library in lib directory&lt;/li&gt;
	&lt;li&gt;Package plugin in binary format&lt;/li&gt;
	&lt;li&gt;Drag created jar file into new project (Grails 2.0)&lt;/li&gt;
	&lt;li&gt;Run project&lt;/li&gt;
	&lt;li&gt;Try access to library Class from your plugin (&lt;b&gt;Exception thrown&lt;/b&gt;: &lt;font color=&quot;red&quot;&gt;NoClassDefFoundError&lt;/font&gt; )&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;However, it&apos;s works fine with zip format.&lt;/p&gt;</description>
                <environment>Windows 7, Grails 2.0, JDK 1.6</environment>
            <key id="41635">GRAILSPLUGINS-2981</key>
            <summary>Include libraries into a jar in plugin project using Grails 2.0 not work</summary>
                <type id="1" iconUrl="http://jira.grails.org/images/icons/bug.gif">Bug</type>
                                <priority id="3" iconUrl="http://jira.grails.org/images/icons/priority_major.gif">Major</priority>
                    <status id="1" iconUrl="http://jira.grails.org/images/icons/status_open.gif">Open</status>
                    <resolution id="-1">Unresolved</resolution>
                                <assignee username="graemerocher">Graeme Rocher</assignee>
                                <reporter username="d&amp;d">Dima Derenchuk</reporter>
                        <labels>
                    </labels>
                <created>Wed, 25 Jan 2012 01:00:45 -0800</created>
                <updated>Wed, 25 Jan 2012 01:00:45 -0800</updated>
                                                                            <due></due>
                    <votes>0</votes>
                        <watches>1</watches>
                                                            <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                                                        <customfield id="customfield_10210" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                                                                    </customfields>
    </item>

<item>
            <title>[GRAILSPLUGINS-2980] Grails 2.0: Binary plugin not execute install script (_Install.groovy) </title>
                <link>http://jira.grails.org/browse/GRAILSPLUGINS-2980</link>
                <project id="10021" key="GRAILSPLUGINS">Grails Plugins</project>
                        <description>&lt;p&gt;When I am deploying my binary plugin in a grails project, it seems like my scripts (_Install.groovy, _Upgrade.groovy, _Uninstall.groovy) have been missed.&lt;/p&gt;</description>
                <environment>Windows 7, Grails 2.0, JDK 1.6</environment>
            <key id="41634">GRAILSPLUGINS-2980</key>
            <summary>Grails 2.0: Binary plugin not execute install script (_Install.groovy) </summary>
                <type id="1" iconUrl="http://jira.grails.org/images/icons/bug.gif">Bug</type>
                                <priority id="3" iconUrl="http://jira.grails.org/images/icons/priority_major.gif">Major</priority>
                    <status id="1" iconUrl="http://jira.grails.org/images/icons/status_open.gif">Open</status>
                    <resolution id="-1">Unresolved</resolution>
                                <assignee username="graemerocher">Graeme Rocher</assignee>
                                <reporter username="d&amp;d">Dima Derenchuk</reporter>
                        <labels>
                        <label>Plugin</label>
                        <label>Script</label>
                    </labels>
                <created>Wed, 25 Jan 2012 00:31:07 -0800</created>
                <updated>Wed, 25 Jan 2012 00:31:46 -0800</updated>
                                                                            <due></due>
                    <votes>0</votes>
                        <watches>1</watches>
                                                            <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                                                        <customfield id="customfield_10210" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                                                                    </customfields>
    </item>

<item>
            <title>[GRAILSPLUGINS-2978] Grails 2.0.0 Plugin development: when trying to use dynamic finders an exceptions occurs</title>
                <link>http://jira.grails.org/browse/GRAILSPLUGINS-2978</link>
                <project id="10021" key="GRAILSPLUGINS">Grails Plugins</project>
                        <description>&lt;p&gt;In Grails 2.0.0 in plugin project when trying to use dynamic finders for model an exceptions occurs.&lt;/p&gt;

&lt;p&gt;For example, when I am trying to list from my model:&lt;/p&gt;

&lt;p&gt;&quot;groovy.lang.MissingMethodException: No signature of method: myPackage.MyModel.list() is applicable for argument types: () values: []&lt;br/&gt;
Possible solutions: list(), list(java.util.Map), is(java.lang.Object), wait(), lock(), find()&quot;&lt;/p&gt;

&lt;p&gt;That not ocurrs in application project, however happens in plugin project.&lt;/p&gt;

&lt;p&gt;That not occurs in previous versions (1.3.4, 1.3.7)&lt;/p&gt;</description>
                <environment>Windows 7, grails 2.0.0, jdk 1.6</environment>
            <key id="41521">GRAILSPLUGINS-2978</key>
            <summary>Grails 2.0.0 Plugin development: when trying to use dynamic finders an exceptions occurs</summary>
                <type id="1" iconUrl="http://jira.grails.org/images/icons/bug.gif">Bug</type>
                                <priority id="3" iconUrl="http://jira.grails.org/images/icons/priority_major.gif">Major</priority>
                    <status id="6" iconUrl="http://jira.grails.org/images/icons/status_closed.gif">Closed</status>
                    <resolution id="6">Not A Bug</resolution>
                                <assignee username="graemerocher">Graeme Rocher</assignee>
                                <reporter username="d&amp;d">Dima Derenchuk</reporter>
                        <labels>
                        <label>dynamic-finders</label>
                        <label>grails2</label>
                        <label>plugin</label>
                    </labels>
                <created>Wed, 11 Jan 2012 02:51:22 -0800</created>
                <updated>Wed, 11 Jan 2012 08:43:17 -0800</updated>
                    <resolved>Wed, 11 Jan 2012 08:43:17 -0800</resolved>
                                                                    <due></due>
                    <votes>1</votes>
                        <watches>1</watches>
                                                    <comments>
                    <comment id="68784" author="graemerocher" created="Wed, 11 Jan 2012 08:43:17 -0800"  >&lt;p&gt;plugin projects do not have the hibernate plugin installed by default. If your plugin project requires persistence add:&lt;/p&gt;

&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;plugins {
   compile &lt;span class=&quot;code-quote&quot;&gt;&quot;:hibernate:2.0.0&quot;&lt;/span&gt;
}&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;To BuildConfig.groovy&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                                                        <customfield id="customfield_10210" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                                                                    </customfields>
    </item>

<item>
            <title>[GRAILSPLUGINS-2977] DB Connection leak in reports</title>
                <link>http://jira.grails.org/browse/GRAILSPLUGINS-2977</link>
                <project id="10021" key="GRAILSPLUGINS">Grails Plugins</project>
                        <description>&lt;p&gt;Hello,&lt;/p&gt;

&lt;p&gt;with &lt;tt&gt;useGrailsDatasource = &apos;true&apos;&lt;/tt&gt;, connections opened in &lt;tt&gt;BirtReportService&lt;/tt&gt; are never returned to the pool. It is as if &lt;tt&gt;task.close()&lt;/tt&gt; did not care to close provided connections (which would seem to be a good practice as it is generally the responsibility of someone grabbing a resource to return it). I have made a patch taking care of this. I I can&apos;t find how to attach it, here it is &lt;a href=&quot;https://gist.github.com/1521198&quot;&gt;https://gist.github.com/1521198&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Regards&lt;/p&gt;</description>
                <environment>Grails 1.3.7, PostgreSQL 9</environment>
            <key id="41408">GRAILSPLUGINS-2977</key>
            <summary>DB Connection leak in reports</summary>
                <type id="1" iconUrl="http://jira.grails.org/images/icons/bug.gif">Bug</type>
                                <priority id="3" iconUrl="http://jira.grails.org/images/icons/priority_major.gif">Major</priority>
                    <status id="1" iconUrl="http://jira.grails.org/images/icons/status_open.gif">Open</status>
                    <resolution id="-1">Unresolved</resolution>
                                <assignee username="graemerocher">Graeme Rocher</assignee>
                                <reporter username="jfe">Julien Faissolle</reporter>
                        <labels>
                    </labels>
                <created>Mon, 26 Dec 2011 05:37:56 -0800</created>
                <updated>Mon, 26 Dec 2011 05:49:20 -0800</updated>
                                                                    <component>Grails-BirtReport</component>
                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                                                            <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                                                        <customfield id="customfield_10210" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                            <customfield id="customfield_10001" key="com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes">
                <customfieldname>Patch Submitted</customfieldname>
                <customfieldvalues>
                        <customfieldvalue key="10000"><![CDATA[Yes]]></customfieldvalue>
    
                </customfieldvalues>
            </customfield>
                                                                                                                                </customfields>
    </item>

<item>
            <title>[GRAILSPLUGINS-2976] csv plugin fails with groovy.lang.MissingMethodException in Grails2.0.0.RC3</title>
                <link>http://jira.grails.org/browse/GRAILSPLUGINS-2976</link>
                <project id="10021" key="GRAILSPLUGINS">Grails Plugins</project>
                        <description>&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;grails create-app csvtest
cd csvtest
grails install-plugin csv&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Change BootStrap.groovy:&lt;/p&gt;
&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;class BootStrap {

   def init = { servletContext -&amp;gt;
    
      &lt;span class=&quot;code-quote&quot;&gt;&quot;hello, world, how, are, you&quot;&lt;/span&gt;.eachCsvLine { tokens -&amp;gt;
         println(&lt;span class=&quot;code-quote&quot;&gt;&quot;$tokens&quot;&lt;/span&gt;)
      }
   }
}&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;This is the first example how to use the plugin.&lt;br/&gt;
app-run leads to &lt;/p&gt;

&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;Message: groovy.lang.MissingMethodException: No signature of method: BootStrap$_closure1_closure3.doCall() is applicable &lt;span class=&quot;code-keyword&quot;&gt;for&lt;/span&gt; argument types: (java.lang.&lt;span class=&quot;code-object&quot;&gt;String&lt;/span&gt;, java.lang.&lt;span class=&quot;code-object&quot;&gt;String&lt;/span&gt;, java.lang.&lt;span class=&quot;code-object&quot;&gt;String&lt;/span&gt;, java.lang.&lt;span class=&quot;code-object&quot;&gt;String&lt;/span&gt;, java.lang.&lt;span class=&quot;code-object&quot;&gt;String&lt;/span&gt;) values: [hello,  world,  how,  are,  you]&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Same under Grails 2.0.0.RC1 works.&lt;/p&gt;</description>
                <environment>Win7, jdk1.6.0_20</environment>
            <key id="41228">GRAILSPLUGINS-2976</key>
            <summary>csv plugin fails with groovy.lang.MissingMethodException in Grails2.0.0.RC3</summary>
                <type id="1" iconUrl="http://jira.grails.org/images/icons/bug.gif">Bug</type>
                                <priority id="3" iconUrl="http://jira.grails.org/images/icons/priority_major.gif">Major</priority>
                    <status id="1" iconUrl="http://jira.grails.org/images/icons/status_open.gif">Open</status>
                    <resolution id="-1">Unresolved</resolution>
                                <assignee username="-1">Unassigned</assignee>
                                <reporter username="mloe">Michael L&#246;nhardt</reporter>
                        <labels>
                        <label>plugin</label>
                    </labels>
                <created>Mon, 5 Dec 2011 02:16:25 -0800</created>
                <updated>Thu, 15 Dec 2011 05:38:48 -0800</updated>
                                                                            <due></due>
                    <votes>3</votes>
                        <watches>2</watches>
                                                    <comments>
                    <comment id="68290" author="rbartl" created="Mon, 12 Dec 2011 05:04:44 -0800"  >&lt;p&gt;changing the c(tokens) line to c.doCall(tokens) seems to fix the issue.&lt;/p&gt;

&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;class CSVReaderUtils {

    &lt;span class=&quot;code-keyword&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;code-keyword&quot;&gt;static&lt;/span&gt; void eachLine(CSVReader csvReader, Closure c) {
        &lt;span class=&quot;code-keyword&quot;&gt;try&lt;/span&gt; {
            &lt;span class=&quot;code-object&quot;&gt;String&lt;/span&gt;[] tokens = csvReader.readNext()
            &lt;span class=&quot;code-keyword&quot;&gt;while&lt;/span&gt; (tokens) {
                c.doCall(tokens);
                tokens = csvReader.readNext();
            }
        } &lt;span class=&quot;code-keyword&quot;&gt;finally&lt;/span&gt; {
            csvReader.close()
        }
    }
...&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;</comment>
                </comments>
                <issuelinks>
                        <issuelinktype id="10001">
                <name>dependent</name>
                                <outwardlinks description="depends on">
                            <issuelink>
            <issuekey id="41325">GRAILS-8495</issuekey>
        </issuelink>
                    </outwardlinks>
                                            </issuelinktype>
                    </issuelinks>
                <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                                                        <customfield id="customfield_10210" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                                                                    </customfields>
    </item>

<item>
            <title>[GRAILSPLUGINS-2975] datePicker clipped by bottom of accordionElement</title>
                <link>http://jira.grails.org/browse/GRAILSPLUGINS-2975</link>
                <project id="10021" key="GRAILSPLUGINS">Grails Plugins</project>
                        <description>&lt;p&gt;I have placed gui:datePicker components inside a gui:accordionElement. When I click on the calendar button, the calendar drops down but it is clipped by the bottom of the accordionElement. I expect to see the calendar and be able to click on it.&lt;/p&gt;</description>
                <environment></environment>
            <key id="41237">GRAILSPLUGINS-2975</key>
            <summary>datePicker clipped by bottom of accordionElement</summary>
                <type id="1" iconUrl="http://jira.grails.org/images/icons/bug.gif">Bug</type>
                                <priority id="3" iconUrl="http://jira.grails.org/images/icons/priority_major.gif">Major</priority>
                    <status id="1" iconUrl="http://jira.grails.org/images/icons/status_open.gif">Open</status>
                    <resolution id="-1">Unresolved</resolution>
                                <assignee username="graemerocher">Graeme Rocher</assignee>
                                <reporter username="kgeis">Ken Geis</reporter>
                        <labels>
                    </labels>
                <created>Mon, 5 Dec 2011 15:43:40 -0800</created>
                <updated>Mon, 5 Dec 2011 15:43:40 -0800</updated>
                                                                    <component>Grails-UI</component>
                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                                                            <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                                                        <customfield id="customfield_10210" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                                                                    </customfields>
    </item>

<item>
            <title>[GRAILSPLUGINS-2974] the list of plugins on svn.codehaus.org/grails-plugins is incomplete</title>
                <link>http://jira.grails.org/browse/GRAILSPLUGINS-2974</link>
                <project id="10021" key="GRAILSPLUGINS">Grails Plugins</project>
                        <description>&lt;p&gt;If I try to get le list of plugins &lt;br/&gt;
&lt;a href=&quot;http://svn.codehaus.org/grails-plugins/.plugin-meta/plugins-list.xml&quot;&gt;http://svn.codehaus.org/grails-plugins/.plugin-meta/plugins-list.xml&lt;/a&gt;&lt;br/&gt;
I get a list containing only 4 plugins instead of 700&lt;/p&gt;</description>
                <environment></environment>
            <key id="40927">GRAILSPLUGINS-2974</key>
            <summary>the list of plugins on svn.codehaus.org/grails-plugins is incomplete</summary>
                <type id="1" iconUrl="http://jira.grails.org/images/icons/bug.gif">Bug</type>
                                <priority id="3" iconUrl="http://jira.grails.org/images/icons/priority_major.gif">Major</priority>
                    <status id="6" iconUrl="http://jira.grails.org/images/icons/status_closed.gif">Closed</status>
                    <resolution id="1">Fixed</resolution>
                                <assignee username="burtbeckwith">Burt Beckwith</assignee>
                                <reporter username="pfoletto">Paolo Foletto</reporter>
                        <labels>
                    </labels>
                <created>Sat, 5 Nov 2011 22:51:37 -0700</created>
                <updated>Sun, 6 Nov 2011 21:35:52 -0800</updated>
                    <resolved>Sun, 6 Nov 2011 21:35:52 -0800</resolved>
                                                                    <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                                                            <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                                                        <customfield id="customfield_10210" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                                                                    </customfields>
    </item>

<item>
            <title>[GRAILSPLUGINS-2973] [dynamic-controller] Can&apos;t use completely dynamic controller with Grails 2.0.0</title>
                <link>http://jira.grails.org/browse/GRAILSPLUGINS-2973</link>
                <project id="10021" key="GRAILSPLUGINS">Grails Plugins</project>
                        <description>&lt;p&gt;With latest grails 2.0.0.BUILD-SNAPSHOTs you can&apos;t create a completely dynamic controller (one without existing source). If you try you will get NPE. Workaround is to create empty (without any methods or closures, just class declaration) groovy class for targeted dynamic controller in grails-app/controllers.&lt;/p&gt;

&lt;p&gt;Problem is in &lt;tt&gt;com.burtbeckwith.grails.plugins.dynamiccontroller.DynamicControllerManager&lt;/tt&gt; which doesn&apos;t initialize dynamic controller in &lt;tt&gt;registerClosures&lt;/tt&gt; method.&lt;/p&gt;</description>
                <environment></environment>
            <key id="40796">GRAILSPLUGINS-2973</key>
            <summary>[dynamic-controller] Can&apos;t use completely dynamic controller with Grails 2.0.0</summary>
                <type id="1" iconUrl="http://jira.grails.org/images/icons/bug.gif">Bug</type>
                                <priority id="3" iconUrl="http://jira.grails.org/images/icons/priority_major.gif">Major</priority>
                    <status id="1" iconUrl="http://jira.grails.org/images/icons/status_open.gif">Open</status>
                    <resolution id="-1">Unresolved</resolution>
                                <assignee username="burtbeckwith">Burt Beckwith</assignee>
                                <reporter username="dmurat">Damir Murat</reporter>
                        <labels>
                    </labels>
                <created>Thu, 20 Oct 2011 01:59:34 -0700</created>
                <updated>Thu, 20 Oct 2011 07:45:10 -0700</updated>
                                                                            <due></due>
                    <votes>1</votes>
                        <watches>4</watches>
                                                            <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                                                        <customfield id="customfield_10210" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                                                                    </customfields>
    </item>

<item>
            <title>[GRAILSPLUGINS-2972] Incorrect maven repo in bubbling plugin</title>
                <link>http://jira.grails.org/browse/GRAILSPLUGINS-2972</link>
                <project id="10021" key="GRAILSPLUGINS">Grails Plugins</project>
                        <description>&lt;p&gt;This plugin doesn&apos;t seem to have a issue tracker. So creating one under grails-ui&lt;/p&gt;

&lt;p&gt;Why is the code below a part of plugin.&lt;/p&gt;
&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;mavenRepo &lt;span class=&quot;code-quote&quot;&gt;&quot;http:&lt;span class=&quot;code-comment&quot;&gt;//localhost:8081/artifactory/plugins-releases-local&quot;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;</description>
                <environment>Bubbling: 2.1.3</environment>
            <key id="40556">GRAILSPLUGINS-2972</key>
            <summary>Incorrect maven repo in bubbling plugin</summary>
                <type id="1" iconUrl="http://jira.grails.org/images/icons/bug.gif">Bug</type>
                                <priority id="3" iconUrl="http://jira.grails.org/images/icons/priority_major.gif">Major</priority>
                    <status id="1" iconUrl="http://jira.grails.org/images/icons/status_open.gif">Open</status>
                    <resolution id="-1">Unresolved</resolution>
                                <assignee username="graemerocher">Graeme Rocher</assignee>
                                <reporter username="bond">Ravi Teja</reporter>
                        <labels>
                    </labels>
                <created>Tue, 27 Sep 2011 14:39:02 -0700</created>
                <updated>Tue, 27 Sep 2011 14:39:02 -0700</updated>
                                    <version>Grails-UI- 1.1.1</version>
                                                <component>Grails-UI</component>
                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                                                            <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                                                        <customfield id="customfield_10210" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                                                                    </customfields>
    </item>

<item>
            <title>[GRAILSPLUGINS-2971] Users can authenticate with the password defined in the SysAuthUser.password column even though LDAP authentication is used</title>
                <link>http://jira.grails.org/browse/GRAILSPLUGINS-2971</link>
                <project id="10021" key="GRAILSPLUGINS">Grails Plugins</project>
                        <description>&lt;p&gt;I used the settings below. The password column is filled in the database with senseful values so I could turn of LDAP authentication any time. But the side effect is, that it is possible to get through the login screen by EITHER entering the password defined in the Active Directory for the user OR by entering the password encoded in the password column of the SysAuthUser table in the database!&lt;/p&gt;

&lt;p&gt;Assuming that I am not the only one that might switch to using the LDAP plugin after using the database-only approach for a while, this is a security implication.&lt;/p&gt;

&lt;p&gt;If I turn on LDAP authentication there MUST only be one password allowed and that is the password defined in the ldap.&lt;/p&gt;

&lt;p&gt;I realize that the mechanism is that if I enter the password defined in the database, the principal is org.codehaus.groovy.grails.plugins.springsecurity.GrailsUser and if I enter the password used in the ldap, the principal org.springframework.security.ldap.userdetails.LdapUserDetailsImpl. &lt;/p&gt;

&lt;p&gt;But it looks wrong to me. A solution would be to set the passwords in the database to a non-zero-length string, that will never be matched by a md5-hash. But that should be documented.&lt;/p&gt;

&lt;p&gt;If it is, I overlooked, sorry.&lt;/p&gt;


&lt;p&gt;		grails.plugins.springsecurity.ldap.context.managerDn = &apos;CN=xxxx,CN=Users,DC=xxxx,DC=xxxx&apos;&lt;br/&gt;
		grails.plugins.springsecurity.ldap.context.managerPassword = &apos;&apos;&lt;br/&gt;
		grails.plugins.springsecurity.ldap.context.server = &apos;ldap://xxxx:389&apos;&lt;br/&gt;
		grails.plugins.springsecurity.ldap.authorities.groupSearchBase = &apos;CN=Users,DC=xxxx,DC=xxxx&apos;&lt;br/&gt;
		grails.plugins.springsecurity.ldap.authorities.groupSearchFilter = &apos;member={0}&apos; // Active Directory specific - the example settings will work fine for a plain LDAP server&lt;br/&gt;
		grails.plugins.springsecurity.ldap.search.base = &apos;CN=Users,DC=xxxx,DC=xxxx&apos;&lt;br/&gt;
		grails.plugins.springsecurity.ldap.search.filter=&quot;sAMAccountName={0}&quot; // for Active Directory you need this&lt;br/&gt;
		grails.plugins.springsecurity.ldap.useRememberMe = false&lt;br/&gt;
		grails.plugins.springsecurity.ldap.authorities.ignorePartialResultException = true // typically needed for Active Directory&lt;br/&gt;
		grails.plugins.springsecurity.ldap.authorities.retrieveDatabaseRoles = true&lt;/p&gt;</description>
                <environment>Ubuntu 10.10 server, JDK 1.6, Oracle XE db, Windows 2000 Active Directory, Grails 1.3.7 spring-security-core1.2.1, spring-security-ldap1.0.5   &lt;br/&gt;
</environment>
            <key id="40365">GRAILSPLUGINS-2971</key>
            <summary>Users can authenticate with the password defined in the SysAuthUser.password column even though LDAP authentication is used</summary>
                <type id="1" iconUrl="http://jira.grails.org/images/icons/bug.gif">Bug</type>
                                <priority id="3" iconUrl="http://jira.grails.org/images/icons/priority_major.gif">Major</priority>
                    <status id="1" iconUrl="http://jira.grails.org/images/icons/status_open.gif">Open</status>
                    <resolution id="-1">Unresolved</resolution>
                                <assignee username="burtbeckwith">Burt Beckwith</assignee>
                                <reporter username="scai_andre">Andre Pietsch</reporter>
                        <labels>
                    </labels>
                <created>Wed, 14 Sep 2011 08:45:44 -0700</created>
                <updated>Wed, 14 Sep 2011 08:45:44 -0700</updated>
                                    <version>Grails-Spring-Security-LDAP 1.0</version>
                                                <component>Grails-Spring-Security-LDAP</component>
                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                                                            <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                                                        <customfield id="customfield_10210" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                                                                    </customfields>
    </item>

<item>
            <title>[GRAILSPLUGINS-2970] Facing Problem while installing security ldap plugin</title>
                <link>http://jira.grails.org/browse/GRAILSPLUGINS-2970</link>
                <project id="10021" key="GRAILSPLUGINS">Grails Plugins</project>
                        <description>&lt;p&gt;I am trying to use Spring ldap security feature, howevel when i am running the grails compile command, grails tries to downlaod the dependencies, but it gets hanged after the statement;&lt;/p&gt;

&lt;p&gt;Downloading: &lt;a href=&quot;http://repository.springsource.com/maven/bundles/release/org/springframework/ldap/org.springframework.ldap/1.3.0.RELEASE/org.springframework.ldap-1.3.0.RELEASE.pom&quot;&gt;http://repository.springsource.com/maven/bundles/release/org/springframework/ldap/org.springframework.ldap/1.3.0.RELEASE/org.springframework.ldap-1.3.0.RELEASE.pom&lt;/a&gt; ...&lt;br/&gt;
Download complete.&lt;br/&gt;
Downloading: &lt;a href=&quot;http://repository.springsource.com/maven/bundles/release/org/springframework/ldap/org.springframework.ldap/1.3.0.RELEASE/org.springframework.ldap-1.3.0.RELEASE.pom.sha1&quot;&gt;http://repository.springsource.com/maven/bundles/release/org/springframework/ldap/org.springframework.ldap/1.3.0.RELEASE/org.springframework.ldap-1.3.0.RELEASE.pom.sha1&lt;/a&gt; ...&lt;br/&gt;
Download complete.&lt;/p&gt;

&lt;p&gt;note that i am working in secure zone so i am providing the proxy settings for the grails.&lt;/p&gt;

&lt;p&gt;No operation happens after that.&lt;/p&gt;

&lt;p&gt;Can you please let me know what is the issue?&lt;/p&gt;</description>
                <environment>Linux</environment>
            <key id="40356">GRAILSPLUGINS-2970</key>
            <summary>Facing Problem while installing security ldap plugin</summary>
                <type id="1" iconUrl="http://jira.grails.org/images/icons/bug.gif">Bug</type>
                                <priority id="3" iconUrl="http://jira.grails.org/images/icons/priority_major.gif">Major</priority>
                    <status id="1" iconUrl="http://jira.grails.org/images/icons/status_open.gif">Open</status>
                    <resolution id="-1">Unresolved</resolution>
                                <assignee username="burtbeckwith">Burt Beckwith</assignee>
                                <reporter username="neerav">Neerav S Vadodaria</reporter>
                        <labels>
                    </labels>
                <created>Tue, 13 Sep 2011 09:08:58 -0700</created>
                <updated>Tue, 13 Sep 2011 09:08:58 -0700</updated>
                                    <version>Grails-Spring-Security-LDAP 1.0</version>
                                                <component>Grails-Spring-Security-LDAP</component>
                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                                                            <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                                                        <customfield id="customfield_10210" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                                                                    </customfields>
    </item>

<item>
            <title>[GRAILSPLUGINS-2969] sharding plugin - &quot;ShardingDS.groovy: 15: Can&apos;t have an abstract method in a non-abstract class&quot;</title>
                <link>http://jira.grails.org/browse/GRAILSPLUGINS-2969</link>
                <project id="10021" key="GRAILSPLUGINS">Grails Plugins</project>
                        <description>&lt;p&gt;Install (as described in &lt;a href=&quot;http://jeffrick.com/2010/07/13/a-grails-plugin-for-sharding/&quot;&gt;http://jeffrick.com/2010/07/13/a-grails-plugin-for-sharding/&lt;/a&gt;) on console:&lt;/p&gt;

&lt;p&gt;1) grails create-app ShardingExample&lt;br/&gt;
2) cd ShardingExample&lt;br/&gt;
3) grails install-plugin sharding&lt;/p&gt;

&lt;p&gt;than set up first domain class:&lt;br/&gt;
4) grails create-domain-class UserIndex&lt;/p&gt;

&lt;p&gt;in this step the error occours:&lt;/p&gt;

&lt;p&gt;C:\Dokumente und Einstellungen\soenkex\.grails\1.3.7\projects\ShardingExample\plugins\sharding-0.5\src\groovy\com\jeffrick\grails\plugin\sharding\ShardingDS.groovy: 15: Can&apos;t have an abstract method in a non-abstract class. The class &apos;com.je&lt;br/&gt;
ffrick.grails.plugin.sharding.ShardingDS&apos; must be declared abstract or the method &apos;java.util.logging.Logger getParentLogger()&apos; must be implemented.&lt;br/&gt;
 @ line 15, column 1.&lt;br/&gt;
   class ShardingDS extends AbstractRoutingDataSource implements ApplicationContextAware {&lt;br/&gt;
   ^&lt;br/&gt;
1 error&lt;br/&gt;
        at org.codehaus.groovy.control.ErrorCollector.failIfErrors(ErrorCollector.java:302)&lt;br/&gt;
        at org.codehaus.groovy.control.CompilationUnit.applyToPrimaryClassNodes(CompilationUnit.java:969)&lt;br/&gt;
        at org.codehaus.groovy.control.CompilationUnit.doPhaseOperation(CompilationUnit.java:519)&lt;br/&gt;
        at org.codehaus.groovy.control.CompilationUnit.processPhaseOperations(CompilationUnit.java:497)&lt;br/&gt;
       (....)&lt;/p&gt;

&lt;p&gt;Thanks!&lt;br/&gt;
-Soenke&lt;/p&gt;</description>
                <environment>Win XP, grails 1.3.7, grails-sharding 0.5</environment>
            <key id="40272">GRAILSPLUGINS-2969</key>
            <summary>sharding plugin - &quot;ShardingDS.groovy: 15: Can&apos;t have an abstract method in a non-abstract class&quot;</summary>
                <type id="1" iconUrl="http://jira.grails.org/images/icons/bug.gif">Bug</type>
                                <priority id="3" iconUrl="http://jira.grails.org/images/icons/priority_major.gif">Major</priority>
                    <status id="1" iconUrl="http://jira.grails.org/images/icons/status_open.gif">Open</status>
                    <resolution id="-1">Unresolved</resolution>
                                <assignee username="graemerocher">Graeme Rocher</assignee>
                                <reporter username="soenkex">Soenke X</reporter>
                        <labels>
                    </labels>
                <created>Fri, 2 Sep 2011 02:50:20 -0700</created>
                <updated>Fri, 2 Sep 2011 02:50:20 -0700</updated>
                                                                            <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                                                            <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                                                        <customfield id="customfield_10210" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                                                                    </customfields>
    </item>

<item>
            <title>[GRAILSPLUGINS-2968] Authentication failures because of duplicate encoding of password when we use Spring-security-ui with spring-security-core-1.2.1</title>
                <link>http://jira.grails.org/browse/GRAILSPLUGINS-2968</link>
                <project id="10021" key="GRAILSPLUGINS">Grails Plugins</project>
                        <description>&lt;p&gt;The spring security manual, &lt;a href=&quot;http://grails-plugins.github.com/grails-spring-security-core/docs/manual/guide/single.html#12.2%20Salted%20Passwords&quot;&gt;http://grails-plugins.github.com/grails-spring-security-core/docs/manual/guide/single.html#12.2%20Salted%20Passwords&lt;/a&gt;, has a note giving this info.&lt;/p&gt;

&lt;p&gt;&quot;If you are encoding the password in the User domain class (using beforeInsert and encodePassword) then don&apos;t call springSecurityService.encodePassword() in your controller since you&apos;ll double-encrypt the password and users won&apos;t be able to log in. It&apos;s best to encapsulate the password handling logic in the domain class. &quot;&lt;/p&gt;

&lt;p&gt;However,the UserController.groovy file in spring-security-ui plugin encodes the password before passing it to User.groovy of Spring-security-core plugin. This leads to authentication failures.&lt;/p&gt;

&lt;p&gt;The solution is to remove encoding from Usercontroller.groovy and include Salt in User.groovy of spring-security-core by default and tag it to username.&lt;/p&gt;

&lt;p&gt;Patch:&lt;/p&gt;

&lt;p&gt;UserController.groovy:&lt;/p&gt;

&lt;p&gt;/* Copyright 2009-2010 the original author or authors.&lt;br/&gt;
 *&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);&lt;/li&gt;
	&lt;li&gt;you may not use this file except in compliance with the License.&lt;/li&gt;
	&lt;li&gt;You may obtain a copy of the License at&lt;br/&gt;
 *&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;http://www.apache.org/licenses/LICENSE-2.0&quot;&gt;http://www.apache.org/licenses/LICENSE-2.0&lt;/a&gt;&lt;br/&gt;
 *&lt;/li&gt;
	&lt;li&gt;Unless required by applicable law or agreed to in writing, software&lt;/li&gt;
	&lt;li&gt;distributed under the License is distributed on an &quot;AS IS&quot; BASIS,&lt;/li&gt;
	&lt;li&gt;WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.&lt;/li&gt;
	&lt;li&gt;See the License for the specific language governing permissions and&lt;/li&gt;
	&lt;li&gt;limitations under the License.&lt;br/&gt;
 */&lt;br/&gt;
package grails.plugins.springsecurity.ui&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;import grails.plugins.springsecurity.ui.AbstractS2UiController&lt;/p&gt;

&lt;p&gt;import grails.converters.JSON&lt;/p&gt;

&lt;p&gt;//import org.codehaus.groovy.grails.plugins.springsecurity.NullSaltSource&lt;br/&gt;
import org.springframework.dao.DataIntegrityViolationException&lt;/p&gt;

&lt;p&gt;/**&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;@author &amp;lt;a href=&apos;mailto:burt@burtbeckwith.com&apos;&amp;gt;Burt Beckwith&amp;lt;/a&amp;gt;&lt;br/&gt;
 */&lt;br/&gt;
class UserController extends AbstractS2UiController {&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;	def userCache&lt;/p&gt;

&lt;p&gt;	def create = {
		def user = lookupUserClass().newInstance(params)
		[user: user, authorityList: sortedRoles()]
	}&lt;/p&gt;

&lt;p&gt;	def save = {&lt;br/&gt;
		def user = lookupUserClass().newInstance(params)&lt;br/&gt;
		if (params.password) {
			user.password = params.password
		}&lt;br/&gt;
		if (!user.save(flush: true)) {
			render view: &apos;create&apos;, model: [user: user, authorityList: sortedRoles()]
			return
		}&lt;br/&gt;
&lt;br/&gt;
		addRoles(user)&lt;br/&gt;
		flash.message = &quot;${message(code: &apos;default.created.message&apos;, args: [message(code: &apos;user.label&apos;, default: &apos;User&apos;), user.id])}&quot;&lt;br/&gt;
		redirect action: edit, id: user.id&lt;br/&gt;
	}&lt;br/&gt;
&lt;br/&gt;
	def edit = {
		def user = params.username ? lookupUserClass().findByUsername(params.username) : null
		if (!user) user = findById()
		if (!user) return

		return buildUserModel(user)
	}&lt;br/&gt;
&lt;br/&gt;
	def update = {&lt;br/&gt;
		def user = findById()&lt;br/&gt;
		if (!user) return&lt;br/&gt;
		if (!versionCheck(&apos;user.label&apos;, &apos;User&apos;, user, &lt;span class=&quot;error&quot;&gt;&amp;#91;user: user&amp;#93;&lt;/span&gt;)) {
			return
		}&lt;br/&gt;
&lt;br/&gt;
		def oldPassword = user.password&lt;br/&gt;
		user.properties = params&lt;br/&gt;
		if (params.password &amp;amp;&amp;amp; !params.password.equals(oldPassword)) {			user.password = params.password		}	}&lt;/p&gt;

&lt;p&gt;		if (!user.save()) {
			render view: &apos;edit&apos;, model: buildUserModel(user)
			return
		}&lt;/p&gt;

&lt;p&gt;		lookupUserRoleClass().removeAll user&lt;br/&gt;
		addRoles user&lt;br/&gt;
		userCache.removeUserFromCache user.username&lt;br/&gt;
		flash.message = &quot;${message(code: &apos;default.updated.message&apos;, args: [message(code: &apos;user.label&apos;, default: &apos;User&apos;), user.id])}&quot;&lt;br/&gt;
		redirect action: edit, id: user.id&lt;br/&gt;
	}&lt;/p&gt;

&lt;p&gt;	def delete = {&lt;br/&gt;
		def user = findById()&lt;br/&gt;
		if (!user) return&lt;/p&gt;

&lt;p&gt;		try {&lt;br/&gt;
			lookupUserRoleClass().removeAll user&lt;br/&gt;
			user.delete flush: true&lt;br/&gt;
			userCache.removeUserFromCache user.username&lt;br/&gt;
			flash.message = &quot;${message(code: &apos;default.deleted.message&apos;, args: [message(code: &apos;user.label&apos;, default: &apos;User&apos;), params.id])}&quot;&lt;br/&gt;
			redirect action: search&lt;br/&gt;
		}&lt;br/&gt;
		catch (DataIntegrityViolationException e) {&lt;br/&gt;
			flash.error = &quot;${message(code: &apos;default.not.deleted.message&apos;, args: [message(code: &apos;user.label&apos;, default: &apos;User&apos;), params.id])}&quot;&lt;br/&gt;
			redirect action: edit, id: params.id&lt;br/&gt;
		}&lt;br/&gt;
	}&lt;/p&gt;

&lt;p&gt;	def search = {
		[enabled: 0, accountExpired: 0, accountLocked: 0, passwordExpired: 0]
	}&lt;/p&gt;

&lt;p&gt;	def userSearch = {&lt;/p&gt;

&lt;p&gt;		boolean useOffset = params.containsKey(&apos;offset&apos;)&lt;br/&gt;
		setIfMissing &apos;max&apos;, 10, 100&lt;br/&gt;
		setIfMissing &apos;offset&apos;, 0&lt;/p&gt;

&lt;p&gt;		def hql = new StringBuilder(&apos;FROM &apos; + lookupUserClassName() + &apos; u WHERE 1=1 &apos;)&lt;br/&gt;
		def queryParams = &lt;span class=&quot;error&quot;&gt;&amp;#91;:&amp;#93;&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;		for (name in &lt;span class=&quot;error&quot;&gt;&amp;#91;&amp;#39;username&amp;#39;&amp;#93;&lt;/span&gt;) {&lt;br/&gt;
			if (params&lt;span class=&quot;error&quot;&gt;&amp;#91;name&amp;#93;&lt;/span&gt;) {
				hql.append &quot; AND LOWER(u.$name) LIKE :$name&quot;
				queryParams[name] = params[name].toLowerCase() + &apos;%&apos;
			}&lt;br/&gt;
		}&lt;/p&gt;

&lt;p&gt;		for (name in &lt;span class=&quot;error&quot;&gt;&amp;#91;&amp;#39;enabled&amp;#39;, &amp;#39;accountExpired&amp;#39;, &amp;#39;accountLocked&amp;#39;, &amp;#39;passwordExpired&amp;#39;&amp;#93;&lt;/span&gt;) {&lt;br/&gt;
			int value = params.int(name)&lt;br/&gt;
			if (value) {
				hql.append &quot; AND u.$name=:$name&quot;
				queryParams[name] = value == 1
			}&lt;br/&gt;
		}&lt;/p&gt;

&lt;p&gt;		int totalCount = lookupUserClass().executeQuery(&quot;SELECT COUNT(DISTINCT u) $hql&quot;, queryParams)&lt;span class=&quot;error&quot;&gt;&amp;#91;0&amp;#93;&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;		int max = params.int(&apos;max&apos;)&lt;br/&gt;
		int offset = params.int(&apos;offset&apos;)&lt;/p&gt;

&lt;p&gt;		String orderBy = &apos;&apos;&lt;br/&gt;
		if (params.sort) {&lt;br/&gt;
			orderBy = &quot; ORDER BY u.$params.sort ${params.order ?: &apos;ASC&apos;}&quot;&lt;br/&gt;
		}&lt;/p&gt;

&lt;p&gt;		def results = lookupUserClass().executeQuery(&lt;br/&gt;
				&quot;SELECT DISTINCT u $hql $orderBy&quot;,&lt;br/&gt;
				queryParams, &lt;span class=&quot;error&quot;&gt;&amp;#91;max: max, offset: offset&amp;#93;&lt;/span&gt;)&lt;br/&gt;
		def model = &lt;span class=&quot;error&quot;&gt;&amp;#91;results: results, totalCount: totalCount, searched: true&amp;#93;&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;		// add query params to model for paging&lt;br/&gt;
		for (name in [&apos;username&apos;, &apos;enabled&apos;, &apos;accountExpired&apos;, &apos;accountLocked&apos;,&lt;br/&gt;
		              &apos;passwordExpired&apos;, &apos;sort&apos;, &apos;order&apos;]) {
		 	model[name] = params[name]
		}&lt;/p&gt;

&lt;p&gt;		render view: &apos;search&apos;, model: model&lt;br/&gt;
	}&lt;/p&gt;

&lt;p&gt;	/**&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;Ajax call used by autocomplete textfield.&lt;br/&gt;
	 */&lt;br/&gt;
	def ajaxUserSearch = {&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;		def jsonData = []&lt;/p&gt;

&lt;p&gt;		if (params.term?.length() &amp;gt; 2) {&lt;br/&gt;
			String username = params.term&lt;/p&gt;

&lt;p&gt;			setIfMissing &apos;max&apos;, 10, 100&lt;/p&gt;

&lt;p&gt;			def results = lookupUserClass().executeQuery(&lt;br/&gt;
					&quot;SELECT DISTINCT u.username &quot; +&lt;br/&gt;
					&quot;FROM ${lookupUserClassName()} u &quot; +&lt;br/&gt;
					&quot;WHERE LOWER(u.username) LIKE :name &quot; +&lt;br/&gt;
					&quot;ORDER BY u.username&quot;,&lt;br/&gt;
					&lt;span class=&quot;error&quot;&gt;&amp;#91;name: &amp;quot;${username.toLowerCase()}%&amp;quot;&amp;#93;&lt;/span&gt;,&lt;br/&gt;
					&lt;span class=&quot;error&quot;&gt;&amp;#91;max: params.max&amp;#93;&lt;/span&gt;)&lt;/p&gt;

&lt;p&gt;			for (result in results) {
				jsonData &amp;lt;&amp;lt; [value: result]
			}&lt;br/&gt;
		}&lt;/p&gt;

&lt;p&gt;		render text: jsonData as JSON, contentType: &apos;text/plain&apos;&lt;br/&gt;
	}&lt;/p&gt;

&lt;p&gt;	protected void addRoles(user) {&lt;br/&gt;
		for (String key in params.keySet()) {&lt;br/&gt;
			if (key.contains(&apos;ROLE&apos;) &amp;amp;&amp;amp; &apos;on&apos; == params.get(key)) {
				lookupUserRoleClass().create user, lookupRoleClass().findByAuthority(key), true
			}&lt;br/&gt;
		}&lt;br/&gt;
	}&lt;/p&gt;

&lt;p&gt;	protected Map buildUserModel(user) {&lt;/p&gt;

&lt;p&gt;		List roles = sortedRoles()&lt;br/&gt;
		Set userRoleNames = user.authorities*.authority&lt;br/&gt;
		def granted = &lt;span class=&quot;error&quot;&gt;&amp;#91;:&amp;#93;&lt;/span&gt;&lt;br/&gt;
		def notGranted = &lt;span class=&quot;error&quot;&gt;&amp;#91;:&amp;#93;&lt;/span&gt;&lt;br/&gt;
		for (role in roles) {&lt;br/&gt;
			if (userRoleNames.contains(role.authority)) {
				granted[(role)] = userRoleNames.contains(role.authority)
			}&lt;br/&gt;
			else {
				notGranted[(role)] = userRoleNames.contains(role.authority)
			}&lt;br/&gt;
		}&lt;/p&gt;

&lt;p&gt;		return &lt;span class=&quot;error&quot;&gt;&amp;#91;user: user, roleMap: granted + notGranted&amp;#93;&lt;/span&gt;&lt;br/&gt;
	}&lt;/p&gt;

&lt;p&gt;	protected findById() {&lt;br/&gt;
		def user = lookupUserClass().get(params.id)&lt;br/&gt;
		if (!user) {&lt;br/&gt;
			flash.message = &quot;${message(code: &apos;default.not.found.message&apos;, args: [message(code: &apos;user.label&apos;, default: &apos;User&apos;), params.id])}&quot;&lt;br/&gt;
			redirect action: search&lt;br/&gt;
		}&lt;/p&gt;

&lt;p&gt;		user&lt;br/&gt;
	}&lt;/p&gt;

&lt;p&gt;	protected List sortedRoles() {&lt;br/&gt;
		lookupRoleClass().list().sort { it.authority }&lt;br/&gt;
	}&lt;br/&gt;
}&lt;/p&gt;



&lt;p&gt;User.groovy(Domain class of spring-security-core) --&amp;gt; Change this function:&lt;/p&gt;

&lt;p&gt;protected void encodePassword() {&lt;br/&gt;
		password = springSecurityService.encodePassword(password,username)&lt;br/&gt;
}&lt;/p&gt;

&lt;p&gt;Config.groovy --&amp;gt; Add this line also by default&lt;/p&gt;

&lt;p&gt;grails.plugins.springsecurity.dao.reflectionSaltSourceProperty = &apos;username&apos;&lt;/p&gt;</description>
                <environment>Not dependent on OS/Software</environment>
            <key id="40223">GRAILSPLUGINS-2968</key>
            <summary>Authentication failures because of duplicate encoding of password when we use Spring-security-ui with spring-security-core-1.2.1</summary>
                <type id="1" iconUrl="http://jira.grails.org/images/icons/bug.gif">Bug</type>
                                <priority id="3" iconUrl="http://jira.grails.org/images/icons/priority_major.gif">Major</priority>
                    <status id="6" iconUrl="http://jira.grails.org/images/icons/status_closed.gif">Closed</status>
                    <resolution id="3">Duplicate</resolution>
                                <assignee username="burtbeckwith">Burt Beckwith</assignee>
                                <reporter username="arunkytg">Arun Kumar Yathiraj</reporter>
                        <labels>
                        <label>Spring</label>
                        <label>plugin</label>
                        <label>security</label>
                    </labels>
                <created>Fri, 26 Aug 2011 01:45:21 -0700</created>
                <updated>Fri, 26 Aug 2011 02:27:16 -0700</updated>
                    <resolved>Fri, 26 Aug 2011 02:27:16 -0700</resolved>
                            <version>Grails-Spring-Security-UI 0.1.1</version>
                <version>Grails-Spring-Security-UI 0.1.2</version>
                                                <component>Grails-Spring-Security-Core</component>
                <component>Grails-Spring-Security-UI</component>
                        <due></due>
                    <votes>1</votes>
                        <watches>1</watches>
                                                    <comments>
                    <comment id="66070" author="burtbeckwith" created="Fri, 26 Aug 2011 02:27:16 -0700"  >&lt;p&gt;Duplicate of &lt;a href=&quot;http://jira.grails.org/browse/GPSPRINGSECURITYUI-27&quot; title=&quot;UserController inconsistent with Spring Security Core 1.2 user domain logic&quot;&gt;&lt;del&gt;GPSPRINGSECURITYUI-27&lt;/del&gt;&lt;/a&gt;&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                                                        <customfield id="customfield_10210" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                            <customfield id="customfield_10001" key="com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes">
                <customfieldname>Patch Submitted</customfieldname>
                <customfieldvalues>
                        <customfieldvalue key="10000"><![CDATA[Yes]]></customfieldvalue>
    
                </customfieldvalues>
            </customfield>
                                                                                                                                </customfields>
    </item>

<item>
            <title>[GRAILSPLUGINS-2967]  An error occured installing the plugin [shiro-1.1.3]: Unable to delete</title>
                <link>http://jira.grails.org/browse/GRAILSPLUGINS-2967</link>
                <project id="10021" key="GRAILSPLUGINS">Grails Plugins</project>
                        <description>&lt;p&gt;grails&amp;gt; install-plugin shiro&lt;/p&gt;
&lt;table class=&apos;confluenceTable&apos;&gt;&lt;tbody&gt;
&lt;tr&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; Resolving plugin JAR dependencies..&lt;br/&gt;
delete logs...&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; Plugin installed.&lt;br/&gt;
grails&amp;gt; compile --staktrace&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; Error An error occured installing the plugin &lt;span class=&quot;error&quot;&gt;&amp;#91;shiro-1.1.3&amp;#93;&lt;/span&gt;: Unable to delete f&lt;br/&gt;
ile D:\TZProfile\.grails\2.0.0.M1\projects\Vote\plugins\shiro-1.1.3\lib\shiro-co&lt;br/&gt;
re-1.1.0.jar&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=&apos;confluenceTd&apos;&gt; Error Error running script compile --staktrace: org.codehaus.groovy.grails.cli&lt;br/&gt;
.ScriptExitException (Use --stacktrace to see the full trace)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;</description>
                <environment>shiro-1.1.3 grails2.0.0.M1</environment>
            <key id="40162">GRAILSPLUGINS-2967</key>
            <summary> An error occured installing the plugin [shiro-1.1.3]: Unable to delete</summary>
                <type id="1" iconUrl="http://jira.grails.org/images/icons/bug.gif">Bug</type>
                                <priority id="3" iconUrl="http://jira.grails.org/images/icons/priority_major.gif">Major</priority>
                    <status id="6" iconUrl="http://jira.grails.org/images/icons/status_closed.gif">Closed</status>
                    <resolution id="6">Not A Bug</resolution>
                                <assignee username="-1">Unassigned</assignee>
                                <reporter username="atian25">tz</reporter>
                        <labels>
                        <label>grails</label>
                        <label>shiro</label>
                    </labels>
                <created>Thu, 18 Aug 2011 21:35:28 -0700</created>
                <updated>Thu, 18 Aug 2011 22:25:08 -0700</updated>
                    <resolved>Thu, 18 Aug 2011 22:25:08 -0700</resolved>
                            <version>Grails-Shiro 1.1.1</version>
                                                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                                                    <comments>
                    <comment id="65874" author="burtbeckwith" created="Thu, 18 Aug 2011 22:25:08 -0700"  >&lt;p&gt;Looks like simple Windows jar locking to me - it&apos;s probably locked by your IDE. Use a file unlocker utility or reboot and you&apos;ll be able to manually delete the file and directory&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                                                        <customfield id="customfield_10210" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                                                                    </customfields>
    </item>
</channel>
</rss>
