<!-- 
RSS generated by JIRA (9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66) at Thu Feb 08 09:03:16 UTC 2024

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 append 'field=key&field=summary' to the URL of your request.
-->
<rss version="0.92" >
<channel>
    <title>MongoDB Jira</title>
    <link>https://jira.mongodb.org</link>
    <description>This file is an XML representation of an issue</description>
    <language>en-us</language>    <build-info>
        <version>9.7.1</version>
        <build-number>970001</build-number>
        <build-date>13-04-2023</build-date>
    </build-info>


<item>
            <title>[JAVA-4913] PojoBuilderHelper#configureClassModelBuilder is causing different output</title>
                <link>https://jira.mongodb.org/browse/JAVA-4913</link>
                <project id="10006" key="JAVA">Java Driver</project>
                    <description>&lt;p&gt;Running this test code multiple times returns different results:&lt;/p&gt;



&lt;p&gt;&lt;tt&gt;&lt;sub&gt;package org.bson.codecs.pojo;&lt;/sub&gt;&lt;/tt&gt;&lt;/p&gt;

&lt;p&gt;&lt;tt&gt;&lt;sub&gt;import org.bson.codecs.pojo.annotations.BsonProperty;&lt;/sub&gt;&lt;/tt&gt;&lt;/p&gt;

&lt;p&gt;&lt;tt&gt;&lt;sub&gt;public class Test {&lt;/sub&gt;&lt;/tt&gt;&lt;/p&gt;

&lt;p&gt;&lt;tt&gt;&#160; &#160; &lt;sub&gt;public static final String TEST_ID = &quot;testId&quot;;&lt;/sub&gt;&lt;/tt&gt;&lt;br/&gt;
&lt;tt&gt;&#160; &#160; &lt;sub&gt;public static final String BATCH_ID = &quot;batchId&quot;;&lt;/sub&gt;&lt;/tt&gt;&lt;/p&gt;

&lt;p&gt;&lt;tt&gt;&#160; &#160; &lt;sub&gt;@BsonProperty(TEST_ID)&lt;/sub&gt;&lt;/tt&gt;&lt;br/&gt;
&lt;tt&gt;&#160; &#160; &lt;sub&gt;private String testId;&lt;/sub&gt;&lt;/tt&gt;&lt;/p&gt;

&lt;p&gt;&lt;tt&gt;&#160; &#160; &lt;sub&gt;@BsonProperty(BATCH_ID)&lt;/sub&gt;&lt;/tt&gt;&lt;br/&gt;
&lt;tt&gt;&#160; &#160; &lt;sub&gt;private String batchId;&lt;/sub&gt;&lt;/tt&gt;&lt;/p&gt;

&lt;p&gt;&lt;tt&gt;&#160; &#160; &lt;sub&gt;public Test(String testId, String batchId) {&lt;/sub&gt;&lt;/tt&gt;&lt;br/&gt;
&lt;tt&gt;&#160; &#160; &#160; &#160; &lt;sub&gt;this.testId = testId;&lt;/sub&gt;&lt;/tt&gt;&lt;br/&gt;
&lt;tt&gt;&#160; &#160; &#160; &#160; &lt;sub&gt;this.batchId = batchId;&lt;/sub&gt;&lt;/tt&gt;&lt;br/&gt;
&lt;tt&gt;&#160; &#160; &lt;sub&gt;}&lt;/sub&gt;&lt;/tt&gt;&lt;/p&gt;

&lt;p&gt;&lt;tt&gt;&#160; &#160; &lt;sub&gt;public String getTestId() {&lt;/sub&gt;&lt;/tt&gt;&lt;br/&gt;
&lt;tt&gt;&#160; &#160; &#160; &#160; &lt;sub&gt;return testId;&lt;/sub&gt;&lt;/tt&gt;&lt;br/&gt;
&lt;tt&gt;&#160; &#160; &lt;sub&gt;}&lt;/sub&gt;&lt;/tt&gt;&lt;/p&gt;

&lt;p&gt;&lt;tt&gt;&#160; &#160; &lt;sub&gt;public void setTestId(String testId) {&lt;/sub&gt;&lt;/tt&gt;&lt;br/&gt;
&lt;tt&gt;&#160; &#160; &#160; &#160; &lt;sub&gt;this.testId = testId;&lt;/sub&gt;&lt;/tt&gt;&lt;br/&gt;
&lt;tt&gt;&#160; &#160; &lt;sub&gt;}&lt;/sub&gt;&lt;/tt&gt;&lt;/p&gt;

&lt;p&gt;&lt;tt&gt;&#160; &#160; &lt;sub&gt;public boolean isTestId() {&lt;/sub&gt;&lt;/tt&gt;&lt;br/&gt;
&lt;tt&gt;&#160; &#160; &#160; &#160; &lt;sub&gt;return !testId.isEmpty();&lt;/sub&gt;&lt;/tt&gt;&lt;br/&gt;
&lt;tt&gt;&#160; &#160; &lt;sub&gt;}&lt;/sub&gt;&lt;/tt&gt;&lt;/p&gt;

&lt;p&gt;&lt;tt&gt;&#160; &#160; &lt;sub&gt;public String getBatchId() {&lt;/sub&gt;&lt;/tt&gt;&lt;br/&gt;
&lt;tt&gt;&#160; &#160; &#160; &#160; &lt;sub&gt;return batchId;&lt;/sub&gt;&lt;/tt&gt;&lt;br/&gt;
&lt;tt&gt;&#160; &#160; &lt;sub&gt;}&lt;/sub&gt;&lt;/tt&gt;&lt;/p&gt;

&lt;p&gt;&lt;tt&gt;&#160; &#160; &lt;sub&gt;public void setBatchId(String batchId) {&lt;/sub&gt;&lt;/tt&gt;&lt;br/&gt;
&lt;tt&gt;&#160; &#160; &#160; &#160; &lt;sub&gt;this.batchId = batchId;&lt;/sub&gt;&lt;/tt&gt;&lt;br/&gt;
&lt;tt&gt;&#160; &#160; &lt;sub&gt;}&lt;/sub&gt;&lt;/tt&gt;&lt;/p&gt;

&lt;p&gt;&lt;tt&gt;&#160; &#160; &lt;sub&gt;public boolean isBatchId() {&lt;/sub&gt;&lt;/tt&gt;&lt;br/&gt;
&lt;tt&gt;&#160; &#160; &#160; &#160; &lt;sub&gt;return !batchId.isEmpty();&lt;/sub&gt;&lt;/tt&gt;&lt;br/&gt;
&lt;tt&gt;&#160; &#160; &lt;sub&gt;}&lt;/sub&gt;&lt;/tt&gt;&lt;/p&gt;

&lt;p&gt;&lt;tt&gt;&#160; &#160; &lt;sub&gt;public static void main(String[] args) {&lt;/sub&gt;&lt;/tt&gt;&lt;br/&gt;
&lt;tt&gt;&#160; &#160; &#160; &#160; &#160; &#160; &lt;sub&gt;PropertyModelBuilder&amp;lt;?&amp;gt; property1 = ClassModel.builder(Test.class).getProperty(BATCH_ID);&lt;/sub&gt;&lt;/tt&gt;&lt;br/&gt;
&lt;tt&gt;&#160; &#160; &#160; &#160; &#160; &#160; &lt;sub&gt;PropertyModelBuilder&amp;lt;?&amp;gt; property2 = ClassModel.builder(Test.class).getProperty(TEST_ID);&lt;/sub&gt;&lt;/tt&gt;&lt;br/&gt;
&lt;tt&gt;&#160; &#160; &#160; &#160; &#160; &#160; &lt;sub&gt;System.out.println(((PropertyAccessorImpl) property1.getPropertyAccessor()).getPropertyMetadata().getError());&lt;/sub&gt;&lt;/tt&gt;&lt;br/&gt;
&lt;tt&gt;&#160; &#160; &#160; &#160; &#160; &#160; &lt;sub&gt;System.out.println(((PropertyAccessorImpl) property2.getPropertyAccessor()).getPropertyMetadata().getError());&lt;/sub&gt;&lt;/tt&gt;&lt;br/&gt;
&lt;tt&gt;&#160; &#160; &lt;sub&gt;}&lt;/sub&gt;&lt;/tt&gt;&lt;br/&gt;
&lt;tt&gt;&lt;sub&gt;}&lt;/sub&gt;&lt;/tt&gt;&lt;/p&gt;

&lt;p&gt;Results:{{{}&lt;br/&gt;
&lt;sub&gt;Property &apos;batchId&apos; in Test, has differing data types: TypeData{type=String} and TypeData{type=Boolean}.&lt;/sub&gt;&lt;br/&gt;
&lt;sub&gt;null&lt;/sub&gt;{}}}&lt;/p&gt;

&lt;p&gt;&#160;&lt;/p&gt;

&lt;p&gt;{{&lt;sub&gt;null&lt;/sub&gt;&lt;br/&gt;
&lt;sub&gt;Property &apos;testId&apos; in Test, has differing data types: TypeData{type=String} and TypeData{type=Boolean}.&lt;/sub&gt;}}&lt;/p&gt;

&lt;p&gt;&#160;&lt;/p&gt;

&lt;p&gt;{{&lt;sub&gt;Property &apos;batchId&apos; in Test, has differing data types: TypeData{type=String} and TypeData{type=Boolean}.&lt;/sub&gt;&lt;br/&gt;
&lt;sub&gt;Property &apos;testId&apos; in Test, has differing data types: TypeData{type=String} and TypeData{type=Boolean}.&lt;/sub&gt;}}&lt;/p&gt;

&lt;p&gt;&#160;&lt;/p&gt;

&lt;p&gt;{{&lt;sub&gt;null&lt;/sub&gt;&lt;br/&gt;
&lt;sub&gt;null&lt;/sub&gt;}}&lt;/p&gt;</description>
                <environment></environment>
        <key id="2293728">JAVA-4913</key>
            <summary>PojoBuilderHelper#configureClassModelBuilder is causing different output</summary>
                <type id="1" iconUrl="https://jira.mongodb.org/secure/viewavatar?size=xsmall&amp;avatarId=14703&amp;avatarType=issuetype">Bug</type>
                                            <priority id="10300" iconUrl="https://jira.mongodb.org/images/icons/priorities/medium.svg">Unknown</priority>
                        <status id="10038" iconUrl="https://jira.mongodb.org/images/icons/subtask.gif" description="">Backlog</status>
                    <statusCategory id="2" key="new" colorName="default"/>
                                    <resolution id="-1">Unresolved</resolution>
                                        <assignee username="-1">Unassigned</assignee>
                                    <reporter username="snikitin@cloudally.com">Sergey Nikitin</reporter>
                        <labels>
                    </labels>
                <created>Tue, 21 Mar 2023 17:05:04 +0000</created>
                <updated>Wed, 19 Apr 2023 17:12:02 +0000</updated>
                                            <version>4.3.2</version>
                    <version>4.9.0</version>
                                                    <component>POJO</component>
                                        <votes>0</votes>
                                    <watches>2</watches>
                                                                                                                <comments>
                            <comment id="5300987" author="jeff.yemin" created="Sat, 25 Mar 2023 21:36:25 +0000"  >&lt;p&gt;Because the POJO codec follows the Java Beans standard of treating &quot;is&quot;-prefixed methods as boolean getter properties, so I suspect that&apos;s what&apos;s confusing it.&lt;/p&gt;</comment>
                            <comment id="5300607" author="JIRAUSER1273215" created="Sat, 25 Mar 2023 11:34:32 +0000"  >&lt;p&gt;It may not be reproducible in a loop, build is required each time. In this case an order of getters in the&lt;br/&gt;
&lt;font color=&quot;#172b4d&quot;&gt;getPropertyMethods&lt;/font&gt; is random. Right, changing &quot;is&quot; to other prefix is helpful, but what&apos;s JavaBeans got to do with it?&lt;/p&gt;</comment>
                            <comment id="5300366" author="jeff.yemin" created="Sat, 25 Mar 2023 00:21:39 +0000"  >&lt;p&gt;I can&apos;t reproduce this.  I ran it 1000 times in a loop and it prints &lt;/p&gt;

&lt;p/&gt;
&lt;div id=&quot;syntaxplugin&quot; class=&quot;syntaxplugin&quot; style=&quot;border: 1px dashed #bbb; border-radius: 5px !important; overflow: auto; max-height: 30em;&quot;&gt;
&lt;table cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; border=&quot;0&quot; width=&quot;100%&quot; style=&quot;font-size: 1em; line-height: 1.4em !important; font-weight: normal; font-style: normal; color: black;&quot;&gt;
		&lt;tbody &gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  style=&quot; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;  margin-top: 10px;   width: auto; padding: 0;&quot;&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;null&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  style=&quot; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;   margin-bottom: 10px;  width: auto; padding: 0;&quot;&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;null&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
			&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;p/&gt;

&lt;p&gt;every time.  So not sure what&apos;s going on.  But if you can&apos;t figure out what&apos;s different in your environment, it seems like a workaround would be to change isTestId/isBatchId to hasTestId/hasBatchId, as the &quot;is&quot; prefix does have special meaning in the Java Beans specification.&lt;/p&gt;</comment>
                    </comments>
                    <attachments>
                    </attachments>
                <subtasks>
                    </subtasks>
                <customfields>
                                                                                                                                                                                                                                                                                                                                                                    <customfield id="customfield_15850" key="com.atlassian.jira.plugins.jira-development-integration-plugin:devsummary">
                        <customfieldname>Development</customfieldname>
                        <customfieldvalues>
                            
                        </customfieldvalues>
                    </customfield>
                                                                                            <customfield id="customfield_14266" key="com.atlassian.jira.plugin.system.customfieldtypes:textarea">
                        <customfieldname>Documentation Changes Summary</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>&lt;p&gt;1.  What would you like to communicate to the user about this feature?&lt;br/&gt;
2.  Would you like the user to see examples of the syntax and/or executable code and its output?&lt;br/&gt;
3.  Which versions of the driver/connector does this apply to?&lt;/p&gt;</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                            <customfield id="customfield_10857" key="com.pyxis.greenhopper.jira:gh-epic-link">
                        <customfieldname>Epic Link</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>JAVA-3853</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                            <customfield id="customfield_21553" key="com.atlassian.jira.plugin.system.customfieldtypes:labels">
                        <customfieldname>Quarter</customfieldname>
                        <customfieldvalues>
                                        <label>FY23Q4</label>
            <label>FY24Q2</label>
    
                        </customfieldvalues>
                    </customfield>
                                                                                            <customfield id="customfield_12550" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>2|hr3mmh:0400000950fr</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10558" key="com.pyxis.greenhopper.jira:gh-global-rank">
                        <customfieldname>Rank (Obsolete)</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>9223372036854775807</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            </customfields>
    </item>
</channel>
</rss>