<!--
RSS generated by JIRA (4.4#649-r158309) at Thu May 23 19:36:15 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=labels+%3D+defrecord&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=labels+%3D+defrecord</link>
        <description>An XML representation of a search request</description>
                <language>en-us</language>
                        <issue start="0" end="1" total="1"/>
                <build-info>
            <version>4.4</version>
            <build-number>649</build-number>
            <build-date>25-07-2011</build-date>
        </build-info>
<item>
            <title>[CLJ-1132] For record type Rec,  (instance? Rec (map-&gt;Rec {...})) need not return true, though (instance? Rec (Rec. ...)) does.</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-1132</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;p&gt;    (defrecord Rec ...)&lt;/p&gt;

&lt;p&gt;    (instance? Rec (Rec. ...))        ;=&amp;gt; true&lt;br/&gt;
    (instance? Rec (map-&amp;gt;Rec {...}))  ;=&amp;gt; can be false  &lt;br/&gt;
&lt;br/&gt;
This occurs when the code is wrapped in a tomcat servlet by `lein ring&lt;br/&gt;
uberwar`, but &lt;b&gt;not&lt;/b&gt; when run at the REPL or under Jetty, say.&lt;br/&gt;
&lt;br/&gt;
Although produced under ring, this seems to me to be a general problem&lt;br/&gt;
with the map-&amp;gt; constructor, as (true? (instance? Rec (map-&amp;gt;Rec {...})))&lt;br/&gt;
should be an invariant, regardless of the environment or context.&lt;br/&gt;
The problem seems to arise in some aspect of the class loading process:&lt;/p&gt;

&lt;p&gt;    (.getClassLoader Rec)                    ;=&amp;gt; WebappClassLoader (delegate: false, repositories: /WEB-INF/classes/, parent: org.apache.catalina.loader.StandardClassLoader@790bc49d)&lt;br/&gt;
    (.getClassLoader (class (Rec. ...)))     ;=&amp;gt; WebappClassLoader (same as the previous line)&lt;br/&gt;
    (.getClassLoader (class (map-&amp;gt;Rec ...))) ;=&amp;gt; clojure.lang.DynamicClassLoader@2e7227a8&lt;/p&gt;

&lt;p&gt;The map-&amp;gt;Rec delegates to the create method, which seems to be where the problem lies.&lt;/p&gt;

&lt;p&gt;The record namespace is AOT compiled, properly I think/hope, and the requisite classes &lt;br/&gt;
imported as they should be.&lt;/p&gt;

&lt;p&gt;I have attached a minimal web app that reproduces the problem and shows&lt;br/&gt;
the configuration. As a sanity check, I have also created a trivial &lt;br/&gt;
workaround defrecord* that creates a clojure-native map constructor, &lt;br/&gt;
for which the problem does not occur. See the README.md in the tar &lt;br/&gt;
file for usage details, and the project.clj for my configuration.&lt;/p&gt;

&lt;p&gt;Again, I&apos;ve only been able to reproduce the problem under Tomcat,&lt;br/&gt;
not under Jetty or at the REPL.&lt;/p&gt;</description>
                <environment>Apache Tomcat/6.0.24 JVM/1.6.0_26-b03  Linux 2.6.32-279.el6.x86_64&lt;br/&gt;
&lt;br/&gt;
Clojure 1.4.0,  Ring 1.1.6, Compojure 1.1.3, Lein-Ring Plugin 0.7.5 (for lein ring uberwar)&lt;br/&gt;
</environment>
            <key id="15902">CLJ-1132</key>
            <summary>For record type Rec,  (instance? Rec (map-&gt;Rec {...})) need not return true, though (instance? Rec (Rec. ...)) does.</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="1" iconUrl="http://dev.clojure.org/jira/images/icons/status_open.gif">Open</status>
                    <resolution id="-1">Unresolved</resolution>
                                <assignee username="-1">Unassigned</assignee>
                                <reporter username="cg-at">Christopher Genovese</reporter>
                        <labels>
                        <label>constructor</label>
                        <label>defrecord</label>
                    </labels>
                <created>Tue, 18 Dec 2012 10:58:29 -0600</created>
                <updated>Tue, 18 Dec 2012 10:58:29 -0600</updated>
                                    <version>Release 1.4</version>
                                                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                                <attachments>
                    <attachment id="11766" name="recordbug.tgz" size="5373405" author="cg-at" created="Tue, 18 Dec 2012 10:58:29 -0600" />
                </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>
</channel>
</rss>