{"id":3050,"date":"2012-08-24T13:53:29","date_gmt":"2012-08-24T08:23:29","guid":{"rendered":"http:\/\/JitendraZaa.com\/blog\/?p=3050"},"modified":"2012-08-24T13:53:29","modified_gmt":"2012-08-24T08:23:29","slug":"my-favorite-top-10-features-of-winter-13-release-salesforce","status":"publish","type":"post","link":"https:\/\/www.jitendrazaa.com\/blog\/salesforce\/my-favorite-top-10-features-of-winter-13-release-salesforce\/","title":{"rendered":"My Favorite Top 10 Features of Winter 13 release &#8211; Salesforce"},"content":{"rendered":"<p style=\"text-align: justify;\">Dear Friends, I am very excited to write this article about the cool Winter 13 features which i have added in My List. There are lots of lots of new features added in this release and i have made the list of my top 10 favorite features. Yesterday Salesforce published its Winter 13 release notes at <a title=\"Salesforce Winter 13 Release Notes\" href=\"https:\/\/na1.salesforce.com\/help\/doc\/en\/salesforce_winter13_release_notes.pdf\" rel=\"nofollow\">https:\/\/na1.salesforce.com \/help\/doc \/en\/salesforce winter13release notes.pdf<\/a>.<\/p>\n<figure id=\"attachment_3067\" aria-describedby=\"caption-attachment-3067\" style=\"width: 300px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/i0.wp.com\/jitendrazaa.com\/blog\/wp-content\/uploads\/2012\/08\/Salesforce-Winter-13-Release-Notes.jpg?ssl=1\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-3067\" title=\"Salesforce Winter 13 Release Notes\" src=\"https:\/\/i0.wp.com\/jitendrazaa.com\/blog\/wp-content\/uploads\/2012\/08\/Salesforce-Winter-13-Release-Notes-300x212.jpg?resize=300%2C212&#038;ssl=1\" alt=\"Salesforce Winter 13 Release Notes\" width=\"300\" height=\"212\" \/><\/a><figcaption id=\"caption-attachment-3067\" class=\"wp-caption-text\">Salesforce Winter 13 Features<\/figcaption><\/figure>\n<p style=\"text-align: justify;\">You can also sign up for free pre-Release Winter 13 Organization at <a title=\"Trial Organization for Winter 13 Organization of Salesforce\" href=\"https:\/\/www.salesforce.com\/form\/signup\/prerelease-winter13.jsp\" rel=\"nofollow\">https:\/\/www.salesforce.com \/form\/signup\/ prerelease- winter13.jsp<\/a><\/p>\n<p>So, here my Favorite Features:<\/p>\n<hr \/>\n<p><span style=\"text-decoration: underline;\"><strong>1. Enhancements in Developer Console <\/strong><\/span><\/p>\n<p style=\"text-align: justify;\"><strong>a. Test Tool :<\/strong><\/p>\n<p style=\"text-align: justify;\">The Winter 13 release adds a Tests tool to the Developer Console. Use the Tests tool to run Apex unit tests on the server and check your code coverage. Now you can edit, debug, and test your applications without leaving the Developer Console.<\/p>\n<p style=\"text-align: justify;\"><strong>b. Query Editor :<\/strong><\/p>\n<p style=\"text-align: justify;\">The Winter 13 release adds a Query Editor tool to the Developer Console. Use the Query Editor tool to query data from your organization. For example, while developing Apex code, write a SOQL query and verify that the results are what you expect. Edit and execute the query until you have the data you want. Then use the query in your code.<\/p>\n<hr \/>\n<p style=\"text-align: justify;\"><span style=\"text-decoration: underline;\"><strong>2. Polymorphic SOQL<\/strong><\/span><\/p>\n<p style=\"text-align: justify;\">SOQL Polymorphism lets you select different sets of fields in your SOQL queries, depending on the object type of a polymorphic relationship field. For example, the What field in an Event record could reference an Account, Opportunity, or Campaign. You can now specify different fields to select based on the referenced object type using the <strong>TYPEOF<\/strong> clause. The following example specifies different fields for each of the possible object types:<\/p>\n<pre class=\"brush: sql; title: ; notranslate\" title=\"\">\nSELECT\n\tTYPEOF What\n\t\tWHEN Account THEN Phone, NumberOfEmployees\n\t\tWHEN Opportunity THEN Amount, CloseDate\n\t\tWHEN Campaign THEN ExpectedRevenue, StartDate\n\t\tELSE Name\n\tEND\nFROM Event\n<\/pre>\n<p style=\"text-align: justify;\">If the object type referenced by Event. What is an Account, the query returns the referenced Account&#8217;s Phone and NumberOfEmployees fields. If the object type is an Opportunity, the query returns the referenced Opportunity&#8217;s Amount and CloseDate fields. If the object type is a Campaign, the query returns the referenced Campaign&#8217;s ExpectedRevenue and StartDate fields. Finally, if the object type is any other type, the Name field is returned.<!--more--><\/p>\n<hr \/>\n<p><span style=\"text-decoration: underline;\"><strong>3. Non-Primitive Types in Map Keys and Sets **<\/strong><\/span><\/p>\n<p style=\"text-align: justify;\">This is my favorite feature and i was missing it badly from core Java. Now we can have non &#8211; primitive datatype i.e. Objects as a key in Map and Sets. And like Java we will need to implement \/ Override equals() and hashcode() method to make it workable.<\/p>\n<hr \/>\n<p><span style=\"text-decoration: underline;\"><strong>4. Support for Testing Callouts<\/strong><\/span><\/p>\n<p style=\"text-align: justify;\">And now the waiting for capability of testing callouts in Apex test class is over. I am sure that most of the developers caught in situation where they need to test the Apex callouts and came to know that Apex does not support it directly.<\/p>\n<p style=\"text-align: justify;\">Apex now provides the ability to test callouts. The native support for handling callouts made in test context and generating artificial responses increases your code coverage by tests and simplifies the testing process. You no longer need to modify auto-generated code of an external SOAP Web service, or add extra logic for callouts made via the HTTP classes. The new <strong>Test.setMock<\/strong> method instructs the Apex runtime to handle callouts in test methods and to generate a mock response that you specify.<\/p>\n<p><strong>Testing HTTP Callouts by Implementing the <em>HttpCalloutMock<\/em> Interface<\/strong><\/p>\n<p>Provide an implementation for the HttpCalloutMock interface to specify the response sent in the respond method, which the Apex runtime calls to send a response for a callout.<\/p>\n<pre class=\"brush: java; title: ; notranslate\" title=\"\">\nglobal class YourHttpCalloutMockImpl implements HttpCalloutMock {\nglobal HTTPResponse respond(HTTPRequest req) {\n\/\/ Create a fake response.\n\/\/ Set response values, and\n\/\/ return response.\n}\n}\n<\/pre>\n<p>We can also Test the Http Callouts using Static Resources using one of the inbuilt classes <strong>StaticResourceCalloutMock <\/strong>or <strong>MultiStaticResourceCalloutMock<\/strong>.<\/p>\n<p>I will explain this feature in my coming post in more detail.<\/p>\n<hr \/>\n<p><span style=\"text-decoration: underline;\"><strong>5. Testing Web Service Callouts<\/strong><\/span><\/p>\n<p style=\"text-align: justify;\">As in Winter 13 Salesforce provided ability to test Http Callouts, we have ability to test the Web Service Callouts also.<\/p>\n<p style=\"text-align: justify;\">By default, test methods don&#8217;t support Web service callouts and tests that perform Web service callouts are skipped. To prevent tests from being skipped and to increase code coverage, Apex provides the built-in WebServiceMock interface and the Test.setMock method that you can use to receive fake responses in a test method.<\/p>\n<hr \/>\n<p><span style=\"text-decoration: underline;\"><strong>6. New <em>ID.getSObjectType<\/em> Method<\/strong><\/span><\/p>\n<p style=\"text-align: justify;\">The new getSObjectType method on the ID type enables you to obtain the sObject token that corresponds to the sObject of the ID. This is particularly helpful when you don&#8217;t have access to the sObject itself, for example, in future methods that don&#8217;t accept sObject types as their parameters, and therefore you can&#8217;t call getSObjectType on the sObject. Also, with this new method, you don&#8217;t have to perform a global describe call to obtain an sObject token for a specific sObject name. You can simply call getSObjectType on the ID. In this way, you also avoid reaching the describe governor limits.<\/p>\n<hr \/>\n<p><span style=\"text-decoration: underline;\"><strong>7. Loading Test Data from Static Resources **<\/strong><\/span><\/p>\n<p>Using the new Test.loadData method, you can populate data in your test methods without having to write many lines of code. Simply, add the data in a .csv file, create a static resource for this file, and then call Test.loadData within your test method by passing it the sObject type token and the static resource name. For example, for Account records and a static resource name of myResource, make the following call:<\/p>\n<pre class=\"brush: java; title: ; notranslate\" title=\"\">\nList&lt;sObject&gt; ls = Test.loadData(Account.sObjectType, 'myResource');\n<\/pre>\n<p>The Test.loadData method returns a list of sObjects that correspond to each record inserted.<\/p>\n<hr \/>\n<p><span style=\"text-decoration: underline;\"><strong>8. Global Interface Method Implementations No Longer Need to Be Global<\/strong><\/span><\/p>\n<p style=\"text-align: justify;\">When you implement methods of a global interface, you can declare those methods as public or global in your class. You&#8217;re no longer required to declare them as global. This gives you a choice of how much visibility you would like your method implementations to have. If you&#8217;re a package developer, you can include an interface implementation in a package and make it inaccessible to the subscriber&#8217;s org by declaring the class and methods as public. For example, the package can include a public batch implementation class with public methods that isn&#8217;t visible to the subscriber.<\/p>\n<p style=\"text-align: justify;\">This also applies to overriding global class methods. The methods overriding global methods can be declared as public or global.<\/p>\n<hr \/>\n<p><span style=\"text-decoration: underline;\"><strong>9. JSON Support for Additional Built-In Types<\/strong><\/span><\/p>\n<p>JSON serialization and deserialization support has been added to additional built-in Apex types. These types are the return types of Database methods, namely:<\/p>\n<ul>\n<li>DeleteResult<\/li>\n<li>EmptyRecycleBinResult<\/li>\n<li>LeadConvertResult<\/li>\n<li>SaveResult<\/li>\n<li>UndeleteResult<\/li>\n<li>UpsertResult<\/li>\n<\/ul>\n<p>In addition to these supported types, JSON continues to be supported as previously for sObjects (standard objects and custom objects), Apex primitive and collection types, and instances of your Apex classes.<\/p>\n<hr \/>\n<p><span style=\"text-decoration: underline;\"><strong>10. Map Attributes for Custom Components<\/strong><\/span><br \/>\nIt&#8217;s now possible to assign maps to attributes of custom components. Declare the map attribute like this:<\/p>\n<pre class=\"brush: xml; title: ; notranslate\" title=\"\">\n&lt;apex:component&gt;\n&lt;!-- Attribute definitions --&gt;\n&lt;apex:attribute name=&quot;items&quot; description=&quot;A map of items to be listed.&quot;\ntype=&quot;map&quot; required=&quot;true&quot;\/&gt;\n&lt;!-- Component implementation --&gt;\n&lt;ul&gt;\n&lt;apex:repeat value=&quot;{!items}&quot; var=&quot;itemKey&quot;&gt;\n&lt;li&gt;&lt;strong&gt;{!itemKey}&lt;\/strong&gt; {!items&#x5B;itemKey]}&lt;\/li&gt;\n&lt;\/apex:repeat&gt;\n&lt;\/ul&gt;\n&lt;\/apex:component&gt;\n<\/pre>\n<p>You don&#8217;t need to declare the specific data types for the map collection contents, it will be determined at runtime.<\/p>\n<p>There are many more enhancements and new features added in Winter 13. Stay tuned for more articles on same release.<br \/>\nHappy Coding !!!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Dear Friends, I am very excited to write this article about the cool Winter 13 features which i have added in My List. There are lots of lots of new features added in this release and i have made the list of my top 10 favorite features. Yesterday Salesforce published its Winter 13 release notes [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"advanced_seo_description":"","jetpack_seo_html_title":"","jetpack_seo_noindex":false,"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"jz_research_post":"","_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[9],"tags":[331,222],"class_list":["post-3050","post","type-post","status-publish","format-standard","hentry","category-salesforce","tag-salesforce","tag-winter13"],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack-related-posts":[{"id":6298,"url":"https:\/\/www.jitendrazaa.com\/blog\/salesforce\/salesforce-winter-18-release-my-favorite-features\/","url_meta":{"origin":3050,"position":0},"title":"Salesforce Winter 18 Release \u2013 My Favorite Features","author":"Jitendra","date":"October 4, 2017","format":false,"excerpt":"My favorite Salesforce Winter 18 features about Lightning, Flow, Platform Event , Shield and Salesforce DX","rel":"","context":"In &quot;Salesforce&quot;","block_context":{"text":"Salesforce","link":"https:\/\/www.jitendrazaa.com\/blog\/category\/salesforce\/"},"img":{"alt_text":"Flow in Salesforce App Builder","src":"https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2017\/10\/Flow-in-Salesforce-App-Builder.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2017\/10\/Flow-in-Salesforce-App-Builder.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2017\/10\/Flow-in-Salesforce-App-Builder.png?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2017\/10\/Flow-in-Salesforce-App-Builder.png?resize=700%2C400&ssl=1 2x"},"classes":[]},{"id":4942,"url":"https:\/\/www.jitendrazaa.com\/blog\/salesforce\/salesforce-winter-16-top-features\/","url_meta":{"origin":3050,"position":1},"title":"Salesforce Winter 16 &#8211; Top features","author":"Jitendra","date":"October 28, 2015","format":false,"excerpt":"You can watch recording of my live stream channel as well to know more on Winter 16 features.\u00a0Powerpoint presentation used in livestream can be accessed from here. 1. Object Manager Objects are objects, even if they are standard or custom objects. Salesforce simplified navigation to access Objects, we can access\u2026","rel":"","context":"In &quot;Salesforce&quot;","block_context":{"text":"Salesforce","link":"https:\/\/www.jitendrazaa.com\/blog\/category\/salesforce\/"},"img":{"alt_text":"Setup Audit Trail - Salesforce Winter 16","src":"https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2015\/10\/Setup-Audit-Trail.jpg?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2015\/10\/Setup-Audit-Trail.jpg?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2015\/10\/Setup-Audit-Trail.jpg?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2015\/10\/Setup-Audit-Trail.jpg?resize=700%2C400&ssl=1 2x"},"classes":[]},{"id":3427,"url":"https:\/\/www.jitendrazaa.com\/blog\/salesforce\/salesforce-winter-14-new-features\/","url_meta":{"origin":3050,"position":2},"title":"Salesforce Winter 14 &#8211; New Features","author":"Jitendra","date":"August 27, 2013","format":false,"excerpt":"Major Area of Release: Developer Console Canvas HTML5 Support in Visualforce Deployment related features like improved deployment Monitoring New Database methods to get records deleted , updated in specific time Renaming \"Service Cloud Console\"\u009d is renamed to \"Salesforce Console for Service\"\u009d \"Configuration Only\"\u009d sandbox renamed to \"Developer Pro\"\u009d \"Agent Configuration\"\u009d\u2026","rel":"","context":"In &quot;Salesforce&quot;","block_context":{"text":"Salesforce","link":"https:\/\/www.jitendrazaa.com\/blog\/category\/salesforce\/"},"img":{"alt_text":"Salesforce Winter 14","src":"https:\/\/i0.wp.com\/jitendrazaa.com\/blog\/wp-content\/uploads\/2013\/08\/Win-14-Logo.png?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]},{"id":5562,"url":"https:\/\/www.jitendrazaa.com\/blog\/salesforce\/summer-16-top-features\/","url_meta":{"origin":3050,"position":3},"title":"Salesforce Summer 16 &#8211; My favorite top 20 features","author":"Jitendra","date":"June 28, 2016","format":false,"excerpt":"List of Salesforce Summer 16 features","rel":"","context":"In &quot;Salesforce&quot;","block_context":{"text":"Salesforce","link":"https:\/\/www.jitendrazaa.com\/blog\/category\/salesforce\/"},"img":{"alt_text":"User Switcher in Salesforce Summer 16","src":"https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2016\/06\/User-Switcher-in-Salesforce-Summer-16.png?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]},{"id":3644,"url":"https:\/\/www.jitendrazaa.com\/blog\/salesforce\/why-should-i-use-json-over-xml\/","url_meta":{"origin":3050,"position":4},"title":"Why should I use JSON over XML ?","author":"Jitendra","date":"December 19, 2013","format":false,"excerpt":"Why should I use JSON over XML ? Why JSON is given so importance these days ? Many questions like these are asked many times by new developers. So, I decided to write this article. However last year I presented same topic and uploaded in SlideShare. Before Winter12 release, for\u2026","rel":"","context":"In &quot;Salesforce&quot;","block_context":{"text":"Salesforce","link":"https:\/\/www.jitendrazaa.com\/blog\/category\/salesforce\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":5885,"url":"https:\/\/www.jitendrazaa.com\/blog\/salesforce\/salesforce-spring-17-release-my-favorite-features\/","url_meta":{"origin":3050,"position":5},"title":"Salesforce Spring 17 release &#8211; My favorite features","author":"Jitendra","date":"January 27, 2017","format":false,"excerpt":"List of my favorite features in Salesforce Spring 17","rel":"","context":"In &quot;Salesforce&quot;","block_context":{"text":"Salesforce","link":"https:\/\/www.jitendrazaa.com\/blog\/category\/salesforce\/"},"img":{"alt_text":"Salesforce Apex Batch job - Spring 17","src":"https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2017\/01\/Salesforce-Apex-Batch-job-Spring-17.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2017\/01\/Salesforce-Apex-Batch-job-Spring-17.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2017\/01\/Salesforce-Apex-Batch-job-Spring-17.png?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2017\/01\/Salesforce-Apex-Batch-job-Spring-17.png?resize=700%2C400&ssl=1 2x"},"classes":[]}],"jetpack_likes_enabled":true,"_links":{"self":[{"href":"https:\/\/www.jitendrazaa.com\/blog\/wp-json\/wp\/v2\/posts\/3050","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.jitendrazaa.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.jitendrazaa.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.jitendrazaa.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.jitendrazaa.com\/blog\/wp-json\/wp\/v2\/comments?post=3050"}],"version-history":[{"count":0,"href":"https:\/\/www.jitendrazaa.com\/blog\/wp-json\/wp\/v2\/posts\/3050\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.jitendrazaa.com\/blog\/wp-json\/wp\/v2\/media?parent=3050"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.jitendrazaa.com\/blog\/wp-json\/wp\/v2\/categories?post=3050"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.jitendrazaa.com\/blog\/wp-json\/wp\/v2\/tags?post=3050"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}