<!--
RSS generated by JIRA (4.4#649-r158309) at Wed May 22 07:16:28 CDT 2013

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://dev.clojure.org/jira/sr/jira.issueviews:searchrequest-xml/temp/SearchRequest.xml?jqlQuery=project+%3D+CLJ+AND+resolution+%3D+Unresolved+AND+assignee+%3D+cgrand+ORDER+BY+priority+DESC&tempMax=1000&field=key&field=summary
-->
<!-- If you wish to do custom client-side styling of RSS, uncomment this:
<?xml-stylesheet href="http://dev.clojure.org/jira/styles/jiraxml2html.xsl" type="text/xsl"?>
-->
<rss version="0.92">
    <channel>
        <title>Clojure JIRA</title>
        <link>http://dev.clojure.org/jira/secure/IssueNavigator.jspa?reset=true&amp;jqlQuery=project+%3D+CLJ+AND+resolution+%3D+Unresolved+AND+assignee+%3D+cgrand+ORDER+BY+priority+DESC</link>
        <description>An XML representation of a search request</description>
                <language>en-us</language>
                        <issue start="0" end="4" total="4"/>
                <build-info>
            <version>4.4</version>
            <build-number>649</build-number>
            <build-date>25-07-2011</build-date>
        </build-info>
<item>
            <title>[CLJ-326] add :as-of option to refer</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-326</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;p&gt;Discussed here: &lt;a href=&quot;http://groups.google.com/group/clojure-dev/msg/74af612909dcbe56&quot;&gt;http://groups.google.com/group/clojure-dev/msg/74af612909dcbe56&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;:as-of allows library authors to specify a known subset of vars to refer from clojure (or &lt;b&gt;any other library&lt;/b&gt; which would use :added metadata).&lt;/p&gt;

&lt;p&gt;(ns foo (:refer-clojure :as-of &quot;1.1&quot;)) is equivalent to (ns foo (:refer-clojure :only &lt;span class=&quot;error&quot;&gt;&amp;#91;public-documented-vars-which-already-existed-in-1.1&amp;#93;&lt;/span&gt;))&lt;/p&gt;</description>
                <environment></environment>
            <key id="13723">CLJ-326</key>
            <summary>add :as-of option to refer</summary>
                <type id="4" iconUrl="http://dev.clojure.org/jira/images/icons/improvement.gif">Enhancement</type>
                                        <status id="3" iconUrl="http://dev.clojure.org/jira/images/icons/status_inprogress.gif">In Progress</status>
                    <resolution id="-1">Unresolved</resolution>
                                <assignee username="cgrand">Christophe Grand</assignee>
                                <reporter username="-1">None</reporter>
                        <labels>
                    </labels>
                <created>Fri, 30 Apr 2010 02:49:00 -0500</created>
                <updated>Tue, 24 Aug 2010 10:19:00 -0500</updated>
                                                    <fixVersion>Approved Backlog</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="23803" author="importer" created="Tue, 24 Aug 2010 10:19:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/326&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/326&lt;/a&gt;&lt;br/&gt;
Attachments:&lt;br/&gt;
add-as-of-to-refer.patch - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/a8SumUvcOr37SmeJe5cbLA/download/a8SumUvcOr37SmeJe5cbLA&quot;&gt;https://www.assembla.com/spaces/clojure/documents/a8SumUvcOr37SmeJe5cbLA/download/a8SumUvcOr37SmeJe5cbLA&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="23804" author="importer" created="Tue, 24 Aug 2010 10:19:00 -0500"  >&lt;p&gt;cgrand said: [&lt;a href=&quot;file:a8SumUvcOr37SmeJe5cbLA&quot;&gt;file:a8SumUvcOr37SmeJe5cbLA&lt;/a&gt;]: requires application of #325&lt;/p&gt;</comment>
                    <comment id="23805" author="importer" created="Tue, 24 Aug 2010 10:19:00 -0500"  >&lt;p&gt;richhickey said: Do we still need this?&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                <customfield id="customfield_10002" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                <customfieldname>Approval</customfieldname>
                <customfieldvalues>
                        <customfieldvalue key="10013">Test</customfieldvalue>

                </customfieldvalues>
            </customfield>
                                                                                    <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[CLJ-457] lazy recursive definition giving incorrect results</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-457</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;p&gt;If you define a global data var in terms of a lazy sequence referring to that same var, you can get different results depending on the chunkiness of laziness of the functions being used to build the collection.&lt;/p&gt;

&lt;p&gt;Clojure&apos;s lazy sequences don&apos;t promise to support this, but they shouldn&apos;t return wrong answers. In the example given in &lt;a href=&quot;http://groups.google.com/group/clojure/browse_thread/thread/1c342fad8461602d&quot;&gt;http://groups.google.com/group/clojure/browse_thread/thread/1c342fad8461602d&lt;/a&gt; (and repeated below), Clojure should not return bad data. An error message would be good, and even an infinite loop would be more reasonable than the current behavior.&lt;/p&gt;

&lt;p&gt;(Similar issue reported here: &lt;a href=&quot;https://groups.google.com/d/topic/clojure/yD941fIxhyE/discussion&quot;&gt;https://groups.google.com/d/topic/clojure/yD941fIxhyE/discussion&lt;/a&gt;)&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 nums (drop 2 (range)))
(def primes (cons (first nums)
             (lazy-seq (-&amp;gt;&amp;gt;
               (&lt;span class=&quot;code-keyword&quot;&gt;rest&lt;/span&gt; nums)
               (remove
                 (fn [x]
                   (let [dividors (take-&lt;span class=&quot;code-keyword&quot;&gt;while&lt;/span&gt; #(&amp;lt;= (* % %) x)
primes)]
                     (println (str &lt;span class=&quot;code-quote&quot;&gt;&quot;primes = &quot;&lt;/span&gt; primes))
                     (some #(= 0 (rem x %)) dividors))))))))
(take 5 primes)

It prints out:
(primes = (2)
primes = (2)
primes = (2)
primes = (2)
primes = (2)
primes = (2)
primes = (2)
primes = (2)
primes = (2)
primes = (2)
primes = (2)
primes = (2)
primes = (2)
primes = (2)
primes = (2)
primes = (2)
primes = (2)
primes = (2)
primes = (2)
primes = (2)
primes = (2)
primes = (2)
primes = (2)
primes = (2)
primes = (2)
primes = (2)
primes = (2)
primes = (2)
primes = (2)
2 3 5 7 9)&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;</description>
                <environment></environment>
            <key id="13854">CLJ-457</key>
            <summary>lazy recursive definition giving incorrect results</summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</type>
                                <priority id="3" iconUrl="http://dev.clojure.org/jira/images/icons/priority_major.gif">Major</priority>
                    <status id="1" iconUrl="http://dev.clojure.org/jira/images/icons/status_open.gif">Open</status>
                    <resolution id="-1">Unresolved</resolution>
                                <assignee username="cgrand">Christophe Grand</assignee>
                                <reporter username="importer">Assembla Importer</reporter>
                        <labels>
                    </labels>
                <created>Wed, 13 Oct 2010 15:00:00 -0500</created>
                <updated>Mon, 3 Dec 2012 11:21:29 -0600</updated>
                                                    <fixVersion>Approved Backlog</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>4</watches>
                        <comments>
                    <comment id="24301" author="importer" created="Wed, 13 Oct 2010 15:00:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/457&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/457&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="26020" author="aaron" created="Fri, 10 Dec 2010 09:08:13 -0600"  >&lt;p&gt;Stu and Rich talked about making this an error, but it would break some existing code to do so. &lt;/p&gt;</comment>
                    <comment id="26038" author="richhickey" created="Fri, 17 Dec 2010 08:03:15 -0600"  >&lt;p&gt;Is there a specific question on this?&lt;/p&gt;</comment>
                    <comment id="26091" author="aaron" created="Wed, 5 Jan 2011 21:05:44 -0600"  >&lt;p&gt;Stu, you and I went over this but I can&apos;t remember exactly what the question was here.&lt;/p&gt;</comment>
                    <comment id="30076" author="cgrand" created="Wed, 28 Nov 2012 12:24:11 -0600"  >&lt;p&gt;Tentative patch attached.&lt;br/&gt;
Have you an example of existing code which is broken by such a patch (as mention by Aaron Bedra)? &lt;/p&gt;</comment>
                    <comment id="30107" author="richhickey" created="Fri, 30 Nov 2012 09:43:43 -0600"  >&lt;p&gt;The patch intends to do what? We have only a problem description and code. Please enumerate the plan rather than make us decipher the patch.&lt;/p&gt;

&lt;p&gt;As a first principle, I don&apos;t want Clojure to promise that such recursively defined values are possible.&lt;/p&gt;</comment>
                    <comment id="30108" author="cgrand" created="Fri, 30 Nov 2012 10:23:15 -0600"  >&lt;p&gt;The proposal here is to catch recursive seq realization (ie when computing the body of a lazy-seq attempts to access the same seq) and throw an exception.&lt;/p&gt;

&lt;p&gt;Currently when such a case happens, the recursive access to the seq returns nil. This results in incorrect code seemingly working but producing incorrect results or even incorrect code producing correct results out of luck (see &lt;a href=&quot;https://groups.google.com/d/topic/clojure/yD941fIxhyE/discussion&quot;&gt;https://groups.google.com/d/topic/clojure/yD941fIxhyE/discussion&lt;/a&gt; for such an example).&lt;/p&gt;

&lt;p&gt;So this patch moves around the modification to the LazySeq state (f, sv and s fields) before all potentially  recursive method call (.sval in the while of .seq and .invoke in .sval) so that, upon reentrance, the state of the LazySeq is coherent and able to convey the fact the seq is already being computed.&lt;/p&gt;

&lt;p&gt;Currently a recursive call may find f and sv cleared and concludes the computation is done and the result is in s despite s being unaffected yet.&lt;/p&gt;

&lt;p&gt;Currently:&lt;/p&gt;
&lt;table class=&apos;confluenceTable&apos;&gt;&lt;tbody&gt;
&lt;tr&gt;
&lt;th class=&apos;confluenceTh&apos;&gt;State&lt;/th&gt;
&lt;th class=&apos;confluenceTh&apos;&gt;f&lt;/th&gt;
&lt;th class=&apos;confluenceTh&apos;&gt;sv&lt;/th&gt;
&lt;th class=&apos;confluenceTh&apos;&gt;s&lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;Unrealized&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;not null&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;null&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;null&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;Realized&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;null&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;null&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;anything&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;Being realized/recursive call from fn.invoke&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;not null&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;null&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;null&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;Being realized/recursive call from ls.sval&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;null&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;null&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;null&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;Note that &quot;Being realized&quot; states overlap with Unrealized or Realized.&lt;br/&gt;
(NB: &quot;anything&quot; includes null)&lt;/p&gt;

&lt;p&gt;With the patch:&lt;/p&gt;
&lt;table class=&apos;confluenceTable&apos;&gt;&lt;tbody&gt;
&lt;tr&gt;
&lt;th class=&apos;confluenceTh&apos;&gt;State&lt;/th&gt;
&lt;th class=&apos;confluenceTh&apos;&gt;f&lt;/th&gt;
&lt;th class=&apos;confluenceTh&apos;&gt;sv&lt;/th&gt;
&lt;th class=&apos;confluenceTh&apos;&gt;s&lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;Unrealized&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;not null&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;null&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;null&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;Realized&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;null&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;null&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;anything but this&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;Being realized&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;null&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;null&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;this&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;

</comment>
                    <comment id="30115" author="jafingerhut" created="Fri, 30 Nov 2012 14:06:09 -0600"  >&lt;p&gt;That last comment, Christophe, goes a long way to explaining the idea to me, at least.  Any chance comments with similar content could be added as part of the patch?&lt;/p&gt;</comment>
                    <comment id="30161" author="cgrand" created="Mon, 3 Dec 2012 11:18:59 -0600"  >&lt;p&gt;New patch with a comment explaining the expected states.&lt;br/&gt;
Note: I tidied the states table up.&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;&lt;span class=&quot;code-comment&quot;&gt;// Before calling user code (f.invoke() in sval and, indirectly,
&lt;/span&gt;&lt;span class=&quot;code-comment&quot;&gt;// ((LazySeq)ls).sval() in seq -- and even RT.seq() in seq), ensure that 
&lt;/span&gt;&lt;span class=&quot;code-comment&quot;&gt;// the LazySeq state is in one of these states:
&lt;/span&gt;&lt;span class=&quot;code-comment&quot;&gt;//
&lt;/span&gt;&lt;span class=&quot;code-comment&quot;&gt;// State            f          sv
&lt;/span&gt;&lt;span class=&quot;code-comment&quot;&gt;// ================================
&lt;/span&gt;&lt;span class=&quot;code-comment&quot;&gt;// Unrealized       not &lt;span class=&quot;code-keyword&quot;&gt;null&lt;/span&gt;   &lt;span class=&quot;code-keyword&quot;&gt;null&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;code-comment&quot;&gt;// Realized         &lt;span class=&quot;code-keyword&quot;&gt;null&lt;/span&gt;       &lt;span class=&quot;code-keyword&quot;&gt;null&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;code-comment&quot;&gt;// Being realized   &lt;span class=&quot;code-keyword&quot;&gt;null&lt;/span&gt;       &lt;span class=&quot;code-keyword&quot;&gt;this&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;&lt;a href=&quot;http://dev.clojure.org/jira/browse/CLJ-1119&quot; title=&quot;inconsistent behavior of lazy-seq w/ macro &amp;amp; closure on excptions&quot;&gt;CLJ-1119&lt;/a&gt; is also fixed by this patch.&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                    <attachment id="11740" name="CLJ-457-2.diff" size="2925" author="cgrand" created="Mon, 3 Dec 2012 11:18:59 -0600" />
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                                                                            <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                            <customfield id="customfield_10000" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                <customfieldname>Patch</customfieldname>
                <customfieldvalues>
                        <customfieldvalue key="10002">Code and Test</customfieldvalue>

                </customfieldvalues>
            </customfield>
                                                                                        </customfields>
    </item>

<item>
            <title>[CLJ-1096] Make destrucring emit direct keyword lookups</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-1096</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;p&gt;Currently associative destructuring emits calls to get. The attached patch modify desctruture to emit direct keyword lookups when possible. &lt;/p&gt;

&lt;p&gt;Approved here &lt;a href=&quot;https://groups.google.com/d/msg/clojure-dev/MaYcHQck8VA/nauMus4mzPgJ&quot;&gt;https://groups.google.com/d/msg/clojure-dev/MaYcHQck8VA/nauMus4mzPgJ&lt;/a&gt;&lt;/p&gt;</description>
                <environment></environment>
            <key id="15801">CLJ-1096</key>
            <summary>Make destrucring emit direct keyword lookups</summary>
                <type id="4" iconUrl="http://dev.clojure.org/jira/images/icons/improvement.gif">Enhancement</type>
                                <priority id="3" iconUrl="http://dev.clojure.org/jira/images/icons/priority_major.gif">Major</priority>
                    <status id="1" iconUrl="http://dev.clojure.org/jira/images/icons/status_open.gif">Open</status>
                    <resolution id="-1">Unresolved</resolution>
                                <assignee username="cgrand">Christophe Grand</assignee>
                                <reporter username="cgrand">Christophe Grand</reporter>
                        <labels>
                    </labels>
                <created>Mon, 29 Oct 2012 08:05:45 -0500</created>
                <updated>Sat, 26 Jan 2013 08:15:49 -0600</updated>
                                    <version>Release 1.4</version>
                                                        <due></due>
                    <votes>0</votes>
                        <watches>2</watches>
                                <attachments>
                    <attachment id="11639" name="desctructure-keyword-lookup.diff" size="1586" author="cgrand" created="Mon, 29 Oct 2012 08:05:45 -0500" />
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                                                                            <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                            <customfield id="customfield_10000" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                <customfieldname>Patch</customfieldname>
                <customfieldvalues>
                        <customfieldvalue key="10001">Code</customfieldvalue>

                </customfieldvalues>
            </customfield>
                                                                                        </customfields>
    </item>

<item>
            <title>[CLJ-1160] reducers/mapcat ignores Reduced</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-1160</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;p&gt;The following code throws an exception:&lt;/p&gt;

&lt;p&gt;(-&amp;gt;&amp;gt; (concat (range 100) (lazy-seq (throw (Exception. &quot;Too eager&quot;))))&lt;br/&gt;
             (r/mapcat (juxt inc str))&lt;br/&gt;
             (r/take 5)&lt;br/&gt;
             (into []))&lt;/p&gt;

&lt;p&gt;This is because r/mapcat introduces an intermediate reduce which swallows the reduced value coming from r/take.&lt;/p&gt;</description>
                <environment></environment>
            <key id="16000">CLJ-1160</key>
            <summary>reducers/mapcat ignores Reduced</summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</type>
                                <priority id="3" iconUrl="http://dev.clojure.org/jira/images/icons/priority_major.gif">Major</priority>
                    <status id="1" iconUrl="http://dev.clojure.org/jira/images/icons/status_open.gif">Open</status>
                    <resolution id="-1">Unresolved</resolution>
                                <assignee username="cgrand">Christophe Grand</assignee>
                                <reporter username="cgrand">Christophe Grand</reporter>
                        <labels>
                    </labels>
                <created>Mon, 11 Feb 2013 08:38:36 -0600</created>
                <updated>Fri, 1 Mar 2013 09:40:09 -0600</updated>
                                    <version>Release 1.5</version>
                                <fixVersion>Release 1.6</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>2</watches>
                                <attachments>
                    <attachment id="11846" name="lazy-rmapcat.diff" size="1747" author="cgrand" created="Mon, 11 Feb 2013 08:38:36 -0600" />
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                                                                            <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                            <customfield id="customfield_10000" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                <customfieldname>Patch</customfieldname>
                <customfieldvalues>
                        <customfieldvalue key="10002">Code and Test</customfieldvalue>

                </customfieldvalues>
            </customfield>
                                                                                        </customfields>
    </item>
</channel>
</rss>