<!-- 
RSS generated by JIRA (9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66) at Wed Feb 07 21:37:15 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>[CSHARP-584] Improve the design of the convention system for automapping BsonClassMaps</title>
                <link>https://jira.mongodb.org/browse/CSHARP-584</link>
                <project id="10041" key="CSHARP">C# Driver</project>
                    <description>&lt;p&gt;In 1.6, the design of the convention system for automapping BsonClassMaps is fixed and can&apos;t be extended. For 2.0, we are redesigning the convention system to be much more flexible and extensible. See the following new interfaces and classes for details:&lt;/p&gt;

&lt;p&gt;IConvention&lt;br/&gt;
IConventionPack&lt;br/&gt;
IClassMapConvention&lt;br/&gt;
IMemberMapConvention&lt;br/&gt;
IPostProcessingConvention&lt;/p&gt;

&lt;p&gt;ConventionPack&lt;br/&gt;
ConventionRegistry&lt;/p&gt;

&lt;p&gt;The general idea is that ConventionPacks are registered with a filter lambda that determines which types the ConventionPack applies to. When it comes time to AutoMap a class, all the matching ConventionPacks from the registry are combined to produce an effective ConventionPack for that class. The effective ConventionPack may include multiple conventions for the same thing (if more than one matched), but the last one added is the last one to run and wins.&lt;/p&gt;

&lt;p&gt;If you wish to write your own custom conventions, you would implement one or more of the convention interfaces: IClassMapConvention, IMemberMapConvention and IPostProcessingConvention, put them in a ConventionPack and register the pack.&lt;/p&gt;

&lt;p&gt;AutoMap runs all the IClassMapConventions first, then all the IMemberMapConventions (on whatever members were added to the class map during the first phase), and finally all IPostProcessingConventions to do any final processing of the class map.&lt;/p&gt;

&lt;p&gt;This change has no effect on the attribute based configuration of class maps or the fluent interface used to configure class maps via code..  However, it will be backwards breaking for 2 groups of people.  &lt;br/&gt;
1) Those who wrote a custom convention.  They will need to change their convention to match the new api, which should be relatively trivial.&lt;br/&gt;
2) Those who have registered a custom convention.  They will need to register their  convention in a slightly different manner, which is also relatively trivial.&lt;/p&gt;</description>
                <environment></environment>
        <key id="51841">CSHARP-584</key>
            <summary>Improve the design of the convention system for automapping BsonClassMaps</summary>
                <type id="4" iconUrl="https://jira.mongodb.org/secure/viewavatar?size=xsmall&amp;avatarId=14710&amp;avatarType=issuetype">Improvement</type>
                                            <priority id="3" iconUrl="https://jira.mongodb.org/images/icons/priorities/major.svg">Major - P3</priority>
                        <status id="6" iconUrl="https://jira.mongodb.org/images/icons/statuses/closed.png" description="The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.">Closed</status>
                    <statusCategory id="3" key="done" colorName="success"/>
                                    <resolution id="9">Done</resolution>
                                        <assignee username="craig.wilson@mongodb.com">Craig Wilson</assignee>
                                    <reporter username="robert@mongodb.com">Robert Stam</reporter>
                        <labels>
                    </labels>
                <created>Sat, 29 Sep 2012 23:21:24 +0000</created>
                <updated>Thu, 20 Mar 2014 14:35:37 +0000</updated>
                            <resolved>Wed, 19 Dec 2012 14:22:05 +0000</resolved>
                                    <version>1.7</version>
                    <version>2.0</version>
                                    <fixVersion>1.8</fixVersion>
                                                        <votes>0</votes>
                                    <watches>3</watches>
                                                                                                                <comments>
                            <comment id="223602" author="auto" created="Mon, 24 Dec 2012 23:10:46 +0000"  >&lt;p&gt;Author:&lt;/p&gt;
{u&apos;date&apos;: u&apos;2012-12-24T23:09:31Z&apos;, u&apos;email&apos;: u&apos;craiggwilson@gmail.com&apos;, u&apos;name&apos;: u&apos;Craig Wilson&apos;}
&lt;p&gt;Message: &lt;a href=&quot;https://jira.mongodb.org/browse/CSHARP-584&quot; title=&quot;Improve the design of the convention system for automapping BsonClassMaps&quot; class=&quot;issue-link&quot; data-issue-key=&quot;CSHARP-584&quot;&gt;&lt;del&gt;CSHARP-584&lt;/del&gt;&lt;/a&gt;: rewrote convention system to be more flexible and more predictable.&lt;br/&gt;
Branch: master&lt;br/&gt;
&lt;a href=&quot;https://github.com/mongodb/mongo-csharp-driver/commit/93b2f6e853732d56bf80ad952def72b09f29130e&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/mongo-csharp-driver/commit/93b2f6e853732d56bf80ad952def72b09f29130e&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="219263" author="craiggwilson" created="Wed, 19 Dec 2012 14:22:05 +0000"  >&lt;p&gt;In code review.&lt;/p&gt;</comment>
                            <comment id="202490" author="rstam" created="Thu, 29 Nov 2012 20:11:41 +0000"  >&lt;p&gt;Reopened to backport to 1.8.&lt;/p&gt;

&lt;p&gt;For 1.8 the existing convention classes will be deprecated, but will still be supported by some form of interoperation with the new architecture.&lt;/p&gt;</comment>
                            <comment id="173094" author="auto" created="Tue, 9 Oct 2012 21:07:04 +0000"  >&lt;p&gt;Author:&lt;/p&gt;
{u&apos;date&apos;: u&apos;2012-10-08T14:13:59-07:00&apos;, u&apos;email&apos;: u&apos;craiggwilson@gmail.com&apos;, u&apos;name&apos;: u&apos;Craig Wilson&apos;}
&lt;p&gt;Message: &lt;a href=&quot;https://jira.mongodb.org/browse/CSHARP-584&quot; title=&quot;Improve the design of the convention system for automapping BsonClassMaps&quot; class=&quot;issue-link&quot; data-issue-key=&quot;CSHARP-584&quot;&gt;&lt;del&gt;CSHARP-584&lt;/del&gt;&lt;/a&gt;: code review comments.&lt;br/&gt;
Branch: x2.0&lt;br/&gt;
&lt;a href=&quot;https://github.com/mongodb/mongo-csharp-driver/commit/407e75421fdf9be87b58a747ef2fd46c683fd796&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/mongo-csharp-driver/commit/407e75421fdf9be87b58a747ef2fd46c683fd796&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="173093" author="auto" created="Tue, 9 Oct 2012 21:07:03 +0000"  >&lt;p&gt;Author:&lt;/p&gt;
{u&apos;date&apos;: u&apos;2012-10-05T08:26:28-07:00&apos;, u&apos;email&apos;: u&apos;craiggwilson@gmail.com&apos;, u&apos;name&apos;: u&apos;Craig Wilson&apos;}
&lt;p&gt;Message: &lt;a href=&quot;https://jira.mongodb.org/browse/CSHARP-584&quot; title=&quot;Improve the design of the convention system for automapping BsonClassMaps&quot; class=&quot;issue-link&quot; data-issue-key=&quot;CSHARP-584&quot;&gt;&lt;del&gt;CSHARP-584&lt;/del&gt;&lt;/a&gt;: added support for disallowing an IBsonMemberMapAttribute from applying to more than one member.&lt;br/&gt;
Branch: x2.0&lt;br/&gt;
&lt;a href=&quot;https://github.com/mongodb/mongo-csharp-driver/commit/df343382ba526867616c82069bc6e2da5ec0330e&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/mongo-csharp-driver/commit/df343382ba526867616c82069bc6e2da5ec0330e&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="171866" author="auto" created="Fri, 5 Oct 2012 14:24:06 +0000"  >&lt;p&gt;Author:&lt;/p&gt;
{u&apos;date&apos;: u&apos;2012-10-05T06:03:28-07:00&apos;, u&apos;email&apos;: u&apos;craiggwilson@gmail.com&apos;, u&apos;name&apos;: u&apos;Craig Wilson&apos;}
&lt;p&gt;Message: &lt;a href=&quot;https://jira.mongodb.org/browse/CSHARP-584&quot; title=&quot;Improve the design of the convention system for automapping BsonClassMaps&quot; class=&quot;issue-link&quot; data-issue-key=&quot;CSHARP-584&quot;&gt;&lt;del&gt;CSHARP-584&lt;/del&gt;&lt;/a&gt;: added IgnoreIfDefault, IgnoreIfNull, and IgnoreExtraElements convention tests.&lt;br/&gt;
Branch: x2.0&lt;br/&gt;
&lt;a href=&quot;https://github.com/mongodb/mongo-csharp-driver/commit/cbb0b079819309c2f274160a7da0f2bba1a494a8&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/mongo-csharp-driver/commit/cbb0b079819309c2f274160a7da0f2bba1a494a8&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="171865" author="auto" created="Fri, 5 Oct 2012 14:24:05 +0000"  >&lt;p&gt;Author:&lt;/p&gt;
{u&apos;date&apos;: u&apos;2012-10-05T05:56:04-07:00&apos;, u&apos;email&apos;: u&apos;craiggwilson@gmail.com&apos;, u&apos;name&apos;: u&apos;Craig Wilson&apos;}
&lt;p&gt;Message: &lt;a href=&quot;https://jira.mongodb.org/browse/CSHARP-584&quot; title=&quot;Improve the design of the convention system for automapping BsonClassMaps&quot; class=&quot;issue-link&quot; data-issue-key=&quot;CSHARP-584&quot;&gt;&lt;del&gt;CSHARP-584&lt;/del&gt;&lt;/a&gt;: added Conventions property back to BsonClassMap.&lt;br/&gt;
Branch: x2.0&lt;br/&gt;
&lt;a href=&quot;https://github.com/mongodb/mongo-csharp-driver/commit/1301b6b1d0d0096e30eb8654da31aa3293a49101&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/mongo-csharp-driver/commit/1301b6b1d0d0096e30eb8654da31aa3293a49101&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="171864" author="auto" created="Fri, 5 Oct 2012 14:24:03 +0000"  >&lt;p&gt;Author:&lt;/p&gt;
{u&apos;date&apos;: u&apos;2012-10-05T05:54:19-07:00&apos;, u&apos;email&apos;: u&apos;craiggwilson@gmail.com&apos;, u&apos;name&apos;: u&apos;Craig Wilson&apos;}
&lt;p&gt;Message: &lt;a href=&quot;https://jira.mongodb.org/browse/CSHARP-584&quot; title=&quot;Improve the design of the convention system for automapping BsonClassMaps&quot; class=&quot;issue-link&quot; data-issue-key=&quot;CSHARP-584&quot;&gt;&lt;del&gt;CSHARP-584&lt;/del&gt;&lt;/a&gt;: added tests for the Reset methods in BsonClassMap and BsonMemberMap.&lt;br/&gt;
Branch: x2.0&lt;br/&gt;
&lt;a href=&quot;https://github.com/mongodb/mongo-csharp-driver/commit/89aa2a50340403dd4fe54a545c1368764feee0c4&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/mongo-csharp-driver/commit/89aa2a50340403dd4fe54a545c1368764feee0c4&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="171863" author="auto" created="Fri, 5 Oct 2012 14:24:01 +0000"  >&lt;p&gt;Author:&lt;/p&gt;
{u&apos;date&apos;: u&apos;2012-10-01T19:08:36-07:00&apos;, u&apos;email&apos;: u&apos;robert@10gen.com&apos;, u&apos;name&apos;: u&apos;rstam&apos;}
&lt;p&gt;Message: &lt;a href=&quot;https://jira.mongodb.org/browse/CSHARP-584&quot; title=&quot;Improve the design of the convention system for automapping BsonClassMaps&quot; class=&quot;issue-link&quot; data-issue-key=&quot;CSHARP-584&quot;&gt;&lt;del&gt;CSHARP-584&lt;/del&gt;&lt;/a&gt;: Combined Always and Never conventions and added Reset conventions.&lt;br/&gt;
Branch: x2.0&lt;br/&gt;
&lt;a href=&quot;https://github.com/mongodb/mongo-csharp-driver/commit/bea7532e924420c4afaecd299d2335c519eaa8fd&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/mongo-csharp-driver/commit/bea7532e924420c4afaecd299d2335c519eaa8fd&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="170008" author="auto" created="Mon, 1 Oct 2012 19:25:34 +0000"  >&lt;p&gt;Author:&lt;/p&gt;
{u&apos;date&apos;: u&apos;2012-09-30T20:01:21-07:00&apos;, u&apos;email&apos;: u&apos;robert@10gen.com&apos;, u&apos;name&apos;: u&apos;rstam&apos;}
&lt;p&gt;Message: &lt;a href=&quot;https://jira.mongodb.org/browse/CSHARP-584&quot; title=&quot;Improve the design of the convention system for automapping BsonClassMaps&quot; class=&quot;issue-link&quot; data-issue-key=&quot;CSHARP-584&quot;&gt;&lt;del&gt;CSHARP-584&lt;/del&gt;&lt;/a&gt;: replaced TypeRepresentationSerializationOptionsConvention with the more general MemberSerializationOptionsConvention. Added a MemberDefaultValueConvention.&lt;br/&gt;
Branch: x2.0&lt;br/&gt;
&lt;a href=&quot;https://github.com/mongodb/mongo-csharp-driver/commit/571d50f6b408b835f36903aa963ed58667aec164&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/mongo-csharp-driver/commit/571d50f6b408b835f36903aa963ed58667aec164&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="169522" author="auto" created="Sun, 30 Sep 2012 03:22:51 +0000"  >&lt;p&gt;Author:&lt;/p&gt;
{u&apos;date&apos;: u&apos;2012-09-29T20:21:11-07:00&apos;, u&apos;email&apos;: u&apos;robert@10gen.com&apos;, u&apos;name&apos;: u&apos;rstam&apos;}
&lt;p&gt;Message: &lt;a href=&quot;https://jira.mongodb.org/browse/CSHARP-584&quot; title=&quot;Improve the design of the convention system for automapping BsonClassMaps&quot; class=&quot;issue-link&quot; data-issue-key=&quot;CSHARP-584&quot;&gt;&lt;del&gt;CSHARP-584&lt;/del&gt;&lt;/a&gt;: final commit consisting of proof reading doc comments.&lt;br/&gt;
Branch: x2.0&lt;br/&gt;
&lt;a href=&quot;https://github.com/mongodb/mongo-csharp-driver/commit/3ee1be36057bfc5e5c798f5c3b516a6f22610cd4&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/mongo-csharp-driver/commit/3ee1be36057bfc5e5c798f5c3b516a6f22610cd4&lt;/a&gt;&lt;/p&gt;</comment>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10011">
                    <name>Depends</name>
                                                                <inwardlinks description="is depended on by">
                                        <issuelink>
            <issuekey id="50528">CSHARP-569</issuekey>
        </issuelink>
                            </inwardlinks>
                                    </issuelinktype>
                            <issuelinktype id="10010">
                    <name>Duplicate</name>
                                                                <inwardlinks description="is duplicated by">
                                        <issuelink>
            <issuekey id="42367">CSHARP-512</issuekey>
        </issuelink>
                            </inwardlinks>
                                    </issuelinktype>
                    </issuelinks>
                <attachments>
                    </attachments>
                <subtasks>
                    </subtasks>
                <customfields>
                                                                                                                                                                                                                        <customfield id="customfield_10011" key="com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons">
                        <customfieldname>Backwards Compatibility</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="10011"><![CDATA[Minor Change]]></customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                <customfield id="customfield_15850" key="com.atlassian.jira.plugins.jira-development-integration-plugin:devsummary">
                        <customfieldname>Development</customfieldname>
                        <customfieldvalues>
                            
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    <customfield id="customfield_12550" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>2|hrj7h3:</customfieldvalue>

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