<!--
RSS generated by JIRA (4.4#649-r158309) at Sat May 25 12:19:08 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+status+%3D+Resolved+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+status+%3D+Resolved+ORDER+BY+priority+DESC</link>
        <description>An XML representation of a search request</description>
                <language>en-us</language>
                        <issue start="0" end="3" total="3"/>
                <build-info>
            <version>4.4</version>
            <build-number>649</build-number>
            <build-date>25-07-2011</build-date>
        </build-info>
<item>
            <title>[CLJ-1188] Public Java API</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-1188</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;p&gt;Problem: Java consumers need an API into Clojure that does not drag in a ton of concrete implementation detail.&lt;/p&gt;

&lt;p&gt;Solution: Very small API class that allows looking up Vars (returning IFn), and reading data (as edn).  Uses Clojure logic where possible, e.g. Var.intern.&lt;/p&gt;

&lt;p&gt;Current patch: &lt;a href=&quot;http://dev.clojure.org/jira/browse/CLJ-1188&quot; title=&quot;Public Java API&quot;&gt;&lt;del&gt;CLJ-1188&lt;/del&gt;&lt;/a&gt;-via-var-intern.patch&lt;/p&gt;

&lt;p&gt;Also considered:&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;wrapper class (inconvenient for users, wrappers anathema in Clojure)&lt;/li&gt;
	&lt;li&gt;common superinterface for IFn and Deref (unnecessary, might bloat vtable)&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;See also &lt;a href=&quot;http://dev.clojure.org/display/design/Improvements+to+interop+from+Java&quot;&gt;http://dev.clojure.org/display/design/Improvements+to+interop+from+Java&lt;/a&gt;&lt;/p&gt;</description>
                <environment></environment>
            <key id="16116">CLJ-1188</key>
            <summary>Public Java API</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="5" iconUrl="http://dev.clojure.org/jira/images/icons/status_resolved.gif">Resolved</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="stu">Stuart Halloway</assignee>
                                <reporter username="stu">Stuart Halloway</reporter>
                        <labels>
                    </labels>
                <created>Sat, 30 Mar 2013 08:37:15 -0500</created>
                <updated>Fri, 12 Apr 2013 13:51:46 -0500</updated>
                    <resolved>Fri, 12 Apr 2013 13:51:46 -0500</resolved>
                                            <fixVersion>Release 1.6</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="30856" author="hiredman" created="Tue, 2 Apr 2013 11:34:02 -0500"  >&lt;p&gt;the attached patch would turn&lt;/p&gt;

&lt;div class=&quot;preformatted panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;preformattedContent panelContent&quot;&gt;
&lt;pre&gt;...
public static Var ENQUEUE = RT.var(&quot;greenmail.smtp&quot;,&quot;enqueue&quot;);
...
ENQUEUE.fn().invoke(userManager, state.getMessage());
...
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;in to something like&lt;/p&gt;

&lt;div class=&quot;preformatted panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;preformattedContent panelContent&quot;&gt;
&lt;pre&gt;...
public static VRef ENQUEUE = API.vref(&quot;greenmail.smtp/enqueue&quot;);
...
ENQUEUE.fn().invoke(userManager, state.getMessage());
...
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;what is the value of VRefs over using Vars directly?&lt;/p&gt;</comment>
                    <comment id="30859" author="hiredman" created="Tue, 2 Apr 2013 17:56:38 -0500"  >&lt;p&gt;using this from a java api, it looks like if the namespace the var is in is not loaded when you go to create a VRef it will return null, generally my java code that calls clojure looks something like&lt;/p&gt;

&lt;div class=&quot;preformatted panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;preformattedContent panelContent&quot;&gt;
&lt;pre&gt;public static Var FOO = RT.var(&quot;namespace&quot;, &quot;name&quot;);
public static NAMESPACE = Symbol.intern(&quot;namespace&quot;);
public static Var REQUIRE = RT.var(&quot;clojure&quot;, &quot;require&quot;);

static {
  REQUIRE.invoke(NAMESPACE);
}
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;can you tell me without checking the java/jvm spec if FOO is null? does the static init block run before or after static fields are init&apos;ed? returning null just seems like a bad idea.&lt;/p&gt;</comment>
                    <comment id="30864" author="stu" created="Wed, 3 Apr 2013 06:53:24 -0500"  >&lt;p&gt;Per discussion on the ticket and with Rich, the wrapper-free approach (Apr 3 patch) is preferred.&lt;/p&gt;</comment>
                    <comment id="30865" author="stu" created="Wed, 3 Apr 2013 07:03:50 -0500"  >&lt;p&gt;Hi Kevin,&lt;/p&gt;

&lt;p&gt;The purpose of not returning Vars is outlined in the &lt;a href=&quot;http://dev.clojure.org/display/design/Improvements+to+interop+from+Java&quot;&gt;design discussion&lt;/a&gt;.  That said, it is possible to return IFn, which does not drag in too much implementation detail (just a javadoc config tweak, see &lt;a href=&quot;http://dev.clojure.org/jira/browse/CLJ-1190&quot; title=&quot;Javadoc for public Java API&quot;&gt;CLJ-1190&lt;/a&gt;).  Today&apos;s patch returns IFn, which addresses the wrapper ickiness demonstrated by your code examples.&lt;/p&gt;

&lt;p&gt;Java static initializers run in lexical order, and I trust Java programmers to know Java. &lt;/p&gt;

&lt;p&gt;I can think of several options other than returning null when a var is not available, and they are all complecting, inconsistent with Clojure, or both.&lt;/p&gt;</comment>
                    <comment id="30866" author="hiredman" created="Wed, 3 Apr 2013 12:08:31 -0500"  >&lt;p&gt;Hey,&lt;/p&gt;

&lt;p&gt;Always returning the var is very consistent with clojure, it is what RT.var does. It is what the var lookups emitted by the compiler do. RT.var is most likely the point through which most java that calls clojure goes at the moment.&lt;/p&gt;

&lt;p&gt;As to &quot;hiding&quot; vars, how about creating a clojure.lang.ILink interface with both deref() and fn(), have Var implement it. The previous discussion I see linked all seems to presume hiding Var without discussion of why it should be hidden. What I see Rich saying is:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;So RT.var is the right idea. It would be nice to hide the Var class,  &lt;br/&gt;
but unfortunately we can&apos;t make ClojureAPI.var() return both IFn and  &lt;br/&gt;
IDeref without inventing a common subinterface. There are other  &lt;br/&gt;
similar details.&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;and&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;We will need an interface unifying IDeref and IFn for the return type  &lt;br/&gt;
of API.var()&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;It seems like Rich is suggesting that ILink or whatever should also bring in IFn, but I wonder if having a fn() that does the cast for you is an acceptable alternative to that.&lt;/p&gt;</comment>
                    <comment id="30938" author="richhickey" created="Fri, 12 Apr 2013 08:24:42 -0500"  >&lt;p&gt;The API should be called var, not fn, and should return IFn. Also, I really want the logic of RT.var (i.e. Var.intern) to be used, not this new logic. Please find another way to handle the string/symbol support.&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                    <attachment id="11932" name="CLJ-1188.patch" size="7178" author="stu" created="Sat, 30 Mar 2013 08:40:34 -0500" />
                    <attachment id="11954" name="CLJ-1188-via-var-intern.patch" size="7486" author="stu" created="Fri, 12 Apr 2013 11:51:59 -0500" />
                    <attachment id="11939" name="CLJ-1188-wrapper-free.patch" size="6010" author="stu" created="Wed, 3 Apr 2013 06:53:24 -0500" />
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                <customfield id="customfield_10002" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                <customfieldname>Approval</customfieldname>
                <customfieldvalues>
                        <customfieldvalue key="10007">Ok</customfieldvalue>

                </customfieldvalues>
            </customfield>
                                                                                    <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-1174] Website doc link for 1.4 api docs returns a 404</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-1174</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;p&gt;The API docs for Clojure 1.4 (&lt;a href=&quot;http://clojure.github.com/clojure/branch-clojure-1.4.0/index.html&quot;&gt;http://clojure.github.com/clojure/branch-clojure-1.4.0/index.html&lt;/a&gt;), linked to from &lt;a href=&quot;http://clojure.github.com/clojure/&quot;&gt;http://clojure.github.com/clojure/&lt;/a&gt;, returns a 404.&lt;/p&gt;

&lt;p&gt;I logged it under this category because I can&apos;t see anywhere else to log bugs about clojure.org.&lt;/p&gt;</description>
                <environment>All</environment>
            <key id="16054">CLJ-1174</key>
            <summary>Website doc link for 1.4 api docs returns a 404</summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</type>
                                <priority id="4" iconUrl="http://dev.clojure.org/jira/images/icons/priority_minor.gif">Minor</priority>
                    <status id="5" iconUrl="http://dev.clojure.org/jira/images/icons/status_resolved.gif">Resolved</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="tomfaulhaber">Tom Faulhaber</assignee>
                                <reporter username="edoloughlin">Ed O&apos;Loughlin</reporter>
                        <labels>
                    </labels>
                <created>Tue, 5 Mar 2013 05:50:53 -0600</created>
                <updated>Tue, 5 Mar 2013 20:29:46 -0600</updated>
                    <resolved>Tue, 5 Mar 2013 20:29:46 -0600</resolved>
                            <version>Release 1.4</version>
                                                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="30704" author="tomfaulhaber" created="Tue, 5 Mar 2013 20:29:46 -0600"  >&lt;p&gt;Fixed. Thanks for pointing this out.&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                                                                            <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[CLJ-999] Wrong link in gh-pages index (api-index.html)</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-999</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;p&gt;The api-index.html includes wrong links for the following:&lt;/p&gt;
&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;All entries for all listed as part of clojure.test.tap&lt;/li&gt;
	&lt;li&gt;All entries for all listed as part of clojure.test.junit&lt;/li&gt;
	&lt;li&gt;All entries for all listed as part of clojure.core.protocols&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;The links point to pages that do not exist. The problem is that the documentation for those entries is on a &quot;parent&quot; page, for example, the link clojure.core.protocols-api.html#clojure.core.protocols/internal-reduce should have been clojure.core-api.html#clojure.core.protocols/internal-reduce&lt;/p&gt;

&lt;p&gt;Not a huge bug for me, but you might want to get it fixed.&lt;/p&gt;

&lt;p&gt;And please give my huge thanks to whoever is in charge of the documentation, I&apos;m the developer behind Dash, a Mac OS X documentation browser, and I was in the process of creating a documentation set for Clojure, and because you guys have an index, you made my work 1000 times easier.&lt;/p&gt;</description>
                <environment></environment>
            <key id="15459">CLJ-999</key>
            <summary>Wrong link in gh-pages index (api-index.html)</summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</type>
                                <priority id="5" iconUrl="http://dev.clojure.org/jira/images/icons/priority_trivial.gif">Trivial</priority>
                    <status id="5" iconUrl="http://dev.clojure.org/jira/images/icons/status_resolved.gif">Resolved</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="tomfaulhaber">Tom Faulhaber</assignee>
                                <reporter username="bogdansrc">Bogdan Popescu</reporter>
                        <labels>
                        <label>docs</label>
                        <label>documentation</label>
                    </labels>
                <created>Fri, 18 May 2012 21:58:46 -0500</created>
                <updated>Mon, 20 May 2013 16:24:12 -0500</updated>
                    <resolved>Mon, 20 May 2013 16:18:25 -0500</resolved>
                            <version>Release 1.3</version>
                                                        <due></due>
                    <votes>0</votes>
                        <watches>1</watches>
                        <comments>
                    <comment id="30732" author="jafingerhut" created="Mon, 11 Mar 2013 15:01:12 -0500"  >&lt;p&gt;Is this fixed now?  Tom Faulhaber has regenerated the docs after the recent Clojure 1.5 release, and I think updated other things besides, so it might be.&lt;/p&gt;</comment>
                    <comment id="30734" author="tomfaulhaber" created="Mon, 11 Mar 2013 16:43:15 -0500"  >&lt;p&gt;Nope, not fixed.&lt;/p&gt;

&lt;p&gt;This one either slipped by me or came in right when I was changing jobs so didn&apos;t stick in my brain.&lt;/p&gt;

&lt;p&gt;I&apos;ll take a look now. Thanks for the report, Bogdan, and thanks for the bump, Andy to get it on my radar.&lt;/p&gt;</comment>
                    <comment id="31081" author="cldwalker" created="Fri, 10 May 2013 16:00:55 -0500"  >&lt;p&gt;Tom, I&apos;m happy to help if you need it. Could you document on a wiki page how autodoc is run here? I couldn&apos;t find such a page.&lt;/p&gt;</comment>
                    <comment id="31121" author="tomfaulhaber" created="Mon, 20 May 2013 16:18:25 -0500"  >&lt;p&gt;This is fixed with gh-pages commit 919143e (autodoc doesn&apos;t follow the regular Clojure release path since it&apos;s a website built off the source checkins).&lt;/p&gt;</comment>
                    <comment id="31122" author="tomfaulhaber" created="Mon, 20 May 2013 16:24:12 -0500"  >&lt;p&gt;Gabriel, Thanks for the offer. I fixed this one, but may take you up on it if more come up. &lt;/p&gt;

&lt;p&gt;There is currently no wiki page about the autodoc process but it&apos;s an excellent suggestion. I&apos;ll put it on my list to write something up. In the meantime source on the autodoc program itself is at &lt;a href=&quot;https://github.com/tomfaulhaber/autodoc&quot;&gt;https://github.com/tomfaulhaber/autodoc&lt;/a&gt; and a description of how it works is at &lt;a href=&quot;http://tomfaulhaber.github.io/autodoc&quot;&gt;http://tomfaulhaber.github.io/autodoc&lt;/a&gt;. Two caveats: (1) autodoc is currently undergoing a bunch of work (thus this bug fix) in preparation for a new release and (2) the documentation doesn&apos;t talk much about how it&apos;s used for documenting Clojure itself.&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </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="10000">None</customfieldvalue>

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