<?xml version="1.0" encoding="UTF-8" standalone="no"?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><rss xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" version="2.0"><channel><title>&amp;gt; My Space, My Voice ***</title><description>A Tech and Social blog to share latest and greatest stuff from areas like Web technology, eCommerce , Travel and many more ...</description><managingEditor>noreply@blogger.com (Nads)</managingEditor><pubDate>Mon, 7 Oct 2024 05:54:27 +0100</pubDate><generator>Blogger http://www.blogger.com</generator><openSearch:totalResults xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/">74</openSearch:totalResults><openSearch:startIndex xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/">1</openSearch:startIndex><openSearch:itemsPerPage xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/">25</openSearch:itemsPerPage><link>http://sajidn.blogspot.com/</link><language>en-us</language><itunes:explicit>no</itunes:explicit><itunes:subtitle>A Tech and Social blog to share latest and greatest stuff from areas like Web technology, eCommerce , Travel and many more ...</itunes:subtitle><itunes:category text="Technology"><itunes:category text="Tech News"/></itunes:category><itunes:owner><itunes:email>noreply@blogger.com</itunes:email></itunes:owner><item><title>HTTP Caching with ESI</title><link>http://sajidn.blogspot.com/2016/03/http-caching-with-esi.html</link><category>Akamai</category><category>ESI</category><category>HTTP caching</category><category>Varnish</category><author>noreply@blogger.com (Nads)</author><pubDate>Thu, 17 Mar 2016 20:00:00 GMT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-27924845.post-3254844998951885969</guid><description>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;br /&gt;
In general, the idea behind caching is to improve web performance by delivering content more quickly and to reduce the load on the origin servers.&lt;br /&gt;
&lt;br /&gt;
Caching static content, such as images, JavaScript and CSS files, and web content that rarely changes is a relatively straightforward process. Cache updates can be handled by regular timeouts or conditional gets etc.&lt;br /&gt;
&lt;br /&gt;
Caching personalised content is generally not possible, because the server’s response to each request for the same resource is different. Techniques such as server side includes (SSI) and edge side includes (ESI) can help to assemble the page.&lt;br /&gt;
&lt;br /&gt;
Lets take a deeper look at ESI and see how it works -&lt;br /&gt;
By definition, ESI is a markup language for edge level dynamic web content assembly. The purpose of ESI is to tackle the problem of web infrastructure scaling.&lt;br /&gt;
&lt;br /&gt;
ESI is implemented by different content delivery networks such as Akamai, and by some caching proxy servers such as Varnish. Akamai also adds additional features to the version they support.&lt;br /&gt;
&lt;br /&gt;
So how ESI is implemented?&lt;br /&gt;
ESI element tags are inserted into HTML or other text based content during creation. Instead of being displayed to viewers, these ESI tags are directives that instruct an ESI processor to take some action. The XML based ESI tags indicate to the edge-side processing agent the action that needs to be taken to complete the page's assembly.&lt;br /&gt;
&lt;br /&gt;
One simple example of an ESI element is the include tag which is used to include content external to the page. An ESI include tag placed in-line within an HTML document would look like this:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style="background-color: #f8f8f8; color: #333333; font-family: &amp;quot;consolas&amp;quot; , &amp;quot;menlo&amp;quot; , &amp;quot;monaco&amp;quot; , &amp;quot;lucida console&amp;quot; , &amp;quot;liberation mono&amp;quot; , &amp;quot;dejavu sans mono&amp;quot; , &amp;quot;bitstream vera sans mono&amp;quot; , &amp;quot;courier new&amp;quot; , monospace; font-size: 14px; white-space: pre;"&gt;&amp;lt;&lt;/span&gt;esi:include src="http://yoursite.com/page1.html" alt="http://beta.yoursite.com/page2.html" onerror="continue"&amp;gt; &amp;nbsp;&lt;span style="background-color: #f8f8f8; color: #333333; font-family: &amp;quot;consolas&amp;quot; , &amp;quot;menlo&amp;quot; , &amp;quot;monaco&amp;quot; , &amp;quot;lucida console&amp;quot; , &amp;quot;liberation mono&amp;quot; , &amp;quot;dejavu sans mono&amp;quot; , &amp;quot;bitstream vera sans mono&amp;quot; , &amp;quot;courier new&amp;quot; , monospace; font-size: 14px; white-space: pre;"&gt;&amp;lt;/&lt;/span&gt;esi:include&lt;span style="color: #009926; font-family: &amp;quot;consolas&amp;quot; , &amp;quot;menlo&amp;quot; , &amp;quot;monaco&amp;quot; , &amp;quot;lucida console&amp;quot; , &amp;quot;liberation mono&amp;quot; , &amp;quot;dejavu sans mono&amp;quot; , &amp;quot;bitstream vera sans mono&amp;quot; , &amp;quot;courier new&amp;quot; , monospace; font-size: 14px; white-space: pre;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #009926; font-family: &amp;quot;consolas&amp;quot; , &amp;quot;menlo&amp;quot; , &amp;quot;monaco&amp;quot; , &amp;quot;lucida console&amp;quot; , &amp;quot;liberation mono&amp;quot; , &amp;quot;dejavu sans mono&amp;quot; , &amp;quot;bitstream vera sans mono&amp;quot; , &amp;quot;courier new&amp;quot; , monospace; font-size: 14px; white-space: pre;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;br /&gt;
In this case the ESI processor would retrieve the src URL, or failing that the alt URL. The ESI system is usually a caching proxy server so it may have a local copy of these files which it can insert without going back to the server. Alternatively, the whole page with the ESI tags may be cached, and only the ESI requests may be made to the origin server. This allows different caching times for different parts of the page, or different degrees of personalisation.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjyziKIghBhCvYnqwHqmkOSrvdUZPzyY31m6ROoW63oalF-BycCW2KQB3BXIMiDI-U-pYZsIVaR9zPP_QQVfWhEr34jlvNg875uWcki-Nb2yYxR54XP2lzJgdsuGD7NdNE9zS5f/s1600/Screen+Shot+2017-03-18+at+22.59.52.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="236" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjyziKIghBhCvYnqwHqmkOSrvdUZPzyY31m6ROoW63oalF-BycCW2KQB3BXIMiDI-U-pYZsIVaR9zPP_QQVfWhEr34jlvNg875uWcki-Nb2yYxR54XP2lzJgdsuGD7NdNE9zS5f/s640/Screen+Shot+2017-03-18+at+22.59.52.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
There are four main features in ESI -&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;ul style="text-align: left;"&gt;
&lt;li&gt;&lt;b&gt;Inclusion&lt;/b&gt; of page fragments&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Variables&lt;/b&gt; which can be set from cookies or HTTP headers and then used in other ESI statements or written into markup&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Conditions&lt;/b&gt; so that different markup can be used based on variables, for example if a cookie is set or not&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Error handling &lt;/b&gt;for&amp;nbsp;failover if an origin server is unavailable.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
Which CDNs support ESI?&lt;/div&gt;
&lt;div&gt;
ESI is currently supported by CDNs like Akamai, Fastly, CloudFlare and caching proxy servers like Varnish and Squid. Although many do not implement the complete specification, Akamai also adds additional features to the version they support.&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Reference and next steps -&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;ul style="text-align: left;"&gt;
&lt;li&gt;&lt;a href="https://www.w3.org/TR/esi-lang" target="_blank"&gt;W3C ESI Language Specification 1.0&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.akamai.com/us/en/multimedia/documents/technical-publication/akamai-esi-faq-technical-publication.pdf" target="_blank"&gt;ESI&amp;nbsp;FAQs from Akamai website&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.nginx.com/blog/nginx-caching-guide/" target="_blank"&gt;Nginx&amp;nbsp;caching features&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.blogger.com/"&gt;&lt;span id="goog_1673459391"&gt;&lt;/span&gt;Varnish cache&lt;span id="goog_1673459392"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjyziKIghBhCvYnqwHqmkOSrvdUZPzyY31m6ROoW63oalF-BycCW2KQB3BXIMiDI-U-pYZsIVaR9zPP_QQVfWhEr34jlvNg875uWcki-Nb2yYxR54XP2lzJgdsuGD7NdNE9zS5f/s72-c/Screen+Shot+2017-03-18+at+22.59.52.png" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>Extending and Developing Cartridges in Endeca 11.x</title><link>http://sajidn.blogspot.com/2014/09/extending-and-developing-cartridges-in.html</link><category>ATG</category><category>Endeca</category><category>oracle</category><category>search</category><author>noreply@blogger.com (Nads)</author><pubDate>Wed, 24 Sep 2014 23:02:00 +0100</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-27924845.post-2926094317341887523</guid><description>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;div class="WordSection1"&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; text-autospace: none;"&gt;
&lt;span style="font-family: inherit;"&gt;In this post I have tried to explore Cartridges and Endeca Assembler Application by examining how they work together in a "Hello World" example cartridge.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; text-autospace: none;"&gt;
&lt;span style="font-family: inherit;"&gt;So without any further delays let’s first understand what is cartridge   , cartridge template , cartridge handlers and the structure of a cartridge before making our own custom Cartridges. Further we will also take a close look at Endeca assembler application to understand what it does under the hood.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; text-autospace: none;"&gt;
&lt;span style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; text-autospace: none;"&gt;
&lt;b&gt;&lt;span style="font-family: inherit;"&gt;Cartridges and Cartridge Templates –  &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; text-autospace: none;"&gt;
&lt;span style="font-family: inherit;"&gt;A cartridge is a content item with a specific role in your application; for example, a cartridge can map to a GUI component in the front-end application. The Assembler includes a number of cartridges   that map to typical&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; text-autospace: none;"&gt;
&lt;span style="font-family: inherit;"&gt;GUI components &lt;span lang="EN-US"&gt;  –&lt;/span&gt; for example, a Breadcrumbs cartridge, a Search Box cartridge, and a Results List cartridge.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; text-autospace: none;"&gt;
&lt;span style="font-family: inherit;"&gt;You can create other cartridges that map to other GUI components expected by your business users.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; text-autospace: none;"&gt;
&lt;span style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; text-autospace: none;"&gt;
&lt;span style="font-family: inherit;"&gt;Every cartridge is defined by a template. A cartridge template defines:&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; text-autospace: none;"&gt;
&lt;span style="font-family: inherit;"&gt;&lt;span style="text-indent: -18pt;"&gt;&amp;nbsp; &lt;b&gt;·&lt;/b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="text-indent: -18pt;"&gt;The structure and initial configuration for a content item.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; text-autospace: none;"&gt;
&lt;span style="font-family: inherit;"&gt;&lt;span style="text-indent: -18pt;"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="text-indent: -18pt;"&gt;&lt;b&gt;·&amp;nbsp;&lt;/b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="text-indent: -18pt;"&gt;A set of configurable properties and the associated editors with which the business user can configure them.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; text-autospace: none;"&gt;
&lt;span style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; text-autospace: none;"&gt;
&lt;span style="font-family: inherit;"&gt;Experience Manager instantiates each content item from its cartridge template. This includes any configuration&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; text-autospace: none;"&gt;
&lt;span style="font-family: inherit;"&gt;made by the business user, and results in a content item with instance configuration that is passed to the Assembler.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; text-autospace: none;"&gt;
&lt;span style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; text-autospace: none;"&gt;
&lt;b&gt;&lt;span style="font-family: inherit;"&gt;Cartridge Handlers - &lt;o:p&gt;  &lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; text-autospace: none;"&gt;
&lt;span style="font-family: inherit;"&gt;A cartridge handler takes a content item as input, processes it, and returns a content item as output.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; text-autospace: none;"&gt;
&lt;span style="font-family: inherit;"&gt;The input content item typically includes instance configuration, which consists of any properties specified by a business user using the Experience Manager or Rule Manager tool in Endeca Workbench.   The content item&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; text-autospace: none;"&gt;
&lt;span style="font-family: inherit;"&gt;is typically initialized by layering configuration from other sources: your application may include default values, or URL parameters that represent end user selections in the front-end application.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; text-autospace: none;"&gt;
&lt;span style="font-family: inherit;"&gt;A cartridge handler can optionally perform further processing, such as querying a search engine for data. When processing is finished, the handler returns a completed content item to the application.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; text-autospace: none;"&gt;
&lt;span style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; text-autospace: none;"&gt;
&lt;span style="font-family: inherit;"&gt;&lt;b&gt;Note: &lt;/b&gt;Not all cartridges require cartridge handlers. In the case of a content item with no associated cartridge handler, the Assembler   returns the unmodified content item.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; text-autospace: none;"&gt;
&lt;span style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; text-autospace: none;"&gt;
&lt;b&gt;&lt;span style="font-family: inherit;"&gt;Cartridge structure -  &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; text-autospace: none;"&gt;
&lt;span style="font-family: inherit;"&gt;The template contains two main sections: the  &lt;i&gt;&amp;lt;ContentItem&amp;gt;&lt;/i&gt; element and the &lt;i&gt;&amp;lt;EditorPanel&amp;gt;&lt;/i&gt; element.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; text-autospace: none;"&gt;
&lt;span style="font-family: inherit;"&gt;The content item is a core concept in Assembler applications that can represent both the configuration model for a cartridge and the response model that the Assembler returns to the client application.   A content item is a map of properties, or key-value pairs. The &amp;lt;ContentItem&amp;gt; element in the template defines the prototypical content item and its properties, similar to a class or type definition.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; text-autospace: none;"&gt;
&lt;span style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; text-autospace: none;"&gt;
&lt;span style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; text-autospace: none;"&gt;
&lt;span style="font-family: inherit;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhASrxIfccg8-WN8qLYHK4XKZHktOYMKIFOb3RLyrJW6cLLZ9mo6xaXxXyPV_MJtmCt2ipG75Di0mG79bk6xM3HDj1BeuPX62h1kG5BPLwOWPd521kHInzMNF0NaK01FrqCEwFE/s1600/image019-744288.png"&gt;&lt;img alt="" border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhASrxIfccg8-WN8qLYHK4XKZHktOYMKIFOb3RLyrJW6cLLZ9mo6xaXxXyPV_MJtmCt2ipG75Di0mG79bk6xM3HDj1BeuPX62h1kG5BPLwOWPd521kHInzMNF0NaK01FrqCEwFE/s320/image019-744288.png" height="323" id="BLOGGER_PHOTO_ID_6062748110084966050" width="400" /&gt;&lt;/a&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; text-autospace: none;"&gt;
&lt;span style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; text-autospace: none;"&gt;
&lt;span style="font-family: inherit;"&gt;In our example (explained below) template, we defined two string properties named  &lt;i&gt;message&lt;/i&gt; and  &lt;i&gt;messageColor &lt;/i&gt;and attached two simple string editors to those properties. The result looks like this in Experience Manager:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; text-autospace: none;"&gt;
&lt;span style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; text-autospace: none;"&gt;
&lt;span style="font-family: inherit;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjyo9B12FhK_Jj7gNbG0AsmWaCAtzQ8ltEdK0Bu2QwjezziqdeFD-LgWnN4csDfMYmRM-4GgSnULKk9eMC7W1_JSonAA20xEjC2xQKQeH4HPVMpn43qGuKCs1rirzDu0c6TXchq/s1600/image020-746548.png"&gt;&lt;img alt="" border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjyo9B12FhK_Jj7gNbG0AsmWaCAtzQ8ltEdK0Bu2QwjezziqdeFD-LgWnN4csDfMYmRM-4GgSnULKk9eMC7W1_JSonAA20xEjC2xQKQeH4HPVMpn43qGuKCs1rirzDu0c6TXchq/s320/image020-746548.png" height="156" id="BLOGGER_PHOTO_ID_6062748116847562386" width="320" /&gt;&lt;/a&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; text-autospace: none;"&gt;
&lt;span style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; text-autospace: none;"&gt;
&lt;span style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; text-autospace: none;"&gt;
&lt;b&gt;&lt;span style="font-family: inherit;"&gt;A brief note on Endeca Assembler Application -  &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; text-autospace: none;"&gt;
&lt;span style="font-family: inherit;"&gt;The Endeca assembler application enables a WEB application to query the MDEX engine and retrieve the appropriate dynamic content based on user navigation state.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; text-autospace: none;"&gt;
&lt;span style="font-family: inherit;"&gt;The assembler application provides a RESTful web service API that returns results either in JSON or XML format.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; text-autospace: none;"&gt;
&lt;span style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; text-autospace: none;"&gt;
&lt;span style="font-family: inherit;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEheo7XHUqpXzVfiiZ7HqOzknBd2YJvElh55VWD8iF4pNUp-PdmkeThuZZSlymciAcz5XcifDzYHcuMhm4WouOdKiYCp1JVfJBP23RsC4L8tWW7MLFrcx-hBFlVBoMGcgRbL09v3/s1600/image022-748483.png"&gt;&lt;img alt="" border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEheo7XHUqpXzVfiiZ7HqOzknBd2YJvElh55VWD8iF4pNUp-PdmkeThuZZSlymciAcz5XcifDzYHcuMhm4WouOdKiYCp1JVfJBP23RsC4L8tWW7MLFrcx-hBFlVBoMGcgRbL09v3/s320/image022-748483.png" height="315" id="BLOGGER_PHOTO_ID_6062748124996225234" width="400" /&gt;&lt;/a&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; text-autospace: none;"&gt;
&lt;span style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; text-autospace: none;"&gt;
&lt;u&gt;&lt;span style="font-family: inherit;"&gt;What happens at runtime?&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/u&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; text-autospace: none;"&gt;
&lt;span style="font-family: inherit;"&gt;The business user creates and configures instances of cartridges in Experience Manager based on a template. During cartridge development you need to create at least one instance of a cartridge for testing.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; text-autospace: none;"&gt;
&lt;span style="font-family: inherit;"&gt;The Assembler retrieves this configuration at runtime and uses it to build the response model that it returns to the client application.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; text-autospace: none;"&gt;
&lt;span style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; text-autospace: none;"&gt;
&lt;span style="font-family: inherit;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgfLrKU-AHHwqFmVDm0SDzz7rgKEMzYj4NzA03oAfBmimCOGsDv8Ej8pDrFb0TJuFdJSjElfCWy-1sRhf0wiIan2w5KmFx8COCyA1fu7i177Zp5d5TnpVZZDNOxzu2af6k-j-NU/s1600/image023-750494.png"&gt;&lt;img alt="" border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgfLrKU-AHHwqFmVDm0SDzz7rgKEMzYj4NzA03oAfBmimCOGsDv8Ej8pDrFb0TJuFdJSjElfCWy-1sRhf0wiIan2w5KmFx8COCyA1fu7i177Zp5d5TnpVZZDNOxzu2af6k-j-NU/s320/image023-750494.png" height="101" id="BLOGGER_PHOTO_ID_6062748133989288242" width="400" /&gt;&lt;/a&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; text-autospace: none;"&gt;
&lt;span style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; text-autospace: none;"&gt;
&lt;span style="font-family: inherit;"&gt;For any given cartridge, the default behavior is for the Assembler to do no processing on the configuration and simply return the configuration content item as a map of properties. That is, the response   object is the same as the configuration object unless specific processing logic is defined in the Assembler for that cartridge.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; text-autospace: none;"&gt;
&lt;span style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; text-autospace: none;"&gt;
&lt;span style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; text-autospace: none;"&gt;
&lt;span style="font-family: inherit;"&gt;&lt;b&gt;Cartridge creation workflow  &lt;/b&gt;&lt;b&gt;–&lt;/b&gt;&lt;b&gt;  &lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; text-autospace: none;"&gt;
&lt;span style="font-family: inherit;"&gt;The high-level workflow for creating a basic cartridge is:&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; text-autospace: none;"&gt;
&lt;span style="font-family: inherit;"&gt;&lt;span style="text-indent: -18pt;"&gt;&amp;nbsp; &amp;nbsp; 1.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="text-indent: -18pt;"&gt;Create a cartridge template and upload it to Endeca Workbench.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; text-autospace: none;"&gt;
&lt;span style="font-family: inherit;"&gt;&lt;span style="text-indent: -18pt;"&gt;&amp;nbsp; &amp;nbsp; 2.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="text-indent: -18pt;"&gt;Use Experience Manager to create and configure an instance of the cartridge.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; text-autospace: none;"&gt;
&lt;span style="font-family: inherit;"&gt;&lt;span style="text-indent: -18pt;"&gt;&amp;nbsp; &amp;nbsp; 3.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="text-indent: -18pt;"&gt;Add a renderer to the front-end application.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; text-autospace: none;"&gt;
&lt;span style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; text-autospace: none;"&gt;
&lt;span style="font-family: inherit;"&gt;Step 2 is necessary during development in order to have a cartridge instance with which to test. However, once the cartridge is complete, the business user is typically responsible for creating and maintaining   cartridge instances in Experience Manager.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; text-autospace: none;"&gt;
&lt;span style="font-family: inherit;"&gt;In the below sections, we'll see each of these elements of the cartridge in detail.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; text-autospace: none;"&gt;
&lt;span style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; text-autospace: none;"&gt;
&lt;span style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; text-autospace: none;"&gt;
&lt;span style="font-family: inherit;"&gt;&lt;b&gt;Hello World cartridge example  &lt;/b&gt;&lt;b&gt;–&lt;/b&gt;&lt;b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; text-autospace: none;"&gt;
&lt;span style="font-family: inherit;"&gt;Here we will&lt;b&gt; &lt;/b&gt;define a new cartridge and use Workbench to configure it to appear on a page.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; text-autospace: none;"&gt;
&lt;span style="font-family: inherit;"&gt;Follow these steps to create and configure a basic "Hello World" cartridge.&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; text-autospace: none;"&gt;
&lt;span style="font-family: inherit;"&gt;&lt;span style="text-indent: -18pt;"&gt;1.&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="text-indent: -18pt;"&gt;Navigate to the templates directory of your application (Discovery in our case), and create a subdirectory named "HelloWorld." This directory name is the template ID for   your template.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoListParagraphCxSpMiddle" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; text-autospace: none;"&gt;
&lt;span style="font-family: inherit;"&gt;For example:   D:\Endeca\apps\Discover\config\import\templates\HelloWorld&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoListParagraphCxSpMiddle" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; text-autospace: none;"&gt;
&lt;span style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoListParagraphCxSpMiddle" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; text-autospace: none;"&gt;
&lt;span style="font-family: inherit;"&gt;&lt;span style="text-indent: -18pt;"&gt;2.&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="text-indent: -18pt;"&gt;Create a cartridge template - copy the following into the contents of the file.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoListParagraphCxSpMiddle" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; text-autospace: none;"&gt;
&lt;span style="font-family: inherit;"&gt;Save the file with the name  template.xml in the  HelloWorld directory which we just created in point 1 above.&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;br /&gt;
&lt;div class="MsoNormal" style="margin-bottom: 0cm; margin-left: 36pt; margin-right: 0cm;"&gt;
&lt;span style="font-family: inherit;"&gt;&amp;lt;ContentTemplate xmlns="http://endeca.com/schema/content-template/2008"&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin-bottom: 0cm; margin-left: 36pt; margin-right: 0cm;"&gt;
&lt;span style="font-family: inherit;"&gt;xmlns:editors="editors" type="SecondaryContent"&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin-bottom: 0cm; margin-left: 36pt; margin-right: 0cm;"&gt;
&lt;span style="font-family: inherit;"&gt;&amp;lt;Description&amp;gt;A sample cartridge that can display a simple message.&amp;lt;/Description&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin-bottom: 0cm; margin-left: 36pt; margin-right: 0cm;"&gt;
&lt;span style="font-family: inherit;"&gt;&amp;lt;ThumbnailUrl&amp;gt;/ifcr/tools/xmgr/img/template_thumbnails/sidebar_content.jpg&amp;lt;/ThumbnailUrl&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin-bottom: 0cm; margin-left: 36pt; margin-right: 0cm;"&gt;
&lt;span style="font-family: inherit;"&gt;&amp;lt;ContentItem&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin-bottom: 0cm; margin-left: 36pt; margin-right: 0cm;"&gt;
&lt;span style="font-family: inherit;"&gt;&amp;lt;Name&amp;gt;Hello cartridge&amp;lt;/Name&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin-bottom: 0cm; margin-left: 36pt; margin-right: 0cm;"&gt;
&lt;span style="font-family: inherit;"&gt;&amp;lt;Property name="message"&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin-bottom: 0cm; margin-left: 36pt; margin-right: 0cm;"&gt;
&lt;span style="font-family: inherit;"&gt;&amp;lt;String/&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin-bottom: 0cm; margin-left: 36pt; margin-right: 0cm;"&gt;
&lt;span style="font-family: inherit;"&gt;&amp;lt;/Property&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin-bottom: 0cm; margin-left: 36pt; margin-right: 0cm;"&gt;
&lt;span style="font-family: inherit;"&gt;&amp;lt;Property name="messageColor"&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin-bottom: 0cm; margin-left: 36pt; margin-right: 0cm;"&gt;
&lt;span style="font-family: inherit;"&gt;&amp;lt;String/&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin-bottom: 0cm; margin-left: 36pt; margin-right: 0cm;"&gt;
&lt;span style="font-family: inherit;"&gt;&amp;lt;/Property&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin-bottom: 0cm; margin-left: 36pt; margin-right: 0cm;"&gt;
&lt;span style="font-family: inherit;"&gt;&amp;lt;/ContentItem&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin-bottom: 0cm; margin-left: 36pt; margin-right: 0cm;"&gt;
&lt;span style="font-family: inherit;"&gt;&amp;lt;EditorPanel&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin-bottom: 0cm; margin-left: 36pt; margin-right: 0cm;"&gt;
&lt;span style="font-family: inherit;"&gt;&amp;lt;BasicContentItemEditor&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin-bottom: 0cm; margin-left: 36pt; margin-right: 0cm;"&gt;
&lt;span style="font-family: inherit;"&gt;&amp;lt;editors:StringEditor propertyName="message" label="Message"/&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin-bottom: 0cm; margin-left: 36pt; margin-right: 0cm;"&gt;
&lt;span style="font-family: inherit;"&gt;&amp;lt;editors:StringEditor propertyName="messageColor"&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin-bottom: 0cm; margin-left: 36pt; margin-right: 0cm;"&gt;
&lt;span style="font-family: inherit;"&gt;label="Color"/&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin-bottom: 0cm; margin-left: 36pt; margin-right: 0cm;"&gt;
&lt;span style="font-family: inherit;"&gt;&amp;lt;/BasicContentItemEditor&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin-bottom: 0cm; margin-left: 36pt; margin-right: 0cm;"&gt;
&lt;span style="font-family: inherit;"&gt;&amp;lt;/EditorPanel&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="-webkit-text-stroke-width: 0px; color: black; font-family: 'Times New Roman'; font-size: medium; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; margin-bottom: 0cm; margin-left: 36pt; margin-right: 0cm; orphans: auto; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px;"&gt;
&lt;div style="margin: 0px;"&gt;
&lt;span style="font-family: inherit;"&gt;&amp;lt;/ContentTemplate&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;span style="font-family: inherit; text-indent: -18pt;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="font-family: inherit; text-indent: -18pt;"&gt;3.&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="font-family: inherit; text-indent: -18pt;"&gt;Upload the template to Endeca Workbench&amp;nbsp;&lt;/span&gt;&lt;span style="font-family: inherit; text-indent: -18pt;"&gt;–&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: inherit; text-indent: -18pt;"&gt;&amp;nbsp; &amp;nbsp; &lt;b&gt;·&lt;/b&gt;&lt;/span&gt;&lt;span style="font-family: inherit; text-indent: -18pt;"&gt;&lt;b&gt;&amp;nbsp;&lt;/b&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="font-family: inherit; text-indent: -18pt;"&gt;Open a command prompt and navigate to the&lt;/span&gt;&lt;span style="font-family: inherit; text-indent: -18pt;"&gt;&amp;nbsp;&lt;/span&gt;&lt;i style="font-family: inherit; text-indent: -18pt;"&gt;control&lt;/i&gt;&lt;span style="font-family: inherit; text-indent: -18pt;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="font-family: inherit; text-indent: -18pt;"&gt;directory of your deployed application, for example, D:\Endeca\apps\Discover\control&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: inherit; text-indent: -18pt;"&gt;&amp;nbsp; &amp;nbsp; &lt;b&gt;·&lt;/b&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="font-family: inherit; text-indent: -18pt;"&gt;Run the&amp;nbsp;&lt;i&gt;set_templates&lt;/i&gt;&amp;nbsp;command&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoListParagraphCxSpMiddle" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; margin-left: 72.0pt; margin-right: 0cm; mso-margin-top-alt: 0cm; text-autospace: none;"&gt;
&lt;span style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoListParagraphCxSpMiddle" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; margin-left: 72.0pt; margin-right: 0cm; mso-margin-top-alt: 0cm; text-autospace: none;"&gt;
&lt;span style="font-family: inherit;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiOOSNfabffDoF6QSw7xdGfCuI1eMvzIvPHJE4QG19TZWT00AILlFJiGlEFRoi-p7lf-2CJf8gJa5qWlTcWnaDiVJM2EQTB2IGQrvP0W1ojKIeUvmuOU0WDRPug0kIw_iAnCloy/s1600/image024-752532.jpg"&gt;&lt;img alt="" border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiOOSNfabffDoF6QSw7xdGfCuI1eMvzIvPHJE4QG19TZWT00AILlFJiGlEFRoi-p7lf-2CJf8gJa5qWlTcWnaDiVJM2EQTB2IGQrvP0W1ojKIeUvmuOU0WDRPug0kIw_iAnCloy/s320/image024-752532.jpg" height="86" id="BLOGGER_PHOTO_ID_6062748142798287442" width="400" /&gt;&lt;/a&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoListParagraphCxSpMiddle" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; text-autospace: none;"&gt;
&lt;span style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoListParagraphCxSpMiddle" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; text-autospace: none;"&gt;
&lt;span style="font-family: inherit;"&gt;&lt;span style="text-indent: -18pt;"&gt;4.&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="text-indent: -18pt;"&gt;Add the cartridge to a page  &lt;/span&gt;&lt;span style="text-indent: -18pt;"&gt;–&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoListParagraphCxSpMiddle" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; text-autospace: none;"&gt;
&lt;span style="font-family: inherit;"&gt;&lt;span style="text-indent: -18pt;"&gt;&amp;nbsp; &amp;nbsp; &lt;b&gt;·&lt;/b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="text-indent: -18pt;"&gt;Open Endeca Workbench in a Web browser.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoListParagraphCxSpMiddle" style="line-height: normal; margin-bottom: 0cm; text-indent: -24px;"&gt;
&lt;span style="font-family: inherit;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; The default URL for Workbench is  http://localhost:8006. The default  &lt;b&gt;Username   &lt;/b&gt;is admin  and the default   &lt;b&gt;Password &lt;/b&gt;is  admin&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoListParagraphCxSpMiddle" style="line-height: normal; margin-bottom: 0cm; text-indent: -24px;"&gt;
&lt;span style="font-family: inherit;"&gt;&lt;span style="text-indent: -18pt;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style="text-indent: -18pt;"&gt;&lt;b&gt;·&amp;nbsp;&lt;/b&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="text-indent: -18pt;"&gt;From the launch page, select  &lt;/span&gt;&lt;b style="text-indent: -18pt;"&gt;Experience Manager&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoListParagraphCxSpMiddle" style="line-height: normal; margin-bottom: 0cm; text-indent: -24px;"&gt;
&lt;span style="font-family: inherit;"&gt;&lt;span style="text-indent: -18pt;"&gt;&lt;b&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/b&gt;&lt;/span&gt;&lt;span style="text-indent: -18pt;"&gt;&lt;b&gt;·&lt;/b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="text-indent: -18pt;"&gt;In the tree on the left, select  &lt;/span&gt;&lt;b style="text-indent: -18pt;"&gt;Search and Navigation Pages  &lt;/b&gt;&lt;span style="text-indent: -18pt;"&gt;under the Content section, then select the  &lt;/span&gt;&lt;b style="text-indent: -18pt;"&gt;Default Page&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoListParagraphCxSpMiddle" style="line-height: normal; margin-bottom: 0cm; text-indent: -24px;"&gt;
&lt;span style="font-family: inherit;"&gt;&lt;span style="text-indent: -18pt;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;b&gt; · &lt;/b&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="text-indent: -18pt;"&gt;In the Edit Pane on the right, select the right column section from the Content Tree in the bottom left&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; text-indent: 0px;"&gt;
&lt;span style="font-family: inherit;"&gt;&lt;span style="text-indent: -18pt;"&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style="text-indent: -18pt;"&gt;&lt;b&gt;·&amp;nbsp;&lt;/b&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="text-indent: -18pt;"&gt;Click  &lt;/span&gt;&lt;b style="text-indent: -18pt;"&gt;Add&lt;/b&gt;&lt;span style="text-indent: -18pt;"&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; text-indent: -24px;"&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgMJg-Gudet6GXfXxWqT7DF0SG9F5PgUIlRa2pyYkudmK3vNMIF6waegO8DA3XpU9ZPgkrIy_-G6DEYC691tZ1FxTgsx_W4ByzvFoD5OJfnT19rV-wk5XNwg7lHR_nVjLafdyS3/s1600/image025-754014.jpg" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;span style="font-family: inherit;"&gt;&lt;img alt="" border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgMJg-Gudet6GXfXxWqT7DF0SG9F5PgUIlRa2pyYkudmK3vNMIF6waegO8DA3XpU9ZPgkrIy_-G6DEYC691tZ1FxTgsx_W4ByzvFoD5OJfnT19rV-wk5XNwg7lHR_nVjLafdyS3/s320/image025-754014.jpg" height="198" id="BLOGGER_PHOTO_ID_6062748152686174354" width="400" /&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;span style="font-family: inherit;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: inherit;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; The cartridge selector dialog displays&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhnowZ7VNXp2D5Dy2f91kJZbGGz71fVz95uPhXMnwINk2Ic3E9Pc2yf9uWeXa6b4B3esJMO9avJrSwFgeJZnyDzJ_1hnBuVEvbdjDb6DNa5EmGepSttVDg1VeWpkDhek-0vHGVM/s1600/image026-756034.jpg" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;span style="font-family: inherit;"&gt;&lt;img alt="" border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhnowZ7VNXp2D5Dy2f91kJZbGGz71fVz95uPhXMnwINk2Ic3E9Pc2yf9uWeXa6b4B3esJMO9avJrSwFgeJZnyDzJ_1hnBuVEvbdjDb6DNa5EmGepSttVDg1VeWpkDhek-0vHGVM/s320/image026-756034.jpg" height="193" id="BLOGGER_PHOTO_ID_6062748159580544610" width="400" /&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; text-indent: -24px;"&gt;
&lt;span style="font-family: inherit; text-indent: -18pt;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; text-indent: -24px;"&gt;
&lt;span style="font-family: inherit; text-indent: -18pt;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; text-indent: -24px;"&gt;
&lt;span style="font-family: inherit;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;b&gt;·&amp;nbsp;&lt;/b&gt; &amp;nbsp;&lt;span style="text-indent: -18pt;"&gt;Select the&amp;nbsp;&lt;/span&gt;&lt;b style="text-indent: -18pt;"&gt;HelloWorld&amp;nbsp;&lt;/b&gt;&lt;span style="text-indent: -18pt;"&gt;cartridge and click&amp;nbsp;&lt;/span&gt;&lt;b style="text-indent: -18pt;"&gt;OK&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; text-indent: -24px;"&gt;
&lt;span style="font-family: inherit;"&gt;&lt;b style="text-indent: -18pt;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/b&gt;&lt;b&gt;·&lt;/b&gt;&amp;nbsp; &amp;nbsp;Select the new Hello cartridge from the Content Tree on the left and configure it as shown&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; text-indent: -24px;"&gt;
&lt;span style="font-family: inherit;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEivh6DYBxy8-efJABayur_EWDV8QPoHtuWXb4b8TFG5gxB2CD0tpGERZzV_6Ps_dHlWP9Xfn73eykhf037EGqEuw2_QXhdQPFV9ZN33nq2yWr7AAcigK2LlX7I_PKeUggL4wOYh/s1600/image027-757784.jpg" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;span style="font-family: inherit;"&gt;&lt;img alt="" border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEivh6DYBxy8-efJABayur_EWDV8QPoHtuWXb4b8TFG5gxB2CD0tpGERZzV_6Ps_dHlWP9Xfn73eykhf037EGqEuw2_QXhdQPFV9ZN33nq2yWr7AAcigK2LlX7I_PKeUggL4wOYh/s320/image027-757784.jpg" height="196" id="BLOGGER_PHOTO_ID_6062748164771528690" width="400" /&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; text-indent: -24px;"&gt;
&lt;span style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; text-indent: -24px;"&gt;
&lt;span style="font-family: inherit;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span style="text-indent: -18pt;"&gt;&lt;b&gt;·&amp;nbsp;&lt;/b&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="text-indent: -18pt;"&gt;Click&amp;nbsp;&lt;/span&gt;&lt;b style="text-indent: -18pt;"&gt;Save Changes&amp;nbsp;&lt;/b&gt;&lt;span style="text-indent: -18pt;"&gt;in the upper right of the page.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoListParagraphCxSpLast" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; margin-left: 72.0pt; margin-right: 0cm; mso-margin-top-alt: 0cm; text-autospace: none;"&gt;
&lt;span style="font-family: inherit;"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoListParagraph" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-list: l1 level1 lfo1; text-autospace: none; text-indent: -18.0pt;"&gt;
&lt;span style="font-family: inherit;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 5.&lt;span style="font-style: normal; font-variant: normal; font-weight: normal; line-height: normal;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;Try to view the cartridge in the Discover Electronics application.&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoListParagraph" style="line-height: normal; margin-bottom: 0cm; text-indent: -24px;"&gt;
&lt;span style="font-family: inherit;"&gt;&lt;span style="text-indent: 36pt;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;In a Web browser, navigate to  &lt;/span&gt;&lt;a href="http://localhost:8006/discover-authoring/" style="text-indent: 36pt;"&gt;http://localhost:8006/discover-authoring/&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; text-autospace: none; text-indent: 36.0pt;"&gt;
&lt;span style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; text-autospace: none; text-indent: 36.0pt;"&gt;
&lt;span style="font-family: inherit;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjB7j00GopyD8l9_ZCvGSOsDey3X19EU3bl7zIN8tIDtIvLnfou9CkrOEX0QILzz5TPYVW7dMZAwA7fIWT8xC26K1_M7MEuoTMubWC3BVZKC_nfXLiNDj8D9kkrsnqq8JY5Etux/s1600/image028-759686.jpg"&gt;&lt;img alt="" border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjB7j00GopyD8l9_ZCvGSOsDey3X19EU3bl7zIN8tIDtIvLnfou9CkrOEX0QILzz5TPYVW7dMZAwA7fIWT8xC26K1_M7MEuoTMubWC3BVZKC_nfXLiNDj8D9kkrsnqq8JY5Etux/s320/image028-759686.jpg" height="300" id="BLOGGER_PHOTO_ID_6062748173905766450" width="400" /&gt;&lt;/a&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; text-autospace: none; text-indent: 36.0pt;"&gt;
&lt;span style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; margin-left: 36.0pt; margin-right: 0cm; mso-margin-top-alt: 0cm; text-autospace: none;"&gt;
&lt;span style="font-family: inherit;"&gt;The error displays because we have not yet created a renderer for the Hello cartridge.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; margin-left: 36.0pt; margin-right: 0cm; mso-margin-top-alt: 0cm; text-autospace: none;"&gt;
&lt;span style="font-family: inherit;"&gt;Scroll down to the bottom of the page and click the  &lt;b&gt;json &lt;/b&gt;link to view the serialized Assembler response model that represents the current page.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; margin-left: 36.0pt; margin-right: 0cm; mso-margin-top-alt: 0cm; text-autospace: none;"&gt;
&lt;span style="font-family: inherit;"&gt;Oracle recommends that you use a browser or install a plugin that supports native JSON display.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; margin-left: 36.0pt; margin-right: 0cm; mso-margin-top-alt: 0cm; text-autospace: none;"&gt;
&lt;span style="font-family: inherit;"&gt;Otherwise, you can download the JSON response as a file.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; margin-left: 36.0pt; margin-right: 0cm; mso-margin-top-alt: 0cm; text-autospace: none;"&gt;
&lt;span style="font-family: inherit;"&gt;Alternatively, you can click the  &lt;b&gt;xml &lt;/b&gt;link to view the same response in XML. In this article, we use the&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; margin-left: 36.0pt; margin-right: 0cm; mso-margin-top-alt: 0cm; text-autospace: none;"&gt;
&lt;span style="font-family: inherit;"&gt;JSON format when examining the Assembler response.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; text-autospace: none;"&gt;
&lt;span style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; margin-left: 36.0pt; margin-right: 0cm; mso-margin-top-alt: 0cm; text-autospace: none;"&gt;
&lt;span style="font-family: inherit;"&gt;The following shows the JSON representation of the page with most of the tree collapsed, highlighting the data for the cartridge that we just added.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; margin-left: 36.0pt; margin-right: 0cm; mso-margin-top-alt: 0cm; text-autospace: none;"&gt;
&lt;span style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; margin-left: 36.0pt; margin-right: 0cm; mso-margin-top-alt: 0cm; text-autospace: none;"&gt;
&lt;span style="font-family: inherit;"&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; margin-left: 36.0pt; margin-right: 0cm; mso-margin-top-alt: 0cm; text-autospace: none;"&gt;
&lt;span style="font-family: inherit;"&gt;"@type": "ResultsPageSlot",&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; margin-left: 36.0pt; margin-right: 0cm; mso-margin-top-alt: 0cm; text-autospace: none;"&gt;
&lt;span style="font-family: inherit;"&gt;"name": "Browse Page",&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; margin-left: 36.0pt; margin-right: 0cm; mso-margin-top-alt: 0cm; text-autospace: none;"&gt;
&lt;span style="font-family: inherit;"&gt;"contentCollection": "Search And Navigation Pages",&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; margin-left: 36.0pt; margin-right: 0cm; mso-margin-top-alt: 0cm; text-autospace: none;"&gt;
&lt;span style="font-family: inherit;"&gt;"ruleLimit": "1",&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; margin-left: 36.0pt; margin-right: 0cm; mso-margin-top-alt: 0cm; text-autospace: none;"&gt;
&lt;span style="font-family: inherit;"&gt;"contents": [&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; margin-left: 36.0pt; margin-right: 0cm; mso-margin-top-alt: 0cm; text-autospace: none;"&gt;
&lt;span style="font-family: inherit;"&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; margin-left: 36.0pt; margin-right: 0cm; mso-margin-top-alt: 0cm; text-autospace: none;"&gt;
&lt;span style="font-family: inherit;"&gt;"@type": "ThreeColumnNavigationPage",&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; margin-left: 36.0pt; margin-right: 0cm; mso-margin-top-alt: 0cm; text-autospace: none;"&gt;
&lt;span style="font-family: inherit;"&gt;"name": "Default Page",&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; margin-left: 36.0pt; margin-right: 0cm; mso-margin-top-alt: 0cm; text-autospace: none;"&gt;
&lt;span style="font-family: inherit;"&gt;"title": "Discover Electronics",&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; margin-left: 36.0pt; margin-right: 0cm; mso-margin-top-alt: 0cm; text-autospace: none;"&gt;
&lt;span style="font-family: inherit;"&gt;"metaKeywords": "camera cameras electronics",&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; margin-left: 36.0pt; margin-right: 0cm; mso-margin-top-alt: 0cm; text-autospace: none;"&gt;
&lt;span style="font-family: inherit;"&gt;"metaDescription": "Endeca eBusiness reference application.",&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; margin-left: 36.0pt; margin-right: 0cm; mso-margin-top-alt: 0cm; text-autospace: none;"&gt;
&lt;span style="font-family: inherit;"&gt;"links": [ ],&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; margin-left: 36.0pt; margin-right: 0cm; mso-margin-top-alt: 0cm; text-autospace: none;"&gt;
&lt;span style="font-family: inherit;"&gt;"header": [ ... ],&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; margin-left: 36.0pt; margin-right: 0cm; mso-margin-top-alt: 0cm; text-autospace: none;"&gt;
&lt;span style="font-family: inherit;"&gt;"leftColumn": [ ... ],&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; margin-left: 36.0pt; margin-right: 0cm; mso-margin-top-alt: 0cm; text-autospace: none;"&gt;
&lt;span style="font-family: inherit;"&gt;"main": [ ... ],&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; margin-left: 36.0pt; margin-right: 0cm; mso-margin-top-alt: 0cm; text-autospace: none;"&gt;
&lt;span style="font-family: inherit;"&gt;"rightColumn": [&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; margin-left: 36.0pt; margin-right: 0cm; mso-margin-top-alt: 0cm; text-autospace: none; text-indent: 36.0pt;"&gt;
&lt;span style="font-family: inherit;"&gt;{ ... },&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; margin-left: 36.0pt; margin-right: 0cm; mso-margin-top-alt: 0cm; text-autospace: none;"&gt;
&lt;span style="font-family: inherit;"&gt;{ ... },&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; margin-left: 36.0pt; margin-right: 0cm; mso-margin-top-alt: 0cm; text-autospace: none;"&gt;
&lt;span style="font-family: inherit;"&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; margin-left: 36.0pt; margin-right: 0cm; mso-margin-top-alt: 0cm; text-autospace: none;"&gt;
&lt;b&gt;&lt;span style="font-family: inherit;"&gt;"@type": "Hello",&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; margin-left: 36.0pt; margin-right: 0cm; mso-margin-top-alt: 0cm; text-autospace: none;"&gt;
&lt;b&gt;&lt;span style="font-family: inherit;"&gt;"name": "Hello cartridge",&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; margin-left: 36.0pt; margin-right: 0cm; mso-margin-top-alt: 0cm; text-autospace: none;"&gt;
&lt;b&gt;&lt;span style="font-family: inherit;"&gt;"message": "Hello",&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; margin-left: 36.0pt; margin-right: 0cm; mso-margin-top-alt: 0cm; text-autospace: none;"&gt;
&lt;b&gt;&lt;span style="font-family: inherit;"&gt;"messageColor": "#FF0000"&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; margin-left: 36.0pt; margin-right: 0cm; mso-margin-top-alt: 0cm; text-autospace: none;"&gt;
&lt;span style="font-family: inherit;"&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; margin-left: 36.0pt; margin-right: 0cm; mso-margin-top-alt: 0cm; text-autospace: none;"&gt;
&lt;span style="font-family: inherit;"&gt;]&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; margin-left: 36.0pt; margin-right: 0cm; mso-margin-top-alt: 0cm; text-autospace: none;"&gt;
&lt;span style="font-family: inherit;"&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; margin-left: 36.0pt; margin-right: 0cm; mso-margin-top-alt: 0cm; text-autospace: none;"&gt;
&lt;span style="font-family: inherit;"&gt;],&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; margin-left: 36.0pt; margin-right: 0cm; mso-margin-top-alt: 0cm; text-autospace: none;"&gt;
&lt;span style="font-family: inherit;"&gt;...&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; margin-left: 36.0pt; margin-right: 0cm; mso-margin-top-alt: 0cm; text-autospace: none;"&gt;
&lt;span style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; margin-left: 36.0pt; margin-right: 0cm; mso-margin-top-alt: 0cm; text-autospace: none;"&gt;
&lt;span style="font-family: inherit;"&gt;}&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoListParagraphCxSpMiddle" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; text-autospace: none;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoListParagraphCxSpLast" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; text-autospace: none;"&gt;
&lt;span style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; text-autospace: none;"&gt;
&lt;span style="font-family: inherit;"&gt;In the next section, we'll create a simple renderer that displays the message based on the values configured in Experience Manager.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; text-autospace: none;"&gt;
&lt;span style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; text-autospace: none;"&gt;
&lt;b&gt;&lt;span style="font-family: inherit;"&gt;Adding a basic renderer -&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; text-autospace: none;"&gt;
&lt;span style="font-family: inherit;"&gt;While there is no one way to write rendering code for an application, in this example we'll write a simple JSP renderer for our basic cartridge.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; text-autospace: none;"&gt;
&lt;span style="font-family: inherit;"&gt;To write a basic "Hello, World" renderer:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoListParagraph" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-list: l0 level1 lfo8; text-autospace: none; text-indent: -18.0pt;"&gt;
&lt;span style="font-family: inherit;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;1.&lt;span style="font-style: normal; font-variant: normal; font-weight: normal; line-height: normal;"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;Create a new JSP page (Hello.jsp) and type or copy the following:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; text-autospace: none;"&gt;
&lt;span style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; margin-left: 18.0pt; margin-right: 0cm; mso-margin-top-alt: 0cm; text-autospace: none;"&gt;
&lt;span style="font-family: inherit;"&gt;&amp;lt;%@page language="java" pageEncoding="UTF-8" contentType="text/html;charset=UTF-8"%&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; margin-left: 18.0pt; margin-right: 0cm; mso-margin-top-alt: 0cm; text-autospace: none;"&gt;
&lt;span style="font-family: inherit;"&gt;&amp;lt;%@include file="/WEB-INF/views/include.jsp"%&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; margin-left: 18.0pt; margin-right: 0cm; mso-margin-top-alt: 0cm; text-autospace: none;"&gt;
&lt;span style="font-family: inherit;"&gt;&amp;lt;div style="border-style: dotted; border-width: 1px;border-color: #999999; padding: 10px 10px"&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; margin-left: 18.0pt; margin-right: 0cm; mso-margin-top-alt: 0cm; text-autospace: none; text-indent: 36.0pt;"&gt;
&lt;span style="font-family: inherit;"&gt;&amp;lt;div style="font-size: 150%;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; margin-left: 54.0pt; margin-right: 0cm; mso-margin-top-alt: 0cm; text-autospace: none; text-indent: 36.0pt;"&gt;
&lt;span style="font-family: inherit;"&gt;color: ${component.messageColor}"&amp;gt;${component.message}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; margin-left: 18.0pt; margin-right: 0cm; mso-margin-top-alt: 0cm; text-autospace: none; text-indent: 36.0pt;"&gt;
&lt;span style="font-family: inherit;"&gt;&amp;lt;/div&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; margin-left: 18.0pt; margin-right: 0cm; mso-margin-top-alt: 0cm; text-autospace: none;"&gt;
&lt;span style="font-family: inherit;"&gt;&amp;lt;/div&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; text-autospace: none;"&gt;
&lt;span style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoListParagraph" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-list: l0 level1 lfo8; text-autospace: none; text-indent: -18.0pt;"&gt;
&lt;span style="font-family: inherit;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;2.&lt;span style="font-style: normal; font-variant: normal; font-weight: normal; line-height: normal;"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;Save the above renderer to&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoListParagraph" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-list: l0 level1 lfo8; text-autospace: none; text-indent: -18.0pt;"&gt;
&lt;span style="font-family: inherit;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;D:\Endeca\ToolsAndFrameworks\11.1.0\reference\discover-electronics-authoring\WEB-INF\views\desktop\Hello\Hello.jsp&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoListParagraph" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-list: l0 level1 lfo8; text-autospace: none; text-indent: -18.0pt;"&gt;
&lt;span style="font-family: inherit;"&gt;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoListParagraph" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-list: l0 level1 lfo8; text-autospace: none; text-indent: -18.0pt;"&gt;
&lt;span style="font-family: inherit;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; (You need to create   “Hello” folder)&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; text-autospace: none;"&gt;
&lt;span style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoListParagraph" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-list: l0 level1 lfo8; text-autospace: none; text-indent: -18.0pt;"&gt;
&lt;span style="font-family: inherit;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;3.&lt;span style="font-style: normal; font-variant: normal; font-weight: normal; line-height: normal;"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;Refresh the Discover Electronics authoring application at&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoListParagraph" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-list: l0 level1 lfo8; text-autospace: none; text-indent: -18.0pt;"&gt;
&lt;span style="font-family: inherit;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;http://localhost:8006/discover-authoring/  to see the end result :-)&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; text-autospace: none;"&gt;
&lt;span style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; text-autospace: none;"&gt;
&lt;span style="font-family: inherit;"&gt;&lt;i&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgumcQdX5Q6UgLbie_m-8ojOZhVBO7mQD5oKVzxW2eAxOMNOm4FQw0babZkJIzRuzqy5eefd8BAd9CKLpY_dlRzAxQ_qSU9JSjUlp4k41gr6glRANVJIgm5en2arvk1ahhNGvV2/s1600/image029-761294.png"&gt;&lt;img alt="" border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgumcQdX5Q6UgLbie_m-8ojOZhVBO7mQD5oKVzxW2eAxOMNOm4FQw0babZkJIzRuzqy5eefd8BAd9CKLpY_dlRzAxQ_qSU9JSjUlp4k41gr6glRANVJIgm5en2arvk1ahhNGvV2/s320/image029-761294.png" height="250" id="BLOGGER_PHOTO_ID_6062748181491264450" width="400" /&gt;&lt;/a&gt;&lt;/i&gt;&lt;i&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/i&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; text-autospace: none;"&gt;
&lt;span style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; text-autospace: none;"&gt;
&lt;span style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; text-autospace: none;"&gt;
&lt;span style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; text-autospace: none;"&gt;
&lt;span style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; text-autospace: none;"&gt;
&lt;span style="font-family: inherit;"&gt;In future posts I would love to explore Optimizing Application URLs and Integrating with the Sitemap Generator. All the above concepts and much more is covered in &lt;a href="http://docs.oracle.com/cd/E51273_03/ToolsAndFrameworks.110/pdf/AsmAppDevGuide.pdf" target="_blank"&gt;Endeca Assembler Application Developer's Guide&lt;/a&gt;.&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhASrxIfccg8-WN8qLYHK4XKZHktOYMKIFOb3RLyrJW6cLLZ9mo6xaXxXyPV_MJtmCt2ipG75Di0mG79bk6xM3HDj1BeuPX62h1kG5BPLwOWPd521kHInzMNF0NaK01FrqCEwFE/s72-c/image019-744288.png" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">4</thr:total><enclosure length="3392048" type="application/pdf" url="http://docs.oracle.com/cd/E51273_03/ToolsAndFrameworks.110/pdf/AsmAppDevGuide.pdf"/><itunes:explicit>no</itunes:explicit><itunes:subtitle>In this post I have tried to explore Cartridges and Endeca Assembler Application by examining how they work together in a "Hello World" example cartridge. So without any further delays let’s first understand what is cartridge , cartridge template , cartridge handlers and the structure of a cartridge before making our own custom Cartridges. Further we will also take a close look at Endeca assembler application to understand what it does under the hood. Cartridges and Cartridge Templates – A cartridge is a content item with a specific role in your application; for example, a cartridge can map to a GUI component in the front-end application. The Assembler includes a number of cartridges that map to typical GUI components – for example, a Breadcrumbs cartridge, a Search Box cartridge, and a Results List cartridge. You can create other cartridges that map to other GUI components expected by your business users. Every cartridge is defined by a template. A cartridge template defines: &amp;nbsp; ·&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;The structure and initial configuration for a content item. &amp;nbsp;&amp;nbsp;·&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;A set of configurable properties and the associated editors with which the business user can configure them. Experience Manager instantiates each content item from its cartridge template. This includes any configuration made by the business user, and results in a content item with instance configuration that is passed to the Assembler. Cartridge Handlers - A cartridge handler takes a content item as input, processes it, and returns a content item as output. The input content item typically includes instance configuration, which consists of any properties specified by a business user using the Experience Manager or Rule Manager tool in Endeca Workbench. The content item is typically initialized by layering configuration from other sources: your application may include default values, or URL parameters that represent end user selections in the front-end application. A cartridge handler can optionally perform further processing, such as querying a search engine for data. When processing is finished, the handler returns a completed content item to the application. Note: Not all cartridges require cartridge handlers. In the case of a content item with no associated cartridge handler, the Assembler returns the unmodified content item. Cartridge structure - The template contains two main sections: the &amp;lt;ContentItem&amp;gt; element and the &amp;lt;EditorPanel&amp;gt; element. The content item is a core concept in Assembler applications that can represent both the configuration model for a cartridge and the response model that the Assembler returns to the client application. A content item is a map of properties, or key-value pairs. The &amp;lt;ContentItem&amp;gt; element in the template defines the prototypical content item and its properties, similar to a class or type definition. In our example (explained below) template, we defined two string properties named message and messageColor and attached two simple string editors to those properties. The result looks like this in Experience Manager: A brief note on Endeca Assembler Application - The Endeca assembler application enables a WEB application to query the MDEX engine and retrieve the appropriate dynamic content based on user navigation state. The assembler application provides a RESTful web service API that returns results either in JSON or XML format. What happens at runtime? The business user creates and configures instances of cartridges in Experience Manager based on a template. During cartridge development you need to create at least one instance of a cartridge for testing. The Assembler retrieves this configuration at runtime and uses it to build the response model that it returns to the client application. For any given cartridge, the default behavior is for the Assembler to do no processing on the configuration and simply return the configuration content item as a map of properties. That is, the response object is the same as the configuration object unless specific processing logic is defined in the Assembler for that cartridge. Cartridge creation workflow – The high-level workflow for creating a basic cartridge is: &amp;nbsp; &amp;nbsp; 1.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Create a cartridge template and upload it to Endeca Workbench. &amp;nbsp; &amp;nbsp; 2.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Use Experience Manager to create and configure an instance of the cartridge. &amp;nbsp; &amp;nbsp; 3.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Add a renderer to the front-end application. Step 2 is necessary during development in order to have a cartridge instance with which to test. However, once the cartridge is complete, the business user is typically responsible for creating and maintaining cartridge instances in Experience Manager. In the below sections, we'll see each of these elements of the cartridge in detail. Hello World cartridge example – Here we will define a new cartridge and use Workbench to configure it to appear on a page. Follow these steps to create and configure a basic "Hello World" cartridge. 1.&amp;nbsp;&amp;nbsp;&amp;nbsp;Navigate to the templates directory of your application (Discovery in our case), and create a subdirectory named "HelloWorld." This directory name is the template ID for your template. For example: D:\Endeca\apps\Discover\config\import\templates\HelloWorld 2.&amp;nbsp;&amp;nbsp;&amp;nbsp;Create a cartridge template - copy the following into the contents of the file. Save the file with the name template.xml in the HelloWorld directory which we just created in point 1 above. &amp;lt;ContentTemplate xmlns="http://endeca.com/schema/content-template/2008" xmlns:editors="editors" type="SecondaryContent"&amp;gt; &amp;lt;Description&amp;gt;A sample cartridge that can display a simple message.&amp;lt;/Description&amp;gt; &amp;lt;ThumbnailUrl&amp;gt;/ifcr/tools/xmgr/img/template_thumbnails/sidebar_content.jpg&amp;lt;/ThumbnailUrl&amp;gt; &amp;lt;ContentItem&amp;gt; &amp;lt;Name&amp;gt;Hello cartridge&amp;lt;/Name&amp;gt; &amp;lt;Property name="message"&amp;gt; &amp;lt;String/&amp;gt; &amp;lt;/Property&amp;gt; &amp;lt;Property name="messageColor"&amp;gt; &amp;lt;String/&amp;gt; &amp;lt;/Property&amp;gt; &amp;lt;/ContentItem&amp;gt; &amp;lt;EditorPanel&amp;gt; &amp;lt;BasicContentItemEditor&amp;gt; &amp;lt;editors:StringEditor propertyName="message" label="Message"/&amp;gt; &amp;lt;editors:StringEditor propertyName="messageColor" label="Color"/&amp;gt; &amp;lt;/BasicContentItemEditor&amp;gt; &amp;lt;/EditorPanel&amp;gt; &amp;lt;/ContentTemplate&amp;gt; 3.&amp;nbsp;&amp;nbsp;&amp;nbsp;Upload the template to Endeca Workbench&amp;nbsp;– &amp;nbsp; &amp;nbsp; ·&amp;nbsp;&amp;nbsp;Open a command prompt and navigate to the&amp;nbsp;control&amp;nbsp;directory of your deployed application, for example, D:\Endeca\apps\Discover\control &amp;nbsp; &amp;nbsp; ·&amp;nbsp;&amp;nbsp;Run the&amp;nbsp;set_templates&amp;nbsp;command 4.&amp;nbsp;&amp;nbsp;&amp;nbsp;Add the cartridge to a page – &amp;nbsp; &amp;nbsp; ·&amp;nbsp;&amp;nbsp;&amp;nbsp;Open Endeca Workbench in a Web browser. &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; The default URL for Workbench is http://localhost:8006. The default Username is admin and the default Password is admin &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ·&amp;nbsp;&amp;nbsp;&amp;nbsp;From the launch page, select Experience Manager &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ·&amp;nbsp;&amp;nbsp;&amp;nbsp;In the tree on the left, select Search and Navigation Pages under the Content section, then select the Default Page&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; · &amp;nbsp;&amp;nbsp;In the Edit Pane on the right, select the right column section from the Content Tree in the bottom left &amp;nbsp; &amp;nbsp; ·&amp;nbsp;&amp;nbsp;&amp;nbsp;Click Add. &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; The cartridge selector dialog displays &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;·&amp;nbsp; &amp;nbsp;Select the&amp;nbsp;HelloWorld&amp;nbsp;cartridge and click&amp;nbsp;OK &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;·&amp;nbsp; &amp;nbsp;Select the new Hello cartridge from the Content Tree on the left and configure it as shown &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;·&amp;nbsp;&amp;nbsp;&amp;nbsp;Click&amp;nbsp;Save Changes&amp;nbsp;in the upper right of the page. &amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 5.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Try to view the cartridge in the Discover Electronics application. &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;In a Web browser, navigate to http://localhost:8006/discover-authoring/ The error displays because we have not yet created a renderer for the Hello cartridge. Scroll down to the bottom of the page and click the json link to view the serialized Assembler response model that represents the current page. Oracle recommends that you use a browser or install a plugin that supports native JSON display. Otherwise, you can download the JSON response as a file. Alternatively, you can click the xml link to view the same response in XML. In this article, we use the JSON format when examining the Assembler response. The following shows the JSON representation of the page with most of the tree collapsed, highlighting the data for the cartridge that we just added. { "@type": "ResultsPageSlot", "name": "Browse Page", "contentCollection": "Search And Navigation Pages", "ruleLimit": "1", "contents": [ { "@type": "ThreeColumnNavigationPage", "name": "Default Page", "title": "Discover Electronics", "metaKeywords": "camera cameras electronics", "metaDescription": "Endeca eBusiness reference application.", "links": [ ], "header": [ ... ], "leftColumn": [ ... ], "main": [ ... ], "rightColumn": [ { ... }, { ... }, { "@type": "Hello", "name": "Hello cartridge", "message": "Hello", "messageColor": "#FF0000" } ] } ], ... } In the next section, we'll create a simple renderer that displays the message based on the values configured in Experience Manager. Adding a basic renderer - While there is no one way to write rendering code for an application, in this example we'll write a simple JSP renderer for our basic cartridge. To write a basic "Hello, World" renderer: &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;1.&amp;nbsp;&amp;nbsp;Create a new JSP page (Hello.jsp) and type or copy the following: &amp;lt;%@page language="java" pageEncoding="UTF-8" contentType="text/html;charset=UTF-8"%&amp;gt; &amp;lt;%@include file="/WEB-INF/views/include.jsp"%&amp;gt; &amp;lt;div style="border-style: dotted; border-width: 1px;border-color: #999999; padding: 10px 10px"&amp;gt; &amp;lt;div style="font-size: 150%; color: ${component.messageColor}"&amp;gt;${component.message} &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;2.&amp;nbsp;&amp;nbsp;Save the above renderer to &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;D:\Endeca\ToolsAndFrameworks\11.1.0\reference\discover-electronics-authoring\WEB-INF\views\desktop\Hello\Hello.jsp &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; (You need to create “Hello” folder) &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;3.&amp;nbsp;&amp;nbsp;Refresh the Discover Electronics authoring application at &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;http://localhost:8006/discover-authoring/ to see the end result :-) In future posts I would love to explore Optimizing Application URLs and Integrating with the Sitemap Generator. All the above concepts and much more is covered in Endeca Assembler Application Developer's Guide.</itunes:subtitle><itunes:author>noreply@blogger.com (Nads)</itunes:author><itunes:summary>In this post I have tried to explore Cartridges and Endeca Assembler Application by examining how they work together in a "Hello World" example cartridge. So without any further delays let’s first understand what is cartridge , cartridge template , cartridge handlers and the structure of a cartridge before making our own custom Cartridges. Further we will also take a close look at Endeca assembler application to understand what it does under the hood. Cartridges and Cartridge Templates – A cartridge is a content item with a specific role in your application; for example, a cartridge can map to a GUI component in the front-end application. The Assembler includes a number of cartridges that map to typical GUI components – for example, a Breadcrumbs cartridge, a Search Box cartridge, and a Results List cartridge. You can create other cartridges that map to other GUI components expected by your business users. Every cartridge is defined by a template. A cartridge template defines: &amp;nbsp; ·&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;The structure and initial configuration for a content item. &amp;nbsp;&amp;nbsp;·&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;A set of configurable properties and the associated editors with which the business user can configure them. Experience Manager instantiates each content item from its cartridge template. This includes any configuration made by the business user, and results in a content item with instance configuration that is passed to the Assembler. Cartridge Handlers - A cartridge handler takes a content item as input, processes it, and returns a content item as output. The input content item typically includes instance configuration, which consists of any properties specified by a business user using the Experience Manager or Rule Manager tool in Endeca Workbench. The content item is typically initialized by layering configuration from other sources: your application may include default values, or URL parameters that represent end user selections in the front-end application. A cartridge handler can optionally perform further processing, such as querying a search engine for data. When processing is finished, the handler returns a completed content item to the application. Note: Not all cartridges require cartridge handlers. In the case of a content item with no associated cartridge handler, the Assembler returns the unmodified content item. Cartridge structure - The template contains two main sections: the &amp;lt;ContentItem&amp;gt; element and the &amp;lt;EditorPanel&amp;gt; element. The content item is a core concept in Assembler applications that can represent both the configuration model for a cartridge and the response model that the Assembler returns to the client application. A content item is a map of properties, or key-value pairs. The &amp;lt;ContentItem&amp;gt; element in the template defines the prototypical content item and its properties, similar to a class or type definition. In our example (explained below) template, we defined two string properties named message and messageColor and attached two simple string editors to those properties. The result looks like this in Experience Manager: A brief note on Endeca Assembler Application - The Endeca assembler application enables a WEB application to query the MDEX engine and retrieve the appropriate dynamic content based on user navigation state. The assembler application provides a RESTful web service API that returns results either in JSON or XML format. What happens at runtime? The business user creates and configures instances of cartridges in Experience Manager based on a template. During cartridge development you need to create at least one instance of a cartridge for testing. The Assembler retrieves this configuration at runtime and uses it to build the response model that it returns to the client application. For any given cartridge, the default behavior is for the Assembler to do no processing on the configuration and simply return the configuration content item as a map of properties. That is, the response object is the same as the configuration object unless specific processing logic is defined in the Assembler for that cartridge. Cartridge creation workflow – The high-level workflow for creating a basic cartridge is: &amp;nbsp; &amp;nbsp; 1.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Create a cartridge template and upload it to Endeca Workbench. &amp;nbsp; &amp;nbsp; 2.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Use Experience Manager to create and configure an instance of the cartridge. &amp;nbsp; &amp;nbsp; 3.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Add a renderer to the front-end application. Step 2 is necessary during development in order to have a cartridge instance with which to test. However, once the cartridge is complete, the business user is typically responsible for creating and maintaining cartridge instances in Experience Manager. In the below sections, we'll see each of these elements of the cartridge in detail. Hello World cartridge example – Here we will define a new cartridge and use Workbench to configure it to appear on a page. Follow these steps to create and configure a basic "Hello World" cartridge. 1.&amp;nbsp;&amp;nbsp;&amp;nbsp;Navigate to the templates directory of your application (Discovery in our case), and create a subdirectory named "HelloWorld." This directory name is the template ID for your template. For example: D:\Endeca\apps\Discover\config\import\templates\HelloWorld 2.&amp;nbsp;&amp;nbsp;&amp;nbsp;Create a cartridge template - copy the following into the contents of the file. Save the file with the name template.xml in the HelloWorld directory which we just created in point 1 above. &amp;lt;ContentTemplate xmlns="http://endeca.com/schema/content-template/2008" xmlns:editors="editors" type="SecondaryContent"&amp;gt; &amp;lt;Description&amp;gt;A sample cartridge that can display a simple message.&amp;lt;/Description&amp;gt; &amp;lt;ThumbnailUrl&amp;gt;/ifcr/tools/xmgr/img/template_thumbnails/sidebar_content.jpg&amp;lt;/ThumbnailUrl&amp;gt; &amp;lt;ContentItem&amp;gt; &amp;lt;Name&amp;gt;Hello cartridge&amp;lt;/Name&amp;gt; &amp;lt;Property name="message"&amp;gt; &amp;lt;String/&amp;gt; &amp;lt;/Property&amp;gt; &amp;lt;Property name="messageColor"&amp;gt; &amp;lt;String/&amp;gt; &amp;lt;/Property&amp;gt; &amp;lt;/ContentItem&amp;gt; &amp;lt;EditorPanel&amp;gt; &amp;lt;BasicContentItemEditor&amp;gt; &amp;lt;editors:StringEditor propertyName="message" label="Message"/&amp;gt; &amp;lt;editors:StringEditor propertyName="messageColor" label="Color"/&amp;gt; &amp;lt;/BasicContentItemEditor&amp;gt; &amp;lt;/EditorPanel&amp;gt; &amp;lt;/ContentTemplate&amp;gt; 3.&amp;nbsp;&amp;nbsp;&amp;nbsp;Upload the template to Endeca Workbench&amp;nbsp;– &amp;nbsp; &amp;nbsp; ·&amp;nbsp;&amp;nbsp;Open a command prompt and navigate to the&amp;nbsp;control&amp;nbsp;directory of your deployed application, for example, D:\Endeca\apps\Discover\control &amp;nbsp; &amp;nbsp; ·&amp;nbsp;&amp;nbsp;Run the&amp;nbsp;set_templates&amp;nbsp;command 4.&amp;nbsp;&amp;nbsp;&amp;nbsp;Add the cartridge to a page – &amp;nbsp; &amp;nbsp; ·&amp;nbsp;&amp;nbsp;&amp;nbsp;Open Endeca Workbench in a Web browser. &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; The default URL for Workbench is http://localhost:8006. The default Username is admin and the default Password is admin &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ·&amp;nbsp;&amp;nbsp;&amp;nbsp;From the launch page, select Experience Manager &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ·&amp;nbsp;&amp;nbsp;&amp;nbsp;In the tree on the left, select Search and Navigation Pages under the Content section, then select the Default Page&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; · &amp;nbsp;&amp;nbsp;In the Edit Pane on the right, select the right column section from the Content Tree in the bottom left &amp;nbsp; &amp;nbsp; ·&amp;nbsp;&amp;nbsp;&amp;nbsp;Click Add. &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; The cartridge selector dialog displays &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;·&amp;nbsp; &amp;nbsp;Select the&amp;nbsp;HelloWorld&amp;nbsp;cartridge and click&amp;nbsp;OK &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;·&amp;nbsp; &amp;nbsp;Select the new Hello cartridge from the Content Tree on the left and configure it as shown &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;·&amp;nbsp;&amp;nbsp;&amp;nbsp;Click&amp;nbsp;Save Changes&amp;nbsp;in the upper right of the page. &amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 5.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Try to view the cartridge in the Discover Electronics application. &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;In a Web browser, navigate to http://localhost:8006/discover-authoring/ The error displays because we have not yet created a renderer for the Hello cartridge. Scroll down to the bottom of the page and click the json link to view the serialized Assembler response model that represents the current page. Oracle recommends that you use a browser or install a plugin that supports native JSON display. Otherwise, you can download the JSON response as a file. Alternatively, you can click the xml link to view the same response in XML. In this article, we use the JSON format when examining the Assembler response. The following shows the JSON representation of the page with most of the tree collapsed, highlighting the data for the cartridge that we just added. { "@type": "ResultsPageSlot", "name": "Browse Page", "contentCollection": "Search And Navigation Pages", "ruleLimit": "1", "contents": [ { "@type": "ThreeColumnNavigationPage", "name": "Default Page", "title": "Discover Electronics", "metaKeywords": "camera cameras electronics", "metaDescription": "Endeca eBusiness reference application.", "links": [ ], "header": [ ... ], "leftColumn": [ ... ], "main": [ ... ], "rightColumn": [ { ... }, { ... }, { "@type": "Hello", "name": "Hello cartridge", "message": "Hello", "messageColor": "#FF0000" } ] } ], ... } In the next section, we'll create a simple renderer that displays the message based on the values configured in Experience Manager. Adding a basic renderer - While there is no one way to write rendering code for an application, in this example we'll write a simple JSP renderer for our basic cartridge. To write a basic "Hello, World" renderer: &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;1.&amp;nbsp;&amp;nbsp;Create a new JSP page (Hello.jsp) and type or copy the following: &amp;lt;%@page language="java" pageEncoding="UTF-8" contentType="text/html;charset=UTF-8"%&amp;gt; &amp;lt;%@include file="/WEB-INF/views/include.jsp"%&amp;gt; &amp;lt;div style="border-style: dotted; border-width: 1px;border-color: #999999; padding: 10px 10px"&amp;gt; &amp;lt;div style="font-size: 150%; color: ${component.messageColor}"&amp;gt;${component.message} &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;2.&amp;nbsp;&amp;nbsp;Save the above renderer to &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;D:\Endeca\ToolsAndFrameworks\11.1.0\reference\discover-electronics-authoring\WEB-INF\views\desktop\Hello\Hello.jsp &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; (You need to create “Hello” folder) &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;3.&amp;nbsp;&amp;nbsp;Refresh the Discover Electronics authoring application at &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;http://localhost:8006/discover-authoring/ to see the end result :-) In future posts I would love to explore Optimizing Application URLs and Integrating with the Sitemap Generator. All the above concepts and much more is covered in Endeca Assembler Application Developer's Guide.</itunes:summary><itunes:keywords>ATG, Endeca, oracle, search</itunes:keywords></item><item><title>Endeca commerce guided search essentials</title><link>http://sajidn.blogspot.com/2014/09/endeca-commerce-guided-search-essentials.html</link><category>ATG</category><category>Endeca</category><category>oracle</category><category>search</category><author>noreply@blogger.com (Nads)</author><pubDate>Sat, 20 Sep 2014 22:42:00 +0100</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-27924845.post-7271761933783835671</guid><description>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;div class="WordSection1"&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: 10.0pt; line-height: 115%;"&gt;Time to explore barebone concepts around Endeca commerce guided search v11.1. It’s vital to understand the key concepts before moving ahead with some of the complex areas of Endeca search.   So lets dive in -&lt;b&gt; &lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;b&gt;&lt;span style="font-size: 10.0pt; line-height: 115%;"&gt;Endeca commerce key components -  &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: 10.0pt; line-height: 115%;"&gt;Oracle Endeca Commerce is comprised of three major components. These components are:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;ul style="text-align: left;"&gt;
&lt;li&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: 10.0pt; line-height: 115%;"&gt;Endeca ITL (Information Transformation Layer)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul style="text-align: left;"&gt;
&lt;li&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: 10.0pt; line-height: 115%;"&gt;Endeca MDEX Engine&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul style="text-align: left;"&gt;
&lt;li&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: 10.0pt; line-height: 115%;"&gt;Endeca Application Tier&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="MsoListParagraph" style="margin-bottom: .0001pt; margin-bottom: 0cm; mso-list: l2 level1 lfo1; text-indent: -18.0pt;"&gt;
&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: 10.0pt; line-height: 115%;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;
&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: 10.0pt; line-height: 115%;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiXGBSWNsUAIFXaGDk9finMTJa_jsqIKakh-NMfJRxviEQ5jpia2KNqNKQAhXO291gLTbPK6lEjxWsbsooRgK_Z3fev9HsjnVOHXoAAWb2erp5iTWZcwKGnG40G05y-CtCgicOx/s1600/image001-731621.jpg"&gt;&lt;img alt="" border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiXGBSWNsUAIFXaGDk9finMTJa_jsqIKakh-NMfJRxviEQ5jpia2KNqNKQAhXO291gLTbPK6lEjxWsbsooRgK_Z3fev9HsjnVOHXoAAWb2erp5iTWZcwKGnG40G05y-CtCgicOx/s320/image001-731621.jpg" height="285" id="BLOGGER_PHOTO_ID_6060869439208354178" width="400" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="font-size: 10.0pt; line-height: 115%;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div align="center" class="MsoNormal" style="margin-bottom: .0001pt; margin-bottom: 0cm; text-align: center;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;
&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;b&gt;&lt;span style="font-size: 10.0pt;"&gt;Endeca Information Transformation Layer (ITL)&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 10.0pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;ul type="disc"&gt;
&lt;li class="MsoNormal" style="line-height: normal; mso-list: l5 level1 lfo2; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto;"&gt;  &lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: 10.0pt;"&gt;Reads your raw source data and manipulates it into a set of Oracle Endeca MDEX Engine indexes.&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="MsoNormal" style="line-height: normal; mso-list: l5 level1 lfo2; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto;"&gt;  &lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: 10.0pt;"&gt;The ITL consists of the Content Acquisition System (which includes the Endeca CAS Server and Console, the CAS API and the Endeca Web Crawler), and the Data Foundry (which includes data-manipulation programs such as Forge).&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;
&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;b&gt;&lt;span style="font-size: 10.0pt;"&gt;Endeca MDEX Engine&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 10.0pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;ul type="disc"&gt;
&lt;li class="MsoNormal" style="line-height: normal; mso-list: l4 level1 lfo3; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto;"&gt;  &lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: 10.0pt;"&gt;MDEX engine is the query engine that is the core of guided search. MDEX engine consists of the Indexer (Dgidx), Dgraph and Agraph.&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="MsoNormal" style="line-height: normal; mso-list: l4 level1 lfo3; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto;"&gt;  &lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: 10.0pt;"&gt;The MDEX Engine loads the indexes generated by the indexing component of the Endeca Information Transformation Layer.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="MsoNormal" style="line-height: normal; mso-list: l4 level1 lfo3; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto;"&gt;  &lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: 10.0pt;"&gt;Although the Indexer (also known as Dgidx) is installed as part of the MDEX Engine package, in effect it is part of the ITL process.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;
&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;b&gt;&lt;span style="font-size: 10.0pt;"&gt;Endeca Application Tier&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 10.0pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;ul type="disc"&gt;
&lt;li class="MsoNormal" style="line-height: normal; mso-list: l4 level1 lfo3; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto;"&gt;  &lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: 10.0pt;"&gt;After the indexes are loaded, the MDEX Engine receives queries from the Endeca Application Tier, executes them against the loaded indexes, and returns the results to the client application.&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="MsoNormal" style="line-height: normal; mso-list: l4 level1 lfo3; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto;"&gt;  &lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: 10.0pt;"&gt;The Application Tier provides an interface to the MDEX Engine via the Endeca Assembler. The Assembler acts as a language-agnostic interface for aggregating and sending queries to the MDEX Engine, and executing any necessary post-processing   on the results.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="MsoNormal" style="margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;
&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;b&gt;&lt;span style="font-size: 10.0pt; line-height: 115%;"&gt;Note&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 10.0pt; line-height: 115%;"&gt;: The ITL components are run offline at intervals that are appropriate for   your business requirements.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;
&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: 10.0pt; line-height: 115%;"&gt;The MDEX Engine and Endeca Application Tier are both online processes; that is, they must remain&lt;o:p&gt;&lt;/o:p&gt; running as long as you want clients to have access to your data set.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; text-autospace: none;"&gt;
&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: 10.0pt;"&gt;After knowing the main components now lets go through some of the key terminologies around guided search which we will encounter throughout our Endeca experience. Endeca &lt;b&gt;records&lt;/b&gt;, &lt;b&gt;dimensions&lt;/b&gt;, and &lt;b&gt;properties &lt;/b&gt;store and organize product information, making it accessible   to customers through your Guided Search applications.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;
&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;b&gt;&lt;span style="font-size: 10.0pt;"&gt;Endeca Records -  &lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 10.0pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;ul style="text-align: left;"&gt;
&lt;li&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: 10.0pt;"&gt;Endeca records are the elements of your data set that users navigate to or search for.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul type="disc"&gt;
&lt;li class="MsoNormal" style="line-height: normal; mso-list: l1 level1 lfo4; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto;"&gt;  &lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: 10.0pt;"&gt;Records are the fundamental units of data. &lt;/span&gt;  &lt;span style="font-size: 10.0pt;"&gt;Endeca records are based on traditional records in a source database. Source database records typically contain information such as the bottles of wine in a wine store, the customer records in a CRM   application, or the mutual funds in a fund evaluator.&lt;/span&gt;&lt;span style="font-size: 10.0pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="MsoNormal" style="line-height: normal; mso-list: l1 level1 lfo4; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto;"&gt;  &lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: 10.0pt;"&gt;Source database records store this information in one or more key/value pairs, known as properties.  &lt;/span&gt;&lt;span style="font-size: 10.0pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="MsoNormal" style="line-height: normal; mso-list: l1 level1 lfo4; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto;"&gt;  &lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: 10.0pt;"&gt;A single Endeca record could correspond to any number of source records. For example, suppose that four different source records refer to the same book in different formats: hardcover, paperback, large   print, and audio.&lt;/span&gt;&lt;span style="font-size: 10.0pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;
&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;b&gt;&lt;span style="font-size: 10.0pt;"&gt;Endeca Properties -&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 10.0pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;ul type="disc"&gt;
&lt;li class="MsoNormal" style="line-height: normal; mso-list: l3 level1 lfo5; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto;"&gt;  &lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: 10.0pt;"&gt;Endeca properties are the basic attributes of an endeca record.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="MsoNormal" style="line-height: normal; mso-list: l3 level1 lfo5; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto;"&gt;  &lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: 10.0pt;"&gt;Are usually generated from a record’s source properties, using source property mapping.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="MsoNormal" style="line-height: normal; mso-list: l3 level1 lfo5; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto;"&gt;  &lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: 10.0pt;"&gt;Consist of key/value pairs (property name/property value).&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="MsoNormal" style="line-height: normal; mso-list: l3 level1 lfo5; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto;"&gt;  &lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: 10.0pt;"&gt;Can be searched and displayed.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; text-autospace: none;"&gt;
&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: 10.0pt;"&gt;Endeca properties often contain more specific information about a record than dimensions. For example, a Price Range dimension is useful for navigation  &lt;/span&gt;&lt;span style="font-size: 10.0pt;"&gt;—&lt;/span&gt;&lt;span style="font-size: 10.0pt;"&gt; give me all the bottles of wine that cost between $10 and $20 dollars  &lt;/span&gt;&lt;span style="font-size: 10.0pt;"&gt;—&lt;/span&gt;&lt;span style="font-size: 10.0pt;"&gt; but it is the exact price of each bottle that you want to see when looking at the individual records. A common implementation   for this type of application uses a Price Range &lt;/span&gt;&lt;i&gt;&lt;span style="font-size: 10.0pt;"&gt;dimension  &lt;/span&gt;&lt;/i&gt;&lt;span style="font-size: 10.0pt;"&gt;for navigation and a Price  &lt;/span&gt;&lt;i&gt;&lt;span style="font-size: 10.0pt;"&gt;property &lt;/span&gt;  &lt;/i&gt;&lt;span style="font-size: 10.0pt;"&gt;that is displayed when a bottle&lt;/span&gt;&lt;span style="font-size: 10.0pt;"&gt;’&lt;/span&gt;&lt;span style="font-size: 10.0pt;"&gt;s record has been located.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;
&lt;br /&gt;
&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;b&gt;&lt;span style="font-size: 10.0pt;"&gt;Note: &lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 10.0pt;"&gt;Property, dimension, and dimension value names are case sensitive.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;
&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;b&gt;&lt;span style="font-size: 10.0pt;"&gt;Endeca Queries -&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 10.0pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;ul type="disc"&gt;
&lt;li class="MsoNormal" style="line-height: normal; mso-list: l1 level1 lfo4; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto;"&gt;  &lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: 10.0pt;"&gt;Oracle Endeca Commerce uses two types of queries: navigation queries and keyword search queries.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="MsoNormal" style="line-height: normal; mso-list: l1 level1 lfo4; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto;"&gt;  &lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: 10.0pt;"&gt;Navigation queries return a set of records based on application-defined record characteristics (such as wine type or region in an online wine store), plus any follow-on query information.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="MsoNormal" style="line-height: normal; mso-list: l1 level1 lfo4; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto;"&gt;  &lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: 10.0pt;"&gt;Keyword search queries return a set of records or dimensions based on a user-defined keyword, plus any follow-on query information.  &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; text-autospace: none;"&gt;
&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: 10.0pt;"&gt;Navigation queries and keyword search queries are complementary. In fact, a keyword search query is a specialized form of navigation query, and the data structures for the results of the two queries   are identical: a set of records and follow-on query information. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; text-autospace: none;"&gt;
&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: 10.0pt;"&gt;Users can execute a combination of navigation queries and keyword search queries to navigate to their desired record set in the way that works best for them.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;
&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;b&gt;&lt;span style="font-size: 10.0pt;"&gt;Dimensions and dimension values -&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 10.0pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;ul type="disc"&gt;
&lt;li class="MsoNormal" style="line-height: normal; mso-list: l0 level1 lfo6; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto;"&gt;  &lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: 10.0pt;"&gt;Dimensions are logical categories that make it possible to organize your Endeca records into a hierarchical structure that customers can search.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="MsoNormal" style="line-height: normal; mso-list: l0 level1 lfo6; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto;"&gt;  &lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: 10.0pt;"&gt;A dimension is a collection of related dimension values, organized into a tree. The top-most dimension value in a dimension tree is known as the dimension root. A dimension root always has the same name as its dimension.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="MsoNormal" style="line-height: normal; mso-list: l0 level1 lfo6; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto;"&gt;  &lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: 10.0pt;"&gt;Each dimension value can have one or more child dimension values; a dimension value with child dimension values is known as a parent dimension value. A child dimension value can have only one parent dimension value. Dimension   values that are children of the same parent dimension value are known as sibling dimension values. The dimension values that have no children are known as leaf dimension values.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="MsoListParagraph" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoListParagraph" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;
&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: 12.0pt;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgv2dPifdNJCg24PIKoewMX60C_m88aN-zBlwhhu3dmUNehUbZa3KfxJnnsY2ccmlo6P35eJ4rSb24Sv9A7iux1664b14ty74luC3cDYPswbhZK51b8t-zOkMBN4Ym974vYYirI/s1600/image003-733948.png"&gt;&lt;img alt="" border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgv2dPifdNJCg24PIKoewMX60C_m88aN-zBlwhhu3dmUNehUbZa3KfxJnnsY2ccmlo6P35eJ4rSb24Sv9A7iux1664b14ty74luC3cDYPswbhZK51b8t-zOkMBN4Ym974vYYirI/s320/image003-733948.png" id="BLOGGER_PHOTO_ID_6060869445460360386" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="font-size: 12.0pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;
&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;b&gt;&lt;span style="font-size: 10.0pt;"&gt;Dimension hierarchy -&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 10.0pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;ul type="disc"&gt;
&lt;li class="MsoNormal" style="line-height: normal; mso-list: l6 level1 lfo7; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto;"&gt;  &lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: 10.0pt;"&gt;Dimension hierarchy gives you additional control over the logical structure used to organize your Endeca records.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="MsoNormal" style="line-height: normal; mso-list: l6 level1 lfo7; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto;"&gt;  &lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: 10.0pt;"&gt;As the term "dimension tree" implies, dimension values can have parent and child dimension values.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="MsoNormal" style="line-height: normal; mso-list: l6 level1 lfo7; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto;"&gt;  &lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: 10.0pt;"&gt;A dimension value that has sub-dimension values is the parent of those sub-dimension values. The sub-dimension values themselves are children or child dimension values.&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class="MsoNormal" style="line-height: normal; mso-list: l6 level1 lfo7; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto;"&gt;  &lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: 10.0pt;"&gt;Child dimension values of the same parent dimension at the same level of hierarchy are dimension value siblings.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-left: 18.0pt; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto;"&gt;
&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: 10.0pt;"&gt;The following figure illustrates a typical dimension :&lt;/span&gt;&lt;span style="font-size: 10.0pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;
&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: 10.0pt;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjtGRzYQxNCw-NhPmS3F6ICDAgH4FLyHS98KC7uMQEd82MitU5n7o4JWTDdXrsnepiHAtS1H9JO0aF1-8KivGigHWmqWBjWK0GKZNKTeIwJxpoMGNsVb6k_ZjyjzxBZajGRvwia/s1600/image005-735832.png"&gt;&lt;img alt="" border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjtGRzYQxNCw-NhPmS3F6ICDAgH4FLyHS98KC7uMQEd82MitU5n7o4JWTDdXrsnepiHAtS1H9JO0aF1-8KivGigHWmqWBjWK0GKZNKTeIwJxpoMGNsVb6k_ZjyjzxBZajGRvwia/s320/image005-735832.png" id="BLOGGER_PHOTO_ID_6060869452520587698" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="font-size: 10.0pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;
&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;b&gt;&lt;span style="font-size: 10.0pt;"&gt;Flat Dimensions -&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 10.0pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;
&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: 10.0pt;"&gt;Dimensions that have only one level of hierarchy beneath the dimension root are called flat dimensions&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;
&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: 10.0pt;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEitTwKcaALZeJelCq5SqYGFPMTt9tPmD9HZJk9HH9tIMw-VO8JTJ7sGqJMXRWOj1cDMUzwc_5CzuSkUovznEQob2gTXTWhkzDuQsGZ3Cb5sKAFucCHw1ow6RB21OiN2lIJxue2A/s1600/image007-737296.png"&gt;&lt;img alt="" border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEitTwKcaALZeJelCq5SqYGFPMTt9tPmD9HZJk9HH9tIMw-VO8JTJ7sGqJMXRWOj1cDMUzwc_5CzuSkUovznEQob2gTXTWhkzDuQsGZ3Cb5sKAFucCHw1ow6RB21OiN2lIJxue2A/s320/image007-737296.png" id="BLOGGER_PHOTO_ID_6060869459980200130" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="font-size: 10.0pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;
&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;b&gt;&lt;span style="font-size: 10.0pt;"&gt;The one parent rule -&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 10.0pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;
&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: 10.0pt;"&gt;It is possible for a dimension value to be simultaneously a child of one dimension value and the parent of other dimension values.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;
&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: 10.0pt;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj10KYsLgDwSNK7aLnqh8bbggI54LT7o3VOBrNje-OodStHLUxL5E4hjMEhQ1m9RHPSHN1WUXLK4pJ3_Vdek9WZo6QeeeeS5vzgm3WuDzs3BUT8sx_mdv4IJqSni9s1BX10l2Vu/s1600/image009-739212.png"&gt;&lt;img alt="" border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj10KYsLgDwSNK7aLnqh8bbggI54LT7o3VOBrNje-OodStHLUxL5E4hjMEhQ1m9RHPSHN1WUXLK4pJ3_Vdek9WZo6QeeeeS5vzgm3WuDzs3BUT8sx_mdv4IJqSni9s1BX10l2Vu/s320/image009-739212.png" id="BLOGGER_PHOTO_ID_6060869467595966114" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="font-size: 10.0pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;
&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;b&gt;&lt;span style="font-size: 10.0pt;"&gt;Ancestors -&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 10.0pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; text-autospace: none;"&gt;
&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: 10.0pt;"&gt;The ancestors of a given dimension value are all the dimension values between the given dimension value and the dimension root. The parent of the given dimension value is also one of its ancestors.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;
&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: 10.0pt;"&gt;In the example below, Other and Fortified represent the ancestors for the Sherry dimension value.&lt;/span&gt;&lt;span style="font-size: 10.0pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;
&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: 10.0pt;"&gt;&lt;br /&gt;  &lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiW6BKz0WOU_a-ut8KKRlRQfXDa2Im8BkaYXByE1cMgLe0XdSAhniZfe0LmSm-TCGSkhONCxWjWXs5v1nSpXM5j-9pfJtxaN5xdhjE_kfbv58U91qFJO8AJinDP2Z-e9me_9vfV/s1600/image011-741062.png"&gt;&lt;img alt="" border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiW6BKz0WOU_a-ut8KKRlRQfXDa2Im8BkaYXByE1cMgLe0XdSAhniZfe0LmSm-TCGSkhONCxWjWXs5v1nSpXM5j-9pfJtxaN5xdhjE_kfbv58U91qFJO8AJinDP2Z-e9me_9vfV/s320/image011-741062.png" id="BLOGGER_PHOTO_ID_6060869478680187202" /&gt;&lt;/a&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; text-autospace: none;"&gt;
&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;b&gt;&lt;span style="font-size: 12.0pt;"&gt;Advantages of dimension hierarchy -&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; text-autospace: none;"&gt;
&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: 10.0pt;"&gt;You can design dimension hierarchies in ways that reduce the number of follow-on queries that are presented to users as they navigate.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; text-autospace: none;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; text-autospace: none;"&gt;
&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: 10.0pt;"&gt;For example, in the flat dimension below, a navigation query on the Wine Type dimension value would return six possible refinement queries, one for each child.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: 10.0pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; text-autospace: none;"&gt;
&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: 10.0pt;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhhQkjWCxqxKkqpg_F0dBM2ptzK7ua4FAfq6pKzywiNurOPKUiC9dJke_3NpViaIRyFgrdNDUEvg66-0nuIeVGZGChMPuUcDU_BWWjNyqcaGqDSVKOyB2-F7NCKjYkD0oe-tGIa/s1600/image013-742898.png"&gt;&lt;img alt="" border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhhQkjWCxqxKkqpg_F0dBM2ptzK7ua4FAfq6pKzywiNurOPKUiC9dJke_3NpViaIRyFgrdNDUEvg66-0nuIeVGZGChMPuUcDU_BWWjNyqcaGqDSVKOyB2-F7NCKjYkD0oe-tGIa/s320/image013-742898.png" id="BLOGGER_PHOTO_ID_6060869482881875746" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="font-size: 10.0pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; text-autospace: none;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; text-autospace: none;"&gt;
&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: 10.0pt;"&gt;A simple flat dimension such as the one shown in the preceding figure is small enough to navigate through quickly. Larger flat dimensions, however, present too many choices for follow-on queries to be   easily navigable.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; text-autospace: none;"&gt;
&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: 10.0pt;"&gt;Organizing data as dimensions reduces this information overload and provides for an easier, more intuitive navigation experience. In the hierarchical example below, the Wine Type dimension value has   only three possible refinement queries: Red, White, or Sparkling.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; text-autospace: none;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; text-autospace: none;"&gt;
&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: 10.0pt;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjeeRHWvKq2ApfbLWQYV1BikETr1pecN5Ub9CnaFYEjE3zbbB1SzldCU45wMxv-AP70JqsNbyrpL_rQyJfrGTBu_W2CKTVB68-kLiutQASNurWWS2VXyC8GqSSBKwrrAIgk42kA/s1600/image015-744438.png"&gt;&lt;img alt="" border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjeeRHWvKq2ApfbLWQYV1BikETr1pecN5Ub9CnaFYEjE3zbbB1SzldCU45wMxv-AP70JqsNbyrpL_rQyJfrGTBu_W2CKTVB68-kLiutQASNurWWS2VXyC8GqSSBKwrrAIgk42kA/s320/image015-744438.png" id="BLOGGER_PHOTO_ID_6060869491941876178" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="font-size: 10.0pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; text-autospace: none;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; text-autospace: none;"&gt;
&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: 10.0pt;"&gt;A second reason to use dimension hierarchy is that, by limiting the number of refinement queries, you decrease the amount of time it takes for the MDEX Engine to return its results. Returning query results   that contain follow-on information for 20 refinement queries is faster than returning query results that contain information for 2000 refinement queries.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; text-autospace: none;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; text-autospace: none;"&gt;
&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;b&gt;&lt;span style="font-size: 10.0pt;"&gt;Note: &lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 10.0pt;"&gt;The time that the MDEX Engine takes to process a large flat dimension can be lessened by requesting that the MDEX Engine return   only the most important refinements.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; text-autospace: none;"&gt;
&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: 10.0pt;"&gt;After going through above concepts we should next look at  &lt;u&gt;Guided Navigation &lt;/u&gt;and &lt;u&gt;Using Keyword Search&lt;/u&gt;.&lt;/span&gt;&lt;b&gt;&lt;span style="font-size: 20.0pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiXGBSWNsUAIFXaGDk9finMTJa_jsqIKakh-NMfJRxviEQ5jpia2KNqNKQAhXO291gLTbPK6lEjxWsbsooRgK_Z3fev9HsjnVOHXoAAWb2erp5iTWZcwKGnG40G05y-CtCgicOx/s72-c/image001-731621.jpg" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>Oracle ATG commerce integration with Endeca search</title><link>http://sajidn.blogspot.com/2014/09/oracle-commerce-reference-store-v111_10.html</link><category>ATG</category><category>Endeca</category><category>oracle</category><author>noreply@blogger.com (Nads)</author><pubDate>Wed, 10 Sep 2014 01:10:00 +0100</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-27924845.post-1527638846278233255</guid><description>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;div class="WordSection1"&gt;
&lt;div class="MsoListParagraphCxSpFirst" style="mso-list: l0 level1 lfo1; text-indent: -18.0pt;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;b&gt;E&lt;/b&gt;xploring new software and tool is always exciting and fun way to learn new stuff. With ATG Commerce v11 Oracle has replaced ATG Search with Endeca search.&amp;nbsp; I have tried to list out all the steps involved in this integration and   focused to highlight the issues/errors I faced with their resolutions. So lets dive in -  &lt;o:p&gt;&lt;/o:p&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class="MsoListParagraphCxSpFirst" style="mso-list: l0 level1 lfo1; text-indent: -18.0pt;"&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &lt;u&gt;&lt;b&gt;Installation requirements with download links –&lt;/b&gt;&lt;/u&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class="MsoListParagraphCxSpMiddle" style="margin-left: 54.0pt; mso-list: l4 level1 lfo2; text-indent: -18.0pt;"&gt;
&lt;span style="mso-list: Ignore;"&gt;a.&lt;span style="font: 7.0pt &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;a href="http://www.oracle.com/technetwork/java/javase/downloads/index-jsp-138363.html" target="_blank"&gt;Download &lt;/a&gt;and install Java 7 or higher,&amp;nbsp; I am using jdk 7 update 45 , set the environment variable ( JAVA_HOME = D:\Java\jdk1.7.0_45 )&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class="MsoListParagraphCxSpMiddle" style="margin-left: 54.0pt; mso-list: l4 level1 lfo2; text-indent: -18.0pt;"&gt;
&lt;span style="mso-list: Ignore;"&gt;b.&lt;span style="font: 7.0pt &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;Install application server of your choice – I have used JBoss Enterprise Application Platform - Version 6.1.0.GA&amp;nbsp; , you can &lt;a href="https://www.jboss.org/products/eap/download/" target="_blank"&gt;Download&lt;/a&gt; from Jboss site.&lt;br /&gt;
&lt;br /&gt;
&lt;a href="https://www.jboss.org/products/eap/download/"&gt;&lt;/a&gt;  &lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class="MsoListParagraphCxSpMiddle" style="margin-left: 54.0pt; mso-list: l4 level1 lfo2; text-indent: -18.0pt;"&gt;
&lt;span style="mso-list: Ignore;"&gt;c.&lt;span style="font: 7.0pt &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;Installing Oracle XE 11g&amp;nbsp; - &lt;a href="http://www.oracle.com/technetwork/database/database-technologies/express-edition/downloads/index.html" target="_blank"&gt;Download&lt;/a&gt; from Oracle website and accept all the default settings. &lt;o:p&gt;  &lt;/o:p&gt;&lt;/div&gt;
&lt;div class="MsoListParagraphCxSpMiddle" style="margin-left: 54.0pt;"&gt;
After you install Oracle XE then create following schemas which will be used at the time of ATG configuration via CIM.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class="MsoListParagraphCxSpMiddle" style="margin-left: 54.0pt;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoListParagraphCxSpMiddle" style="margin-left: 54.0pt;"&gt;
create user crs_switching_a identified by crs_switching_a;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class="MsoListParagraphCxSpMiddle" style="margin-left: 54.0pt;"&gt;
grant connect, resource, dba to crs_switching_a;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class="MsoListParagraphCxSpMiddle" style="margin-left: 54.0pt;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoListParagraphCxSpMiddle" style="margin-left: 54.0pt;"&gt;
create user crs_switching_b identified by crs_switching_b;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class="MsoListParagraphCxSpMiddle" style="margin-left: 54.0pt;"&gt;
grant connect, resource , dba to crs_switching_b;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class="MsoListParagraphCxSpMiddle" style="margin-left: 54.0pt;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoListParagraphCxSpMiddle" style="margin-left: 54.0pt;"&gt;
create user crs_publishing identified by crs_publishing;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class="MsoListParagraphCxSpMiddle" style="margin-left: 54.0pt;"&gt;
grant connect, resource,dba to crs_publishing;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class="MsoListParagraphCxSpMiddle" style="margin-left: 54.0pt;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoListParagraphCxSpMiddle" style="margin-left: 54.0pt;"&gt;
create user crs_production identified by crs_production;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class="MsoListParagraphCxSpMiddle" style="margin-left: 54.0pt;"&gt;
grant connect, resource,dba to crs_production;&lt;br /&gt;
&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class="MsoListParagraphCxSpMiddle" style="margin-left: 54.0pt;"&gt;
&lt;br /&gt;
commit;&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoListParagraphCxSpMiddle" style="margin-left: 54.0pt;"&gt;
You also need JDBC driver jar , this will be needed later when we do  &lt;span style="background: white; color: #333333; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.5pt;"&gt;  Database configuration&lt;/span&gt; in CIM. You can &lt;a href="http://www.oracle.com/technetwork/database/enterprise-edition/jdbc-10201-088211.html" target="_blank"&gt;download the jar&lt;/a&gt; from Oracle site.&lt;o:p&gt;&lt;/o:p&gt; I am using ojdbc6.jar , you can use higher versions as well.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class="MsoListParagraphCxSpMiddle" style="margin-left: 54.0pt;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoListParagraphCxSpMiddle" style="margin-left: 54.0pt; mso-list: l4 level1 lfo2; text-indent: -18.0pt;"&gt;
&lt;span style="mso-list: Ignore;"&gt;d.&lt;span style="font: 7.0pt &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;Go to &lt;span style="background: white; color: #333333; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.5pt;"&gt;  &lt;a href="https://edelivery.oracle.com/"&gt;https://edelivery.oracle.com&lt;/a&gt; and download ATG frameworks and Endeca frameworks&lt;/span&gt; (version 11.1)&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class="MsoListParagraphCxSpMiddle" style="margin-left: 54.0pt;"&gt;
&lt;span style="background: white; color: #333333; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.5pt;"&gt;Downloads for ATG –  &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoListParagraphCxSpMiddle" style="margin-left: 54.0pt;"&gt;
&lt;span style="background: white; color: #333333; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.5pt;"&gt;Oracle Commerce Platform 11.1&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoListParagraphCxSpMiddle" style="margin-left: 54.0pt;"&gt;
&lt;span style="background: white; color: #333333; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.5pt;"&gt;Oracle Commerce ReferenceStore 11.1&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoListParagraphCxSpMiddle" style="margin-left: 54.0pt;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoListParagraphCxSpMiddle" style="margin-left: 54.0pt;"&gt;
&lt;span style="background: white; color: #333333; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.5pt;"&gt;Downloads for Endeca search –  &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoListParagraphCxSpMiddle" style="margin-left: 54.0pt;"&gt;
&lt;span style="background: white; color: #333333; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.5pt;"&gt;Oracle Endeca MDEX Engine 6.5.1&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoListParagraphCxSpMiddle" style="margin-left: 54.0pt;"&gt;
&lt;span style="background: white; color: #333333; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.5pt;"&gt;Oracle Endeca Platform Services 11.1.0&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoListParagraphCxSpMiddle" style="margin-left: 54.0pt;"&gt;
&lt;span style="background: white; color: #333333; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.5pt;"&gt;Oracle Endeca Tools and Frameworks 11.1.0  &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoListParagraphCxSpMiddle" style="margin-left: 54.0pt;"&gt;
&lt;span style="background: white; color: #333333; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.5pt;"&gt;Oracle Endeca Content Acquisition System 11.1.0&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class="MsoListParagraphCxSpMiddle" style="margin-left: 54.0pt;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoListParagraphCxSpMiddle" style="mso-list: l0 level1 lfo1; text-indent: -18.0pt;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;u&gt;&lt;b&gt;Installing Endeca Commerce with Experience Manager&amp;nbsp; &lt;/b&gt;&lt;/u&gt;-&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class="MsoListParagraphCxSpMiddle"&gt;
Goto &lt;a href="http://docs.oracle.com/cd/E51272_02/Common.110/pdf/GettingStarted.pdf"&gt;  http://docs.oracle.com/cd/E51272_02/Common.110/pdf/GettingStarted.pdf&lt;/a&gt;&amp;nbsp; and follow instructions given in chapter 3 and chapter 5 in this guide for Endeca installation and configuration.  &lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class="MsoListParagraphCxSpMiddle"&gt;
Please note we are installing Endeca first as its not dependent on ATG installation. We want to make sure Endeca is working fine before moving to ATG installation and configuration.  &lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class="MsoListParagraphCxSpMiddle"&gt;
You can avoid Developer studio installation as its not needed for this integration.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class="MsoListParagraphCxSpMiddle"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoListParagraphCxSpMiddle"&gt;
After a successful installation you can see following services installed. Make sure all 3 Endeca services are started as shown below.&lt;br /&gt;
&lt;br /&gt;
&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class="MsoListParagraphCxSpMiddle"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjZKite9DnZTIG6QAsb0zkzhM7RgNgS9X9-iBkAXbJ2ub-48Jmf0hdcmE_WZGyWf_wQRDtFMu3MckuTTMBUo6WF7hPMPQQOHMpcxN5zHPD5LU1UWDXyRERET4oZHGqx3yhFH2GO/s1600/image001-765131.png"&gt;&lt;img alt="" border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjZKite9DnZTIG6QAsb0zkzhM7RgNgS9X9-iBkAXbJ2ub-48Jmf0hdcmE_WZGyWf_wQRDtFMu3MckuTTMBUo6WF7hPMPQQOHMpcxN5zHPD5LU1UWDXyRERET4oZHGqx3yhFH2GO/s320/image001-765131.png" id="BLOGGER_PHOTO_ID_6057221435811581698" /&gt;&lt;/a&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class="MsoListParagraphCxSpMiddle"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoListParagraphCxSpMiddle"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoListParagraphCxSpMiddle"&gt;
You will also see following folders in your d:\Endeca folder after all Endeca related installation.&lt;br /&gt;
&lt;br /&gt;
&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class="MsoListParagraphCxSpMiddle"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgyFgQwlFa7MNHqcjYc98avtQ0ae-hOxomEGCnkurvMm9gVJal301TkxExauBT10-n7gJzq1TZo57W34KhjKaGoTLbvI1SWZb4R1uQm4oL6PfML22ZkfRJR34WDpBkLT7gse69S/s1600/image002-767057.png"&gt;&lt;img alt="" border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgyFgQwlFa7MNHqcjYc98avtQ0ae-hOxomEGCnkurvMm9gVJal301TkxExauBT10-n7gJzq1TZo57W34KhjKaGoTLbvI1SWZb4R1uQm4oL6PfML22ZkfRJR34WDpBkLT7gse69S/s320/image002-767057.png" id="BLOGGER_PHOTO_ID_6057221442648105826" /&gt;&lt;/a&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class="MsoListParagraphCxSpMiddle"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoListParagraphCxSpMiddle"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoListParagraphCxSpMiddle"&gt;
Time to validate our Endeca installation – If you have followed all the instructions then your Discover Electronics reference is ready to validate.  &lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class="MsoListParagraphCxSpMiddle"&gt;
Visit - &lt;a href="http://localhost:8006/discover/"&gt;  http://localhost:8006/discover/&lt;/a&gt;&amp;nbsp; and you should see the below page &lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class="MsoListParagraphCxSpMiddle"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoListParagraphCxSpMiddle"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgdDtiFDx9K4Ip1cB7c_RfatMY3Vp7vTAFYVcOQlXCOmr_MVcUVLgX4OnlQGe6GMeBc53R3XKb9HaRL5pvNv2a3MCf0yXlk6mv-kcb2Xp_371YvWDlbS_3GCabhxQYqk4krlup_/s1600/image003-769688.jpg"&gt;&lt;img alt="" border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgdDtiFDx9K4Ip1cB7c_RfatMY3Vp7vTAFYVcOQlXCOmr_MVcUVLgX4OnlQGe6GMeBc53R3XKb9HaRL5pvNv2a3MCf0yXlk6mv-kcb2Xp_371YvWDlbS_3GCabhxQYqk4krlup_/s320/image003-769688.jpg" id="BLOGGER_PHOTO_ID_6057221452894912242" /&gt;&lt;/a&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class="MsoListParagraphCxSpMiddle"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoListParagraphCxSpMiddle"&gt;
Note: To see workbench screen goto &lt;a href="http://localhost:8006/"&gt;  http://localhost:8006/&lt;/a&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class="MsoListParagraphCxSpMiddle"&gt;
&lt;br /&gt;
&lt;u&gt;&lt;b&gt;Installing ATG commerce and reference st -&lt;/b&gt;&lt;/u&gt;&lt;br /&gt;
Now we need to install ATG platform first and then reference store . Visit this link  &lt;a href="http://docs.oracle.com/cd/E41069_01/CRS.11-0/ATGCRSInstall/html/s0101introduction01.html"&gt;  http://docs.oracle.com/cd/E41069_01/CRS.11-0/ATGCRSInstall/html/s0101introduction01.html&lt;/a&gt;&lt;o:p&gt;&lt;/o:p&gt;&amp;nbsp;&amp;nbsp; for step by step installation guide.&amp;nbsp; &lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class="MsoListParagraphCxSpMiddle"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoListParagraphCxSpMiddle"&gt;
During installation setup will ask for Jboss and Java path – Specifiy your local folder path where you have installed them. Please note the port I have used here is 8180.&amp;nbsp;&lt;/div&gt;
&lt;div class="MsoListParagraphCxSpMiddle"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoListParagraphCxSpMiddle"&gt;
&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class="MsoListParagraphCxSpMiddle"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhHTH16evcweTTF9s0HOu4zchTbJXabRubM0TBhb4O8eZ25-Y5iwfLVhzwlaXnl6ztTCo7qlDK5jRwHjUcQy61njz1ixvNzwxvN205OnvkTNdSNUmzOaF9dF2Fzqvci0EdQdZOp/s1600/image004-771618.png"&gt;&lt;img alt="" border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhHTH16evcweTTF9s0HOu4zchTbJXabRubM0TBhb4O8eZ25-Y5iwfLVhzwlaXnl6ztTCo7qlDK5jRwHjUcQy61njz1ixvNzwxvN205OnvkTNdSNUmzOaF9dF2Fzqvci0EdQdZOp/s320/image004-771618.png" id="BLOGGER_PHOTO_ID_6057221462432692018" /&gt;&lt;/a&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class="MsoListParagraphCxSpMiddle"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoListParagraphCxSpMiddle"&gt;
Just to mention, I have avoided using 8080 as Oracle XE is listening to this port so avoid using.  &lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class="MsoListParagraphCxSpMiddle"&gt;
I am using following ports throughout all installations and configurations here.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class="MsoListParagraphCxSpMiddle"&gt;
8180 for Store&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class="MsoListParagraphCxSpMiddle"&gt;
8280 for Publishing&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class="MsoListParagraphCxSpMiddle"&gt;
8380 for SSO&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class="MsoListParagraphCxSpMiddle"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoListParagraphCxSpMiddle"&gt;
Dont forget to set environment variable DYNAMO_HOME = D:\ATG\ATG11.1\home&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class="MsoListParagraphCxSpMiddle"&gt;
&lt;br /&gt;
&lt;span style="mso-list: Ignore;"&gt;&lt;span style="font: 7.0pt &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;u&gt;&lt;b&gt;Configuring ATG environment using CIM&amp;nbsp; -&lt;/b&gt;&lt;/u&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class="MsoListParagraphCxSpMiddle"&gt;
Once ATG platform and CRS installation is completed in step # 3 then we need to launch CIM.&amp;nbsp; Open a command prompt , navigate to D:\ATG\ATG11.1\home\bin&amp;nbsp; and run cim.bat  &lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class="MsoListParagraphCxSpMiddle"&gt;
Here mainly you are going to configure following items – I suggest you follow CIM response given in any of the two links provided in the Reference section below. It has all the detailed CIM responses.  &lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;ul style="text-align: left;"&gt;
&lt;li&gt;Set the Administrator Password&lt;o:p&gt;&lt;/o:p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul style="text-align: left;"&gt;
&lt;li&gt;Product Selection – select 9 as it will select all essentials items to install. further&amp;nbsp; in AddOns choose *** &lt;b&gt;Single Sign On (SSO)&lt;/b&gt;&amp;nbsp; ***&lt;o:p&gt;&lt;/o:p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul style="text-align: left;"&gt;
&lt;li&gt;Database Configuration&lt;o:p&gt;&lt;/o:p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul style="text-align: left;"&gt;
&lt;li&gt;Configure OPSS Security&lt;o:p&gt;&lt;/o:p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul style="text-align: left;"&gt;
&lt;li&gt;Server Instance Configuration&amp;nbsp; -&amp;nbsp;&amp;nbsp; After server instance configuration , make sure you also visit&amp;nbsp; ***  &lt;b&gt;Deploy CRS Endeca Application *** &lt;/b&gt;option. Also make sure you don’t get any error in  &lt;b&gt;Deploy&lt;/b&gt; and &lt;b&gt;Initialize&lt;/b&gt; tasks. If Initialize fails that means there is something wrong in your Endeca installation done in step #2.&amp;nbsp; Refer below link directly only for Endeca application configuration in CIM -  &lt;a href="http://docs.oracle.com/cd/E41069_01/CRS.11-0/ATGCRSInstall/html/s0207creatingtheendecaapplication01.html"&gt;  http://docs.oracle.com/cd/E41069_01/CRS.11-0/ATGCRSInstall/html/s0207creatingtheendecaapplication01.html&lt;/a&gt;  &lt;o:p&gt;&lt;/o:p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul style="text-align: left;"&gt;
&lt;li&gt;Application Assembly and Deployment&lt;o:p&gt;&lt;/o:p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="MsoListParagraphCxSpMiddle"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoListParagraphCxSpMiddle"&gt;
After all the above configurations we are left with following –  &lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class="MsoListParagraphCxSpMiddle"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoListParagraphCxSpMiddle" style="margin-left: 54.0pt; mso-list: l5 level1 lfo4; text-indent: -18.0pt;"&gt;
&lt;span style="mso-list: Ignore;"&gt;a.&lt;span style="font: 7.0pt &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;Start all the server instance like store , publishing and SSO. Use below commands  &lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class="MsoListParagraphCxSpMiddle"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoListParagraphCxSpMiddle"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; D:\jboss-eap-6.1\bin&amp;gt;standalone.bat --server-config=ATGProduction.xml -b 0.0.0.0&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class="MsoListParagraphCxSpMiddle"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; D:\jboss-eap-6.1\bin&amp;gt;standalone.bat --server-config=ATGPublishing.xml -b 0.0.0.0&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class="MsoListParagraphCxSpMiddle"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; D:\jboss-eap-6.1\bin&amp;gt;standalone.bat --server-config=ATGSSO.xml -b 0.0.0.0&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class="MsoListParagraphCxSpMiddle"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoListParagraphCxSpMiddle" style="margin-left: 54.0pt; mso-list: l5 level1 lfo4; text-indent: -18.0pt;"&gt;
&lt;span style="mso-list: Ignore;"&gt;b.&lt;span style="font: 7.0pt &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;You need to perform a full deployment in BCC – follow direct link for this task here -  &lt;a href="http://docs.oracle.com/cd/E41069_01/CRS.11-0/ATGCRSInstall/html/s0213configuringandrunningafulldeploy01.html"&gt;  http://docs.oracle.com/cd/E41069_01/CRS.11-0/ATGCRSInstall/html/s0213configuringandrunningafulldeploy01.html&lt;/a&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class="MsoListParagraphCxSpMiddle"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; If you face issues in accessing BCC then check below troubleshoot section for help.  &lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class="MsoListParagraphCxSpMiddle"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoListParagraphCxSpMiddle" style="margin-left: 54.0pt; mso-list: l5 level1 lfo4; text-indent: -18.0pt;"&gt;
&lt;span style="mso-list: Ignore;"&gt;c.&lt;span style="font: 7.0pt &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;Ideally after successful full deployment the system should build the index. To verify goto  &lt;a href="http://localhost:8280/dyn/admin/nucleus/atg/commerce/endeca/index/ProductCatalogSimpleIndexingAdmin"&gt;  http://localhost:8280/dyn/admin/nucleus/atg/commerce/endeca/index/ProductCatalogSimpleIndexingAdmin&lt;/a&gt;  &lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class="MsoListParagraphCxSpMiddle" style="margin-left: 54.0pt;"&gt;
and check the indexing job status. If its in PENDING or CANCELLED state then you need to manually invoke “Baseline Index”&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class="MsoListParagraphCxSpMiddle" style="margin-left: 54.0pt;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoListParagraphCxSpMiddle" style="margin-left: 54.0pt;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgoYHeBFTrB8zNzkgG0KPVrLjgsWTLE-Pi8SU_NkoO15IPpp343gG9wq7l5KMOPU4FLAHekalzPdhUZF4oVhvgoH7GvxjJQDI6uTwvlsDTrBYAe0Vfkv_JwLmmXlKUfQQAnX9s0/s1600/image005-773358.jpg"&gt;&lt;img alt="" border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgoYHeBFTrB8zNzkgG0KPVrLjgsWTLE-Pi8SU_NkoO15IPpp343gG9wq7l5KMOPU4FLAHekalzPdhUZF4oVhvgoH7GvxjJQDI6uTwvlsDTrBYAe0Vfkv_JwLmmXlKUfQQAnX9s0/s320/image005-773358.jpg" id="BLOGGER_PHOTO_ID_6057221471109430594" /&gt;&lt;/a&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class="MsoListParagraphCxSpMiddle" style="margin-left: 54.0pt;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoListParagraphCxSpMiddle" style="margin-left: 54.0pt; mso-list: l5 level1 lfo4; text-indent: -18.0pt;"&gt;
&lt;span style="mso-list: Ignore;"&gt;d.&lt;span style="font: 7.0pt &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;Once index is completed we finally need to promote the commerce reference store content . please follow instructions here to invoke promote_content -  &lt;a href="http://docs.oracle.com/cd/E41069_01/CRS.11-0/ATGCRSInstall/html/s0215promotingthecommercereferencesto01.html"&gt;  http://docs.oracle.com/cd/E41069_01/CRS.11-0/ATGCRSInstall/html/s0215promotingthecommercereferencesto01.html&lt;/a&gt;  &lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class="MsoListParagraphCxSpMiddle" style="margin-left: 54.0pt;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoListParagraphCxSpMiddle" style="margin-left: 54.0pt; mso-list: l5 level1 lfo4; text-indent: -18.0pt;"&gt;
&lt;span style="mso-list: Ignore;"&gt;e.&lt;span style="font: 7.0pt &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;Its time now to finally hit the store URL and explore CRS store -  &lt;a href="http://localhost:8180/crs/storeus"&gt;http://localhost:8180/crs/storeus&lt;/a&gt;  &lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class="MsoListParagraphCxSpMiddle" style="margin-left: 54.0pt;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoListParagraphCxSpMiddle" style="margin-left: 54.0pt;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjc_wCX1hXLgUvY4rh0VnGeqhRIWE676ECKpk_nmK2wgXgmWa35463nDFLi-qBM-AJlmZLRWGbHt6WIbGtTvBdUgcmQmDBq0janqsZpm1JcOppFrF_sxRJurYhbFCUVMEinphMs/s1600/image006-775536.jpg"&gt;&lt;img alt="" border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjc_wCX1hXLgUvY4rh0VnGeqhRIWE676ECKpk_nmK2wgXgmWa35463nDFLi-qBM-AJlmZLRWGbHt6WIbGtTvBdUgcmQmDBq0janqsZpm1JcOppFrF_sxRJurYhbFCUVMEinphMs/s320/image006-775536.jpg" id="BLOGGER_PHOTO_ID_6057221476866240722" /&gt;&lt;/a&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class="MsoListParagraphCxSpMiddle"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoListParagraphCxSpMiddle"&gt;
&lt;br /&gt;
&lt;span style="mso-list: Ignore;"&gt;&lt;span style="font: 7.0pt &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;u&gt;&lt;b&gt;Common errors troubleshoot –&lt;/b&gt;&lt;/u&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;ul style="text-align: left;"&gt;
&lt;li&gt;If you get following error while accessing BCC then read solution –  &lt;o:p&gt;&lt;/o:p&gt;&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div style="text-align: left;"&gt;
&lt;b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Error &lt;/b&gt;– &lt;span style="background: white; color: #222222; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 10.0pt;"&gt;  /atg/portal/framework/PortalObjectResolver &amp;nbsp; &amp;nbsp; &amp;nbsp;No root community folder for portal 'default'&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;/div&gt;
&lt;div style="text-align: left;"&gt;
&lt;b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Solutions &lt;/b&gt;– Its due to missing BIZUI data, follow below url and see the last section about&amp;nbsp;&lt;/div&gt;
&lt;div style="text-align: left;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; accessing BCC.&amp;nbsp;  &lt;a href="http://atgkid.blogspot.co.uk/2012_01_01_archive.html"&gt;http://atgkid.blogspot.co.uk/2012_01_01_archive.html&lt;/a&gt;&lt;span style="mso-list: Ignore;"&gt; &lt;/span&gt;&lt;/div&gt;
&lt;ul style="text-align: left;"&gt;
&lt;li&gt;&lt;span style="mso-list: Ignore;"&gt;You may encounter &lt;/span&gt;ORA-01658&lt;o:p&gt; error -&lt;/o:p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;o:p&gt;&lt;b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Error &lt;/b&gt;- ORA-01658: unable to create INITIAL extent for segment in tablespace LARGE_&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;/o:p&gt;&lt;br /&gt;
&lt;o:p&gt;&lt;b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Solution &lt;/b&gt;- Its due to the fact that Oracle &lt;/o:p&gt;&lt;o:p&gt;&lt;span class="contentText"&gt;&lt;span class="contentText"&gt;failed to find sufficient contiguous space to allocate&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/o:p&gt;&lt;br /&gt;
&lt;div style="text-align: left;"&gt;
&lt;o:p&gt;&lt;span class="contentText"&gt;&lt;span class="contentText"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; INITIAL extent for 
 segment being created. &lt;a href="http://devnumbertwo.com/oracle-ora-01658-unable-to-create-initial-extent-for-segment-in-tablespace-system/" target="_blank"&gt;Visit this link for solution&lt;/a&gt; -&lt;/span&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &lt;/o:p&gt;&lt;/div&gt;
&lt;ul style="text-align: left;"&gt;
&lt;li&gt;&lt;o:p&gt;If you encounter any connection related error -&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;/o:p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;o:p&gt;&lt;b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Error &lt;/b&gt;- Caused by: java.sql.SQLException: Listener refused the connection with the following&amp;nbsp;&amp;nbsp;&lt;/o:p&gt;&lt;br /&gt;
&lt;o:p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; error: ORA-12519, TNS:no appropriate service handler found&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;/o:p&gt;&lt;br /&gt;
&lt;div style="text-align: left;"&gt;
&lt;o:p&gt;&lt;b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Solution &lt;/b&gt;- I increased timeout setting in the pulishing server configuration, also make sure your&amp;nbsp;&amp;nbsp;&lt;/o:p&gt;&lt;/div&gt;
&lt;div style="text-align: left;"&gt;
&lt;o:p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DB is up and running.&lt;/o:p&gt;&lt;/div&gt;
&lt;ul style="text-align: left;"&gt;
&lt;li&gt;&lt;o:p&gt;You may not be able to login to BCC until you login to SSO (http://localhost:8380/sso/login) . Make sure you run the SSO instance like you start your store or publishing servers. &lt;/o:p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class="MsoListParagraphCxSpMiddle" style="margin-left: 54.0pt;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoListParagraphCxSpMiddle" style="mso-list: l0 level1 lfo1; text-indent: -18.0pt;"&gt;
&lt;span style="mso-list: Ignore;"&gt;&lt;span style="font: 7.0pt &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;u&gt;&lt;b&gt;References&amp;nbsp; - &lt;/b&gt;&lt;/u&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class="MsoListParagraphCxSpMiddle" style="margin-left: 54.0pt; mso-list: l1 level1 lfo6; text-indent: -18.0pt;"&gt;
&lt;span style="mso-list: Ignore;"&gt;a.&lt;span style="font: 7.0pt &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;a href="http://iam-saminda.blogspot.co.uk/2013/06/oracle-ecommerce-atg-102.html"&gt;http://iam-saminda.blogspot.co.uk/2013/06/oracle-ecommerce-atg-102.html&lt;/a&gt;&amp;nbsp; - One of the best written blog which details ATG 10 integration with Endeca   search. &lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class="MsoListParagraphCxSpLast" style="margin-left: 54.0pt; mso-list: l1 level1 lfo6; text-indent: -18.0pt;"&gt;
&lt;span style="mso-list: Ignore;"&gt;b.&lt;span style="font: 7.0pt &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;a href="http://internetmarketing-readme.pricemaniacs.com/oracle-commerce-v11-step-by-step-cim-responses"&gt;http://internetmarketing-readme.pricemaniacs.com/oracle-commerce-v11-step-by-step-cim-responses&lt;/a&gt;&amp;nbsp; - Blog lists all the CIM response   for ATG environment configuration using CIM.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;u&gt;&lt;b&gt;Bonus -&lt;/b&gt;&lt;/u&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&amp;gt;&lt;/b&gt; How to check the status of the Endeca Log Server - &lt;br /&gt;Visit - http://localhost:15010/stats&lt;br /&gt;&lt;br /&gt;If the Log Server is running, above URL returns a confirmation message containing the file name, number of log entries and number of errors. &lt;br /&gt;If it is not running, you will see browser’s default error message.&lt;br /&gt;&lt;br /&gt;OUTPUT -&lt;br /&gt;Endeca log server is running.&lt;br /&gt;log file: D:\Endeca\apps\Discover\logs\logserver_output\LogServer.2014_09_10.17_45_40&lt;br /&gt;number of log entries: 9&lt;br /&gt;number of errors: 0&lt;br /&gt;
&lt;br /&gt;
&amp;gt; Anatomy of an Oracle Commerce Experience Manager Site&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;iframe allowfullscreen='allowfullscreen' webkitallowfullscreen='webkitallowfullscreen' mozallowfullscreen='mozallowfullscreen' width='320' height='266' src='https://www.youtube.com/embed/TGm7Iqe8HkQ?feature=player_embedded' frameborder='0'&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;hr /&gt;
&lt;/div&gt;
</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjZKite9DnZTIG6QAsb0zkzhM7RgNgS9X9-iBkAXbJ2ub-48Jmf0hdcmE_WZGyWf_wQRDtFMu3MckuTTMBUo6WF7hPMPQQOHMpcxN5zHPD5LU1UWDXyRERET4oZHGqx3yhFH2GO/s72-c/image001-765131.png" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><enclosure length="414016" type="application/pdf" url="http://docs.oracle.com/cd/E51272_02/Common.110/pdf/GettingStarted.pdf"/><itunes:explicit>no</itunes:explicit><itunes:subtitle>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Exploring new software and tool is always exciting and fun way to learn new stuff. With ATG Commerce v11 Oracle has replaced ATG Search with Endeca search.&amp;nbsp; I have tried to list out all the steps involved in this integration and focused to highlight the issues/errors I faced with their resolutions. So lets dive in - &amp;nbsp; &amp;nbsp;&amp;nbsp; Installation requirements with download links – a.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Download and install Java 7 or higher,&amp;nbsp; I am using jdk 7 update 45 , set the environment variable ( JAVA_HOME = D:\Java\jdk1.7.0_45 ) b.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Install application server of your choice – I have used JBoss Enterprise Application Platform - Version 6.1.0.GA&amp;nbsp; , you can Download from Jboss site. c.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Installing Oracle XE 11g&amp;nbsp; - Download from Oracle website and accept all the default settings. After you install Oracle XE then create following schemas which will be used at the time of ATG configuration via CIM. create user crs_switching_a identified by crs_switching_a; grant connect, resource, dba to crs_switching_a; create user crs_switching_b identified by crs_switching_b; grant connect, resource , dba to crs_switching_b; create user crs_publishing identified by crs_publishing; grant connect, resource,dba to crs_publishing; create user crs_production identified by crs_production; grant connect, resource,dba to crs_production; commit; You also need JDBC driver jar , this will be needed later when we do Database configuration in CIM. You can download the jar from Oracle site. I am using ojdbc6.jar , you can use higher versions as well. d.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Go to https://edelivery.oracle.com and download ATG frameworks and Endeca frameworks (version 11.1) Downloads for ATG – Oracle Commerce Platform 11.1 Oracle Commerce ReferenceStore 11.1 Downloads for Endeca search – Oracle Endeca MDEX Engine 6.5.1 Oracle Endeca Platform Services 11.1.0 Oracle Endeca Tools and Frameworks 11.1.0 Oracle Endeca Content Acquisition System 11.1.0 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Installing Endeca Commerce with Experience Manager&amp;nbsp; - Goto http://docs.oracle.com/cd/E51272_02/Common.110/pdf/GettingStarted.pdf&amp;nbsp; and follow instructions given in chapter 3 and chapter 5 in this guide for Endeca installation and configuration. Please note we are installing Endeca first as its not dependent on ATG installation. We want to make sure Endeca is working fine before moving to ATG installation and configuration. You can avoid Developer studio installation as its not needed for this integration. After a successful installation you can see following services installed. Make sure all 3 Endeca services are started as shown below. You will also see following folders in your d:\Endeca folder after all Endeca related installation. Time to validate our Endeca installation – If you have followed all the instructions then your Discover Electronics reference is ready to validate. Visit - http://localhost:8006/discover/&amp;nbsp; and you should see the below page Note: To see workbench screen goto http://localhost:8006/ Installing ATG commerce and reference st - Now we need to install ATG platform first and then reference store . Visit this link http://docs.oracle.com/cd/E41069_01/CRS.11-0/ATGCRSInstall/html/s0101introduction01.html&amp;nbsp;&amp;nbsp; for step by step installation guide.&amp;nbsp; During installation setup will ask for Jboss and Java path – Specifiy your local folder path where you have installed them. Please note the port I have used here is 8180.&amp;nbsp; Just to mention, I have avoided using 8080 as Oracle XE is listening to this port so avoid using. I am using following ports throughout all installations and configurations here. 8180 for Store 8280 for Publishing 8380 for SSO Dont forget to set environment variable DYNAMO_HOME = D:\ATG\ATG11.1\home &amp;nbsp;Configuring ATG environment using CIM&amp;nbsp; - Once ATG platform and CRS installation is completed in step # 3 then we need to launch CIM.&amp;nbsp; Open a command prompt , navigate to D:\ATG\ATG11.1\home\bin&amp;nbsp; and run cim.bat Here mainly you are going to configure following items – I suggest you follow CIM response given in any of the two links provided in the Reference section below. It has all the detailed CIM responses. Set the Administrator Password Product Selection – select 9 as it will select all essentials items to install. further&amp;nbsp; in AddOns choose *** Single Sign On (SSO)&amp;nbsp; *** Database Configuration Configure OPSS Security Server Instance Configuration&amp;nbsp; -&amp;nbsp;&amp;nbsp; After server instance configuration , make sure you also visit&amp;nbsp; *** Deploy CRS Endeca Application *** option. Also make sure you don’t get any error in Deploy and Initialize tasks. If Initialize fails that means there is something wrong in your Endeca installation done in step #2.&amp;nbsp; Refer below link directly only for Endeca application configuration in CIM - http://docs.oracle.com/cd/E41069_01/CRS.11-0/ATGCRSInstall/html/s0207creatingtheendecaapplication01.html Application Assembly and Deployment After all the above configurations we are left with following – a.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Start all the server instance like store , publishing and SSO. Use below commands &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; D:\jboss-eap-6.1\bin&amp;gt;standalone.bat --server-config=ATGProduction.xml -b 0.0.0.0 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; D:\jboss-eap-6.1\bin&amp;gt;standalone.bat --server-config=ATGPublishing.xml -b 0.0.0.0 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; D:\jboss-eap-6.1\bin&amp;gt;standalone.bat --server-config=ATGSSO.xml -b 0.0.0.0 b.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; You need to perform a full deployment in BCC – follow direct link for this task here - http://docs.oracle.com/cd/E41069_01/CRS.11-0/ATGCRSInstall/html/s0213configuringandrunningafulldeploy01.html &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; If you face issues in accessing BCC then check below troubleshoot section for help. c.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Ideally after successful full deployment the system should build the index. To verify goto http://localhost:8280/dyn/admin/nucleus/atg/commerce/endeca/index/ProductCatalogSimpleIndexingAdmin and check the indexing job status. If its in PENDING or CANCELLED state then you need to manually invoke “Baseline Index” d.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Once index is completed we finally need to promote the commerce reference store content . please follow instructions here to invoke promote_content - http://docs.oracle.com/cd/E41069_01/CRS.11-0/ATGCRSInstall/html/s0215promotingthecommercereferencesto01.html e.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Its time now to finally hit the store URL and explore CRS store - http://localhost:8180/crs/storeus &amp;nbsp;Common errors troubleshoot – If you get following error while accessing BCC then read solution – &amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Error – /atg/portal/framework/PortalObjectResolver &amp;nbsp; &amp;nbsp; &amp;nbsp;No root community folder for portal 'default'&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Solutions – Its due to missing BIZUI data, follow below url and see the last section about&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; accessing BCC.&amp;nbsp; http://atgkid.blogspot.co.uk/2012_01_01_archive.html You may encounter ORA-01658 error - &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Error - ORA-01658: unable to create INITIAL extent for segment in tablespace LARGE_&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Solution - Its due to the fact that Oracle failed to find sufficient contiguous space to allocate&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; INITIAL extent for segment being created. Visit this link for solution -&amp;nbsp;&amp;nbsp; &amp;nbsp; If you encounter any connection related error -&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Error - Caused by: java.sql.SQLException: Listener refused the connection with the following&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; error: ORA-12519, TNS:no appropriate service handler found&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Solution - I increased timeout setting in the pulishing server configuration, also make sure your&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DB is up and running. You may not be able to login to BCC until you login to SSO (http://localhost:8380/sso/login) . Make sure you run the SSO instance like you start your store or publishing servers. &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; References&amp;nbsp; - a.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; http://iam-saminda.blogspot.co.uk/2013/06/oracle-ecommerce-atg-102.html&amp;nbsp; - One of the best written blog which details ATG 10 integration with Endeca search. b.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; http://internetmarketing-readme.pricemaniacs.com/oracle-commerce-v11-step-by-step-cim-responses&amp;nbsp; - Blog lists all the CIM response for ATG environment configuration using CIM. Bonus - &amp;gt; How to check the status of the Endeca Log Server - Visit - http://localhost:15010/stats If the Log Server is running, above URL returns a confirmation message containing the file name, number of log entries and number of errors. If it is not running, you will see browser’s default error message. OUTPUT - Endeca log server is running. log file: D:\Endeca\apps\Discover\logs\logserver_output\LogServer.2014_09_10.17_45_40 number of log entries: 9 number of errors: 0 &amp;gt; Anatomy of an Oracle Commerce Experience Manager Site</itunes:subtitle><itunes:author>noreply@blogger.com (Nads)</itunes:author><itunes:summary>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Exploring new software and tool is always exciting and fun way to learn new stuff. With ATG Commerce v11 Oracle has replaced ATG Search with Endeca search.&amp;nbsp; I have tried to list out all the steps involved in this integration and focused to highlight the issues/errors I faced with their resolutions. So lets dive in - &amp;nbsp; &amp;nbsp;&amp;nbsp; Installation requirements with download links – a.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Download and install Java 7 or higher,&amp;nbsp; I am using jdk 7 update 45 , set the environment variable ( JAVA_HOME = D:\Java\jdk1.7.0_45 ) b.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Install application server of your choice – I have used JBoss Enterprise Application Platform - Version 6.1.0.GA&amp;nbsp; , you can Download from Jboss site. c.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Installing Oracle XE 11g&amp;nbsp; - Download from Oracle website and accept all the default settings. After you install Oracle XE then create following schemas which will be used at the time of ATG configuration via CIM. create user crs_switching_a identified by crs_switching_a; grant connect, resource, dba to crs_switching_a; create user crs_switching_b identified by crs_switching_b; grant connect, resource , dba to crs_switching_b; create user crs_publishing identified by crs_publishing; grant connect, resource,dba to crs_publishing; create user crs_production identified by crs_production; grant connect, resource,dba to crs_production; commit; You also need JDBC driver jar , this will be needed later when we do Database configuration in CIM. You can download the jar from Oracle site. I am using ojdbc6.jar , you can use higher versions as well. d.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Go to https://edelivery.oracle.com and download ATG frameworks and Endeca frameworks (version 11.1) Downloads for ATG – Oracle Commerce Platform 11.1 Oracle Commerce ReferenceStore 11.1 Downloads for Endeca search – Oracle Endeca MDEX Engine 6.5.1 Oracle Endeca Platform Services 11.1.0 Oracle Endeca Tools and Frameworks 11.1.0 Oracle Endeca Content Acquisition System 11.1.0 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Installing Endeca Commerce with Experience Manager&amp;nbsp; - Goto http://docs.oracle.com/cd/E51272_02/Common.110/pdf/GettingStarted.pdf&amp;nbsp; and follow instructions given in chapter 3 and chapter 5 in this guide for Endeca installation and configuration. Please note we are installing Endeca first as its not dependent on ATG installation. We want to make sure Endeca is working fine before moving to ATG installation and configuration. You can avoid Developer studio installation as its not needed for this integration. After a successful installation you can see following services installed. Make sure all 3 Endeca services are started as shown below. You will also see following folders in your d:\Endeca folder after all Endeca related installation. Time to validate our Endeca installation – If you have followed all the instructions then your Discover Electronics reference is ready to validate. Visit - http://localhost:8006/discover/&amp;nbsp; and you should see the below page Note: To see workbench screen goto http://localhost:8006/ Installing ATG commerce and reference st - Now we need to install ATG platform first and then reference store . Visit this link http://docs.oracle.com/cd/E41069_01/CRS.11-0/ATGCRSInstall/html/s0101introduction01.html&amp;nbsp;&amp;nbsp; for step by step installation guide.&amp;nbsp; During installation setup will ask for Jboss and Java path – Specifiy your local folder path where you have installed them. Please note the port I have used here is 8180.&amp;nbsp; Just to mention, I have avoided using 8080 as Oracle XE is listening to this port so avoid using. I am using following ports throughout all installations and configurations here. 8180 for Store 8280 for Publishing 8380 for SSO Dont forget to set environment variable DYNAMO_HOME = D:\ATG\ATG11.1\home &amp;nbsp;Configuring ATG environment using CIM&amp;nbsp; - Once ATG platform and CRS installation is completed in step # 3 then we need to launch CIM.&amp;nbsp; Open a command prompt , navigate to D:\ATG\ATG11.1\home\bin&amp;nbsp; and run cim.bat Here mainly you are going to configure following items – I suggest you follow CIM response given in any of the two links provided in the Reference section below. It has all the detailed CIM responses. Set the Administrator Password Product Selection – select 9 as it will select all essentials items to install. further&amp;nbsp; in AddOns choose *** Single Sign On (SSO)&amp;nbsp; *** Database Configuration Configure OPSS Security Server Instance Configuration&amp;nbsp; -&amp;nbsp;&amp;nbsp; After server instance configuration , make sure you also visit&amp;nbsp; *** Deploy CRS Endeca Application *** option. Also make sure you don’t get any error in Deploy and Initialize tasks. If Initialize fails that means there is something wrong in your Endeca installation done in step #2.&amp;nbsp; Refer below link directly only for Endeca application configuration in CIM - http://docs.oracle.com/cd/E41069_01/CRS.11-0/ATGCRSInstall/html/s0207creatingtheendecaapplication01.html Application Assembly and Deployment After all the above configurations we are left with following – a.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Start all the server instance like store , publishing and SSO. Use below commands &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; D:\jboss-eap-6.1\bin&amp;gt;standalone.bat --server-config=ATGProduction.xml -b 0.0.0.0 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; D:\jboss-eap-6.1\bin&amp;gt;standalone.bat --server-config=ATGPublishing.xml -b 0.0.0.0 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; D:\jboss-eap-6.1\bin&amp;gt;standalone.bat --server-config=ATGSSO.xml -b 0.0.0.0 b.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; You need to perform a full deployment in BCC – follow direct link for this task here - http://docs.oracle.com/cd/E41069_01/CRS.11-0/ATGCRSInstall/html/s0213configuringandrunningafulldeploy01.html &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; If you face issues in accessing BCC then check below troubleshoot section for help. c.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Ideally after successful full deployment the system should build the index. To verify goto http://localhost:8280/dyn/admin/nucleus/atg/commerce/endeca/index/ProductCatalogSimpleIndexingAdmin and check the indexing job status. If its in PENDING or CANCELLED state then you need to manually invoke “Baseline Index” d.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Once index is completed we finally need to promote the commerce reference store content . please follow instructions here to invoke promote_content - http://docs.oracle.com/cd/E41069_01/CRS.11-0/ATGCRSInstall/html/s0215promotingthecommercereferencesto01.html e.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Its time now to finally hit the store URL and explore CRS store - http://localhost:8180/crs/storeus &amp;nbsp;Common errors troubleshoot – If you get following error while accessing BCC then read solution – &amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Error – /atg/portal/framework/PortalObjectResolver &amp;nbsp; &amp;nbsp; &amp;nbsp;No root community folder for portal 'default'&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Solutions – Its due to missing BIZUI data, follow below url and see the last section about&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; accessing BCC.&amp;nbsp; http://atgkid.blogspot.co.uk/2012_01_01_archive.html You may encounter ORA-01658 error - &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Error - ORA-01658: unable to create INITIAL extent for segment in tablespace LARGE_&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Solution - Its due to the fact that Oracle failed to find sufficient contiguous space to allocate&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; INITIAL extent for segment being created. Visit this link for solution -&amp;nbsp;&amp;nbsp; &amp;nbsp; If you encounter any connection related error -&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Error - Caused by: java.sql.SQLException: Listener refused the connection with the following&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; error: ORA-12519, TNS:no appropriate service handler found&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Solution - I increased timeout setting in the pulishing server configuration, also make sure your&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DB is up and running. You may not be able to login to BCC until you login to SSO (http://localhost:8380/sso/login) . Make sure you run the SSO instance like you start your store or publishing servers. &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; References&amp;nbsp; - a.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; http://iam-saminda.blogspot.co.uk/2013/06/oracle-ecommerce-atg-102.html&amp;nbsp; - One of the best written blog which details ATG 10 integration with Endeca search. b.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; http://internetmarketing-readme.pricemaniacs.com/oracle-commerce-v11-step-by-step-cim-responses&amp;nbsp; - Blog lists all the CIM response for ATG environment configuration using CIM. Bonus - &amp;gt; How to check the status of the Endeca Log Server - Visit - http://localhost:15010/stats If the Log Server is running, above URL returns a confirmation message containing the file name, number of log entries and number of errors. If it is not running, you will see browser’s default error message. OUTPUT - Endeca log server is running. log file: D:\Endeca\apps\Discover\logs\logserver_output\LogServer.2014_09_10.17_45_40 number of log entries: 9 number of errors: 0 &amp;gt; Anatomy of an Oracle Commerce Experience Manager Site</itunes:summary><itunes:keywords>ATG, Endeca, oracle</itunes:keywords></item><item><title>Emerging languages series - Scala</title><link>http://sajidn.blogspot.com/2013/12/emerging-languages-series-scala.html</link><category>Java</category><category>Scala</category><author>noreply@blogger.com (Nads)</author><pubDate>Sun, 8 Dec 2013 15:00:00 GMT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-27924845.post-6904617008960319346</guid><description>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;span style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;br /&gt;
&lt;div class="MsoNormal"&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi6QXhNbtrH9lsG7Cr2bOmNAmFVz3Yg1yeUShzPewgGa5P7U_1HwXWE0BCa7eZ78_f_wP-JOoFtIgf-x96mm5jLdRZiSgeWn1Qus_vLYmTq-RYb0B5jAfdffrboR72h3HcU0GJ4/s1600/scala.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;span style="color: black;"&gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi6QXhNbtrH9lsG7Cr2bOmNAmFVz3Yg1yeUShzPewgGa5P7U_1HwXWE0BCa7eZ78_f_wP-JOoFtIgf-x96mm5jLdRZiSgeWn1Qus_vLYmTq-RYb0B5jAfdffrboR72h3HcU0GJ4/s1600/scala.png" height="55" width="200" /&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;span style="font-family: inherit;"&gt;Although my experience in Scala
language is limited but in last couple of weeks have read a lot about Scala and its growth
over recent years. Coming from Java background and recent demand for Scala has
forced me to dig deeper to explore the potential and features of the language.&lt;/span&gt;&lt;br /&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;&lt;b&gt;Scala overview&lt;/b&gt;&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&amp;nbsp;–&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;Scala is an acronym for “Scalable Language”. Scala is a
statically typed, object oriented functional language, merging two popular
programming approaches into one&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;In other words we can say when Object-Oriented meets
Functional then the result is known as Scala. It was built by Martin Odersky at
EPFL, launched in 2003.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;Scala runs on the JVM. Java and Scala classes can be freely
mixed, no matter whether they reside in different projects or in the same. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;Java libraries, frameworks and tools are all available.
Build tools like ant or maven, IDEs like Eclipse, IntelliJ, or Netbeans,
frameworks like Spring or Hibernate all work seamlessly with Scala. Scala runs
on all common JVMs and also on Android.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;Already used by Twitter, LinkedIn, Yammer, Foursquare, eBay,
Amazon , Guardian newspaper and many others&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;&lt;b&gt;Key features of Scala
language&lt;/b&gt; &amp;nbsp;–&amp;nbsp;&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;Scala has a set of
features which differ from Java. Some of these are:&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;All types are objects&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;Type inference&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;Functions are objects&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;Anonymous function&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;Curried function&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;Closures&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;Traits&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;Domain specific language (DSL) support&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;Concurrency support inspired by Erlang&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;Scala comes with an interactive interpreter, the REPL (for
Read, Evaluate, Print Loop). After installing Scala, you can start the REPL by
entering the command scala in a command prompt or shell window. Visit the &lt;a href="http://scala-lang.org/download/" target="_blank"&gt;Scala download page&lt;/a&gt; here.&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="Default"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;You can type statements and expressions at the prompt, and
the REPL will evaluate these and print the results. The REPL is a useful tool
for experimenting with Scala language features. The REPL understands a number
of special commands that start with a colon. Type the command &lt;b&gt;:help&lt;/b&gt; to see an
overview. Type &lt;b&gt;:quit&lt;/b&gt; to exit the REPL.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;b&gt;&lt;span style="font-family: inherit;"&gt;Compiling and running
Scala code –&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div class="Default"&gt;
&lt;span style="font-family: inherit;"&gt;Before
getting into any example please remember you can Compile Scala source files
using the Scala compiler, scalac. When you use Scala as a compiled language
your code must be organized a little differently than when using it as a
scripting language. You’ll need to create a Scala object with a main method, as
in the following example.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;// HelloWorld.scala &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;object HelloWorld { &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;def main(args: Array[String]) {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;&amp;nbsp;println(“Hello
World!”) &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;} &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;Save this in a source file named HelloWorld.scala. Compile
it with: scalac HelloWorld.scala and run it with: scala HelloWorld. Note that
in this last command, you supply the name of the object (HelloWorld) rather
than the name of the source file (HelloWorld.scala) or the compiled class file
(HelloWorld.class).&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;b&gt;&lt;span style="font-family: inherit;"&gt;&lt;span style="text-decoration: none; text-underline: none;"&gt;Scala features
By Example&lt;/span&gt; –&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="Pa11"&gt;
&lt;u&gt;&lt;span style="font-family: inherit;"&gt;&lt;b&gt;Values and variables -&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/u&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;val name: Type = expression &amp;nbsp;&amp;nbsp;&amp;nbsp;// use to define an immutable value&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;var name: Type = expression&amp;nbsp;
&amp;nbsp;// use to define a mutable
variable&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;val myVal : Int = 1;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;var name = "Sajid"&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="Pa11"&gt;
&lt;span style="font-family: inherit;"&gt;&lt;u&gt;&lt;b&gt;Tuples -&lt;/b&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="Pa11"&gt;
&lt;span style="font-family: inherit;"&gt;Tuples are type-safe
containers for multiple values. They useful if you want to return more than one
value from a method. They are different from collections; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="Pa11"&gt;
&lt;span style="font-family: inherit;"&gt;each element in a tuple has
its own type, whereas in collections all elements in the collection usually
have the same type. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="Pa11"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="Pa11"&gt;
&lt;span style="font-family: inherit;"&gt;// Defines a tuple with a
String and an Int &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="Pa11"&gt;
&lt;span style="font-family: inherit;"&gt;val tup = (“Hello”, 123) &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="Pa11"&gt;
&lt;span style="font-family: inherit;"&gt;// The elements of a tuple
are named _1, _2 etc. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="Pa11"&gt;
&lt;span style="font-family: inherit;"&gt;println(tup._1) &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="Pa11"&gt;
&lt;span style="font-family: inherit;"&gt;println(tup._2) &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="Pa11"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="Pa11"&gt;
&lt;span style="font-family: inherit;"&gt;// Method that returns a
Tuple with two Ints &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="Pa11"&gt;
&lt;span style="font-family: inherit;"&gt;def div(a: Int, b: Int):
(Int, Int) = (a / b, a % b) &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="Pa11"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="Pa11"&gt;
&lt;span style="font-family: inherit;"&gt;// Call the method, use
pattern matching to extract the values from the result, throw away the second
value &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="Pa11"&gt;
&lt;span style="font-family: inherit;"&gt;val (x, _) = div(20, 7)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="Pa11"&gt;
&lt;u&gt;&lt;span style="font-family: inherit;"&gt;&lt;b&gt;Methods &lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/u&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;def name[TypeParams](ParamList1)(ParamList2)(...):
ReturnType = { &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;// Statements and expressions&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;// Here you see return type is inferred and “return” keyword
is optional &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;def add(x:Int, y:Int) = { &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;&amp;nbsp; x + y &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;}&amp;nbsp; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;println(add(42,13))&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="Pa8"&gt;
&lt;span style="font-family: inherit;"&gt;&lt;u&gt;&lt;b&gt;Default
parameters &lt;/b&gt;&lt;/u&gt;&lt;u&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="Pa8"&gt;
&lt;span style="font-family: inherit;"&gt;Parameters may have a default
value that is used if a value is not supplied when calling the method. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;def greet(name: String = “there”) { &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;println(“Hello “ + name) &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;&lt;u&gt;&lt;b&gt;Return multiple variables&lt;/b&gt;&lt;/u&gt; - It is possible to return
multiple variables using Tuple&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;def swap(x:String, y:String) = (y, x)&amp;nbsp; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;val (a,b) = swap("hello","world")&amp;nbsp; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;println(a, b)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;u&gt;&lt;span style="font-family: inherit;"&gt;&lt;b&gt;Functions –&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/u&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;The difference between a function and a method is that a
function is a value (an object) while a method is not. A function is an
instance of one of the traits Function0, Function1 etc., depending on the
number of parameters that the function takes.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;def
add(a:Int, b:Int):Int = a + b&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;val
m:Int = add(1, 2)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;println(m)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;You can convert a method to a function by assigning it to a
val or var. However, to avoid ambiguity, you have to either explicitly specify
the type of the val or var, or put an underscore after the method name to
indicate that you want to treat it as a function.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;// A method &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;def succ1(x: Int) = x + 1 &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;// Explicitly specify the type of succ2 &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;val succ2: Int =&amp;gt; Int = succ1 &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;// Or put an underscore after the method name &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;val succ2 = succ1 _&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;u&gt;&lt;span style="font-family: inherit;"&gt;&lt;b&gt;Higher order functions –&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/u&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;def identity(x: Int) = x&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;def sqr(x: Int) = x * x&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;def cube(x: Int) = x * x * x&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;def sum(f: Int=&amp;gt;Int, a: Int, b: Int): Int =&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;if (a == b) f(a) else f(a) + sum(f, a + 1, b)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;println(sum(identity, 1, 10))&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;println(sum(sqr, 1, 10))&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;println(sum(cube, 1, 10))&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;"sum" is now a "higher order" function,
It's first parameter is a function which maps an Int to an Int&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;The type "Int" represents a simple Integer value.
The type Int =&amp;gt; Int represents a function which accepts an Int and returns
an Int.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;u&gt;&lt;span style="font-family: inherit;"&gt;&lt;b&gt;Anonymous functions –&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/u&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;A method that requires a function as a parameter&amp;nbsp; the function's type is (Int,Int) =&amp;gt; Int&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;def sum(f: Int=&amp;gt;Int, a: Int, b: Int): Int =&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;if (a == b) f(a) else f(a) + sum(f, a + 1, b)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;println(sum(x=&amp;gt;x, 1, 3))&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;println(sum(x=&amp;gt;x*x, 1, 3))&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;println(sum(x=&amp;gt;x*x*x, 1, 3))&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;We can create "anonymous" functions on the fly. x
=&amp;gt; x*x is a function which takes an "x" and returns x*x&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;u&gt;&lt;span style="font-family: inherit;"&gt;&lt;b&gt;Curried functions –&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/u&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;Currying allows to turn a function that expects two
arguments into a function that expects only one, and that function returns a
function that expects the second argument. Creating basically a chain of
functions.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;def addA(x: Int, y: Int): Int =&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;x + y&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;def addB(x: Int):Int=&amp;gt;Int =&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;y =&amp;gt; x + y&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;val a = addA(10, 20)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;val b = addB(10)(20)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;println(a)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;println(b)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;You can take any function of multiple arguments and curry it.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;o:p&gt;&lt;span style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;u&gt;&lt;span style="font-family: inherit;"&gt;&lt;b&gt;Traits –&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/u&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;trait Name[TypeParams] extends ClassOrTrait with
Trait1 with Trait2 with ... { &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;// Constructor statements and trait members &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;} &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;A trait can extend one class and multiple other
traits. A trait can have a constructor (you can put statements in the body of
the trait that are executed as part of its constructor), but it cannot have
constructor parameters. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;Traits are like Java interfaces, except that a trait can be
partially implemented. Like a Java interface, a trait cannot be directly
instantiated even if it is fully implemented.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;trait Car {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;&amp;nbsp; val brand: String&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;trait Shiny {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;&amp;nbsp; val shineRefraction:
Int&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;One class can extend several traits using the with keyword:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;class BMW extends Car with Shiny {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;&amp;nbsp; val brand =
"BMW"&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;&amp;nbsp; val shineRefraction
= 12&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;u&gt;&lt;span style="font-family: inherit;"&gt;&lt;b&gt;Closure –&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/u&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;A "closure" is a function which carries with it
references to the environment in which it was defined.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;Alternately we can say that&amp;nbsp;closure&amp;nbsp;is a function, whose return value depends on the value
of one or more variables declared outside this function. Consider the following
piece of code with anonymous function&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;object Test {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;&amp;nbsp;&amp;nbsp; def main(args:
Array[String]) {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; println(
"muliplier(1) value = " +&amp;nbsp;
multiplier(1) )&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; println(
"muliplier(2) value = " +&amp;nbsp;
multiplier(2) )&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;&amp;nbsp;&amp;nbsp; }&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;&amp;nbsp;&amp;nbsp; var factor = 3&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;&amp;nbsp;&amp;nbsp; val multiplier =
(i:Int) =&amp;gt; i * factor&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;Here &amp;nbsp;&lt;b&gt;factor&lt;/b&gt;&amp;nbsp;has a reference to a variable outside the function but
in the enclosing scope.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;&lt;b&gt;&lt;u&gt;Functions are Objects&lt;/u&gt; – &lt;/b&gt;Yes you read it correct J&lt;b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;Probably it might be little difficult to digest it if you
coming from Java background. Don’t worry, here comes a golden rule of thumb.
The key to scala is that everything is an object. Since every value is an
Object in Scala, Functions are Objects, too!&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;Every Function you’ll ever define in Scala, will become an
instance of an Implementation which will feature a certain Function&amp;nbsp;&lt;a href="http://www.scala-lang.org/node/126" target="_blank"&gt;&lt;span style="text-decoration: none; text-underline: none;"&gt;Trait&lt;/span&gt;&lt;/a&gt;. There is a whole bunch of that Function Traits,
ranging from&amp;nbsp;&lt;i&gt;Function1&lt;/i&gt;&amp;nbsp;up to&amp;nbsp;&lt;i&gt;Function22&lt;/i&gt;. Wow, and
why are there so many? Since Functions are Objects in Scala and Scala is a
statically typed language, it has to provide an appropriate type for every
Function which comes with a different number of arguments. If you define a
Function with two arguments, the compiler picks&amp;nbsp;&lt;i&gt;Function2&lt;/i&gt;&amp;nbsp;as
the underlying type. If you define a Function with seven arguments, you’ll end
up with&amp;nbsp;&lt;i&gt;Function7&lt;/i&gt;. And since there is a maximum up to&amp;nbsp;&lt;i&gt;Function22&lt;/i&gt;,
that means you can’t define a Function which will accept 23 arguments or more.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;new Function1[Int, Int] { &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;&amp;nbsp;def apply(x: Int):
Int = &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;&amp;nbsp;x + 1 &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;o:p&gt;&lt;span style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;u&gt;&lt;span style="font-family: inherit;"&gt;&lt;b&gt;Patten matching –&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/u&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;Scala has a built-in general pattern matching mechanism. It
allows to match on any sort of data with a first-match policy. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;Here is a small example which shows how to match against an
integer value:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;object MatchTest1 extends Application {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;&amp;nbsp; def matchTest(x:
Int): String = x match {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; case 1 =&amp;gt;
"one"&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; case 2 =&amp;gt;
"two"&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; case _ =&amp;gt;
"many"&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;&amp;nbsp; }&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;&amp;nbsp;
println(matchTest(3))&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;The block with the case statements defines a function which
maps integers to strings. The match keyword provides a convenient way of
applying a function (like the pattern matching function above) to an object.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;Here is a second example which matches a value against
patterns of different types:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;object MatchTest2 extends Application {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;&amp;nbsp; def matchTest(x:
Any): Any = x match {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; case 1 =&amp;gt;
"one"&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; case
"two" =&amp;gt; 2&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; case y: Int =&amp;gt;
"scala.Int"&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;&amp;nbsp; }&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;&amp;nbsp;
println(matchTest("two"))&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;The first case matches if x refers to the integer value 1.
The second case matches if x is equal to the string "two". The third
case consists of a typed pattern; it matches against any integer and binds the
selector value x to the variable y of type integer.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;b&gt;&lt;span style="font-family: inherit;"&gt;Finally some of the key benefits of Scala –&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div class="MsoListParagraph" style="mso-list: l0 level1 lfo1; text-indent: -18.0pt;"&gt;
&lt;/div&gt;
&lt;ul style="text-align: left;"&gt;
&lt;li&gt;&lt;span style="font-family: inherit; text-indent: -18pt;"&gt;Scala's case classes and pattern-matching make
for very clean code, for example, and Scala traits (like interfaces with
implemented methods) can be a very powerful and simple way to
"inherit" behaviour without the pain of OO inheritance.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-family: inherit; text-indent: -18pt;"&gt;Scala's powerful type inference also combines
the benefits of a strictly typed language with some of the benefits of dynamic
typing in terms of having to write less code yourself.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-family: inherit; text-indent: -18pt;"&gt;Maintainability e.g. Scala code is often much
more concise than Java (with all that boilerplate) and fewer LOC often means
fewer places to screw up and less maintenance in the longer term.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-family: inherit; text-indent: -18pt;"&gt;Access to great Scala libraries e.g. for
Collections, as well as to Java's existing libraries.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-family: inherit; text-indent: -18pt;"&gt;Scalability e.g through the use of Actors for
(asynchronous) concurrency instead of threads, or through greater use of
immutable data, functional programming etc.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-family: inherit; text-indent: -18pt;"&gt;Scala's hybrid ability to take advantage of FP
and/or OOP as required for the task in hand.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;Most people are using Scala on the server, because that's
where you can gain the benefit of its scalability. Obviously, you can mix Scala
with Java on a JVM server, and use your preferred client-side technology for
browser interfaces etc. Scala is also the basis for version 2 of the
lightweight Play! framework for web applications (although my understanding is
that version 2.x is not currently Java EE compatible). My impression is that
there is a growing trend towards looking at using the right language for
specific purposes rather than a monolithic "one size fits all"
approach.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;Twitter is a prominent user and promoter of Scala, while
LinkedIn also uses Scala for some applications.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;b&gt;&lt;span style="font-family: inherit;"&gt;Resources &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;Download Scala - &lt;a href="http://scala-lang.org/download/"&gt;http://scala-lang.org/download/&lt;/a&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;Download Typesafe Reactive Platform for Scala - &lt;a href="http://typesafe.com/platform/getstarted"&gt;http://typesafe.com/platform/getstarted&lt;/a&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;Scala IDE for Eclipse - &lt;a href="http://scala-ide.org/"&gt;http://scala-ide.org/&lt;/a&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;Scala documentation - &lt;a href="http://www.scala-lang.org/documentation/"&gt;http://www.scala-lang.org/documentation/&lt;/a&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;Scala school - &lt;a href="http://twitter.github.io/scala_school/"&gt;http://twitter.github.io/scala_school/&lt;/a&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;Scala tutorial - &lt;a href="http://docs.scala-lang.org/tutorials/"&gt;http://docs.scala-lang.org/tutorials/&lt;/a&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h1 style="background: white; line-height: 20.65pt; margin-bottom: 6.25pt; margin-left: 0cm; margin-right: 0cm; margin-top: 0cm;"&gt;
&lt;span style="font-family: inherit; font-size: small;"&gt;Java 8 vs Scala: &lt;a href="http://www.infoq.com/articles/java-8-vs-scala" target="_blank"&gt;A&amp;nbsp;Feature Comparison&lt;/a&gt;&lt;/span&gt;&lt;/h1&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;Here’s a nicely written article on InfoQ which goes deep
into this comparison and list out some of the key findings. Just to mention Java
8 is going to provide a variety of new language features, with the potential to
fundamentally change the way we write applications. Especially the functional
programming constructs, such as lambda expressions, can be considered a
paradigm shift. This shift provides great new possibilities for more concise,
compact and easy to understand code.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;If you want to try them out then explore&amp;nbsp;&lt;a href="https://jdk8.java.net/download.html" target="_blank"&gt;early builds of Java 8&lt;/a&gt;&amp;nbsp;on
most platforms.&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;The best way to find out what a language can do for
you is probably to try it out, and best way would be to sign up and learn about
&lt;/span&gt;&lt;a href="https://www.coursera.org/course/progfun" style="font-family: inherit;" target="_blank"&gt;Functional Programming Principles In Scala&lt;/a&gt;&lt;span style="font-family: inherit;"&gt; from the language's creator Martin
Odersky of EPFL at Coursera. Just check and register for any future date for
free course.&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi6QXhNbtrH9lsG7Cr2bOmNAmFVz3Yg1yeUShzPewgGa5P7U_1HwXWE0BCa7eZ78_f_wP-JOoFtIgf-x96mm5jLdRZiSgeWn1Qus_vLYmTq-RYb0B5jAfdffrboR72h3HcU0GJ4/s72-c/scala.png" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>Hybris commerce suite - Insight</title><link>http://sajidn.blogspot.com/2013/11/hybris-commerce-suite-insight.html</link><category>commerce</category><category>hybris</category><author>noreply@blogger.com (Nads)</author><pubDate>Sun, 24 Nov 2013 11:30:00 GMT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-27924845.post-2404744436449062098</guid><description>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;Recently started exploring&amp;nbsp;&lt;b&gt;Hybris commerce suite 5.0.4&lt;/b&gt;&amp;nbsp;and have some of the interesting facts to share. So let’s start with basics.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;&lt;b&gt;What is [y] Hybris ?&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;Hybris is one of the upcoming agile and comprehensive commerce suite. Hybris platform is simple and based on open standards like Spring, ZK, SOLR/Lucene, ANT, Groovy, Apache Commons. The hybris commerce suite is engineered for expansion, extension and scale.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;&lt;b&gt;How’s the [y] Hybris architecture ?&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;From business standpoint&amp;nbsp;&lt;span style="background-color: white; background-position: initial initial; background-repeat: initial initial;"&gt;the hybris Commerce Suite is divided into individual packages, such as Commerce, Content, Channel and Orders. These packages are bundles of functionality assembled for a certain range of business functionality.&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="background-color: white; background-position: initial initial; background-repeat: initial initial; font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;From a technical point of view, packages consist of individual modules (aka extensions).&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;&lt;span style="background-color: white;"&gt;Extensions written by hybris provide standardized functionality and are supported and maintained by hybris.&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;span style="font-family: inherit;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="background-color: white; font-family: inherit;"&gt;hybris Commerce Suite is run in a Java Virtual Machine on a Servlet Container or a J2EE-compliant application server (such as IBM Websphere or Oracle WebLogic) and connects to an external database (MySQL, Oracle DB, Microsoft SQL Server). Internal caching and persistence mechanisms allow the hybris Commerce Suite to run on a Servlet Container. A full-fledged J2EE-compliant application server can be used, but is not necessary.&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="background-color: white; font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhQKZxWA3CV9CYreAZ_jrQn2umWBZ1Vm8pMSdM57KryY3XPo59zhDlx9LhpR0yzO8shuUNmfnXhm0LXS8KJ-lALIeUnsRZNw6jiiv591N8592xMLaaj7HjZrvhlZIB9pc2Wsx2l/s1600/hybris.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;span style="color: black; font-family: inherit;"&gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhQKZxWA3CV9CYreAZ_jrQn2umWBZ1Vm8pMSdM57KryY3XPo59zhDlx9LhpR0yzO8shuUNmfnXhm0LXS8KJ-lALIeUnsRZNw6jiiv591N8592xMLaaj7HjZrvhlZIB9pc2Wsx2l/s1600/hybris.png" height="258" width="400" /&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="background-color: white; font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="background-color: white; font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="background-color: white; font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="background-color: white; font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="font-family: inherit;"&gt;What are the key Hybris commerce capabilities and features which comes out of the box &amp;nbsp;?&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;General Storefront Capabilities - Language selection , Country selection , Currency selection , SEO frienddly URLs&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;Product Search - Solr-based product search with Keyword Search , Keyword Autocomplete , Spelling suggestions , Faceted browsing and more&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;Merchandising&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;Personalization and Promotion&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;Catalog Navigation&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;Product Display&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;Cart&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;Checkout&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;Hosted Payment&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;Customer Account&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;Store Location&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;Content Management&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;Data Import / Export&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;Google Local / Google Shopping&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;Content Pages and Templates&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;Organization Management&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;Jirafe Customer Intelligence&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;Google Analytics&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;Quote Negotiation&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;Order Approval&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;Order Management (OMS)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;Store Locator&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;Device Detection&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;Lets dig deeper into some of the other concepts which is essential to know –&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span lang="FR" style="font-family: inherit;"&gt;&lt;b&gt;Hybris Cockpit framework –&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;&lt;span style="background-color: white;"&gt;The hybris Cockpit framework offers a large number of highly configurable components which can be used to build a new cockpit for your customers needs, such as for example workflow and comments.&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;&lt;span style="background-color: white;"&gt;The hybris Cockpit framework is the foundation for all hybris Cockpits. It offers a large number of highly configurable components, which can be used to build a Graphical User Interface (GUI) to support high-level business use cases, allowing users to perform all their common tasks quickly and intuitively. The hybris Cockpit framework complements the functionality offered by the hMC, which provides lower-level control over all the data in the hybris system.&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;&lt;span style="background-color: white;"&gt;The hybris Cockpit framework is based on ZK, a rich internet application&amp;nbsp;(RIA) framework that enables desktop-like GUIs within a web browser. The ZK Framework is also well supported by Spring. ZK delivers a rich set of user interface (UI) components, making it easy and quick for developers to deliver a rich front end experience.&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;b&gt;&lt;span style="font-family: inherit;"&gt;The major features of the hybris Cockpit framework include:&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style="font-family: inherit;"&gt;Security infrastructure based on Spring security&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-family: inherit;"&gt;Ready to use front end template&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-family: inherit;"&gt;Base configuration as a starting point for new applications, based on Spring&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-family: inherit;"&gt;Reusable front end components in addition to existing ZK components&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-family: inherit;"&gt;Generic abstraction of persisted items in the front end layer via the Type Service&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-family: inherit;"&gt;GenericSearch providers&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-family: inherit;"&gt;Highly customizable front end&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-family: inherit;"&gt;Automatically stored user interface configuration at application run time&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-family: inherit;"&gt;Drag and drop functionality&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="background-color: white; font-family: inherit;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="background-color: white; font-family: inherit;"&gt;Here’s the key Hybris cockpits listed with brief description -&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;&lt;span lang="FR"&gt;&lt;b&gt;Hybris Administration Console -&lt;/b&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="background-color: white;"&gt;The hybris Administration Console is an administration Web page provided by the&lt;span class="apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;strong&gt;hac&lt;/strong&gt;&lt;span class="apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;extension. It provides functionality for administration, monitoring, and configuration of the hybris Commerce Suite.&lt;span lang="FR"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="background-color: white; line-height: 12.9pt; margin: 6.8pt 0cm 0cm;"&gt;
&lt;span style="font-family: inherit;"&gt;&lt;b&gt;Hybris Management Console (hMC) -&lt;/b&gt;&amp;nbsp;hMC is the administration tool of the hybris Commerce Suite. As part of the hybris Commerce Suite, it runs in web browsers. Using the hMC, you can manage business objects of the hybris Commerce Suite such as products, customer data, orders.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;&lt;b&gt;Product Cockpit -&lt;/b&gt;&amp;nbsp;&lt;span style="background-color: white; background-position: initial initial; background-repeat: initial initial;"&gt;The hybris Product Cockpit enables organizations to manage and structure product information and catalogs in high-volume and collaborative environments. Product managers can visualize their input from multiple perspectives and make product management processes more efficient&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="background-color: white; line-height: 12.9pt; margin: 0cm;"&gt;
&lt;span style="font-family: inherit;"&gt;&lt;b&gt;WCMS Cockpit -&lt;/b&gt;&amp;nbsp;The hybris WCMS Cockpit enables you to manage data of a website. For efficient management of information on your online shop, you can use both the catalog perspective and live edit perspective. Each of them provides you with different ways of data management.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="background-color: white; line-height: 12.9pt; margin-top: 6.8pt;"&gt;
&lt;span style="font-family: inherit;"&gt;&lt;b&gt;In the hybris WCMS Cockpit you can easily do the following:&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="background-color: white; line-height: 12.9pt; margin-left: 0cm; text-indent: -18pt;"&gt;
&lt;span style="font-family: inherit;"&gt;·&lt;span style="line-height: normal;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;Create and update website pages and content components&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="background-color: white; line-height: 12.9pt; margin-left: 0cm; text-indent: -18pt;"&gt;
&lt;span style="font-family: inherit;"&gt;·&lt;span style="line-height: normal;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;Check and change website pages status&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="background-color: white; line-height: 12.9pt; margin-left: 0cm; text-indent: -18pt;"&gt;
&lt;span style="font-family: inherit;"&gt;·&lt;span style="line-height: normal;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;Synchronize catalog versions of your website&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="background-color: white; line-height: 12.9pt; margin-left: 0cm; text-indent: -18pt;"&gt;
&lt;span style="font-family: inherit;"&gt;·&lt;span style="line-height: normal;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;Create collections of chosen pages&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="background-color: white; line-height: 12.9pt; margin-left: 0cm; text-indent: -18pt;"&gt;
&lt;span style="font-family: inherit;"&gt;·&lt;span style="line-height: normal;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;Search for website pages, according to advanced criteria&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;&lt;b&gt;Admin Cockpit -&lt;/b&gt;&amp;nbsp;At present, the hybris Administration Cockpit is used for the manipulation of: Data Validation constraints and Instances of types&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;&lt;b&gt;Customer service Cockpit -&lt;/b&gt;&amp;nbsp;&lt;span style="background-color: white; background-position: initial initial; background-repeat: initial initial;"&gt;The hybris Customer Service Cockpit enables you to quickly and efficiently manage the customer and orders in the call-center environment.&lt;span class="apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;&lt;b&gt;Report Cockpit -&lt;/b&gt;&amp;nbsp;&lt;span style="background-color: white; background-position: initial initial; background-repeat: initial initial;"&gt;The hybris Reporting Module adds&lt;span class="apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;Report Cockpit&lt;/b&gt;&lt;span class="apple-converted-space"&gt;&amp;nbsp;in which users can create and manage personal Dashboard containing rich graphical report widgets.&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;&lt;b&gt;Print Cockpit -&lt;/b&gt;&amp;nbsp;&lt;span style="background-color: white; background-position: initial initial; background-repeat: initial initial;"&gt;The hybris Print Cockpit enables you to create the publication structure and to manage the publication data for in an intuitive and user-friendly way. Linked with Adobe InDesign, it is a unique and powerful application.&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;Lets take closer look at some technical bits –&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;b&gt;&lt;span style="font-family: inherit;"&gt;Adding a new page in Hybris –&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style="font-family: inherit;"&gt;Create a new page using the cmscockpit and with the available templates(we can also create new templates using the hmc as per the requirement).&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-family: inherit;"&gt;Add components to the content slots available&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-family: inherit;"&gt;Create a controller to handle the user requests for the newly created page.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-family: inherit;"&gt;Get the request mapping from the request, perform the business logic and return the model and view&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="MsoNormal"&gt;
&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;&lt;b&gt;Adding a new component in Hybris –&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li style="text-align: left;"&gt;&lt;span style="font-family: inherit;"&gt;Create own item in items.xml file as below&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;jaloclass="de.hybris.platform.endeca.jalo.cms2.components.OurComponent"&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;//necessary attributes go here.....&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li style="text-align: left;"&gt;&lt;span style="font-family: inherit;"&gt;&amp;nbsp;Create a new controller OurComponentController.java&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; Note: The name of controller is important and should be created as follows: Component Type +"Controller" (in &amp;nbsp; &amp;nbsp; &amp;nbsp; our case OurComponentController). Beside that we also have to create a representation of our component &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ourComponent.jsp&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; All the controllers &amp;nbsp;are defined the way we define beans in Spring MVC in the spring-servlet.xml file as &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; mentioned below&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li style="text-align: left;"&gt;&lt;span style="font-family: inherit;"&gt;&amp;nbsp;Perform the business logic and return the model and view.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="background-color: white; background-position: initial initial; background-repeat: initial initial; font-family: inherit;"&gt;&lt;b&gt;Creating new extensions&lt;/b&gt; --&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;&lt;span style="background-color: white; background-position: initial initial; background-repeat: initial initial;"&gt;The hybris Commerce Suite comes with an extension generator
system called&lt;span class="apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;strong&gt;extgen&lt;/strong&gt;&lt;span class="apple-converted-space"&gt;&amp;nbsp;located
in the&lt;span class="apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;em&gt;${HYBRIS_BIN_DIR}&lt;/em&gt;&lt;strong&gt;&lt;span style="background-color: white; background-position: initial initial; background-repeat: initial initial;"&gt;&lt;/span&gt;/platform/extgen/&lt;/strong&gt;&lt;span class="apple-converted-space"&gt;&lt;span style="background-color: white; background-position: initial initial; background-repeat: initial initial;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="background-color: white; background-position: initial initial; background-repeat: initial initial;"&gt;directory.
Using&lt;span class="apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;strong&gt;extgen&lt;/strong&gt;, you can create new extensions based on extension
templates.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="background-color: white; background-position: initial initial; background-repeat: initial initial; font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;&lt;span style="background-color: white; background-position: initial initial; background-repeat: initial initial;"&gt;The hybris Commerce Suite comes with the following
extensions, which you can use as a template for new extensions:&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;
&lt;span style="background-color: white; background-position: initial initial; background-repeat: initial initial; font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;
&lt;span style="background-color: white; background-position: initial initial; background-repeat: initial initial; font-family: inherit;"&gt;yempty&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;
&lt;span style="background-color: white; background-position: initial initial; background-repeat: initial initial; font-family: inherit;"&gt;ycockpit&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;
&lt;span style="background-color: white; background-position: initial initial; background-repeat: initial initial; font-family: inherit;"&gt;yaddon&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;
&lt;span style="background-color: white; background-position: initial initial; background-repeat: initial initial; font-family: inherit;"&gt;ybackoffice&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;
&lt;span style="background-color: white; background-position: initial initial; background-repeat: initial initial; font-family: inherit;"&gt;yacceleratorstorefront&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;
&lt;span style="background-color: white; background-position: initial initial; background-repeat: initial initial; font-family: inherit;"&gt;yacceleratortest&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;
&lt;span style="background-color: white; background-position: initial initial; background-repeat: initial initial; font-family: inherit;"&gt;ycommercewebservices&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;
&lt;span style="background-color: white; background-position: initial initial; background-repeat: initial initial; font-family: inherit;"&gt;yinstoreinitialdata&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;
&lt;span style="background-color: white; background-position: initial initial; background-repeat: initial initial; font-family: inherit;"&gt;yacceleratorcore&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;
&lt;span style="background-color: white; background-position: initial initial; background-repeat: initial initial; font-family: inherit;"&gt;yacceleratorfacades&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;
&lt;span style="background-color: white; background-position: initial initial; background-repeat: initial initial; font-family: inherit;"&gt;yacceleratorinitialdata&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;
&lt;span style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;
&lt;span style="font-family: inherit;"&gt;Extgen prompts you to specify:&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;
&lt;/div&gt;
&lt;ul style="text-align: left;"&gt;
&lt;li&gt;&lt;span style="font-family: inherit;"&gt;The extension's name.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-family: inherit;"&gt;The extension's Java package.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-family: inherit;"&gt;The extension template to use.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="MsoNormal" style="margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;
&lt;span style="font-family: inherit;"&gt;After you have provided the prompted values, extgen does the following:&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;
&lt;/div&gt;
&lt;ol style="text-align: left;"&gt;
&lt;li&gt;&lt;span style="font-family: inherit;"&gt;Copying the extension template to a temporary directory.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-family: inherit;"&gt;Modifying the extension template to reflect the specified values.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-family: inherit;"&gt;Copying the new extension from the temporary directory to the directory specified by &amp;nbsp;the &lt;b&gt;extgen.extension.path&lt;/b&gt; property in the project.properties file.&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;div&gt;
&lt;span style="font-family: inherit;"&gt;To create a new extension we follow following steps -&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;ol style="text-align: left;"&gt;
&lt;li&gt;&lt;span style="font-family: inherit;"&gt;Optionally: Modify default values for the extension generation process.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-family: inherit;"&gt;Create a new extension.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-family: inherit;"&gt;Reference the new extension in&lt;b&gt; localextensions.xml&lt;/b&gt; file.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-family: inherit;"&gt;Rebuild the hybris Commerce Suite.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-family: inherit;"&gt;Update the hybris Commerce Suite.&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;span style="background-color: white; font-family: inherit; line-height: 15.9pt;"&gt;Afterwords, you can start
implementing your business logic in the new extension.&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: inherit;"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;b&gt;How to get started with Hybris ?&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;Best to register at&amp;nbsp;&lt;a href="https://wiki.hybris.com/"&gt;https://wiki.hybris.com&lt;/a&gt;&amp;nbsp;and get started. As of now they only allow certain partner companies to register so please check with your organization.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;Once you registered at their wiki then you can access the product documentation.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;&lt;br /&gt;I would highly recommend doing the Hybris core and commerce Trails. They are logically sequenced and it helps to understand overall product features and capabilities.&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;Make sure you are good with Spring framework fundamentals , Annotations and ant commands.&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: inherit;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;div&gt;
&lt;span style="font-family: inherit;"&gt;&lt;b&gt;Final thoughts ...&amp;nbsp;&lt;/b&gt;No deny that Hybris has put great efforts to bring a light weight agile commerce framework which seems very promising. Best part is it cuts lot of development time to build some of the common features in a commerce site in no time, Their modular approach and open stack also gives you enough choice to pick and chose as per your need. It will be interesting to see how their future releases fair. I am yet to see how it scales and perform in a high volume and high transaction environments.&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhQKZxWA3CV9CYreAZ_jrQn2umWBZ1Vm8pMSdM57KryY3XPo59zhDlx9LhpR0yzO8shuUNmfnXhm0LXS8KJ-lALIeUnsRZNw6jiiv591N8592xMLaaj7HjZrvhlZIB9pc2Wsx2l/s72-c/hybris.png" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>Emerging languages series - Groovy</title><link>http://sajidn.blogspot.com/2013/11/emerging-languages-series-groovy.html</link><category>groovy</category><category>Java</category><author>noreply@blogger.com (Nads)</author><pubDate>Sun, 10 Nov 2013 15:39:00 GMT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-27924845.post-6005879307330534015</guid><description>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;div style="text-align: left;"&gt;
&lt;span style="font-family: inherit;"&gt;Our&amp;nbsp;favorite&amp;nbsp;Java is getting some serious competition in recent years ,
It seems there are more than 200&amp;nbsp;languages that target Java platform.&lt;br /&gt;&lt;span style="background-color: white;"&gt;There is growing interest in languages like Scala,
Groovy , Clojure , JRuby, Jython&lt;/span&gt; for their features and simplicity. Out
of this lot we will take a close look at Groovy today as its getting wide attention
in the market over recent years.&lt;/span&gt;&lt;/div&gt;
&lt;div style="text-align: left;"&gt;
&lt;span style="font-family: inherit;"&gt;&lt;span style="background-color: white;"&gt;&lt;o:p&gt;&lt;br /&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;span style="background-color: white;"&gt;&lt;b&gt;Why Groovy ?&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;ul style="text-align: left;"&gt;
&lt;li&gt;&lt;span style="font-family: inherit;"&gt;Groovy is more or less a superset of Java&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-family: inherit;"&gt;&lt;span style="background-color: transparent;"&gt;Builds upon the strengths of Java but has&amp;nbsp;additional
power features&amp;nbsp;inspired by languages like Python, Ruby and Smalltalk&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-family: inherit;"&gt;Could seamlessly switch back and forth between
Java and Groovy&lt;span class="apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-family: inherit;"&gt;Considered simpler and easier to learn over
Jython and JRuby&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-family: inherit;"&gt;Groovy has Java-like syntax and hence the
learning curve is not steep.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-family: inherit;"&gt;Simplifies testing&amp;nbsp;by supporting unit
testing and mocking out-of-the-box&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;&lt;span style="background-color: white;"&gt;Once you install Groovy, you could straightaway
start programming in Groovy, &lt;/span&gt;&lt;span class="apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="background-color: white;"&gt;just
put your Groovy jar file along with your application and get the program
working in any machine.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="background-color: white;"&gt;&lt;span style="font-family: inherit;"&gt;There are many online editors and IDE plugin available
to compile and run your Groovy code.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;b style="background-color: white; font-family: inherit;"&gt;So what is Groovy ?&lt;/b&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;&lt;span style="background-color: white;"&gt;James Strachan conceived the idea of Groovy
language and started development in 2003.&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;&lt;span style="background-color: white;"&gt;Groovy is a dynamic language that dynamically
compiles the code to the Java platform. It is popular as a scripting language
and also widely used for unit testing Java code. Groovy is open source (Apache
v2 license) and is backed by VMware.&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;&lt;span style="background-color: white;"&gt;The current stable release is Groovy 2.2. You
can use Groovy in most common operating systems like Linux, Windows, and Mac.&amp;nbsp;&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="background-color: white;"&gt;&lt;span style="font-family: inherit;"&gt;Let’s see how Groovy looks better Java with few
examples –&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;b&gt;&lt;span style="background-color: white;"&gt;&lt;span style="font-family: inherit;"&gt;Hello World Example – &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="background-color: white;"&gt;&lt;span style="font-family: inherit;"&gt;// Java&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="background-color: white;"&gt;&lt;span style="font-family: inherit;"&gt;class HelloWorld {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="background-color: white;"&gt;&lt;span style="font-family: inherit;"&gt;public static void main(String []args) {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="background-color: white;"&gt;&lt;span style="font-family: inherit;"&gt;System.out.println("Hello world");&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="background-color: white;"&gt;&lt;span style="font-family: inherit;"&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="background-color: white;"&gt;&lt;span style="font-family: inherit;"&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoListParagraph"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="background-color: white;"&gt;&lt;span style="font-family: inherit;"&gt;// Groovy&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="background-color: white;"&gt;&lt;span style="font-family: inherit;"&gt;println("hello world")&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;b&gt;&lt;span style="background-color: white;"&gt;&lt;span style="font-family: inherit;"&gt;More Detailed Examples –&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="background-color: white;"&gt;&lt;span style="font-family: inherit;"&gt;Let’s take a look at collection (map)
processing example. Lets create a map and do some processing in both Java and
Groovy.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="background-color: white;"&gt;&lt;span style="font-family: inherit;"&gt;// Java&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="background-color: white;"&gt;&lt;span style="font-family: inherit;"&gt;Map&lt;string string=""&gt; worldCapitals = new
HashMap&amp;lt;&amp;gt;();&lt;o:p&gt;&lt;/o:p&gt;&lt;/string&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="background-color: white;"&gt;&lt;span style="font-family: inherit;"&gt;worldCapitals.put("England",
"London");&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="background-color: white;"&gt;&lt;span style="font-family: inherit;"&gt;worldCapitals.put("Japan",
"Tokyo"); &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="background-color: white;"&gt;&lt;span style="font-family: inherit;"&gt;worldCapitals.put("France",
"Paris");&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="background-color: white;"&gt;&lt;span style="font-family: inherit;"&gt;worldCapitals.put("Italy",
"Rome");&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="background-color: white;"&gt;&lt;span style="font-family: inherit;"&gt;worldCapitals.put("USA",
"Washington");&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="background-color: white;"&gt;&lt;span style="font-family: inherit;"&gt;for(Map.Entry&lt;string string=""&gt; capital :
worldCapitals.entrySet()) {&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;o:p&gt;&lt;/o:p&gt;&lt;/string&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="background-color: white;"&gt;&lt;span style="font-family: inherit;"&gt;System.out.printf("%s =&amp;gt; %s \n",
capital.getKey(), capital.getValue()); &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="background-color: white;"&gt;&lt;span style="font-family: inherit;"&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="background-color: white;"&gt;&lt;span style="font-family: inherit;"&gt;// Groovy&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="background-color: white;"&gt;&lt;span style="font-family: inherit;"&gt;def worldCapitals =&amp;nbsp;&amp;nbsp; [ "England" : "London",&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="background-color: white;"&gt;&lt;span style="font-family: inherit;"&gt;"Japan" : "Tokyo",&amp;nbsp; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="background-color: white;"&gt;&lt;span style="font-family: inherit;"&gt;"France" : "Paris", &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="background-color: white;"&gt;&lt;span style="font-family: inherit;"&gt;"Italy" : "Rome", &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="background-color: white;"&gt;&lt;span style="font-family: inherit;"&gt;"USA" : "Washington" ] &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="background-color: white;"&gt;&lt;span style="font-family: inherit;"&gt;worldCapitals.each {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="background-color: white;"&gt;&lt;span style="font-family: inherit;"&gt;key, value -&amp;gt;&amp;nbsp;&amp;nbsp; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="background-color: white;"&gt;&lt;span style="font-family: inherit;"&gt;println "$key = $value"&amp;nbsp; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="background-color: white;"&gt;&lt;span style="font-family: inherit;"&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="background-color: white;"&gt;&lt;span style="font-family: inherit;"&gt;In this case Groovy provides a simple
array-like syntax for the Map data structure. See how use of each() method
closure makes it simple to write the code.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="background-color: white;"&gt;&lt;span style="font-family: inherit;"&gt;We all know how we write custom code to sort a
map by value in Java but the same can be achieved in a line with Groovy. See
below -&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="background-color: white;"&gt;&lt;span style="font-family: inherit;"&gt;def sortedMap = worldCapitals.sort { it.value }
&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="background-color: white;"&gt;&lt;span style="font-family: inherit;"&gt;sortedMap.each {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="background-color: white;"&gt;&lt;span style="font-family: inherit;"&gt;key, value -&amp;gt;&amp;nbsp;&amp;nbsp; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="background-color: white;"&gt;&lt;span style="font-family: inherit;"&gt;println "$key =&amp;gt; $value"&amp;nbsp; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="background-color: white;"&gt;&lt;span style="font-family: inherit;"&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="background-color: white;"&gt;&lt;span style="font-family: inherit;"&gt;In above Groovy code, we just passed the
it.value (current iterator’s value) to the sort method. With the power of
closures, the code became much simple and readable. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;&lt;span style="background-color: white;"&gt;Groovy provides a higher-level abstraction to
this functionality, and hence the code is much simpler.&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="background-color: white;"&gt;&lt;span style="font-family: inherit;"&gt;Tip - The soon to be released Java 8 has also
introduced concept of closures in form of&amp;nbsp;
"lambda expressions". It will be interesting to see how Java
is incorporating these new age language features in their new release. I will write
separate post to cover Java 8 features and capabilities soon.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;b&gt;&lt;span style="background-color: white;"&gt;&lt;span style="font-family: inherit;"&gt;XML Generation Example -&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="background-color: white;"&gt;&lt;span style="font-family: inherit;"&gt;In general it’s very common to generate
structured output like HTML , XML or JSON in Java code. So let’s see one
example around this piece.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="background-color: white;"&gt;&lt;span style="font-family: inherit;"&gt;// java&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="background-color: white;"&gt;&lt;span style="font-family: inherit;"&gt;PrintWriter pw = new PrintWriter(new
FileWriter("/capitals.xml"))&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="background-color: white;"&gt;&lt;span style="font-family: inherit;"&gt;pw.println("&lt;worldcapitals&gt;");&lt;o:p&gt;&lt;/o:p&gt;&lt;/worldcapitals&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="background-color: white;"&gt;&lt;span style="font-family: inherit;"&gt;for(Map.Entry&lt;string string=""&gt; capital :
worldCapitals.entrySet()) {&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;o:p&gt;&lt;/o:p&gt;&lt;/string&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="background-color: white;"&gt;&lt;span style="font-family: inherit;"&gt;pw.printf("\t&lt;country name="%s"&gt; \n
\t\t &lt;capital&gt;'%s'&lt;/capital&gt; \n \t &lt;/country&gt; \n",
capital.getKey(), capital.getValue()); &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="background-color: white;"&gt;&lt;span style="font-family: inherit;"&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="background-color: white;"&gt;&lt;span style="font-family: inherit;"&gt;pw.println("&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
");&lt;o:p&gt;&lt;/o:p&gt;&lt;br /&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="background-color: white;"&gt;&lt;span style="font-family: inherit;"&gt;// Groovy&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="background-color: white;"&gt;&lt;span style="font-family: inherit;"&gt;def capitals =&amp;nbsp;&amp;nbsp;
[ "England" : "London",&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="background-color: white;"&gt;&lt;span style="font-family: inherit;"&gt;"Japan" : "Tokyo",&amp;nbsp; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="background-color: white;"&gt;&lt;span style="font-family: inherit;"&gt;"France" : "Paris", &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="background-color: white;"&gt;&lt;span style="font-family: inherit;"&gt;"Italy" : "Rome", &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="background-color: white;"&gt;&lt;span style="font-family: inherit;"&gt;"USA" : "Washington" ] &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="background-color: white;"&gt;&lt;span style="font-family: inherit;"&gt;xmlbuilder = new groovy.xml.MarkupBuilder()&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="background-color: white;"&gt;&lt;span style="font-family: inherit;"&gt;xmlbuilder.worldcapitals {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="background-color: white;"&gt;&lt;span style="font-family: inherit;"&gt;capitals.each {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="background-color: white;"&gt;&lt;span style="font-family: inherit;"&gt;key, value -&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="background-color: white;"&gt;&lt;span style="font-family: inherit;"&gt;country(name:key) { capital(value) }&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="background-color: white;"&gt;&lt;span style="font-family: inherit;"&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="background-color: white;"&gt;&lt;span style="font-family: inherit;"&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;&lt;span style="background-color: white;"&gt;Now just see how simple it is to do the same
thing with Groovy with lot of readability. Groovy supports builders (based on Builder
design pattern) for creating HTML and XML files.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="background-color: white;"&gt;&lt;o:p&gt;&lt;span style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;b&gt;&lt;span style="font-family: inherit;"&gt;Take away from this comparison -&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;/div&gt;
&lt;ul style="text-align: left;"&gt;
&lt;li&gt;&lt;span style="font-family: inherit;"&gt;&lt;span style="background-color: white;"&gt;Traversing a data structure is easy in Groovy -
you can use “closures” instead of plain loops and use each() method.&lt;/span&gt;&lt;span class="apple-converted-space" style="background-color: white;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-family: inherit;"&gt;&lt;span class="apple-converted-space"&gt;&lt;span style="background-color: white;"&gt;Groovy
is high on &lt;/span&gt;&lt;/span&gt;meta-programming and regular expression handling capabilities.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-family: inherit;"&gt;Groovy builders are fabulous if you dealing with HTML , XML , JSON etc.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-family: inherit;"&gt;Better for productivity and code readability for sure&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-family: inherit;"&gt;&lt;span style="background-color: white;"&gt;Being a dynamic language &lt;/span&gt;Groovy is an
excellent candidate for creating DSLs (Domain Specific Languages)&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;div class="MsoNormal" style="background: white; line-height: 14.95pt; margin-bottom: 14.4pt; margin-left: 0cm; margin-right: 0cm; margin-top: 7.2pt; vertical-align: baseline;"&gt;
&lt;span style="font-family: inherit;"&gt;We have just tried
to explore few basic features of Groovy here. You should explore further programming
improvements such as automatic check for nulls, helper methods, embedded
expressions in strings, and operator overloading. One should also explore its
meta-programming and regular expression handling capabilities.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="background: white; line-height: 14.95pt; margin-bottom: 14.4pt; margin-left: 0cm; margin-right: 0cm; margin-top: 7.2pt; vertical-align: baseline;"&gt;
&lt;span style="font-family: inherit;"&gt;You’ll find Grails
web framework and Groovy Server Pages (GSP) interesting if you are a serious
web-developer. If you are an admin, you may find Gradle build automation
framework useful. Grails framework (that is similar to Ruby on Rails) is built
on top of powerful and popular frameworks such as Spring and Hibernate.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;b&gt;&lt;span style="background-color: white;"&gt;&lt;span style="font-family: inherit;"&gt;Resources to learn further –&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="background-color: white;"&gt;&lt;span style="font-family: inherit;"&gt;Groovy Documentation - &lt;a href="http://groovy.codehaus.org/Documentation"&gt;http://groovy.codehaus.org/Documentation&lt;/a&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="background-color: white;"&gt;&lt;span style="font-family: inherit;"&gt;Groovy Eclipse plugin -
&lt;a href="http://groovy.codehaus.org/Eclipse+Plugin" target="_blank"&gt;http://groovy.codehaus.org/Eclipse+Plugin &lt;/a&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="background-color: white;"&gt;&lt;span style="font-family: inherit;"&gt;Programming Groovy 2 - Dynamic Productivity for
the Java Developer, By Venkat Subramaniam &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="background-color: white;"&gt;&lt;span style="font-family: inherit;"&gt;Groovy in Action, By Dierk Koenig,
Andrew Glover, Paul King, Guillaume Laforge, Jon Skeet&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: inherit;"&gt;&lt;span style="background-color: white;"&gt;If you are a developer, tester or
script guru, you have to love Groovy&lt;/span&gt;. So keep grooving and have fun with it !!&lt;/span&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 10.0pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>What TDD won’t tell you and why BDD is equally important? </title><link>http://sajidn.blogspot.com/2013/02/continuous-integration-with-jenkins.html</link><category>BDD</category><category>TDD</category><author>noreply@blogger.com (Nads)</author><pubDate>Fri, 15 Feb 2013 23:48:00 GMT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-27924845.post-2563133226156260557</guid><description>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;span style="color: #222222; font-family: Helvetica, sans-serif; font-size: 11.5pt;"&gt;Most of us think&amp;nbsp;Test
Driven Development is a cycle of test, implement and refactor. In reality
its&amp;nbsp;the freedom to start working toward your solution before you can map
it all out.&lt;/span&gt;&lt;br /&gt;
&lt;div style="margin: 0cm 0cm 0.0001pt;"&gt;
&lt;span style="color: #222222; font-family: &amp;quot;Helvetica&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.5pt;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="margin: 0cm 0cm 0.0001pt;"&gt;
&lt;span style="color: #222222; font-family: &amp;quot;Helvetica&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.5pt;"&gt;It’s the freedom to make
changes knowing your tests will alert you if you have violated a previous
assumption that you have forgotten.&lt;/span&gt;&lt;/div&gt;
&lt;div style="margin: 0cm 0cm 0.0001pt;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="margin: 0cm 0cm 0.0001pt;"&gt;
&lt;span style="color: #222222; font-family: &amp;quot;Helvetica&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.5pt;"&gt;Since TDD forces you to
write test first, it also forces you to think about how you want to use an API,
because that is the very first thing you write down. This is a good thing and
it leads to more usable APIs.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="background-color: white; background-position: initial initial; background-repeat: initial initial; line-height: 16.5pt; margin: 7.2pt 0cm 14.4pt; vertical-align: baseline;"&gt;
&lt;span style="color: #222222; font-family: &amp;quot;Helvetica&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.5pt;"&gt;TDD
also forces you to factor out dependencies in order to be able to mock them.
Thats the other point where TDD encourages good design.&lt;u1:p&gt;&lt;/u1:p&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="background-color: white; background-position: initial initial; background-repeat: initial initial; line-height: 16.5pt; margin: 7.2pt 0cm 14.4pt; vertical-align: baseline;"&gt;
&lt;span style="color: #222222; font-family: &amp;quot;Helvetica&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.5pt;"&gt;Now here comes the
twist : There is more to software design than just nice to use APIs and good
principles.TDD does almost nothing for you in order to find a good solution for
your problem.&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="background-color: white; background-position: initial initial; background-repeat: initial initial; line-height: 16.5pt; margin: 7.2pt 0cm 14.4pt; vertical-align: baseline;"&gt;
&lt;span style="color: #222222; font-family: &amp;quot;Helvetica&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.5pt;"&gt;TDD won’t
tell you following -&lt;/span&gt;&lt;/div&gt;
&lt;div style="background-color: white; margin: 7.2pt 0cm 14.4pt; vertical-align: baseline;"&gt;
&lt;/div&gt;
&lt;ul style="text-align: left;"&gt;
&lt;li&gt;&lt;span style="color: #222222; font-family: Helvetica, sans-serif; font-size: 15px; line-height: 22px;"&gt;Can your domain model represent all the cases needed by the business?&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="color: #222222; font-family: Helvetica, sans-serif; font-size: 15px; line-height: 22px;"&gt;Which of all the design patterns would help you? Is there any well known algorithm you could use to solve your problem?&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="color: #222222; font-family: Helvetica, sans-serif; font-size: 15px; line-height: 22px;"&gt;Does the problem become trivial once you approach it in a functional way?&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="color: #222222; font-family: Helvetica, sans-serif; font-size: 15px; line-height: 22px;"&gt;Is recursion a solution or a dead end?&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;div style="background-color: white; margin: 7.2pt 0cm 14.4pt; vertical-align: baseline;"&gt;
&lt;/div&gt;
&lt;div style="background-color: white; background-position: initial initial; background-repeat: initial initial; line-height: 16.5pt; margin: 7.2pt 0cm 14.4pt; vertical-align: baseline;"&gt;
&lt;span style="color: #222222; font-family: &amp;quot;Helvetica&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.5pt;"&gt;Ultimately one has
to understand the problem and know lots of possible approaches to a problem in
order to design software well. There is just no way around it.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="background-color: white; background-position: initial initial; background-repeat: initial initial; line-height: 16.5pt; margin: 7.2pt 0cm 14.4pt; vertical-align: baseline;"&gt;
&lt;span style="color: #222222; font-family: &amp;quot;Helvetica&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.5pt;"&gt;Once you have the
solution in your mind, once you know the basic data structures and algorithm
you going to use, TDD will help you to implement it in a clean, well factored
way.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="background: white; line-height: 16.5pt; margin-bottom: 14.4pt; margin-left: 0cm; margin-right: 0cm; margin-top: 7.2pt; vertical-align: baseline;"&gt;
&lt;span style="color: #222222; font-family: &amp;quot;Helvetica&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.5pt;"&gt;Having
said enough about TDD I would like to now shift my focus on BDD (&lt;/span&gt;&lt;span style="font-family: Helvetica, sans-serif;"&gt;B&lt;/span&gt;&lt;span style="color: #222222; font-family: &amp;quot;Helvetica&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.5pt;"&gt;ehavior&lt;/span&gt;&amp;nbsp;&lt;span style="font-family: Helvetica, sans-serif;"&gt;D&lt;/span&gt;&lt;span style="color: #222222; font-family: &amp;quot;Helvetica&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.5pt;"&gt;riven&lt;/span&gt;&amp;nbsp;&lt;span style="font-family: Helvetica, sans-serif;"&gt;D&lt;/span&gt;&lt;span style="color: #222222; font-family: &amp;quot;Helvetica&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.5pt;"&gt;evelopment)
and its real value. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="background: white; line-height: 16.5pt; margin-bottom: 14.4pt; margin-left: 0cm; margin-right: 0cm; margin-top: 7.2pt; vertical-align: baseline;"&gt;
&lt;span style="color: #222222; font-family: &amp;quot;Helvetica&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.5pt;"&gt;TDD
is more “low level” talking about unit tests and integration tests and how to
write code that tests real code while BDD is about specifications and
behaviors.&lt;/span&gt;&lt;/div&gt;
&lt;div style="background: white; line-height: 16.5pt; margin-bottom: 14.4pt; margin-left: 0cm; margin-right: 0cm; margin-top: 7.2pt; vertical-align: baseline;"&gt;
&lt;span style="color: #222222; font-family: Helvetica, sans-serif; font-size: 11.5pt; line-height: 16.5pt;"&gt;In TDD we talk about&lt;/span&gt;&lt;span style="line-height: 16.5pt;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #222222; font-family: Helvetica, sans-serif; font-size: 11.5pt; line-height: 16.5pt;"&gt;&lt;span style="color: #222222; font-size: 12.0pt; text-decoration: none; text-underline: none;"&gt;&lt;a href="http://www.arrangeactassert.com/why-and-what-is-arrange-act-assert/" target="_blank"&gt;Arrange Act Assert&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="line-height: 16.5pt;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #222222; font-family: Helvetica, sans-serif; font-size: 11.5pt; line-height: 16.5pt;"&gt;while in BDD we have&lt;/span&gt;&lt;span style="line-height: 16.5pt;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #222222; font-family: Helvetica, sans-serif; font-size: 11.5pt; line-height: 16.5pt;"&gt;&lt;span style="color: #222222; font-size: 12.0pt; text-decoration: none; text-underline: none;"&gt;&lt;a href="http://en.wikipedia.org/wiki/Behavior-driven_development" target="_blank"&gt;Given When Then&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="background-color: white; background-position: initial initial; background-repeat: initial initial; line-height: 16.5pt; margin: 7.2pt 0cm 14.4pt; outline: 0px; vertical-align: baseline;"&gt;
&lt;span style="color: #222222; font-family: Helvetica, sans-serif; font-size: 11.5pt; line-height: 16.5pt;"&gt;There
are clear cut differences between both. BDD is more “high level” dealing with
specifications and was intended to be used by domain experts as well as
developers&lt;/span&gt;&lt;/div&gt;
&lt;div style="background: white; line-height: 16.5pt; margin-bottom: 14.4pt; margin-left: 0cm; margin-right: 0cm; margin-top: 7.2pt; vertical-align: baseline;"&gt;
&lt;span style="color: #222222; font-family: &amp;quot;Helvetica&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.5pt;"&gt;As
a matter of fact one should write unit tests as well as specifications –
because we need to test both.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;span style="color: #222222; font-family: &amp;quot;Helvetica&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.5pt; line-height: 115%; mso-ansi-language: EN-GB; mso-bidi-font-family: &amp;quot;Times New Roman&amp;quot;; mso-bidi-language: AR-SA; mso-fareast-font-family: Calibri; mso-fareast-language: EN-US; mso-fareast-theme-font: minor-latin;"&gt;TDD is &lt;/span&gt;&lt;span style="color: #222222; font-family: &amp;quot;Helvetica&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.5pt; line-height: 115%; mso-ansi-language: EN-GB; mso-bidi-font-family: &amp;quot;Times New Roman&amp;quot;; mso-bidi-language: AR-SA; mso-bidi-theme-font: minor-bidi; mso-fareast-font-family: Calibri; mso-fareast-language: EN-US; mso-fareast-theme-font: minor-latin;"&gt;described by a basic red-green-refactor
cycle,&lt;/span&gt;&lt;span style="color: #222222; font-family: &amp;quot;Helvetica&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.5pt; line-height: 115%; mso-ansi-language: EN-GB; mso-bidi-font-family: &amp;quot;Times New Roman&amp;quot;; mso-bidi-language: AR-SA; mso-fareast-font-family: Calibri; mso-fareast-language: EN-US; mso-fareast-theme-font: minor-latin;"&gt; I have come across this interesting &lt;a href="http://cdn.dzone.com/sites/all/files/whitepapers/Checklist_TDD.pdf" target="_blank"&gt;checklist on dzone&lt;/a&gt; which &lt;/span&gt;&lt;span style="color: #222222; font-family: &amp;quot;Helvetica&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.5pt; line-height: 115%; mso-ansi-language: EN-GB; mso-bidi-font-family: &amp;quot;Times New Roman&amp;quot;; mso-bidi-language: AR-SA; mso-bidi-theme-font: minor-bidi; mso-fareast-font-family: Calibri; mso-fareast-language: EN-US; mso-fareast-theme-font: minor-latin;"&gt;is written in the form of
questions we should ask ourselves while going through the different phases of
the cycle.&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #222222; font-family: &amp;quot;Helvetica&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.5pt; line-height: 115%; mso-ansi-language: EN-GB; mso-bidi-font-family: &amp;quot;Times New Roman&amp;quot;; mso-bidi-language: AR-SA; mso-bidi-theme-font: minor-bidi; mso-fareast-font-family: Calibri; mso-fareast-language: EN-US; mso-fareast-theme-font: minor-latin;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;br /&gt;
&lt;div style="background-color: white; background-position: initial initial; background-repeat: initial initial; margin: 7.2pt 0cm 14.4pt; vertical-align: baseline;"&gt;
&lt;span style="color: #222222; font-family: Helvetica, sans-serif;"&gt;&lt;span style="font-size: 15px; line-height: 17px;"&gt;Happy Testing :)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>ATG DUST – A JUnit framework for ATG applications</title><link>http://sajidn.blogspot.com/2013/02/atg-dust-junit-framework-for-atg.html</link><category>ATG</category><category>DUST</category><category>Testing</category><author>noreply@blogger.com (Nads)</author><pubDate>Sun, 6 Jan 2013 16:40:00 GMT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-27924845.post-7218343041470501822</guid><description>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;!--[if gte mso 9]&gt;&lt;xml&gt;
 &lt;w:WordDocument&gt;
  &lt;w:View&gt;Normal&lt;/w:View&gt;
  &lt;w:Zoom&gt;0&lt;/w:Zoom&gt;
  &lt;w:TrackMoves/&gt;
  &lt;w:TrackFormatting/&gt;
  &lt;w:PunctuationKerning/&gt;
  &lt;w:ValidateAgainstSchemas/&gt;
  &lt;w:SaveIfXMLInvalid&gt;false&lt;/w:SaveIfXMLInvalid&gt;
  &lt;w:IgnoreMixedContent&gt;false&lt;/w:IgnoreMixedContent&gt;
  &lt;w:AlwaysShowPlaceholderText&gt;false&lt;/w:AlwaysShowPlaceholderText&gt;
  &lt;w:DoNotPromoteQF/&gt;
  &lt;w:LidThemeOther&gt;EN-GB&lt;/w:LidThemeOther&gt;
  &lt;w:LidThemeAsian&gt;X-NONE&lt;/w:LidThemeAsian&gt;
  &lt;w:LidThemeComplexScript&gt;X-NONE&lt;/w:LidThemeComplexScript&gt;
  &lt;w:Compatibility&gt;
   &lt;w:BreakWrappedTables/&gt;
   &lt;w:SnapToGridInCell/&gt;
   &lt;w:WrapTextWithPunct/&gt;
   &lt;w:UseAsianBreakRules/&gt;
   &lt;w:DontGrowAutofit/&gt;
   &lt;w:SplitPgBreakAndParaMark/&gt;
   &lt;w:DontVertAlignCellWithSp/&gt;
   &lt;w:DontBreakConstrainedForcedTables/&gt;
   &lt;w:DontVertAlignInTxbx/&gt;
   &lt;w:Word11KerningPairs/&gt;
   &lt;w:CachedColBalance/&gt;
  &lt;/w:Compatibility&gt;
  &lt;w:BrowserLevel&gt;MicrosoftInternetExplorer4&lt;/w:BrowserLevel&gt;
  &lt;m:mathPr&gt;
   &lt;m:mathFont m:val="Cambria Math"/&gt;
   &lt;m:brkBin m:val="before"/&gt;
   &lt;m:brkBinSub m:val="&amp;#45;-"/&gt;
   &lt;m:smallFrac m:val="off"/&gt;
   &lt;m:dispDef/&gt;
   &lt;m:lMargin m:val="0"/&gt;
   &lt;m:rMargin m:val="0"/&gt;
   &lt;m:defJc m:val="centerGroup"/&gt;
   &lt;m:wrapIndent m:val="1440"/&gt;
   &lt;m:intLim m:val="subSup"/&gt;
   &lt;m:naryLim m:val="undOvr"/&gt;
  &lt;/m:mathPr&gt;&lt;/w:WordDocument&gt;
&lt;/xml&gt;&lt;![endif]--&gt;&lt;br /&gt;
&lt;!--[if gte mso 9]&gt;&lt;xml&gt;
 &lt;w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="true"
  DefSemiHidden="true" DefQFormat="false" DefPriority="99"
  LatentStyleCount="267"&gt;
  &lt;w:LsdException Locked="false" Priority="0" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Normal"/&gt;
  &lt;w:LsdException Locked="false" Priority="9" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="heading 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 7"/&gt;
  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 8"/&gt;
  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 9"/&gt;
  &lt;w:LsdException Locked="false" Priority="39" Name="toc 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="39" Name="toc 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="39" Name="toc 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="39" Name="toc 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="39" Name="toc 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="39" Name="toc 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="39" Name="toc 7"/&gt;
  &lt;w:LsdException Locked="false" Priority="39" Name="toc 8"/&gt;
  &lt;w:LsdException Locked="false" Priority="39" Name="toc 9"/&gt;
  &lt;w:LsdException Locked="false" Priority="35" QFormat="true" Name="caption"/&gt;
  &lt;w:LsdException Locked="false" Priority="10" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Title"/&gt;
  &lt;w:LsdException Locked="false" Priority="1" Name="Default Paragraph Font"/&gt;
  &lt;w:LsdException Locked="false" Priority="11" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Subtitle"/&gt;
  &lt;w:LsdException Locked="false" Priority="22" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Strong"/&gt;
  &lt;w:LsdException Locked="false" Priority="20" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Emphasis"/&gt;
  &lt;w:LsdException Locked="false" Priority="59" SemiHidden="false"
   UnhideWhenUsed="false" Name="Table Grid"/&gt;
  &lt;w:LsdException Locked="false" UnhideWhenUsed="false" Name="Placeholder Text"/&gt;
  &lt;w:LsdException Locked="false" Priority="1" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="No Spacing"/&gt;
  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading"/&gt;
  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List"/&gt;
  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid"/&gt;
  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List"/&gt;
  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading"/&gt;
  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List"/&gt;
  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid"/&gt;
  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 1"/&gt;
  &lt;w:LsdException Locked="false" UnhideWhenUsed="false" Name="Revision"/&gt;
  &lt;w:LsdException Locked="false" Priority="34" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="List Paragraph"/&gt;
  &lt;w:LsdException Locked="false" Priority="29" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Quote"/&gt;
  &lt;w:LsdException Locked="false" Priority="30" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Intense Quote"/&gt;
  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="19" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Subtle Emphasis"/&gt;
  &lt;w:LsdException Locked="false" Priority="21" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Intense Emphasis"/&gt;
  &lt;w:LsdException Locked="false" Priority="31" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Subtle Reference"/&gt;
  &lt;w:LsdException Locked="false" Priority="32" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Intense Reference"/&gt;
  &lt;w:LsdException Locked="false" Priority="33" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Book Title"/&gt;
  &lt;w:LsdException Locked="false" Priority="37" Name="Bibliography"/&gt;
  &lt;w:LsdException Locked="false" Priority="39" QFormat="true" Name="TOC Heading"/&gt;
 &lt;/w:LatentStyles&gt;
&lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 10]&gt;
&lt;style&gt;
 /* Style Definitions */
 table.MsoNormalTable
	{mso-style-name:"Table Normal";
	mso-tstyle-rowband-size:0;
	mso-tstyle-colband-size:0;
	mso-style-noshow:yes;
	mso-style-priority:99;
	mso-style-qformat:yes;
	mso-style-parent:"";
	mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
	mso-para-margin:0cm;
	mso-para-margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-ascii-theme-font:minor-latin;
	mso-fareast-font-family:"Times New Roman";
	mso-fareast-theme-font:minor-fareast;
	mso-hansi-font-family:Calibri;
	mso-hansi-theme-font:minor-latin;
	mso-bidi-font-family:"Times New Roman";
	mso-bidi-theme-font:minor-bidi;}
&lt;/style&gt;
&lt;![endif]--&gt;

&lt;br /&gt;
&lt;div class="MsoNormal"&gt;
Well we all have been writing the classic JUnit tests from
years now but it becomes challenging to write test cases when you dealing with
framework like ATG. &lt;/div&gt;
&lt;div class="MsoNormal"&gt;
So here comes &lt;a href="http://atgdust.sourceforge.net/" target="_blank"&gt;ATG DUST&lt;/a&gt; - A framework for writing JUnit tests
for applications built on the ATG Dynamo platform. &lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
Its indeed makes our life lot simpler by providing some
amazing features. The highlight of this framework is that it allows one to
quickly write test classes that depends on Nucleus or ATG Repositories. By
using ATG DUST one can drastically cut down on development time. It takes only
a few seconds to start up a test with a repository, not like application server
which takes good time to start up. &lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
To get started go straight to &lt;a href="http://atgdust.sourceforge.net/first-test.html"&gt;first test page&lt;/a&gt;
. This page will walk you through the process of running a basic test which
starts Nucleus. &lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
This tutorial walks you through the steps of writing a test
which does not need to run in an application server. This is one of the underlying
benefits of writing unit tests. &lt;/div&gt;
&lt;div class="MsoNormal"&gt;
The test does not depend upon starting up an application
server so turnaround time is also very quick. &lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
Visit &lt;a href="http://atgdust.sourceforge.net/out-of-the-box-component-testing.html" target="_blank"&gt;out-of-the-box-component-testing&lt;/a&gt; page which gives you
a feel of simple test class. Try to open the java source (StartWithModulesTest.java)
file attached there to get a fair idea how easy to use ATG DUST.&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
The best part I liked about ATG DUST is having the ability
to load any specific ATG module and write a quick &lt;a href="http://atgdust.sourceforge.net/repository-test.html" target="_blank"&gt;Repository test&lt;/a&gt; class. Go to
the repository test page for a simple example. &lt;/div&gt;
&lt;div class="MsoNormal" style="tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;"&gt;
The
repository is started up against an in-memory Hypersonic Database.&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
DUST also support &lt;a href="http://atgdust.sourceforge.net/formhandler-test.html" target="_blank"&gt;Formhandler test&lt;/a&gt; features with the help
of utility (ServletTestUtils) class which can create a dummy Dynamo
Request/Response pair.&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
Some of the key classes to look at –&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;b&gt;atg.adapter.gsa.GSATest&lt;/b&gt; - A basic GSA test which has several
utility methods. &lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;b&gt;atg.test.util.DBUtils&lt;/b&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;
&lt;/span&gt;- Utility code for getting a connection to a database. The most common
method is getHSQLDBInMemoryDBConnection. &lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;b&gt;atg.test.util.FileUtil&lt;/b&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;
&lt;/span&gt;- A collection of utility methods for dealing with the file system. &lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;b&gt;atg.nucleus.NucleusTestUtils&lt;/b&gt; - This class contains some
utility methods to make it faster to write a unit test that needs to resolve components
against Nucleus.&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
Note on ATG version support – ATG DUST was developed using
9.0 but it work on most ATG versions back to 7.2 . I used ATG DUST version
1.2.2 &lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;a href="http://sourceforge.net/projects/atgdust" target="_blank"&gt;Download &lt;/a&gt;ATG DUST &lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>Oracle ATG Search 9.3 configuration on Local (Windows 7 , 64 bit) machine</title><link>http://sajidn.blogspot.com/2012/10/oracle-atg-search-93-configuration-on.html</link><category>ATG</category><category>Search9.3</category><author>noreply@blogger.com (Nads)</author><pubDate>Thu, 11 Oct 2012 04:52:00 +0100</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-27924845.post-8214919157356903534</guid><description>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;!--[if gte mso 9]&gt;&lt;xml&gt;
 &lt;o:OfficeDocumentSettings&gt;
  &lt;o:AllowPNG/&gt;
  &lt;o:TargetScreenSize&gt;1024x768&lt;/o:TargetScreenSize&gt;
 &lt;/o:OfficeDocumentSettings&gt;
&lt;/xml&gt;&lt;![endif]--&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;b&gt;R&lt;/b&gt;ecently installed ATG search 9.3 on local windows machine
and configured search environment and index. &amp;nbsp;It was a good fun as it gave quite some errors
to fix before running my first index on local machine.&amp;nbsp; I would try to give all the main steps and
error faced in this process.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;!--[if gte mso 9]&gt;&lt;xml&gt;
 &lt;w:WordDocument&gt;
  &lt;w:View&gt;Normal&lt;/w:View&gt;
  &lt;w:Zoom&gt;0&lt;/w:Zoom&gt;
  &lt;w:TrackMoves/&gt;
  &lt;w:TrackFormatting/&gt;
  &lt;w:PunctuationKerning/&gt;
  &lt;w:ValidateAgainstSchemas/&gt;
  &lt;w:SaveIfXMLInvalid&gt;false&lt;/w:SaveIfXMLInvalid&gt;
  &lt;w:IgnoreMixedContent&gt;false&lt;/w:IgnoreMixedContent&gt;
  &lt;w:AlwaysShowPlaceholderText&gt;false&lt;/w:AlwaysShowPlaceholderText&gt;
  &lt;w:DoNotPromoteQF/&gt;
  &lt;w:LidThemeOther&gt;EN-GB&lt;/w:LidThemeOther&gt;
  &lt;w:LidThemeAsian&gt;X-NONE&lt;/w:LidThemeAsian&gt;
  &lt;w:LidThemeComplexScript&gt;X-NONE&lt;/w:LidThemeComplexScript&gt;
  &lt;w:Compatibility&gt;
   &lt;w:BreakWrappedTables/&gt;
   &lt;w:SnapToGridInCell/&gt;
   &lt;w:WrapTextWithPunct/&gt;
   &lt;w:UseAsianBreakRules/&gt;
   &lt;w:DontGrowAutofit/&gt;
   &lt;w:SplitPgBreakAndParaMark/&gt;
   &lt;w:DontVertAlignCellWithSp/&gt;
   &lt;w:DontBreakConstrainedForcedTables/&gt;
   &lt;w:DontVertAlignInTxbx/&gt;
   &lt;w:Word11KerningPairs/&gt;
   &lt;w:CachedColBalance/&gt;
  &lt;/w:Compatibility&gt;
  &lt;w:BrowserLevel&gt;MicrosoftInternetExplorer4&lt;/w:BrowserLevel&gt;
  &lt;m:mathPr&gt;
   &lt;m:mathFont m:val="Cambria Math"/&gt;
   &lt;m:brkBin m:val="before"/&gt;
   &lt;m:brkBinSub m:val="&amp;#45;-"/&gt;
   &lt;m:smallFrac m:val="off"/&gt;
   &lt;m:dispDef/&gt;
   &lt;m:lMargin m:val="0"/&gt;
   &lt;m:rMargin m:val="0"/&gt;
   &lt;m:defJc m:val="centerGroup"/&gt;
   &lt;m:wrapIndent m:val="1440"/&gt;
   &lt;m:intLim m:val="subSup"/&gt;
   &lt;m:naryLim m:val="undOvr"/&gt;
  &lt;/m:mathPr&gt;&lt;/w:WordDocument&gt;
&lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;
 &lt;w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="true"
  DefSemiHidden="true" DefQFormat="false" DefPriority="99"
  LatentStyleCount="267"&gt;
  &lt;w:LsdException Locked="false" Priority="0" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Normal"/&gt;
  &lt;w:LsdException Locked="false" Priority="9" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="heading 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 7"/&gt;
  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 8"/&gt;
  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 9"/&gt;
  &lt;w:LsdException Locked="false" Priority="39" Name="toc 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="39" Name="toc 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="39" Name="toc 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="39" Name="toc 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="39" Name="toc 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="39" Name="toc 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="39" Name="toc 7"/&gt;
  &lt;w:LsdException Locked="false" Priority="39" Name="toc 8"/&gt;
  &lt;w:LsdException Locked="false" Priority="39" Name="toc 9"/&gt;
  &lt;w:LsdException Locked="false" Priority="35" QFormat="true" Name="caption"/&gt;
  &lt;w:LsdException Locked="false" Priority="10" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Title"/&gt;
  &lt;w:LsdException Locked="false" Priority="1" Name="Default Paragraph Font"/&gt;
  &lt;w:LsdException Locked="false" Priority="11" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Subtitle"/&gt;
  &lt;w:LsdException Locked="false" Priority="22" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Strong"/&gt;
  &lt;w:LsdException Locked="false" Priority="20" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Emphasis"/&gt;
  &lt;w:LsdException Locked="false" Priority="59" SemiHidden="false"
   UnhideWhenUsed="false" Name="Table Grid"/&gt;
  &lt;w:LsdException Locked="false" UnhideWhenUsed="false" Name="Placeholder Text"/&gt;
  &lt;w:LsdException Locked="false" Priority="1" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="No Spacing"/&gt;
  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading"/&gt;
  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List"/&gt;
  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid"/&gt;
  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List"/&gt;
  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading"/&gt;
  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List"/&gt;
  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid"/&gt;
  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 1"/&gt;
  &lt;w:LsdException Locked="false" UnhideWhenUsed="false" Name="Revision"/&gt;
  &lt;w:LsdException Locked="false" Priority="34" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="List Paragraph"/&gt;
  &lt;w:LsdException Locked="false" Priority="29" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Quote"/&gt;
  &lt;w:LsdException Locked="false" Priority="30" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Intense Quote"/&gt;
  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="19" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Subtle Emphasis"/&gt;
  &lt;w:LsdException Locked="false" Priority="21" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Intense Emphasis"/&gt;
  &lt;w:LsdException Locked="false" Priority="31" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Subtle Reference"/&gt;
  &lt;w:LsdException Locked="false" Priority="32" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Intense Reference"/&gt;
  &lt;w:LsdException Locked="false" Priority="33" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Book Title"/&gt;
  &lt;w:LsdException Locked="false" Priority="37" Name="Bibliography"/&gt;
  &lt;w:LsdException Locked="false" Priority="39" QFormat="true" Name="TOC Heading"/&gt;
 &lt;/w:LatentStyles&gt;
&lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 10]&gt;
&lt;style&gt;
 /* Style Definitions */
 table.MsoNormalTable
 {mso-style-name:"Table Normal";
 mso-tstyle-rowband-size:0;
 mso-tstyle-colband-size:0;
 mso-style-noshow:yes;
 mso-style-priority:99;
 mso-style-qformat:yes;
 mso-style-parent:"";
 mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
 mso-para-margin:0cm;
 mso-para-margin-bottom:.0001pt;
 mso-pagination:widow-orphan;
 font-size:11.0pt;
 font-family:"Calibri","sans-serif";
 mso-ascii-font-family:Calibri;
 mso-ascii-theme-font:minor-latin;
 mso-fareast-font-family:"Times New Roman";
 mso-fareast-theme-font:minor-fareast;
 mso-hansi-font-family:Calibri;
 mso-hansi-theme-font:minor-latin;
 mso-bidi-font-family:"Times New Roman";
 mso-bidi-theme-font:minor-bidi;}
&lt;/style&gt;
&lt;![endif]--&gt;

&lt;br /&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;Lets first start with prerequisites – &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;You should have a working/running Store and BCC JBoss
instances in your local system. I also assume that you have already installed
Search 9.3 in your local ATG home. &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;Now let’s focus on search configuration. Kindly follow below
steps in same sequence. &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;1) Delete any existing projects and Environments from Search
Admin in BCC Admin screen.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;2) Goto Store ACC and delete everything from
SearchConfigurationRepository under Content. You may leave searchindex and
logicalpartition items in it.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;3) Set following remoteHost=localhost , remotePort=8860 in
below components as per your local store.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;C:\ATG\ATG9.1\home\servers\pub\localconfig\atg\commerce\search\refinement\RemoteCatalogRefineConfigAdapter.properties&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;C:\ATG\ATG9.1\home\servers\pub\localconfig\atg\commerce\search\config\RemoteCatalogRankConfigAdapter.properties&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;C:\ATG\ATG9.1\home\servers\pub\localconfig\atg\commerce\search\config\RemoteSearchUpdateAdapter.properties&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;4) Now goto BCC and create a new search project called
production under Search Admin&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;and add content as below&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;ATG Repository - Local -
/atg/commerce/search/ProductCatalogOutputConfig &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;5) Now goto "Language Customizations(Pre-Index)"
under content option of new project(production)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;a) Add Synonyms by using option "Select Custom Term
Dictionaries"&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;b) Add languages like english , italian, french, german,
japansese,korean using option "core language support" &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;6) Now add Post-Index Customizations options in the below
sequence ONLY&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;Merchandising Search Config&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;- Remote - localhost:8860 -
/atg/commerce/search/config/CatalogRankConfigAdapter &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;Refine Config (Facet Set)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;- Remote - localhost:8860 -
/atg/commerce/search/refinement/CatalogRefineConfigAdapter&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;Search Update Config (Auxiliary Data)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - Remote - localhost:8860 - /atg/commerce/search/config/SearchUpdateAdapter
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;7) Check the Environment - You should see one default one
just rename it to production&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;8) Now build the index and see if it works&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;If you get this below error at BCC server startup then do
the following --- &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;ERROR [IndexDeploymentService] Swap failed for index
35000001; aborting swap and tearing down staging. Swap rollback Policy
Description: All physical partitions must have at least one successfully
initialized search engine&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;1) Add this in Store jboss server run.conf file and restart
your store server. &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;JAVA_OPTS="$JAVA_OPTS
-Datg.allowRemoveAllItems=true"&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;2) Now goto below component in your Store server dyn/admin
and do a remove-all-items on all items under SearchConfigurationRepository Item
Descriptor.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;http://localhost:8180/dyn/admin/nucleus//atg/search/routing/repository/SearchConfigurationRepository/&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;remove -all-items="-all-items" item-descriptor="xxx"&gt;&lt;/remove&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;swapcheck&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;searchEngine&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;searchMachine&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;searchEnvironmentHost&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;searchEnvironment&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;physicalPartition&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;searchIndex&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;logicalPartition&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;indexingActivitySummary&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;indexingCommandCount&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;deploymentHistory&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;3) Now do the whole setup again in BCC which we did in above
steps thru 4 to 9.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;Note -- You also need to increase the TransactionTimeout
setting in jboss-service.xml under your store server's conf/ folder.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;attribute name="TransactionTimeout"&gt;30000&lt;/attribute&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;Note -- You also need to increase heap size setting in
JBOSS_OPTS variable in Jboss run.bat file&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;References –&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;Error ticket on community - &lt;a href="https://forums.oracle.com/forums/thread.jspa?messageID=10640583#10640583"&gt;https://forums.oracle.com/forums/thread.jspa?messageID=10640583#10640583&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;!--[if gte mso 9]&gt;&lt;xml&gt;
 &lt;o:OfficeDocumentSettings&gt;
  &lt;o:AllowPNG/&gt;
  &lt;o:TargetScreenSize&gt;1024x768&lt;/o:TargetScreenSize&gt;
 &lt;/o:OfficeDocumentSettings&gt;
&lt;/xml&gt;&lt;![endif]--&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;ATG search documentation -&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;a href="http://docs.oracle.com/cd/E23095_01/Search.93/index.html"&gt;http://docs.oracle.com/cd/E23095_01/Search.93/index.html&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;!--[if gte mso 9]&gt;&lt;xml&gt;
 &lt;w:WordDocument&gt;
  &lt;w:View&gt;Normal&lt;/w:View&gt;
  &lt;w:Zoom&gt;0&lt;/w:Zoom&gt;
  &lt;w:TrackMoves/&gt;
  &lt;w:TrackFormatting/&gt;
  &lt;w:PunctuationKerning/&gt;
  &lt;w:ValidateAgainstSchemas/&gt;
  &lt;w:SaveIfXMLInvalid&gt;false&lt;/w:SaveIfXMLInvalid&gt;
  &lt;w:IgnoreMixedContent&gt;false&lt;/w:IgnoreMixedContent&gt;
  &lt;w:AlwaysShowPlaceholderText&gt;false&lt;/w:AlwaysShowPlaceholderText&gt;
  &lt;w:DoNotPromoteQF/&gt;
  &lt;w:LidThemeOther&gt;EN-GB&lt;/w:LidThemeOther&gt;
  &lt;w:LidThemeAsian&gt;X-NONE&lt;/w:LidThemeAsian&gt;
  &lt;w:LidThemeComplexScript&gt;X-NONE&lt;/w:LidThemeComplexScript&gt;
  &lt;w:Compatibility&gt;
   &lt;w:BreakWrappedTables/&gt;
   &lt;w:SnapToGridInCell/&gt;
   &lt;w:WrapTextWithPunct/&gt;
   &lt;w:UseAsianBreakRules/&gt;
   &lt;w:DontGrowAutofit/&gt;
   &lt;w:SplitPgBreakAndParaMark/&gt;
   &lt;w:DontVertAlignCellWithSp/&gt;
   &lt;w:DontBreakConstrainedForcedTables/&gt;
   &lt;w:DontVertAlignInTxbx/&gt;
   &lt;w:Word11KerningPairs/&gt;
   &lt;w:CachedColBalance/&gt;
  &lt;/w:Compatibility&gt;
  &lt;w:BrowserLevel&gt;MicrosoftInternetExplorer4&lt;/w:BrowserLevel&gt;
  &lt;m:mathPr&gt;
   &lt;m:mathFont m:val="Cambria Math"/&gt;
   &lt;m:brkBin m:val="before"/&gt;
   &lt;m:brkBinSub m:val="&amp;#45;-"/&gt;
   &lt;m:smallFrac m:val="off"/&gt;
   &lt;m:dispDef/&gt;
   &lt;m:lMargin m:val="0"/&gt;
   &lt;m:rMargin m:val="0"/&gt;
   &lt;m:defJc m:val="centerGroup"/&gt;
   &lt;m:wrapIndent m:val="1440"/&gt;
   &lt;m:intLim m:val="subSup"/&gt;
   &lt;m:naryLim m:val="undOvr"/&gt;
  &lt;/m:mathPr&gt;&lt;/w:WordDocument&gt;
&lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;
 &lt;w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="true"
  DefSemiHidden="true" DefQFormat="false" DefPriority="99"
  LatentStyleCount="267"&gt;
  &lt;w:LsdException Locked="false" Priority="0" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Normal"/&gt;
  &lt;w:LsdException Locked="false" Priority="9" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="heading 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 7"/&gt;
  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 8"/&gt;
  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 9"/&gt;
  &lt;w:LsdException Locked="false" Priority="39" Name="toc 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="39" Name="toc 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="39" Name="toc 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="39" Name="toc 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="39" Name="toc 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="39" Name="toc 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="39" Name="toc 7"/&gt;
  &lt;w:LsdException Locked="false" Priority="39" Name="toc 8"/&gt;
  &lt;w:LsdException Locked="false" Priority="39" Name="toc 9"/&gt;
  &lt;w:LsdException Locked="false" Priority="35" QFormat="true" Name="caption"/&gt;
  &lt;w:LsdException Locked="false" Priority="10" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Title"/&gt;
  &lt;w:LsdException Locked="false" Priority="1" Name="Default Paragraph Font"/&gt;
  &lt;w:LsdException Locked="false" Priority="11" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Subtitle"/&gt;
  &lt;w:LsdException Locked="false" Priority="22" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Strong"/&gt;
  &lt;w:LsdException Locked="false" Priority="20" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Emphasis"/&gt;
  &lt;w:LsdException Locked="false" Priority="59" SemiHidden="false"
   UnhideWhenUsed="false" Name="Table Grid"/&gt;
  &lt;w:LsdException Locked="false" UnhideWhenUsed="false" Name="Placeholder Text"/&gt;
  &lt;w:LsdException Locked="false" Priority="1" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="No Spacing"/&gt;
  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading"/&gt;
  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List"/&gt;
  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid"/&gt;
  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List"/&gt;
  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading"/&gt;
  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List"/&gt;
  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid"/&gt;
  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 1"/&gt;
  &lt;w:LsdException Locked="false" UnhideWhenUsed="false" Name="Revision"/&gt;
  &lt;w:LsdException Locked="false" Priority="34" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="List Paragraph"/&gt;
  &lt;w:LsdException Locked="false" Priority="29" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Quote"/&gt;
  &lt;w:LsdException Locked="false" Priority="30" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Intense Quote"/&gt;
  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="19" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Subtle Emphasis"/&gt;
  &lt;w:LsdException Locked="false" Priority="21" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Intense Emphasis"/&gt;
  &lt;w:LsdException Locked="false" Priority="31" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Subtle Reference"/&gt;
  &lt;w:LsdException Locked="false" Priority="32" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Intense Reference"/&gt;
  &lt;w:LsdException Locked="false" Priority="33" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Book Title"/&gt;
  &lt;w:LsdException Locked="false" Priority="37" Name="Bibliography"/&gt;
  &lt;w:LsdException Locked="false" Priority="39" QFormat="true" Name="TOC Heading"/&gt;
 &lt;/w:LatentStyles&gt;
&lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 10]&gt;
&lt;style&gt;
 /* Style Definitions */
 table.MsoNormalTable
 {mso-style-name:"Table Normal";
 mso-tstyle-rowband-size:0;
 mso-tstyle-colband-size:0;
 mso-style-noshow:yes;
 mso-style-priority:99;
 mso-style-qformat:yes;
 mso-style-parent:"";
 mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
 mso-para-margin:0cm;
 mso-para-margin-bottom:.0001pt;
 mso-pagination:widow-orphan;
 font-size:11.0pt;
 font-family:"Calibri","sans-serif";
 mso-ascii-font-family:Calibri;
 mso-ascii-theme-font:minor-latin;
 mso-fareast-font-family:"Times New Roman";
 mso-fareast-theme-font:minor-fareast;
 mso-hansi-font-family:Calibri;
 mso-hansi-theme-font:minor-latin;
 mso-bidi-font-family:"Times New Roman";
 mso-bidi-theme-font:minor-bidi;}
&lt;/style&gt;
&lt;![endif]--&gt;

&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;Let me know if you face any issues with Search setup or if you know of any better way to configure search. &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>SQL Error: ORA-01591: lock held by in-doubt distributed transaction</title><link>http://sajidn.blogspot.com/2012/09/sql-error-ora-01591-lock-held-by-in.html</link><category>oracle</category><author>noreply@blogger.com (Nads)</author><pubDate>Tue, 4 Sep 2012 23:47:00 +0100</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-27924845.post-60931002499889259</guid><description>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;div style="text-align: left;"&gt;
&lt;span style="font-family: Arial,Helvetica,sans-serif; font-size: small;"&gt;Well last week I came across this ORA-01591 while running alter command against one of the Oracle DB schema. It simply failed by giving following error.&lt;/span&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;!--[if gte mso 9]&gt;&lt;xml&gt;
 &lt;w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="true"
  DefSemiHidden="true" DefQFormat="false" DefPriority="99"
  LatentStyleCount="267"&gt;
  &lt;w:LsdException Locked="false" Priority="0" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Normal"/&gt;
  &lt;w:LsdException Locked="false" Priority="9" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="heading 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 7"/&gt;
  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 8"/&gt;
  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 9"/&gt;
  &lt;w:LsdException Locked="false" Priority="39" Name="toc 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="39" Name="toc 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="39" Name="toc 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="39" Name="toc 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="39" Name="toc 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="39" Name="toc 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="39" Name="toc 7"/&gt;
  &lt;w:LsdException Locked="false" Priority="39" Name="toc 8"/&gt;
  &lt;w:LsdException Locked="false" Priority="39" Name="toc 9"/&gt;
  &lt;w:LsdException Locked="false" Priority="35" QFormat="true" Name="caption"/&gt;
  &lt;w:LsdException Locked="false" Priority="10" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Title"/&gt;
  &lt;w:LsdException Locked="false" Priority="1" Name="Default Paragraph Font"/&gt;
  &lt;w:LsdException Locked="false" Priority="11" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Subtitle"/&gt;
  &lt;w:LsdException Locked="false" Priority="22" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Strong"/&gt;
  &lt;w:LsdException Locked="false" Priority="20" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Emphasis"/&gt;
  &lt;w:LsdException Locked="false" Priority="59" SemiHidden="false"
   UnhideWhenUsed="false" Name="Table Grid"/&gt;
  &lt;w:LsdException Locked="false" UnhideWhenUsed="false" Name="Placeholder Text"/&gt;
  &lt;w:LsdException Locked="false" Priority="1" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="No Spacing"/&gt;
  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading"/&gt;
  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List"/&gt;
  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid"/&gt;
  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List"/&gt;
  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading"/&gt;
  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List"/&gt;
  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid"/&gt;
  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 1"/&gt;
  &lt;w:LsdException Locked="false" UnhideWhenUsed="false" Name="Revision"/&gt;
  &lt;w:LsdException Locked="false" Priority="34" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="List Paragraph"/&gt;
  &lt;w:LsdException Locked="false" Priority="29" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Quote"/&gt;
  &lt;w:LsdException Locked="false" Priority="30" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Intense Quote"/&gt;
  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="19" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Subtle Emphasis"/&gt;
  &lt;w:LsdException Locked="false" Priority="21" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Intense Emphasis"/&gt;
  &lt;w:LsdException Locked="false" Priority="31" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Subtle Reference"/&gt;
  &lt;w:LsdException Locked="false" Priority="32" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Intense Reference"/&gt;
  &lt;w:LsdException Locked="false" Priority="33" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Book Title"/&gt;
  &lt;w:LsdException Locked="false" Priority="37" Name="Bibliography"/&gt;
  &lt;w:LsdException Locked="false" Priority="39" QFormat="true" Name="TOC Heading"/&gt;
 &lt;/w:LatentStyles&gt;
&lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 10]&gt;
&lt;style&gt;
 /* Style Definitions */
 table.MsoNormalTable
 {mso-style-name:"Table Normal";
 mso-tstyle-rowband-size:0;
 mso-tstyle-colband-size:0;
 mso-style-noshow:yes;
 mso-style-priority:99;
 mso-style-qformat:yes;
 mso-style-parent:"";
 mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
 mso-para-margin:0cm;
 mso-para-margin-bottom:.0001pt;
 mso-pagination:widow-orphan;
 font-size:11.0pt;
 font-family:"Calibri","sans-serif";
 mso-ascii-font-family:Calibri;
 mso-ascii-theme-font:minor-latin;
 mso-fareast-font-family:"Times New Roman";
 mso-fareast-theme-font:minor-fareast;
 mso-hansi-font-family:Calibri;
 mso-hansi-theme-font:minor-latin;
 mso-bidi-font-family:"Times New Roman";
 mso-bidi-theme-font:minor-bidi;}
&lt;/style&gt;
&lt;![endif]--&gt;

&lt;br /&gt;
&lt;div class="MsoNormal"&gt;
&lt;b&gt;&lt;span style="color: black; font-family: &amp;quot;Tahoma&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 10.0pt;"&gt;SQL Error: ORA-01591: lock held by in-doubt distributed
transaction 5.4.426183&lt;br /&gt;
&lt;/span&gt;&lt;/b&gt;&lt;span style="color: black; font-family: &amp;quot;Tahoma&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 10.0pt;"&gt;01591. 00000 -&amp;nbsp; "lock held by in-doubt distributed
transaction %s"&lt;br /&gt;
*Cause:&amp;nbsp;&amp;nbsp;&amp;nbsp; Trying to access resource that is locked by a dead
two-phase commit&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; transaction that is
in prepared state.&lt;br /&gt;
*Action:&amp;nbsp;&amp;nbsp;&amp;nbsp;DBA should query the pending_trans$ and related
tables, and attempt&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; to repair network
connection(s) to coordinator and commit point.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; If timely repair
is not possible,&amp;nbsp;DBA should contact&amp;nbsp;DBA at commit&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; point if known or
end user for correct outcome, or use heuristic&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; default if given
to issue a heuristic commit or abort command to&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; finalize the local
portion of the distributed transaction.&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: Arial,Helvetica,sans-serif; font-size: small;"&gt;&lt;span style="color: black;"&gt;I did Google around and got some help to resolve this. Here are the steps I followed to fix this issue.&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="color: black; font-family: &amp;quot;Tahoma&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: small;"&gt;

&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: Arial,Helvetica,sans-serif; font-size: small;"&gt;&lt;span style="color: black;"&gt;1) Connect to Oracle as&amp;nbsp;sysdba by using this command
--&amp;nbsp;sqlplus sys as sysdba&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: Arial,Helvetica,sans-serif; font-size: small;"&gt;&lt;span style="color: black;"&gt;2) &lt;/span&gt;&lt;span style="color: black;"&gt;&lt;span style="color: black;"&gt;&lt;span style="color: black;"&gt;select&amp;nbsp;LOCAL_TRAN_ID
from&amp;nbsp;dba_2pc_pending&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: Arial,Helvetica,sans-serif; font-size: small;"&gt;&lt;span style="color: black;"&gt;&lt;span style="color: black;"&gt;&lt;span style="color: black;"&gt;This above select command will give
you list of all pending&amp;nbsp;transaction ids and one id will match with the id
mentioned in the above error. you have to pick that id and delete it. Before attempting to delete (step 5) you need to first execute steps 3 and 4.&amp;nbsp;&lt;/span&gt;&lt;/span&gt; &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: Arial,Helvetica,sans-serif; font-size: small;"&gt;&lt;span style="color: black;"&gt;3) alter system enable distributed recovery;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: Arial,Helvetica,sans-serif; font-size: small;"&gt;&lt;span style="color: black;"&gt;&amp;nbsp;&amp;nbsp; Above &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif; font-size: small;"&gt;&lt;span style="color: black;"&gt;statement enables distributed recovery &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: Arial,Helvetica,sans-serif; font-size: small;"&gt;&lt;span style="color: black;"&gt;4) rollback force '5.4.426183';&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: Arial,Helvetica,sans-serif; font-size: small;"&gt;&lt;span style="color: black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; commit;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: Arial,Helvetica,sans-serif; font-size: small;"&gt;&lt;span style="color: black;"&gt;&amp;nbsp;&lt;b&gt;Note &lt;/b&gt;- Use &lt;/span&gt;&lt;span style="color: black;"&gt;&lt;code&gt;ROLLBACK&lt;/code&gt; statement with the &lt;code&gt;FORCE&lt;/code&gt; option and a text string that indicates either the local or global transaction ID of the in-doubt transaction to commit. &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: Arial,Helvetica,sans-serif; font-size: small;"&gt;&lt;span style="color: black;"&gt;5) execute dbms_transaction.purge_lost_db_entry('5.4.426183');&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: Arial,Helvetica,sans-serif; font-size: small;"&gt;&lt;span style="color: black;"&gt;Once the&amp;nbsp;above procedure executes successfully then you may try your original Alter/DDL command and restart your app server. &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;&lt;/div&gt;
</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>Purging Asset Versions in BCC using ATG dynamo PurgingService</title><link>http://sajidn.blogspot.com/2012/10/purging-asset-versions-in-bcc-using-atg.html</link><category>ATG</category><category>BCC</category><category>Repository</category><author>noreply@blogger.com (Nads)</author><pubDate>Fri, 10 Aug 2012 16:04:00 +0100</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-27924845.post-505482440452072076</guid><description>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;!--[if gte mso 9]&gt;&lt;xml&gt;
 &lt;w:WordDocument&gt;
  &lt;w:View&gt;Normal&lt;/w:View&gt;
  &lt;w:Zoom&gt;0&lt;/w:Zoom&gt;
  &lt;w:TrackMoves/&gt;
  &lt;w:TrackFormatting/&gt;
  &lt;w:PunctuationKerning/&gt;
  &lt;w:ValidateAgainstSchemas/&gt;
  &lt;w:SaveIfXMLInvalid&gt;false&lt;/w:SaveIfXMLInvalid&gt;
  &lt;w:IgnoreMixedContent&gt;false&lt;/w:IgnoreMixedContent&gt;
  &lt;w:AlwaysShowPlaceholderText&gt;false&lt;/w:AlwaysShowPlaceholderText&gt;
  &lt;w:DoNotPromoteQF/&gt;
  &lt;w:LidThemeOther&gt;EN-GB&lt;/w:LidThemeOther&gt;
  &lt;w:LidThemeAsian&gt;X-NONE&lt;/w:LidThemeAsian&gt;
  &lt;w:LidThemeComplexScript&gt;X-NONE&lt;/w:LidThemeComplexScript&gt;
  &lt;w:Compatibility&gt;
   &lt;w:BreakWrappedTables/&gt;
   &lt;w:SnapToGridInCell/&gt;
   &lt;w:WrapTextWithPunct/&gt;
   &lt;w:UseAsianBreakRules/&gt;
   &lt;w:DontGrowAutofit/&gt;
   &lt;w:SplitPgBreakAndParaMark/&gt;
   &lt;w:DontVertAlignCellWithSp/&gt;
   &lt;w:DontBreakConstrainedForcedTables/&gt;
   &lt;w:DontVertAlignInTxbx/&gt;
   &lt;w:Word11KerningPairs/&gt;
   &lt;w:CachedColBalance/&gt;
  &lt;/w:Compatibility&gt;
  &lt;w:BrowserLevel&gt;MicrosoftInternetExplorer4&lt;/w:BrowserLevel&gt;
  &lt;m:mathPr&gt;
   &lt;m:mathFont m:val="Cambria Math"/&gt;
   &lt;m:brkBin m:val="before"/&gt;
   &lt;m:brkBinSub m:val="&amp;#45;-"/&gt;
   &lt;m:smallFrac m:val="off"/&gt;
   &lt;m:dispDef/&gt;
   &lt;m:lMargin m:val="0"/&gt;
   &lt;m:rMargin m:val="0"/&gt;
   &lt;m:defJc m:val="centerGroup"/&gt;
   &lt;m:wrapIndent m:val="1440"/&gt;
   &lt;m:intLim m:val="subSup"/&gt;
   &lt;m:naryLim m:val="undOvr"/&gt;
  &lt;/m:mathPr&gt;&lt;/w:WordDocument&gt;
&lt;/xml&gt;&lt;![endif]--&gt;

&lt;br /&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 10.0pt;"&gt;Recently
faced couple of issues with running the Purge Service under BCC and had to do
some tuning to finally make it work on large volume of versioned assets. &lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 10.0pt;"&gt;It
is generally a good idea to periodically purge versioned repository data of old
projects and asset versions. Over the period of &lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&lt;/span&gt;time, the versioning system in Content
Administration (CA) can accumulate a large number of asset versions and
completed projects. As asset versions accumulate, they can strain storage
capacity and system performance. It also becomes hard to take live data copy and
replicate to other environments. &lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;
&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 10.0pt;"&gt;The length of a purge
depends on the number of repository and file assets that need to be purged. A
purge that has &lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&lt;/span&gt;large number assets can
be lengthy specially for the first time. Try scheduling multiple purges in this
case.&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;
&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 10.0pt;"&gt;Its also a good idea
to take back up of all affected datastores and file systems before you start a
purge.&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;
&lt;span style="color: black; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 10.0pt;"&gt;Purge
Service generates a Summary Metrics report before starting the purge activity and
another one after the purge is completed.&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;
&lt;span style="color: black; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 10.0pt;"&gt;The
report basically has details like number of projects and asset versions
removed, and the number of projects and asset versions that remain. It has a
good amount of details as what is going to be purged and what will remain after
that. &lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;span style="color: black; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 10.0pt;"&gt;&lt;b&gt;Y&lt;/b&gt;ou
might like to do few changes in your BCC server instance to run the purge
service as its likely that purge will fail initially due to various reasons.
Worth trying these - &lt;/span&gt;&lt;br /&gt;
&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;
&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;(1) &lt;/span&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 10.0pt;"&gt;Purge operation executes in a transaction. If
a purge has a large number of assets, you might need to raise your application
server’s transaction timeout setting—for JBoss reset TransactionTimeout
attribute&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (in &lt;jbdir&gt;/server/yourserver/conf/jboss-service.xml file).&lt;/jbdir&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoListParagraph"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;span style="color: black; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 10.0pt;"&gt;(2) JVM
memory setting in Jboss - It depends on volume of data you have. If you get any
memory error while performing Purge activity then consider increasing memory by
1 GB and keep increasing till the time memory error goes off. In ideal
condition going upto 6 GB would be good enough. (-Xms6144m -Xmx6144m) under
Jboss/bin/run.bat on Windows.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="color: black; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 10.0pt;"&gt;(3) Resolving
repository data conflict - Purge service might failed on ContentRepository
data, to fix this try setting VersionManagerService.enableProtectivePurge as
false and then run the purge service.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class="MsoNormal"&gt;
&lt;span style="color: black; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 10.0pt; mso-fareast-language: EN-GB;"&gt;For more details read &lt;a href="http://docs.oracle.com/cd/E26180_01/Platform.94/ATGCAProgGuide/ATGCAProgGuide.pdf" target="_blank"&gt;Oracle ATG CA docs&lt;/a&gt;
here –&lt;/span&gt;&lt;/div&gt;
&lt;!--[if gte mso 9]&gt;&lt;xml&gt;
 &lt;w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="true"
  DefSemiHidden="true" DefQFormat="false" DefPriority="99"
  LatentStyleCount="267"&gt;
  &lt;w:LsdException Locked="false" Priority="0" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Normal"/&gt;
  &lt;w:LsdException Locked="false" Priority="9" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="heading 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 7"/&gt;
  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 8"/&gt;
  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 9"/&gt;
  &lt;w:LsdException Locked="false" Priority="39" Name="toc 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="39" Name="toc 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="39" Name="toc 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="39" Name="toc 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="39" Name="toc 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="39" Name="toc 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="39" Name="toc 7"/&gt;
  &lt;w:LsdException Locked="false" Priority="39" Name="toc 8"/&gt;
  &lt;w:LsdException Locked="false" Priority="39" Name="toc 9"/&gt;
  &lt;w:LsdException Locked="false" Priority="35" QFormat="true" Name="caption"/&gt;
  &lt;w:LsdException Locked="false" Priority="10" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Title"/&gt;
  &lt;w:LsdException Locked="false" Priority="1" Name="Default Paragraph Font"/&gt;
  &lt;w:LsdException Locked="false" Priority="11" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Subtitle"/&gt;
  &lt;w:LsdException Locked="false" Priority="22" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Strong"/&gt;
  &lt;w:LsdException Locked="false" Priority="20" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Emphasis"/&gt;
  &lt;w:LsdException Locked="false" Priority="59" SemiHidden="false"
   UnhideWhenUsed="false" Name="Table Grid"/&gt;
  &lt;w:LsdException Locked="false" UnhideWhenUsed="false" Name="Placeholder Text"/&gt;
  &lt;w:LsdException Locked="false" Priority="1" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="No Spacing"/&gt;
  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading"/&gt;
  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List"/&gt;
  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid"/&gt;
  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List"/&gt;
  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading"/&gt;
  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List"/&gt;
  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid"/&gt;
  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 1"/&gt;
  &lt;w:LsdException Locked="false" UnhideWhenUsed="false" Name="Revision"/&gt;
  &lt;w:LsdException Locked="false" Priority="34" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="List Paragraph"/&gt;
  &lt;w:LsdException Locked="false" Priority="29" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Quote"/&gt;
  &lt;w:LsdException Locked="false" Priority="30" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Intense Quote"/&gt;
  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="19" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Subtle Emphasis"/&gt;
  &lt;w:LsdException Locked="false" Priority="21" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Intense Emphasis"/&gt;
  &lt;w:LsdException Locked="false" Priority="31" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Subtle Reference"/&gt;
  &lt;w:LsdException Locked="false" Priority="32" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Intense Reference"/&gt;
  &lt;w:LsdException Locked="false" Priority="33" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Book Title"/&gt;
  &lt;w:LsdException Locked="false" Priority="37" Name="Bibliography"/&gt;
  &lt;w:LsdException Locked="false" Priority="39" QFormat="true" Name="TOC Heading"/&gt;
 &lt;/w:LatentStyles&gt;
&lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 10]&gt;
&lt;style&gt;
 /* Style Definitions */
 table.MsoNormalTable
 {mso-style-name:"Table Normal";
 mso-tstyle-rowband-size:0;
 mso-tstyle-colband-size:0;
 mso-style-noshow:yes;
 mso-style-priority:99;
 mso-style-qformat:yes;
 mso-style-parent:"";
 mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
 mso-para-margin:0cm;
 mso-para-margin-bottom:.0001pt;
 mso-pagination:widow-orphan;
 font-size:11.0pt;
 font-family:"Calibri","sans-serif";
 mso-ascii-font-family:Calibri;
 mso-ascii-theme-font:minor-latin;
 mso-fareast-font-family:"Times New Roman";
 mso-fareast-theme-font:minor-fareast;
 mso-hansi-font-family:Calibri;
 mso-hansi-theme-font:minor-latin;
 mso-bidi-font-family:"Times New Roman";
 mso-bidi-theme-font:minor-bidi;}
&lt;/style&gt;
&lt;![endif]--&gt;&lt;/div&gt;
</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>Effective use of robots.txt</title><link>http://sajidn.blogspot.com/2012/04/effective-use-of-robotstxt.html</link><category>SEO</category><author>noreply@blogger.com (Nads)</author><pubDate>Wed, 18 Apr 2012 00:22:00 +0100</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-27924845.post-2103236758869789520</guid><description>Off late I did some work on SEO and got an opprtunity to play around the robots.txt file to apply various rules. Would like to share the common understanding around it, feel free to provide your comments or share your  experiences.&lt;br /&gt;&lt;br /&gt;As part of sensible SEO practice its important to keep a firm grasp on managing exactly what information we don't want being crawled!&lt;br /&gt;A robots.txt file restricts access to your site by search engine robots that crawl the web. These bots are automated and before they access pages of a site, they check to see if a robots.txt file exists that prevents them from accessing certain pages.&lt;br /&gt;You need a robots.txt file only if your site includes content that you don't want search engines to index. If you want search engines to index everything in your site, you don't need a robots.txt file&lt;br /&gt;&lt;br /&gt;The simplest robots.txt file uses two rules:&lt;br /&gt;  User-agent: the robot the following rule applies to&lt;br /&gt;  Disallow: the URL you want to block&lt;br /&gt;&lt;br /&gt;These two lines are considered a single entry in the file. You can include as many entries as you want. You can include multiple Disallow lines and multiple user-agents in one entry.&lt;br /&gt;&lt;br /&gt;Some example below -&lt;br /&gt;&lt;br /&gt;User-agent: *&lt;br /&gt;Disallow: /images/&lt;br /&gt;&lt;br /&gt;User-Agent: Googlebot&lt;br /&gt;Disallow: /archive/&lt;br /&gt;&lt;br /&gt;The Disallow line lists the pages you want to block. You can list a specific URL or a pattern. The entry should begin with a forward slash (/).&lt;br /&gt;&lt;br /&gt;&lt;ul style="text-align: left;"&gt;&lt;li&gt;To block the entire site, use a forward slash.&lt;/li&gt;&lt;/ul&gt;Disallow: /&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;To block a directory and everything in it, follow the directory name with a forward slash.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Disallow: /archive-directory/&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;To block a page, list the page.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Disallow: /checkout.jsp&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;To remove a specific image from Google Images, add the following:&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;User-agent: Googlebot-Image&lt;br /&gt;Disallow: /images/logo.jpg&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;To remove all images on your site from Google Images:&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;User-agent: Googlebot-Image&lt;br /&gt;Disallow: /&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;To block files of a specific file type (for example, .gif), use the following:&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;User-agent: Googlebot&lt;br /&gt;Disallow: /*.gif$&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;To specify matching the end of a URL, use $. For instance, to block any URLs that end with .xls:&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;User-agent: Googlebot&lt;br /&gt;Disallow: /*.xls$&lt;br /&gt;&lt;br /&gt;We can restrict crawling where it's not needed with robots.txt&lt;br /&gt;A "robots.txt" file tells search engines whether they can access and therefore crawl parts of your site. This file, which must be named "robots.txt", is placed in the root directory of your site.  e.g - www.example.com/robots.txt&lt;br /&gt;&lt;br /&gt;If you have a multi country site then each country should have its own robots.txt&lt;br /&gt;To further read follow these links for generating and using robots.txt&lt;br /&gt;&lt;br /&gt;&lt;a href="http://googlewebmastercentral.blogspot.com/2008/03/speaking-language-of-robots.html"&gt;robots.txt generator&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.google.com/support/webmasters/bin/answer.py?answer=156449"&gt;Using robots.txt files&lt;/a&gt;&lt;br /&gt;&lt;a href="http://googlewebmastercentral.blogspot.com/2008/01/remove-your-content-from-google.html"&gt;Caveats of each URL blocking method&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Kindly note Google has a limit of only being able to process up to 500KB of your robots.txt file.</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>11 most commonly used FormHandlers in ATG</title><link>http://sajidn.blogspot.com/2010/11/11-most-commonly-used-formhandlers-in.html</link><category>ATG</category><category>FormHandlers</category><author>noreply@blogger.com (Nads)</author><pubDate>Thu, 25 Nov 2010 15:55:00 GMT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-27924845.post-5454838635150480631</guid><description>&lt;p class="MsoNormal"&gt;Here are some of the commonly used FormHandlers, although &lt;a href="http://www.atg.com/"&gt;ATG &lt;/a&gt;provides many out of the box FormHandlers and even we can write our own custom FormHandlers by extending GenericFormHandler class provided by ATG.&lt;br /&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;b&gt;CartModifierFormHandler&lt;/b&gt; -- This formhandler is used to modify a ShoppingCart by adding items to it, deleting items from it, modifying the quantities of items in it, and preparing it for the checkout process.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;b&gt;ExpressCheckoutFormHandler&lt;/b&gt; -- The ExpressCheckoutFormHAndler is used to expedite the checking out of an Order. This supports creating a maximum of one Profile derived HardgoodShippingGroup and one Profile derived CreditCard, followed by committing the Order.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;b&gt;SaveOrderFormHandler&lt;/b&gt; -- The SaveOrderFormHandler is used to save the user's current Order based on a descriptive name that the user specifies. A new empty Order is then made the user's current shopping cart. If a descriptive name for the Order is not specified, then one is created based on the user's Locale and date and time.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;b&gt;ShippingGroupFormHandler&lt;/b&gt; -- The ShippingGroupFormHandler is used to associate ShippingGroups with the various Order pieces. This component is used during the Order checkout process, and any Order successfully processed by the ShippingGroupFormHandler is ready for the next checkout phase, which may be Payment.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;b&gt;PaymentGroupFormHandler&lt;/b&gt; -- The PaymentGroupFormHandler is used to associate PaymentGroups with the various Order pieces. This component is used during the Order checkout process, and any Order successfully processed by the PaymentGroupFormHandler is ready for the next checkout phase, which may be confirmation.&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;b&gt;CommitOderFormHandler&lt;/b&gt; -- The CommitOrderFormHandler is used to submit the Order for final confirmation. This calls the OrderManager's processOrder method. If there are no errors with processing the Order, then the current Order in the user's ShoppingCart will be set to null and the submitted Order will become the ShoppingCart's last Order. &lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;b&gt;CancelOderFormHandler&lt;/b&gt; -- The CancelOrderFormHandler is used to cancel the user's current Order, which deletes the Order from the ShoppingCart.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;b&gt;RepositoryFromHandler&lt;/b&gt; -- Saves repository data to a database.&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;b&gt;ProfileFormHandler&lt;/b&gt; -- Connects forms with user profiles stored in a profile repository.&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;b&gt;SearchFormHandler&lt;/b&gt; -- Specifies properties available to a search engine.&lt;/p&gt; &lt;b&gt;SimpleSQLFormHandler&lt;/b&gt; -- Works with form data that is stored in a SQL database.</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>ATG's Data Anywhere Architecture</title><link>http://sajidn.blogspot.com/2010/11/atgs-data-anywhere-architecture.html</link><category>ATG</category><category>Repository</category><author>noreply@blogger.com (Nads)</author><pubDate>Sat, 20 Nov 2010 15:30:00 GMT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-27924845.post-815405670710091354</guid><description>&lt;span style=";font-family:arial;font-size:100%;"  &gt;Just read one of the white papers from &lt;a href="http://www.atg.com/"&gt;ATG's site&lt;/a&gt; , liked the way they have explained about Data Anywhere Architecture. Thought to share the important points about it. Here we go :-)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Challenges --&lt;/span&gt;&lt;br /&gt;All enterprise applications need to access and manipulate data in some shape or form. Common challenges that have been found in building scalable, object-oriented, data-centric applications are:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Object-to-relational mapping –&lt;/span&gt; Issues surrounding how a relational data representation can be appropriately mapped to an object oriented programming language in a way that does not impact simplicity or data integrity.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Data source insulation –&lt;/span&gt; Issues surrounding the fact that relational/SQL database may not be the only form of data that the application requires. Other data source types may include LDAP directories or XML file-based assets.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Data caching –&lt;/span&gt; Issues surrounding the appropriate use of data resources without inflicting the high volumes of data source ‘hits’ common in high-traffic Web applications. Caching issues include the integrity and cache invalidation of the data used throughout a distributed application.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Solutions --&lt;/span&gt;&lt;br /&gt;ATG’s Data Anywhere Architecture (DAA) meets all of these challenges. DAA gives developers a single API, called the Repository API, for using data resources in their applications. Behind the Repository API, DAA insulates and abstracts application developers from the specifics of the data source, so much so that the nature of the underlying data source may completely change without major impact. For example, customer data may reside in a SQL/JDBC database today, but will move to an LDAP directory in the future. DAA could handle this without having to touch any code within the application. The fundamental construct in the DAA is a ‘Repository’. A Repository is a logical view of a data resource (or resources), and to a developer, manifests itself as a set of JavaBeans to be used within their application. Like everything else in an ATG application, Repositories are represented as Nucleus components.&lt;br /&gt;&lt;/span&gt;&lt;p class="MsoNormal"  style="text-align: center;font-family:arial;"&gt;&lt;span style="font-size:100%;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEijdM0jfwhB_zzNRfh9WzB7rYxn652YgGway5ZhEPvUh-zIRG6lDf3HWdAIoKWvitvzVgksD7TywWFI4dpl422KFNK7-EI3zuAUU6CEQlKnTq14tBssr9k4Roaukx7yxDl8GOQS/s1600/image1.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 400px; height: 239px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEijdM0jfwhB_zzNRfh9WzB7rYxn652YgGway5ZhEPvUh-zIRG6lDf3HWdAIoKWvitvzVgksD7TywWFI4dpl422KFNK7-EI3zuAUU6CEQlKnTq14tBssr9k4Roaukx7yxDl8GOQS/s400/image1.png" alt="" id="BLOGGER_PHOTO_ID_5543511377131792418" border="0" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"  style="font-family:arial;"&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"  style="font-family:arial;"&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"  style="font-family:arial;"&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"  style="font-family:arial;"&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"  style="font-family:arial;"&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"  style="font-family:arial;"&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"  style="font-family:arial;"&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"  style="font-family:arial;"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class="MsoNormal"  style="font-family:arial;"&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"  style="font-family:arial;"&gt;&lt;span style="font-size:100%;"&gt;The &lt;span style="font-weight: bold;"&gt;Repository &lt;/span&gt;is described in a Repository Definition XML file, which holds all appropriate information about the data’s physical location and how it is mapped to the logical view. The DAA consists of three primary Repository types for data access and manipulation.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;SQL repository –&lt;/span&gt; A SQL Repository presents a logical view of data stored in a relational database, accessed through JDBC. The Repository definition file defines how the databases, tables, rows, and columns of a relational database are presented through the Repository API. It also defines the item caching strategy to be employed to optimize database read/write performance.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;LDAP repository –&lt;/span&gt; An LDAP Repository presents a logical view of any data source that has an LDAP interface, typically used to store user data. The Repository definition file defines how the hierarchical structure and contents of an LDAP directory are presented through the Repository API.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Integration repository –&lt;/span&gt; In some cases, data sources may not be directly accessible, or information may be returned by an application rather than directly from a database or directory service. The Integration Repository presents a Repository API in front of some remote application processing. For example, an Integration Repository may be implemented to facilitate integration with SAP’s BAPI interface, or to retrieve information through the execution of a Web Service SOAP call. The Integration Repository is an open architecture into which these specific integration technologies can be plugged, while still presenting the same Repository API to the application developer. It also gives developer sophisticated data access and caching strategies to protect the application from remote latency and downtime.&lt;br /&gt;In addition to the primary types of Repository mentioned so far, there are two types of ‘overlay’ repository types that can be used.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Secure repository –&lt;/span&gt; A Secure Repository introduces application level security and access control to the data being accessed and manipulated. Working with ATG’s Security Management Framework, varying levels of security can be defined on the Repository contents, all the way down to individual data properties. Access Control Lists (ACLs) are written to describe the different levels of access that are provided to ATG’s User Model, which itself provides a rich structure to model user, organizational hierarchies and roles.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Versioned repository –&lt;/span&gt; A Versioned Repository introduces a versioning mechanism to one of the other primary Repository types. It provides all of the required tools to maintain, version and roll-back versions of a Repositories contents. Any existing SQL Repository may be turned into a Versioned Repository through additional configuration files. The Versioned Repository architecture is heavily used by ATG’s Content Administration product, but the versioning features are open for any other type of application usage that may be customer specific. Versioned Repositories integrate closely with ATG’s workflow capabilities that reside in the ATG Adaptive Scenario Engine. A Composite Repository is the final construct that can be especially useful for building applications requiring access to data in multiple data sources and formats.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Composite repository –&lt;/span&gt; A Composite Repository represents an aggregate view over other repository types, or over other composite Repositories (although one should not create too many layers of Composite Repository). The most common use of a Composite Repository is where a businesses customer data is distributed over multiple SQL databases and an LDAP directory, but a Web application wants a ‘single view of the customer’ to reduce application complexity.&lt;br /&gt;&lt;br /&gt;A Composite Repository provides some welcome simplicity.&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"  style="font-family:arial;"&gt;&lt;span style="font-size:100%;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgH4py2XiYZcEqZjLwIIvsWgPjVufsmZzoBdG1ZVvRLnFZqzIy-YJp2Orgea_6xZLwAgL-Uu3WciwORX9O5Wp-5gRnl7dbBTd10Wg3C9qHGqP764WV3ky1R7A3LAv3yoC3606X6/s1600/image2.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 400px; height: 193px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgH4py2XiYZcEqZjLwIIvsWgPjVufsmZzoBdG1ZVvRLnFZqzIy-YJp2Orgea_6xZLwAgL-Uu3WciwORX9O5Wp-5gRnl7dbBTd10Wg3C9qHGqP764WV3ky1R7A3LAv3yoC3606X6/s400/image2.png" alt="" id="BLOGGER_PHOTO_ID_5543511903887712098" border="0" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"  style="font-family:arial;"&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"  style="font-family:arial;"&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"  style="font-family:arial;"&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"  style="font-family:arial;"&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"  style="font-family:arial;"&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"  style="font-family:arial;"&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"  style="font-family:arial;"&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"  style="font-family:arial;"&gt;&lt;span style="font-size:100%;"&gt;To ensure scalability of Web site usage of SQL database, the DAA provides sophisticated caching and cache invalidation mechanisms for SQL Repositories.&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"  style="font-family:arial;"&gt;&lt;span style="font-size:100%;"&gt;DAA provides all of the necessary tools to manage and flush caches at the repository item level. There are also mechanisms for managing distributed caches&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" face="arial"&gt;&lt;span style="font-size:100%;"&gt;and cache invalidation via JMS or TCP/IP. All in all, ATG’s Data Anywhere Architecture provides a rich, robust, and highly scalable set of tools to facilitate the use of enterprise data resources, while providing a loose coupling approach between data source and application.&lt;/span&gt;&lt;/p&gt;      &lt;p  class="MsoNormal" style="font-family:arial;"&gt;&lt;span style="font-size:100%;"&gt;If you want to further explore features of ATG repository or may like to compare it with Hibernate then follow the below link which points to ATG community site - &lt;a href="https://community.atg.com/docs/DOC-1894" target="_blank"&gt;https://community.atg.com/&lt;wbr&gt;docs/DOC-1894&lt;/a&gt;&lt;div style="display: inline; cursor: pointer; padding-right: 16px; width: 16px; height: 16px;"&gt; &lt;/div&gt;&lt;/span&gt;&lt;/p&gt;</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEijdM0jfwhB_zzNRfh9WzB7rYxn652YgGway5ZhEPvUh-zIRG6lDf3HWdAIoKWvitvzVgksD7TywWFI4dpl422KFNK7-EI3zuAUU6CEQlKnTq14tBssr9k4Roaukx7yxDl8GOQS/s72-c/image1.png" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>ATG Dynamo Application Framework (DAF) and Nucleus</title><link>http://sajidn.blogspot.com/2010/10/atg-dynamo-application-framework-daf.html</link><category>ATG</category><category>DAF</category><category>Nucleus</category><author>noreply@blogger.com (Nads)</author><pubDate>Tue, 5 Oct 2010 19:21:00 +0100</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-27924845.post-1599779774090426989</guid><description>&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: arial; font-size: small; "&gt;&lt;b&gt;H&lt;/b&gt;ope most of you must be knowing about Dynamo Application Framework (&lt;b&gt;DAF&lt;/b&gt;) and &lt;b&gt;Nucleus &lt;/b&gt;concepts in &lt;a href="http://www.atg.com"&gt;ATG &lt;/a&gt;. I have just tried to summarized the basic idea about it which I read mostly from ATG white papers. Hope it will be useful for someone who is new to the world of ATG. Any comments or suggestions are most welcome. Would try to write more practical examples about dynamo and commerce related topics.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: arial; font-size: small; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: arial, sans-serif; font-size: 13px; border-collapse: collapse; "&gt;The ATG Dynamo Application Framework is an application framework designed to help simplify the creation of Web applications. It provides a large number of the common services, components, and frameworks that an application developer needs when building highly scalable, feature-rich, enterprise Web applications. DAF provides three core ‘pillars’ to help a developer construct an application.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: arial, sans-serif; font-size: 13px; border-collapse: collapse; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgKmmR6yQFOKU8fvUfYorPGAL0Cps-c0ev4Pqxm9OAZZ26MDgeA87x9KfKTY2OKilx8BuaCjCaQh6qjLDItegHtLnOwdyvgIptICgjK7Ly2oRtpsJ3WQto6XkQuZXMm4oo1jYqb/s1600/image001.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 202px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgKmmR6yQFOKU8fvUfYorPGAL0Cps-c0ev4Pqxm9OAZZ26MDgeA87x9KfKTY2OKilx8BuaCjCaQh6qjLDItegHtLnOwdyvgIptICgjK7Ly2oRtpsJ3WQto6XkQuZXMm4oo1jYqb/s320/image001.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5524629433374139874" /&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-family: arial, sans-serif; font-size: 13px; border-collapse: collapse; "&gt;&lt;p style="margin-bottom: 0.0001pt; "&gt;&lt;b&gt;Component model&lt;/b&gt; – Any software application requires a component model that provides structure and coherence to an application. The component model used by DAF is JavaBeans, managed in a component container called the Nucleus (read about it in below section).&lt;/p&gt;&lt;p style="margin-bottom: 0.0001pt; "&gt;&lt;b&gt;Data access model&lt;/b&gt; – All recent Web applications require information access and an ability to manipulate data. DAF’s data access and manipulation model is called the Data Anywhere Architecture.&lt;/p&gt;&lt;p style="margin-bottom: 0.0001pt; "&gt;&lt;b&gt;Messaging model&lt;/b&gt; – Responsive applications require a messaging architecture that allows events to be fired and appropriate actions to execute on the occurrence of those events elsewhere in the system. The JMS messaging model implemented by DAF is managed by a service called the Patch Bay.&lt;/p&gt;&lt;p style="margin-bottom: 0.0001pt; "&gt;Although not classified as a ‘main pillar,’ the user interface (UI) programming model by which these previously mentioned elements can be used is also important, and an area where ATG has innovated ahead of the general market. DAF uses JavaBeans as the primary, lightweight, component model. These JavaBean components are configured and linked together by .properties files within Nucleus. The DAF application framework can also be run on all major J2EE application servers (JBoss, WebLogic, WebSphere etc.).&lt;/p&gt;&lt;p style="margin-bottom: 0.0001pt; "&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0.0001pt; "&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0.0001pt; "&gt;&lt;b&gt;Nucleus&lt;/b&gt; is a ‘light weight’, yet feature-rich component model. It adheres to the “Inversion of Control” design pattern, whereby software components are discrete entities coupled together by the Nucleus container, rather than through direct reference. The services and structure provided by Nucleus makes building Java applications much simpler than when starting with the base set of Java and J2EE services. It promotes good interface-based programming principles and helps application developers take a modular approach, resulting in more modularized, maintainable, and understandable applications.&lt;/p&gt;&lt;p style="margin-bottom: 0.0001pt; "&gt;Nucleus is DAF’s component namespace for building applications from JavaBeans. Nucleus allows the assembly of applications through simple configuration files that specify what components are used by the application, what properties they should have, and how components hook together. Nucleus itself provides no application-specific functionality, since it is only a container in which components live, discover, and interact with each other. It is the collection of components that make up the functionality of an overall application. Nucleus organizes these application components into a hierarchical namespace.&lt;/p&gt;&lt;p style="margin-bottom: 0.0001pt; "&gt;A lot of what makes Nucleus special is encapsulated in the following core areas:&lt;/p&gt;&lt;p style="margin-bottom: 0.0001pt; "&gt;&lt;b&gt;Component creation and administration – &lt;/b&gt;Nucleus provides a simple way to write new components. It is a simple process to take any Java object and allow it to act as a component in Nucleus. Nucleus takes on the task of creating and initializing components. A very useful aspect of Nucleus is that applications don’t need to contain code to create instances of components. Instead, components can be created and administered through configuration files that specify the component and the initial values of its properties. If needed, administrators can alter the properties of ‘live’ components within the application. The component instances are then initialized automatically at start up time, rather than programmatically created. Nucleus employs a ‘lazy instantiation’ policy for creating components. One component is only created at the point it is referenced by another.&lt;/p&gt;&lt;p style="margin-bottom: 0.0001pt; "&gt;&lt;b&gt;Component layering and combination –&lt;/b&gt; Nucleus provides a convenient way to modify and extend component properties by organizing configuration files into layers. This layering allows application developers to add new components or override the settings of existing ones without modifying the configuration files shipped by ATG. Nucleus automatically combines the layers at application start-up. These layers are organized into ‘modules’ so the associated Java class files can be maintained with the configuration files, simplifying application maintenance and upgrade.&lt;/p&gt;&lt;p style="margin-bottom: 0.0001pt; "&gt;&lt;b&gt;Component scoping –&lt;/b&gt; To further increase its usefulness as a component model for Web applications, Nucleus makes it very easy for application developers to set the scope of their components. The scope can be set to ‘global’, ‘session’, or ‘request’,. Nucleus takes care of how the components are managed so that developers do not have to do any specific coding.&lt;/p&gt;&lt;p style="margin-bottom: 0.0001pt; "&gt;Nucleus includes a large number of out-of-the-box generalized service components that can be used in many ways within an application. Service components include TCP Request Services, Scheduler Services, ID Generation Services, Resource Pools, Queues, Email Senders and Listeners, and many more. Each Nucleus service has a unique Nucleus name. For example, the default javax.sql.DataSource component is located at /atg/dynamo/service/jdbc/&lt;wbr&gt;JTDataSource&lt;/p&gt;&lt;p style="margin-bottom: 0.0001pt; "&gt;It is clear that emerging models typically tackle one or the other element of DAF but not everything. Hibernate tackles the data access problem, Struts tackles the UI development problem, etc. It is often left to the application developer to figure out how these different initiatives are used together.&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;/span&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  &gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: arial, sans-serif; font-size: 13px; border-collapse: collapse; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: arial, sans-serif; font-size: 13px; border-collapse: collapse; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgKmmR6yQFOKU8fvUfYorPGAL0Cps-c0ev4Pqxm9OAZZ26MDgeA87x9KfKTY2OKilx8BuaCjCaQh6qjLDItegHtLnOwdyvgIptICgjK7Ly2oRtpsJ3WQto6XkQuZXMm4oo1jYqb/s72-c/image001.png" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">3</thr:total></item><item><title>playing around equals() and hashCode() methods of Object class</title><link>http://sajidn.blogspot.com/2010/04/playing-around-equals-and-hashcode.html</link><category>Java</category><category>object</category><author>noreply@blogger.com (Nads)</author><pubDate>Fri, 16 Apr 2010 07:42:00 +0100</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-27924845.post-5319672667399782856</guid><description>Why, when &amp;amp; how of overriding equals() and hashCode() methods of Object class&lt;br /&gt;&lt;br /&gt;As we know the Object class has five non final methods namely equals, hashCode, toString, clone, and finalize.&lt;br /&gt;I believe they were primarily designed to be overridden according to specific needs.&lt;br /&gt;I am just trying to summarize my understanding around these two methods. When should we override these and how we should implement these etc. Any comments/discussion/feedback would be highly appreciated on above topics.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Overriding the equals method -&lt;/span&gt;&lt;br /&gt;Ideally you should override the equals method when you want to specify the rules of logical equality of objects. Two objects are logically equal if they have the same values for the same uniqueness attributes.&lt;br /&gt;&lt;br /&gt;We need to implement an equivalence relation between non null object references. The rules to override equals method can be found on sun's site. They basically talk about Symmetry , Reflectivity Consistency &amp;amp; Transitivity among the objects.&lt;br /&gt;&lt;br /&gt;The rule for the null reference is that any non-null reference value x, x.equals(null) must return false.&lt;br /&gt;&lt;br /&gt;Object class already provides an implementation of the equals method. It is&lt;br /&gt;          public boolean equals(Object obj) {&lt;br /&gt;                             return (this == obj);&lt;br /&gt;          }&lt;br /&gt;&lt;br /&gt;The method above simply tests for equality of object references. This is not always the desired behavior, particularly when comparing Strings. That's why the String class provides its own implementation of the equals method.&lt;br /&gt;&lt;br /&gt;For example suppose we have a Student class which has a constructor like this.&lt;br /&gt;        public Student(String name, String id, int age) { …}&lt;br /&gt;&lt;br /&gt;Now if you create two student objects with the same attributes, you'd want those two objects to be the same student. If you write a code like below then you will get false as result.&lt;br /&gt;&lt;br /&gt;       Student student1 = new Student("sajid", "456789", 28);&lt;br /&gt;       Student student2 = new Student("sajid", "456789", 28);&lt;br /&gt;       System.out.println(student1.equals(student2));&lt;br /&gt;&lt;br /&gt;Result is false because student1 and student2 are different references and the equals method being used here (from the object class) is comparing references. So here we need to override the equals method to check for our uniqueness attributes for our comparisons to work.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;Caution: we should not do a mistake of overloading the equals method instead of overriding it. So the argument to the equals method must be an Object.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;See the difference between below two statements. You will understand it.&lt;br /&gt;        public boolean equals(Object obj)&lt;br /&gt;        public boolean equals(Student student)&lt;br /&gt;&lt;br /&gt;A good implementation of equals should start with symmetry test. Means x.equals(x) should always return true. If this it self is failing then no need to proceed further.&lt;br /&gt;&lt;br /&gt;Another important point would be to test the instance of the object passed to equals() method. People might pass a String object instead of Object in the argument. Here instanceof operator helps us to check this.&lt;br /&gt;&lt;br /&gt;instanceof also eliminates the trivial cases when the object passed is null because it returns false if the first argument is null.&lt;br /&gt;&lt;br /&gt;So whole implementation might look like this …&lt;br /&gt;&lt;br /&gt;       public boolean equals(Object obj) {&lt;br /&gt;                   if (this == obj) {&lt;br /&gt;                             return true;&lt;br /&gt;                    }&lt;br /&gt;&lt;br /&gt;                   if ( !(obj instanceof Student)) {&lt;br /&gt;                              return false;&lt;br /&gt;                    }&lt;br /&gt;&lt;br /&gt;          Student student = (Student)obj;&lt;br /&gt;                           return age == student.getAge() &amp;amp;&amp;amp; name.equals(student.getName())&lt;br /&gt;                                                  &amp;amp;&amp;amp; id.equals(student.getId());&lt;br /&gt;&lt;br /&gt;           }&lt;br /&gt;&lt;br /&gt;Now System.out.println(student1.equals(student2));  will print true.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Food for thought -&lt;/span&gt;&lt;br /&gt;Note that we deliberately compared the ages (integers) first. The &amp;amp;&amp;amp; operator has short circuit behavior, meaning that if the age comparison fails the rest of the comparison is abandoned and false is returned. It is therefore a performance advantage to have the cheaper (memory wise) tests first and the more memory demanding tests last.&lt;br /&gt;&lt;br /&gt;Is there any situation when we should not override equals() ?&lt;br /&gt;Yes. When the references check is sufficient. This is when each instance of the class is unique. Other situation could be when parent class already has implemented the desired behavior then we need not bother.&lt;br /&gt;&lt;br /&gt;Now whenever we override the equals method, we must also override the hashCode method.&lt;br /&gt;So let's move ahead to hashing …&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Overriding the hashCode method -&lt;/span&gt;&lt;br /&gt;Why hashcode ? Simple the hashCode method is supported for the benefit of hash based collections. Basically this hash code value is used by hash based collections such as Hashtable, HashMap, HashSet, etc. for storing, retrieving, sorting, and other data structure operations.&lt;br /&gt;&lt;br /&gt;The contract says that If two objects are equal according to the equals(Object) method, then calling the hashCode method on each of the two objects must produce the same integer result. It also says that the hashCode method must consistently return the same integer, provided no information used in equals comparisons on the object is modified.&lt;br /&gt;&lt;br /&gt;It further says that It is not required that if two objects are unequal according to the equals method, then calling the hashCode method on each of the two objects must produce distinct integer results.&lt;br /&gt;&lt;br /&gt;So equal objects must have equal hashCodes. An easy way to ensure that this condition is always satisfied is to use the same attributes used in determining equality in determining the hashCode. Now we should realize why it is important to override hashCode every time we override equals.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;The story of  hashtable and buckets .. (Some useful history)&lt;/span&gt; -&lt;br /&gt;we can think a hash table as a group of buckets. When you add a key-value pair, the key's hashCode is used to determine which bucket to put the mapping.&lt;br /&gt;Similarly when you call the get method with a key on the hash table, the key's hashCode is used to determine in which bucket the mapping was stored. This is the bucket that is searched (sequentially) for the mapping.&lt;br /&gt;If you have two "equal" objects but with different hashCodes, then the hash table will see them as different objects and put them in different buckets. Similarly you can only retrieve an object from a hash table by passing an object with the same hashCode as the object you are trying to retrieve. If no matching hashCode is found, null is returned.&lt;br /&gt;So let's say it again, "Equal objects must have equal hashCodes".&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;The best hashcode approach - &lt;/span&gt;&lt;br /&gt;We should try to make all unequal objects have unequal hashCodes. This means each mapping is stored in its own bucket. This is the optimal case for the hash table and results in linear search times because only the correct bucket needs to be searched for. Once the correct bucket is found, the search is complete. That's why the API docs said&lt;br /&gt;&lt;br /&gt;"However, the programmer should be aware that producing distinct integer results for unequal objects may improve the performance of hash tables."&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;How do I implement hashCode ?&lt;/span&gt;&lt;br /&gt;Well we want it to be linked to the equals method in some way and so it must use the same attributes as the equals method.&lt;br /&gt;&lt;br /&gt;The hashCode method signature in Object class is -&lt;br /&gt;         public native int hashCode();&lt;br /&gt;&lt;br /&gt;The key thing to note here is that the method returns an integer. This means that we should try to get an integer representation of all the attributes that were used to determine equality in the equals method. The trick is that we should get this integer representation in a way that ensures that we always get the same int value for the same attribute value.&lt;br /&gt;Once we have the integers, it's up to us to find a way of combining them into one integer that represents the hashCode for our object.&lt;br /&gt;&lt;br /&gt;Whatever algorithm we use, we must make sure that the result is always an integer and will be the same integer returned for equal objects.&lt;br /&gt;So how do we determine the hashCodes for the attributes themselves?&lt;br /&gt;&lt;br /&gt;For the individual attributes values, you can use the following popular approach&lt;br /&gt;(Source: http://bytes.com/topic/java/insights/723476-overriding-equals-hashcode-methods  )&lt;br /&gt;&lt;ul&gt;&lt;li&gt;For boolean variables use 0 if it's true and 1 if it's false.&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Converting byte, char or short to int is easy. Just cast to int. The result is always the same for the same value of the attribute.&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;A long is bigger than an int. You can use (int)value^(value &gt;&gt;&gt; 32) . This is the method used by the java.lang.Long class.&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;If the field is a float, use Float.floatToIntBits(value).&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;If the field is a double, use Double.doubleToLongBits(value), and then hash the resulting long using the method above for long type.&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;If the field is an object reference and this class's equals method compares the field by recursively invoking equals, then recursively invoke hashCode on the field as well.&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;If the value of the field is null, return 0 (or some other constant, 0 is more common but you might want to distinguish it from the boolean case).&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Finally, if the field is an array, go through each element and compute each element's hashCode value. Use the sum of the hashCodes as the hashCode for the array attribute.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Let's look at some ways of doing it.&lt;br /&gt;A common approach is to choose a multiplier, say p, and then compute an int value by applying the following formula&lt;br /&gt;        hashCode = multiplier * hashCode + attribute's hashCode for all the attributes.&lt;br /&gt;&lt;br /&gt;For three atributes (a1, a2, a3), the hashCode would be computed in the following steps&lt;br /&gt;       hashCode =  multiplier  * hashCode  +  a1's hashCode //step 1&lt;br /&gt;         hashCode =  multiplier  * hashCode  +  a2's hashCode //step 2&lt;br /&gt;       hashCode =  multiplier  * hashCode  +  a3's hashCode //step 3&lt;br /&gt;&lt;br /&gt;Now putting it all together our Student class will look like this. .&lt;br /&gt;&lt;br /&gt;   public class Student {&lt;br /&gt;   String id;&lt;br /&gt;   String name;&lt;br /&gt;   int age;&lt;br /&gt;   private volatile int hashCode = 0;&lt;br /&gt;&lt;br /&gt;   public Student(String name , String id, int age) {&lt;br /&gt;       this.name = name;&lt;br /&gt;       this.id = id;&lt;br /&gt;       this.age = age;&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;    String getName() {&lt;br /&gt;       return name;&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;   int getAge() {&lt;br /&gt;       return age;&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;   String getId() {&lt;br /&gt;       return id;&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;   public boolean equals(Object obj) {&lt;br /&gt;       if(this == obj) {&lt;br /&gt;           return true;&lt;br /&gt;       }&lt;br /&gt;       if (!(obj instanceof Student)) {&lt;br /&gt;           return false;&lt;br /&gt;      }&lt;br /&gt;       Student student = (Student)obj;&lt;br /&gt;       return age == student.getAge() &amp;amp;&amp;amp; name.equals(student.getName())&lt;br /&gt;       &amp;amp;&amp;amp; id.equals(student.getId());&lt;br /&gt;&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;   public int hashCode () {&lt;br /&gt;       final int multiplier = 23; // we should use any prime number here like 23 or 31 etc&lt;br /&gt;       if (hashCode == 0) {&lt;br /&gt;           int code = 133;&lt;br /&gt;           code = multiplier * code + age;&lt;br /&gt;           code = multiplier * code + id.hashCode();&lt;br /&gt;           code = multiplier * code + name.hashCode();&lt;br /&gt;           hashCode = code;&lt;br /&gt;       }&lt;br /&gt;       return hashCode;&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt; &lt;br /&gt;To test we can use a main() method in the above class like this -&lt;br /&gt;&lt;br /&gt;public static void main(String args[]){&lt;br /&gt; Student student1 = new Student("sajid", "456789", 28);&lt;br /&gt; Student student2 = new Student("sajid", "456789", 28);&lt;br /&gt; System.out.println(student1.equals(student2)); // prints true&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;Another way to implement hashCode would be&lt;br /&gt;Similar to how we implemented hashCode our hash code calculation must involve all attributes of the class that contribute to the equality comparison of the class. For Car class example, the following would work:&lt;br /&gt;public int hashCode()&lt;br /&gt;{&lt;br /&gt;int hash = 7;&lt;br /&gt;hash = 31 * hash +&lt;br /&gt;  (null == this.licensePlate ? 0 : this.licensePlate.hashCode());&lt;br /&gt;hash = 31 * hash +&lt;br /&gt;  (null == this.vinNumber ? 0 : this.vinNumber.hashCode());&lt;br /&gt;&lt;br /&gt;return hash;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;Java provides an implementation of hashCode for built-in classes such as String and other wrapper classes. If you have an int data type that is part of your equals comparison you can simply add, subtract, multiply, or divide it into your hash code value.&lt;br /&gt;Several APIs demand that the user must implement the hashCode() method. The reason is that these APIs are using hash based containers (like HashMap) to have a fast means of managing lots of objects (always comparing objects using equals() would need endless time).&lt;br /&gt;&lt;br /&gt;I will try to further dig into the internals of hashing and difference between different hash based collections and the best performance strategies around it.</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>Lets come forward</title><link>http://sajidn.blogspot.com/2010/01/lets-come-forward.html</link><category>childhelp</category><category>donate</category><author>noreply@blogger.com (Nads)</author><pubDate>Wed, 27 Jan 2010 12:36:00 GMT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-27924845.post-510836912670699716</guid><description>I don't know but it really gives me eternal happiness to help people around and i feel that's the way to live.&lt;br /&gt;we should always be concerned about others around. in recent times i have come across quite some statements , calls , adds , interview which attracts me to come forward for such good cause.&lt;br /&gt;&lt;br /&gt;I came across -&lt;br /&gt;&lt;a href="http://www.childlineindia.org.in/"&gt;CHILDLINE (1098)&lt;/a&gt; -- Country's first toll-free tele-helpline for street children in distress. just dail 1098.&lt;br /&gt;&lt;a href="http://www.worldvision.org/"&gt;WorldVision&lt;/a&gt; -- Here you can sponsor a child across the world , you can donate money and much more.&lt;br /&gt;&lt;br /&gt;I am trying to spread the word here and would like to get involved with them. i think your contribution is important no matter big or small.&lt;br /&gt;I also feel that these organizations need to come forward and bring greater transparency to common people. there is help available but most of the time people dont know about it.&lt;br /&gt;I request you all to share your experiences and association if any with any such organizations/NGOs.</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>The brand Sapient</title><link>http://sajidn.blogspot.com/2010/01/brand-sapient.html</link><category>sapient</category><author>noreply@blogger.com (Nads)</author><pubDate>Wed, 20 Jan 2010 10:32:00 GMT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-27924845.post-5626614686917474724</guid><description>Its been more than a year now at Sapient , i still remember few people used to tell me don't change company ,its not a good time(at end of 2008) , few told that you cant even survive 6 months at sapient due to slogging etc.. but i feel i made a right move and joined the right company.&lt;br /&gt;I can say its my kind of place. some of the things I really enjoy here is the open culture and unlimited freedom.&lt;br /&gt;Sapient is very unique in its own way. we follow different kind of processes here to make things work better.&lt;br /&gt;&lt;br /&gt;Some of the terms i learned/heard being at sapient (call it sapient lingo)--&lt;br /&gt;Retrofit&lt;br /&gt;Caveats&lt;br /&gt;Sync-up&lt;br /&gt;Gated&lt;br /&gt;Head-on&lt;br /&gt;Triage&lt;br /&gt;&lt;br /&gt;I wanna thank Rupinder for providing me an opportunity to join Sapient in the worst of economic conditions way back in Oct,2008.&lt;br /&gt;i am lucky indeed :-)</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total></item><item><title>Why just 3 Idiots? Why not the entire nation?</title><link>http://sajidn.blogspot.com/2009/12/why-just-3-idiots-why-not-entire-nation.html</link><category>movie</category><author>noreply@blogger.com (Nads)</author><pubDate>Mon, 28 Dec 2009 18:20:00 GMT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-27924845.post-7493164632624209613</guid><description>I truly enjoyed the latest flick of &lt;a href="http://www.aamirkhan.com/blog/login.php"&gt;Aamir&lt;/a&gt;, the preacher. It’s interesting to see Bollywood coming up with good messages  and this time for better education system. Its second tryst by Aamir, the first one was taare zamine per, where he tried to show the challenges around a student’s life and now again in 3 idiots he has brought some good points about the process we follow in colleges.&lt;br /&gt;Although this movie is loosely based on &lt;a href="http://www.chetanbhagat.com/blog/"&gt;Chetan bhagat&lt;/a&gt;’s 5 point someone but it has got its own charm and an entertaining way to put across the strong message. I believe it’s a good eye opener for all Indians including students, parents, teachers and honorable education minister. It a must watch for one and all. If you think you will go and get tickets at show time then you are wrong. Go with an advance booking. By the way I managed to get ticket in black :-)</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>Signed Applet and how to make a signed jar</title><link>http://sajidn.blogspot.com/2009/12/signed-applet-and-how-to-make-signed.html</link><category>applet</category><category>jar</category><author>noreply@blogger.com (Nads)</author><pubDate>Tue, 22 Dec 2009 12:05:00 GMT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-27924845.post-4897762571105331823</guid><description>&lt;span style="font-size: 100%;"&gt;&lt;span style="font-family: arial;"&gt;A signed Applet is a trusted Applet (applet will reside inside a jar). In order to get access to the file system all jar files in an application must be signed. By default for security reasons, Java applets are contained within a sandbox.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;This means that the applets can’t do anything, which might be threatening to the user’s machine (e.g. reading, writing or deleting local files, putting up message windows, or querying various system parameters).&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;Early browsers had no provisions for Java applets to reach outside of the sandbox. Recent browsers, however have provisions to give “trusted” applets the ability to work outside the sandbox. For this power to be granted to one of your applets, the applet’s code must be digitally signed with your unforgettable digital ID, and then the user must state that he trusts applets signed with your ID. The mistrusted applet can request to have privileges outside the sand box but will have to request the user for privileges every time it executes. But with the trusted applet the user can choose to remember their answer to the request, which means they won’t be asked again.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;Let’s see what it takes to create your own signed applets.  There are few tools given by &lt;a href="http://java.sun.com/"&gt;Sun&lt;/a&gt; to create your own signed applets. It mainly comprise of three main steps.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;   (1) First step is generating a keypair with the keytool.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;          &lt;span style="font-weight: bold;"&gt;D:/j2sdk1.5/bin/keytool -genkey -alias green -keypass greenpass&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;         green is the alias for the keypair, and greenpass is the password to access that alias(or keypair). The keypair&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;         will be stored in the file .keystore in your homedirectory unless you specify otherwise.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;         You'll be asked a lot of questions, you may lie or just hit enter!&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;    (2) Create a self-signed certificate.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;         &lt;span style="font-weight: bold;"&gt;D:/j2sdk1.5/bin/keytool -selfcert -alias green&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;    (3) After the keypair has been generated the jar file can be signed with jarsigner.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;          jarsigner YourJarFileName alias&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;          &lt;span style="font-weight: bold;"&gt;d:/j2sdk1.5/bin/jarsigner Test.jar green&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;          It will ask for both passwords specified while generating the keys.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;The jar file has now been signed. Now you can distribute this jar file to anyone or it can run on any system with the privilege to access your file system.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;&lt;span style="font-weight: bold;"&gt;Note&lt;/span&gt;: this signature is only valid for 6 months. After that it will expire so you probably need to sign it again after 6 months. &lt;/span&gt;&lt;/span&gt;</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>New features in Java 6.0 (Mustang)</title><link>http://sajidn.blogspot.com/2009/11/new-features-in-java-60-mustang.html</link><category>Java</category><category>jdbc</category><category>Sun</category><author>noreply@blogger.com (Nads)</author><pubDate>Tue, 3 Nov 2009 14:10:00 GMT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-27924845.post-2461365874314648542</guid><description>In this &lt;a href="http://java.sun.com/"&gt;Java &lt;/a&gt;release SUN has not done much changes at language level rather major enhancement is done in core, XML and desktop sections.&lt;br /&gt;&lt;br /&gt;Any feature or enhancement in Java is encapsulated in the form of a JSR (Java Specification Request) which details the need for a specific functionality to be available in the Java Platform that can be used by Applications. These JSR's will be reviewed and released by Java Expert Groups (JEG).&lt;br /&gt;&lt;br /&gt;Following the major list of features (JSRs') that comes with the Java 6.0.&lt;br /&gt;&lt;br /&gt;    Java Compiler API (JSR 199)&lt;br /&gt;    JDBC 4.0 (JSR 221)&lt;br /&gt;    Scripting in the Java Platform (JSR 223)&lt;br /&gt;    Pluggable Annotation Processing API (JSR 269)&lt;br /&gt;    Common Annotations (JSR 250)&lt;br /&gt;    Java API for XML Based Web Services - 2.0 (JSR 224)&lt;br /&gt;    JAXB 2.0 (JSR 222)&lt;br /&gt;    Web Services Metadata (JSR 181)&lt;br /&gt;    Streaming API for XML (JSR 173)&lt;br /&gt;    XML Digital Signature (JSR 105)&lt;br /&gt;    Java Class File Specification Update (JSR 202)&lt;br /&gt;&lt;br /&gt;I will try to explore and explain each of these JSR's in my future articles.&lt;br /&gt;The latest java 6.0 can be &lt;a href="http://java.sun.com/javase/downloads/index.jsp"&gt;downloaded from here&lt;/a&gt;. I am really excited about scripting framework, scripting API and new JDBC 4.0 API in this release.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;List of top 10 features in Java SE 6.0 adapted from  &lt;a href="http://java.sun.com/developer/technicalArticles/J2SE/Desktop/javase6/beta2.html"&gt;SUN's site&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Web Services&lt;/span&gt;&lt;br /&gt;You get first-class support for writing XML web service client applications (death of Apache Axis?). No more messing with the plumbing (unless you really want to). You can also expose your APIs as .NET interoperable web services with a simple annotation.&lt;br /&gt;For developers who want to handle XML directly Mustang adds new parsing and XML to Java object-mapping APIs, previously only available in Java EE platform implementations or the Java Web Services Pack.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Scripting&lt;/span&gt;&lt;br /&gt;You can now mix in JavaScript technology with your Java technology source code, useful for prototyping. Also useful when you have teams with a variety of skill sets.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Database&lt;/span&gt;&lt;br /&gt;The final Mustang development kit will co-bundle the all-Java JDBC database, Java DB based on Apache Derby. This should enable developers (new to Java) to get a jumpstart on java development.&lt;br /&gt;Developers will get the updated JDBC 4.0, which focuses on ease of use. It contains many feature additions like support for XML as an SQL datatype and better integration of Binary Large OBjects (BLOBs) and Character Large OBjects (CLOBs) into the APIs. Additional features that improve ease of use include removal of some JDBC boilerplate and some of the new annotations that make SQL strings embed better into your JDBC application - like decorating your getAllUsers() method with an @Query(sql="select * from user") annotation, and that being all you need. More annotation love for you.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;More Desktop APIs&lt;/span&gt;&lt;br /&gt;GUI developers get a large number of new tricks to play like the ever popular yet newly incorporated SwingWorker utility to help you with threading in GUI apps, JTable sorting and filtering, and a new facility for quick splash screens to quiet impatient users.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Monitoring and Management&lt;/span&gt;&lt;br /&gt;The really big deal here is that you don't need do anything special to the startup to be able to attach on demand with any of the monitoring and management tools in the Java SE platform. Mustang adds yet more diagnostic information, and we co-bundled the infamous memory-heap analysis tool Jhat for forensic explorations of those core dumps.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Compiler Access&lt;/span&gt;&lt;br /&gt;Really aimed at people who create tools for Java development and for frameworks like JavaServer Pages (JSP) or Personal Home Page construction kit (PHP) engines that need to generate a bunch of classes on demand, the compiler API opens up programmatic access to javac for in-process compilation of dynamically generated Java code. Finally you don't have to save your code as a Java files and invoke javac to generate a classfile, a clumsy procedure at best.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Pluggable Annotations&lt;/span&gt;&lt;br /&gt;Java tool and framework vendors (and you) can define annotations and have core API support for plugging in and executing the processors that do the heavy lifting. It seamlessly integrates your custom annotations .&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Desktop Deployment&lt;/span&gt;&lt;br /&gt;Better platform look-and-feel in Swing technology, LCD text rendering (more clarity on LCD monitors like Vista), and snappier GUI performance overall. Java applications can integrate better with the native platform with things like new access to the platform's System Tray and Start menu. At long last, Mustang unifies the Java Plug-in technology and Java WebStart engines, which just makes sense. Installation of the Java WebStart application got a much needed makeover.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Security&lt;/span&gt;&lt;br /&gt;Mustang simplified the job of security administrators by providing various new ways to access platform-native security services, such as native Public Key Infrastructure (PKI) and cryptographic services on Microsoft Windows for secure authentication and communication, Java Generic Security Services (Java GSS) and Kerberos services for authentication, and access to LDAP servers for authenticating users.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Quality, Compatibility, Stability&lt;/span&gt;&lt;br /&gt;Sun has around 80,000 test cases and several million lines of code testing conformance. People have been downloading (and testing) snapshots of Mustang for the last 15 months and filing bugs. So even before beta several quality and regression issues were fixed. Performance is claimed to be better than J2SE 5.</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">2</thr:total></item><item><title>LAKSHYA program by HCL for freshers</title><link>http://sajidn.blogspot.com/2009/10/lakshya-program-by-hcl-for-freshers.html</link><category>fresher</category><category>hcl</category><author>noreply@blogger.com (Nads)</author><pubDate>Fri, 30 Oct 2009 07:41:00 GMT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-27924845.post-4224729538490678777</guid><description>HCL has introduced a unique program called LAKSHYA for 2009 and 2010 BE and MCA freshers where by they are proving an assured placement after the completion of this program. other features include live industry project wi-fi campus.&lt;br /&gt;&lt;br /&gt;To register visit &lt;a href="http://www.hclcdc.in/lakshya/registration.aspx"&gt;click here&lt;/a&gt;.  see the details below in their advertisement.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjvn1ZpBxIeE8R_SdU-pih5naN_awzHKTAqRO0t46p5oQxTe2guQBzb2qK9K3dbyYZUeXPXwRn9JeWHxubP-n9VCYh36L5ZFxDNikbUcs1Fgu1J_T5pSymxaASB0E_csRcCHV1Q/s1600-h/hcl.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 369px; height: 400px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjvn1ZpBxIeE8R_SdU-pih5naN_awzHKTAqRO0t46p5oQxTe2guQBzb2qK9K3dbyYZUeXPXwRn9JeWHxubP-n9VCYh36L5ZFxDNikbUcs1Fgu1J_T5pSymxaASB0E_csRcCHV1Q/s400/hcl.JPG" alt="" id="BLOGGER_PHOTO_ID_5400151170108371634" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;One thing i don't appreciate about this program is that students need to buy HCL laptops.&lt;br /&gt;i don't know why people have hidden agenda behind good work. I feel HCL is doing this program to boost their own revenues rather than helping the fresh talents :-)</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjvn1ZpBxIeE8R_SdU-pih5naN_awzHKTAqRO0t46p5oQxTe2guQBzb2qK9K3dbyYZUeXPXwRn9JeWHxubP-n9VCYh36L5ZFxDNikbUcs1Fgu1J_T5pSymxaASB0E_csRcCHV1Q/s72-c/hcl.JPG" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>Stock details on Gtalk by Zibika.com</title><link>http://sajidn.blogspot.com/2009/08/stock-details-on-gtalk-by-zibikacom.html</link><category>Stocks</category><author>noreply@blogger.com (Nads)</author><pubDate>Wed, 26 Aug 2009 13:53:00 +0100</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-27924845.post-5146151296927368432</guid><description>It's really cool to see &lt;a href="http://www.zibika.com/"&gt;Zibika &lt;/a&gt;stockbot, a chat-based stock search service that allows users to check the current stock prices on BSE and NSE through Google Talk.&lt;br /&gt;You just need to add &lt;a href="market.zibika@gmail.com"&gt;market.zibika@gmail.com&lt;/a&gt;  as a friend in GTalk.&lt;br /&gt;Its so easy to use it, now no need to login to different sites to check stock prices. They have few very simple commands like&lt;br /&gt;&lt;br /&gt;Sensex                    --&gt; gives you sensex current points&lt;br /&gt;Nifty                       --&gt; gives you nifty current points&lt;br /&gt;BSE jindal steel     --&gt; gives you current price of jindal steel on BSE&lt;br /&gt;NSE axis bank      --&gt; gives you current price of axis bank on NSE&lt;br /&gt;&lt;br /&gt;Type BSE or NSE followed by the company name.&lt;br /&gt;&lt;br /&gt;I think stockbot is a good idea, since many people check stock updates on their mobile, it becomes easy and convenient. Secondly if you are traveling then you don't need to open your laptop and check for the updates.&lt;br /&gt;&lt;br /&gt;See the screen below.&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEipShjULF7QauSYGYgU0HFEJnVZ0Ji4s_Aj1YlMVa6vEXv8LWgPj4NBUEr6FGqhob7IzIfB-9NbpRtTmnDONlHZCWHV6sGvXJ0nnwVUzDHq32bmzrQ-3JI2VBL9Aol00nZWBFPo/s1600-h/Zibika.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 153px; height: 320px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEipShjULF7QauSYGYgU0HFEJnVZ0Ji4s_Aj1YlMVa6vEXv8LWgPj4NBUEr6FGqhob7IzIfB-9NbpRtTmnDONlHZCWHV6sGvXJ0nnwVUzDHq32bmzrQ-3JI2VBL9Aol00nZWBFPo/s320/Zibika.JPG" alt="" id="BLOGGER_PHOTO_ID_5374256863159591362" border="0" /&gt;&lt;/a&gt;</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEipShjULF7QauSYGYgU0HFEJnVZ0Ji4s_Aj1YlMVa6vEXv8LWgPj4NBUEr6FGqhob7IzIfB-9NbpRtTmnDONlHZCWHV6sGvXJ0nnwVUzDHq32bmzrQ-3JI2VBL9Aol00nZWBFPo/s72-c/Zibika.JPG" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>TATA second career for women professionals</title><link>http://sajidn.blogspot.com/2009/08/tata-second-career-for-women.html</link><category>Careers</category><category>tata</category><author>noreply@blogger.com (Nads)</author><pubDate>Fri, 14 Aug 2009 06:47:00 +0100</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-27924845.post-7227218920671086196</guid><description>&lt;span style=";font-family:Arial;font-size:85%;"  &gt;&lt;a href="http://www.tata.com/"&gt;Tata group&lt;/a&gt;, a well know name and pride of nation. Truly Tata’s are the creative thinkers.&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;You name it they have it. From steel to cars, from software to hardware they are into everything. The brand is so huge that it has impact on our daily lives. The good thing is that they into education as well. Their new initiative is really a big leap towards women empowerment. Yes I am talking about &lt;a href="http://www.tatasecondcareer.com/"&gt;second career program for women by Tata group&lt;/a&gt;. &lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;    &lt;p&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;This programme is currently open only to women who have work experience of at least 4 continuous years or more in specific domain areas.&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;Currently SCIP II is open only to candidates who are currently residing in Mumbai and &lt;st1:place st="on"&gt;&lt;st1:city st="on"&gt;Bangalore&lt;/st1:city&gt;&lt;/st1:place&gt;. SCIP II is extension of SCIP which once again focuses on women professionals. This program is intended to spread over 6 months.&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;There is no placement guarantee at the end of the project.However, the women professionals have the option of exploring full-time employment on mutually acceptable terms with the respective Group Company.&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;They are looking for people from various fields like &lt;/span&gt;&lt;span style="letter-spacing: 0.35pt;font-family:Arial;font-size:85%;"  &gt;Marketing&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;o:p&gt; , &lt;/o:p&gt;&lt;/span&gt;&lt;span style="letter-spacing: 0.35pt;font-family:Arial;font-size:85%;"  &gt;Sales&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;o:p&gt; , &lt;/o:p&gt;&lt;/span&gt;&lt;span style="letter-spacing: 0.35pt;font-family:Arial;font-size:85%;"  &gt;Advertising / Communications&lt;span style="font-weight: bold;"&gt;,&lt;/span&gt; &lt;/span&gt;&lt;span style="letter-spacing: 0.35pt;font-family:Arial;font-size:85%;"  &gt;Human Resource Management &lt;span style="font-weight: bold;"&gt;,&lt;/span&gt; &lt;/span&gt;&lt;span style="letter-spacing: 0.35pt;font-family:Arial;font-size:85%;"  &gt;Finance / Accounting&lt;span style="font-weight: bold;"&gt;,&lt;/span&gt; &lt;/span&gt;&lt;span style="letter-spacing: 0.35pt;font-family:Arial;font-size:85%;"  &gt;Legal &lt;span style="font-weight: bold;"&gt;,&lt;/span&gt; &lt;/span&gt;&lt;span style="letter-spacing: 0.35pt;font-family:Arial;font-size:85%;"  &gt;Manufacturing , &lt;/span&gt;&lt;span style="letter-spacing: 0.35pt;font-family:Arial;font-size:85%;"  &gt;Engineering&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;o:p&gt; , &lt;/o:p&gt;&lt;/span&gt;&lt;span style="letter-spacing: 0.35pt;font-family:Arial;font-size:85%;"  &gt;IT&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;o:p&gt;, &lt;/o:p&gt;&lt;/span&gt;&lt;span style="letter-spacing: 0.35pt;font-family:Arial;font-size:85%;"  &gt;Corporate Planning,&lt;/span&gt;&lt;span style="letter-spacing: 0.35pt;font-family:Arial;font-size:85%;"  &gt; Hospitality &lt;span style="font-weight: bold;"&gt;,&lt;/span&gt; &lt;/span&gt;&lt;span style="letter-spacing: 0.35pt;font-family:Arial;font-size:85%;"  &gt;Retail &lt;span style="font-weight: bold;"&gt;, &lt;/span&gt;&lt;/span&gt;&lt;span style="letter-spacing: 0.35pt;font-family:Arial;font-size:85%;"  &gt;CSR&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;o:p&gt; , &lt;/o:p&gt;&lt;/span&gt;&lt;span style="letter-spacing: 0.35pt;font-family:Arial;font-size:85%;"  &gt;Other Corporate Functions.&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;span style="letter-spacing: 0.35pt;font-family:Arial;font-size:85%;"  &gt; &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;st1:place st="on"&gt;&lt;span style="font-family:Arial;"&gt;Main&lt;/span&gt;&lt;/st1:place&gt;&lt;/span&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt; highlights of the program&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;ul&gt;&lt;li&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;Attractive project stipend up to Rs. 4 lakhs&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;Flexi-time ‘Live’ business projects in Mumbai &amp;amp; Bangalore&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;Project presentation to Tata Team&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;Management Development Programme conducted by Tata Management&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;Training Centre&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;HR helpline during the programme&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;Work certificate&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;Last date for registration 20&lt;sup&gt;th&lt;/sup&gt; Aug&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;. &lt;/span&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;Visit the &lt;a href="http://www.tatasecondcareer.com/inner/the_criteria_faq.asp"&gt;FAQ&lt;/a&gt; section for more details on their site and spread the word &lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;span style="font-size:85%;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;p&gt;&lt;/p&gt;</description><enclosure length="0" url="http://www.tatasecondcareer.com"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><itunes:explicit>no</itunes:explicit><itunes:subtitle>Tata group, a well know name and pride of nation. Truly Tata’s are the creative thinkers.You name it they have it. From steel to cars, from software to hardware they are into everything. The brand is so huge that it has impact on our daily lives. The good thing is that they into education as well. Their new initiative is really a big leap towards women empowerment. Yes I am talking about second career program for women by Tata group. This programme is currently open only to women who have work experience of at least 4 continuous years or more in specific domain areas.Currently SCIP II is open only to candidates who are currently residing in Mumbai and Bangalore. SCIP II is extension of SCIP which once again focuses on women professionals. This program is intended to spread over 6 months. There is no placement guarantee at the end of the project.However, the women professionals have the option of exploring full-time employment on mutually acceptable terms with the respective Group Company. They are looking for people from various fields like Marketing , Sales , Advertising / Communications, Human Resource Management , Finance / Accounting, Legal , Manufacturing , Engineering , IT , Corporate Planning, Hospitality , Retail , CSR , Other Corporate Functions. Main highlights of the program Attractive project stipend up to Rs. 4 lakhs Flexi-time ‘Live’ business projects in Mumbai &amp;amp; BangaloreProject presentation to Tata TeamManagement Development Programme conducted by Tata ManagementTraining CentreHR helpline during the programmeWork certificate Last date for registration 20th Aug. Visit the FAQ section for more details on their site and spread the word</itunes:subtitle><itunes:author>noreply@blogger.com (Nads)</itunes:author><itunes:summary>Tata group, a well know name and pride of nation. Truly Tata’s are the creative thinkers.You name it they have it. From steel to cars, from software to hardware they are into everything. The brand is so huge that it has impact on our daily lives. The good thing is that they into education as well. Their new initiative is really a big leap towards women empowerment. Yes I am talking about second career program for women by Tata group. This programme is currently open only to women who have work experience of at least 4 continuous years or more in specific domain areas.Currently SCIP II is open only to candidates who are currently residing in Mumbai and Bangalore. SCIP II is extension of SCIP which once again focuses on women professionals. This program is intended to spread over 6 months. There is no placement guarantee at the end of the project.However, the women professionals have the option of exploring full-time employment on mutually acceptable terms with the respective Group Company. They are looking for people from various fields like Marketing , Sales , Advertising / Communications, Human Resource Management , Finance / Accounting, Legal , Manufacturing , Engineering , IT , Corporate Planning, Hospitality , Retail , CSR , Other Corporate Functions. Main highlights of the program Attractive project stipend up to Rs. 4 lakhs Flexi-time ‘Live’ business projects in Mumbai &amp;amp; BangaloreProject presentation to Tata TeamManagement Development Programme conducted by Tata ManagementTraining CentreHR helpline during the programmeWork certificate Last date for registration 20th Aug. Visit the FAQ section for more details on their site and spread the word</itunes:summary><itunes:keywords>Careers, tata</itunes:keywords></item></channel></rss>