<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>betweenGo &#187; Repository</title>
	<atom:link href="http://betweengo.com/category/atg/repository/feed/" rel="self" type="application/rss+xml" />
	<link>http://betweengo.com</link>
	<description>We make Ruby on Rails easy.  We make ATG easy.</description>
	<lastBuildDate>Tue, 08 May 2012 19:30:33 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Set ATG Repository Item Date or Timestamp Properties to the Current Time</title>
		<link>http://betweengo.com/2010/04/19/set-atg-repository-date-timestamp-properties-to-current-time/</link>
		<comments>http://betweengo.com/2010/04/19/set-atg-repository-date-timestamp-properties-to-current-time/#comments</comments>
		<pubDate>Mon, 19 Apr 2010 13:05:00 +0000</pubDate>
		<dc:creator>Frank Kim</dc:creator>
				<category><![CDATA[Repository]]></category>
		<category><![CDATA[date]]></category>
		<category><![CDATA[timestamp]]></category>
		<category><![CDATA[useNowForDefault]]></category>

		<guid isPermaLink="false">http://betweengo.com/2010/04/19/set-atg-repository-item-date-or-timestamp-properties-to-the-current-time/</guid>
		<description><![CDATA[*Time* Ticking away&#8230; by Michel Filion This is a neat trick for automatically setting a date or timestamp property to the current time.  I learned it while perusing the ATG Repository Guide. Date and Timestamp Properties A repository item can use properties whose values are dates or timestamps, with the value set to the current [...]
Related posts:<ol>
<li><a href='http://betweengo.com/2007/11/17/date-and-timestamp-repository-data-types/' rel='bookmark' title='Date and Timestamp Repository Data Types'>Date and Timestamp Repository Data Types</a></li>
<li><a href='http://betweengo.com/2008/05/28/invalid-column-type-sqlexception-with-atg-repository/' rel='bookmark' title='Invalid column type SQLException with ATG Repository'>Invalid column type SQLException with ATG Repository</a></li>
<li><a href='http://betweengo.com/2007/02/07/user-defined-property-types/' rel='bookmark' title='ATG Repository User-Defined Property Types'>ATG Repository User-Defined Property Types</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p align="center"><a href="http://www.flickr.com/photos/mike9alive/1032525361/"><img style="display: block; float: none; margin-left: auto; margin-right: auto" title="*Time* Ticking away... on Flickr" src="http://farm2.static.flickr.com/1070/1032525361_ca7c9e404d.jpg" alt="*Time* Ticking away... on Flickr" /></a> <a title="*Time* Ticking away... on Flickr" href="http://www.flickr.com/photos/mike9alive/1032525361/">*Time* Ticking away&#8230;</a> by <a title="Flickr: Michel Filion's Photostream" href="http://www.flickr.com/photos/mike9alive/">Michel Filion</a></p>
<p>This is a neat trick for automatically setting a date or timestamp property to the current time.  I learned it while perusing the <a title="ATG 6 Repository Guide" href="http://www.atg.com/repositories/ContentCatalogRepository_en/manuals/ATG6.4.0/repository/">ATG Repository Guide</a>.</p>
<blockquote><p><strong><a title="Date and Timestamp Properties" href="http://www.atg.com/repositories/ContentCatalogRepository_en/manuals/ATG6.4.0/repository/repository0705.html">Date and Timestamp Properties</a></strong></p>
<p>A repository item can use properties whose values are dates or timestamps, with the value set to the current date or time, using the <a title="Date (Java 2 Platform SE 5.0)" href="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Date.html">java.util.Date</a>, <a title="Date (Java 2 Platform SE 5.0)" href="http://java.sun.com/j2se/1.5.0/docs/api/java/sql/Date.html">java.sql.Date</a>, or <a title="Timestamp (Java 2 Platform SE 5.0)" href="http://java.sun.com/j2se/1.5.0/docs/api/java/sql/Timestamp.html">java.sql.Timestamp</a> classes. You can have a property whose value is set to the current time or date at the moment a repository item is created. You can do this by setting the feature descriptor attribute useNowForDefault. For example:</p>
<pre>&lt;property name="creationDate" data-type="timestamp"&gt;
  &lt;attribute name="useNowForDefault" value="true"/&gt;
&lt;/property&gt;</pre>
<p>For more information about this technique, see the <a title="Assigning FeatureDescriptorValues with the &lt;attribute&gt; Tag" href="http://www.atg.com/repositories/ContentCatalogRepository_en/manuals/ATG6.4.0/repository/repository0712.html#assigningfeaturedescriptorvalues01">Assigning FeatureDescriptorValues with the &lt;attribute&gt; Tag</a> section in this chapter.</p></blockquote>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fbetweengo.com%2F2010%2F04%2F19%2Fset-atg-repository-date-timestamp-properties-to-current-time%2F&amp;title=Set%20ATG%20Repository%20Item%20Date%20or%20Timestamp%20Properties%20to%20the%20Current%20Time" id="wpa2a_2"><img src="http://betweengo.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p><p>Related posts:<ol>
<li><a href='http://betweengo.com/2007/11/17/date-and-timestamp-repository-data-types/' rel='bookmark' title='Date and Timestamp Repository Data Types'>Date and Timestamp Repository Data Types</a></li>
<li><a href='http://betweengo.com/2008/05/28/invalid-column-type-sqlexception-with-atg-repository/' rel='bookmark' title='Invalid column type SQLException with ATG Repository'>Invalid column type SQLException with ATG Repository</a></li>
<li><a href='http://betweengo.com/2007/02/07/user-defined-property-types/' rel='bookmark' title='ATG Repository User-Defined Property Types'>ATG Repository User-Defined Property Types</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://betweengo.com/2010/04/19/set-atg-repository-date-timestamp-properties-to-current-time/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Specifying One-to-Many Relationship in ATG Repositories</title>
		<link>http://betweengo.com/2010/01/21/specifying-one-to-many-relationship-in-atg-repositories/</link>
		<comments>http://betweengo.com/2010/01/21/specifying-one-to-many-relationship-in-atg-repositories/#comments</comments>
		<pubDate>Thu, 21 Jan 2010 18:00:00 +0000</pubDate>
		<dc:creator>Frank Kim</dc:creator>
				<category><![CDATA[Repository]]></category>
		<category><![CDATA[Ruby on Rails]]></category>
		<category><![CDATA[sql]]></category>

		<guid isPermaLink="false">http://betweengo.com/2010/01/21/specifying-one-to-many-relationship-in-atg-repositories/</guid>
		<description><![CDATA[(Photo: Monta driving by Yogma) Specifying one-to-many relationships is ridiculously easy in Ruby on Rails.&#160; Unfortunately it’s not so straight-forward in ATG repositories. First you specify the “belongs to” relationship.&#160; In this example the player belongs to a team. &#60;item-descriptor name=&#34;player&#34;&#62; &#60;table name=&#34;team_players&#34; type=&#34;auxiliary&#34; id-column-names=&#34;team_id&#34; shared-table-sequence=&#34;1&#34;&#62; &#60;property name=&#34;team&#34; column-name=&#34;team_id&#34; item-type=&#34;team&#34; /&#62; &#60;/table&#62; &#60;/item-descriptor&#62; Then you [...]
Related posts:<ol>
<li><a href='http://betweengo.com/2005/07/28/user-defined-property-type-gotchas/' rel='bookmark' title='user-defined property type gotcha&#8217;s'>user-defined property type gotcha&#8217;s</a></li>
<li><a href='http://betweengo.com/2009/07/29/atg-product-bundles/' rel='bookmark' title='ATG Product Bundles'>ATG Product Bundles</a></li>
<li><a href='http://betweengo.com/2008/08/01/best-practices-creating-tables/' rel='bookmark' title='Best Practices for Creating Tables'>Best Practices for Creating Tables</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p style="text-align: center"><a href="http://www.flickr.com/photos/yogma/2547140259/"><img title="Monta driving on Flickr" alt="Monta driving on Flickr" src="http://farm4.static.flickr.com/3265/2547140259_ae74aa0f7c.jpg" /></a>     <br />(Photo: <a title="Monta driving on Flickr" href="http://www.flickr.com/photos/yogma/2547140259/">Monta driving</a> by <a title="Flickr: Yogma&#39;s Photostream" href="http://www.flickr.com/photos/yogma/">Yogma</a>)</p>
<p>Specifying one-to-many relationships is <a title="A Guide to Active Record Associations" href="http://guides.rubyonrails.org/association_basics.html#the-has-many-association">ridiculously easy in Ruby on Rails</a>.&#160; Unfortunately it’s <a title="One-to-Many Relationships: Mutli-Valued Properties" href="http://www.atg.com/repositories/ContentCatalogRepository_en/manuals/ATG2006.3/repository/repository0606.html">not so straight-forward in ATG repositories</a>.</p>
<p>First you specify the “belongs to” relationship.&#160; In this example the player belongs to a team.</p>
<pre>&lt;item-descriptor name=&quot;player&quot;&gt;
  &lt;table name=&quot;team_players&quot; type=&quot;auxiliary&quot; id-column-names=&quot;team_id&quot; shared-table-sequence=&quot;1&quot;&gt;
    &lt;property name=&quot;team&quot; column-name=&quot;team_id&quot; item-type=&quot;team&quot; /&gt;
  &lt;/table&gt;
&lt;/item-descriptor&gt;</pre>
<p>Then you specify the “has many” relationship.&#160; In this example the team has many players.</p>
<pre>&lt;item-descriptor name=&quot;team&quot;&gt;
  &lt;table name=&quot;team_players&quot; type=&quot;multi&quot; id-column-names=&quot;player_id&quot; shared-table-sequence=&quot;2&quot;&gt;
    &lt;property name=&quot;players&quot; column-name=&quot;player_id&quot; data-type=&quot;set&quot; component-item-type=&quot;player&quot; /&gt;
  &lt;/table&gt;
&lt;/item-descriptor&gt;</pre>
<p>Note the trick is specifying the “shared-table-sequence.”</p>
<p>Here is the SQL for the table that specifies this relationship in our example.</p>
<pre>CREATE TABLE team_players
(
  team_id     VARCHAR2(40)  NOT NULL,
  player_id   VARCHAR2(40)  NOT NULL,
  CONSTRAINT team_players_pk PRIMARY KEY (team_id, player_id),
  CONSTRAINT team_players_players_fk foreign key (player_id) references players (id),
  CONSTRAINT team_players_team_fk foreign key (team_id) references teams (id)
);</pre>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fbetweengo.com%2F2010%2F01%2F21%2Fspecifying-one-to-many-relationship-in-atg-repositories%2F&amp;title=Specifying%20One-to-Many%20Relationship%20in%20ATG%20Repositories" id="wpa2a_4"><img src="http://betweengo.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p><p>Related posts:<ol>
<li><a href='http://betweengo.com/2005/07/28/user-defined-property-type-gotchas/' rel='bookmark' title='user-defined property type gotcha&#8217;s'>user-defined property type gotcha&#8217;s</a></li>
<li><a href='http://betweengo.com/2009/07/29/atg-product-bundles/' rel='bookmark' title='ATG Product Bundles'>ATG Product Bundles</a></li>
<li><a href='http://betweengo.com/2008/08/01/best-practices-creating-tables/' rel='bookmark' title='Best Practices for Creating Tables'>Best Practices for Creating Tables</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://betweengo.com/2010/01/21/specifying-one-to-many-relationship-in-atg-repositories/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>The Dangers of Custom ATG Repository ID&#8217;s.</title>
		<link>http://betweengo.com/2009/11/12/the-dangers-of-custom-atg-repository-ids/</link>
		<comments>http://betweengo.com/2009/11/12/the-dangers-of-custom-atg-repository-ids/#comments</comments>
		<pubDate>Thu, 12 Nov 2009 18:50:23 +0000</pubDate>
		<dc:creator>Frank Kim</dc:creator>
				<category><![CDATA[Repository]]></category>
		<category><![CDATA[ecommerce]]></category>

		<guid isPermaLink="false">http://betweengo.com/2009/11/12/the-dangers-of-custom-atg-repository-ids/</guid>
		<description><![CDATA[(Photo: El Alma del Ebro by Paulo Brandão) Recently I was creating some SKU and product items using the ACC and I decided to create them with custom ID’s.&#160; The items were created fine but then I discovered I couldn’t add these items to the cart, I couldn’t use them in promotions, I couldn’t set [...]
Related posts:<ol>
<li><a href='http://betweengo.com/2010/11/14/load-atg-order/' rel='bookmark' title='Load ATG Order'>Load ATG Order</a></li>
<li><a href='http://betweengo.com/2011/06/22/adding-a-new-link-to-a-commerce-pipeline/' rel='bookmark' title='Adding a New Link to a Commerce Pipeline'>Adding a New Link to a Commerce Pipeline</a></li>
<li><a href='http://betweengo.com/2007/11/17/date-and-timestamp-repository-data-types/' rel='bookmark' title='Date and Timestamp Repository Data Types'>Date and Timestamp Repository Data Types</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p style="text-align: center"><a href="http://www.flickr.com/photos/paulobrandao/2788050844/"><img title="El Alma del Ebro on Flickr" alt="El Alma del Ebro on Flickr" src="http://farm4.static.flickr.com/3061/2788050844_e28da32923.jpg" /></a></p>
<p style="text-align: center">(Photo: <a title="El Alma del Ebro on Flickr" href="http://www.flickr.com/photos/paulobrandao/2788050844/">El Alma del Ebro</a> by <a title="Flickr: Paulo Brandão&#39;s photostream" href="http://www.flickr.com/photos/paulobrandao/">Paulo Brandão</a>)</p>
<p>Recently I was creating some SKU and product items using the ACC and I decided to create them with custom ID’s.&#160; The items were created fine but then I discovered I couldn’t add these items to the cart, I couldn’t use them in promotions, I couldn’t set up inventory for them, etc.&#160; I continually got exceptions like these.</p>
<pre>/atg/commerce/order/OrderManager	---	CONTAINER:atg.service.pipeline.RunProcessException: An exception was thrown from the context of the link named [setCatalogRefs].; SOURCE:atg.commerce.CommerceException: Unable to retrieve catalog reference for item with id ci90000002 and catalogRefId sku_free_01.
/atg/commerce/order/OrderManager		at atg.service.pipeline.PipelineChain.runProcess(PipelineChain.java:371)
/atg/commerce/order/OrderManager		at atg.service.pipeline.PipelineChainContext.runProcess(PipelineChainContext.java:185)
/atg/commerce/order/OrderManager		at atg.service.pipeline.PipelineManager.runProcess(PipelineManager.java:453)
/atg/commerce/order/OrderManager		at atg.commerce.order.OrderImpl.ensureContainers(OrderImpl.java:1261)
/atg/commerce/order/OrderManager		at atg.commerce.order.OrderImpl.getCommerceItems(OrderImpl.java:691)
/atg/commerce/order/OrderManager	....stack trace CROPPED
/atg/commerce/order/OrderManager	Caused by :atg.commerce.CommerceException: Unable to retrieve catalog reference for item with id ci90000002 and catalogRefId sku_free_01.
/atg/commerce/order/OrderManager		at atg.commerce.order.processor.ProcSetCatalogRefs.loadCatalogRef(ProcSetCatalogRefs.java:267)
/atg/commerce/order/OrderManager		at atg.commerce.order.processor.ProcSetCatalogRefs.runProcess(ProcSetCatalogRefs.java:121)
/atg/commerce/order/OrderManager		at atg.service.pipeline.PipelineLink.runProcess(PipelineLink.java:233)
/atg/commerce/order/OrderManager		at atg.service.pipeline.PipelineChain.runProcess(PipelineChain.java:343)
/atg/commerce/order/OrderManager		at atg.service.pipeline.PipelineChainContext.runProcess(PipelineChainContext.java:185)
/atg/commerce/order/OrderManager		at atg.service.pipeline.PipelineManager.runProcess(PipelineManager.java:453)
/atg/commerce/order/OrderManager		at atg.commerce.order.OrderImpl.ensureContainers(OrderImpl.java:1261)
/atg/commerce/order/OrderManager		at atg.commerce.order.OrderImpl.getCommerceItems(OrderImpl.java:691)
/atg/commerce/order/OrderManager	....stack trace CROPPED after 10 lines.</pre>
<p>After pulling out my hair out for a few hours I realized the problem was because I had accidentally put a space at the end of the custom ID I had created. Too bad you can&#8217;t determine that from the stack trace.</p>
<p><strong>Lesson Learned #1: Don’t put spaces in your custom ID’s, especially at the end.</strong></p>
<p><strong>Lesson Learned #2: Custom ID’s are a luxury you might want to avoid. <img src='http://betweengo.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </strong></p>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fbetweengo.com%2F2009%2F11%2F12%2Fthe-dangers-of-custom-atg-repository-ids%2F&amp;title=The%20Dangers%20of%20Custom%20ATG%20Repository%20ID%26rsquo%3Bs." id="wpa2a_6"><img src="http://betweengo.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p><p>Related posts:<ol>
<li><a href='http://betweengo.com/2010/11/14/load-atg-order/' rel='bookmark' title='Load ATG Order'>Load ATG Order</a></li>
<li><a href='http://betweengo.com/2011/06/22/adding-a-new-link-to-a-commerce-pipeline/' rel='bookmark' title='Adding a New Link to a Commerce Pipeline'>Adding a New Link to a Commerce Pipeline</a></li>
<li><a href='http://betweengo.com/2007/11/17/date-and-timestamp-repository-data-types/' rel='bookmark' title='Date and Timestamp Repository Data Types'>Date and Timestamp Repository Data Types</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://betweengo.com/2009/11/12/the-dangers-of-custom-atg-repository-ids/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>DynamicBeanMap</title>
		<link>http://betweengo.com/2009/02/18/dynamicbeanmap/</link>
		<comments>http://betweengo.com/2009/02/18/dynamicbeanmap/#comments</comments>
		<pubDate>Wed, 18 Feb 2009 15:25:42 +0000</pubDate>
		<dc:creator>Frank Kim</dc:creator>
				<category><![CDATA[Repository]]></category>
		<category><![CDATA[ATG]]></category>

		<guid isPermaLink="false">http://betweengo.com/?p=432</guid>
		<description><![CDATA[Previously I posted about using the atg.beans.DynamicBeanMap class to wrap a RepositoryItem so that it is accessible via JSTL.  However it turns out this is not a great solution. If we want to access a simple property in a RepositoryItem wrapped in a DynamicBeanMap it is relatively straightforward.  For example, ${user.name} However if we want [...]
Related posts:<ol>
<li><a href='http://betweengo.com/2008/05/09/accessing-repositoryitems-with-jstl/' rel='bookmark' title='Accessing RepositoryItems with JSTL'>Accessing RepositoryItems with JSTL</a></li>
<li><a href='http://betweengo.com/2008/06/10/sorting-nested-properties/' rel='bookmark' title='Sorting Nested Properties'>Sorting Nested Properties</a></li>
<li><a href='http://betweengo.com/2005/07/28/user-defined-property-type-gotchas/' rel='bookmark' title='user-defined property type gotcha&#8217;s'>user-defined property type gotcha&#8217;s</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Previously I posted about using the atg.beans.DynamicBeanMap class to wrap a RepositoryItem so that it is <a title="Accessing RepositoryItems with JSTL" href="http://betweengo.com/2008/05/09/accessing-repositoryitems-with-jstl/">accessible via JSTL</a>.  However it turns out this is not a great solution.</p>
<p>If we want to access a simple property in a RepositoryItem wrapped in a DynamicBeanMap it is relatively straightforward.  For example,</p>
<pre>${user.name}</pre>
<p>However if we want to access a RepositoryItem property like this,</p>
<pre>${user.address}</pre>
<p>then we end up getting a StackOverflowError as the DynamicBeanMap spins going back forth between the user RepositoryItem and the address RepositoryItem.</p>
<p>Interestingly enough accessing a simple property from the RepositoryItem property works fine.</p>
<pre>${user.address.city}</pre>
<p>One solution is to set the recursive argument to false when creating the DynamicBeanMap.</p>
<pre>DynamicBeanMap itemBean = new DynamicBeanMap(pValue, false);</pre>
<p>When you do this the following will work correctly.</p>
<pre>${user.address}</pre>
<p>However this no longer works.</p>
<pre>${user.address.city}</pre>
<p>We ended up abandoning the DynamicBeanMap and creating a library of strongly typed repository item wrapper proxy objects.</p>
<p><a title="Incident 00128683 - StackOverflowError with DynamicBeanMap" href="https://www.atg.com/esupport/mycases/?myCasesAction=viewCase&amp;inquiryId=128683">ATG Support</a> helped me tremendously to figure out what was going on.  They suggested an alternative which we never tried because of the large impact it would have on our JSP.</p>
<blockquote><p>What I determined in looking at this further is that the DynamicBeanMap class is not really documented for customer use, but there is a DSP/DSPEL tag called &#8220;tomap&#8221; that uses this class that we do document.  See the appendix in our <a title="2006.3 Page Developer's&lt;br &gt;&lt;/a&gt; guide" href="https://www.atg.com/repositories/ContentCatalogRepository_en/manuals/ATG2006.3/pagedev /index.html?tW=300&amp;tD=toc.html&amp;mD=pagedev1234.html">2006.3 Page Developer&#8217;s guide</a>.</p>
<p>So, this tag would avoid this problem since it does have an undocumented &#8220;recursive&#8221; attribute that defaults to &#8220;false&#8221;, but I think it might be preferable to set it to &#8220;true&#8221; and use another undocumented option.   After using the &#8220;tomap&#8221; tag with recursive=true, you can then use a _realObject property to unwrap your &#8220;final&#8221; object being accessed.</p>
<p>So if your tag is:</p>
<pre>&lt;dspel:getvalueof var="address" param="user.address" /&gt;</pre>
<p>You can change it to use:</p>
<pre>&lt;dspel:getvalueof var="address" param="user.address._realObject" /&gt;</pre>
<p>Or if you were doing:</p>
<pre>&lt;dspel:valueof param="user" /&gt;</pre>
<p>you could use:</p>
<pre>&lt;dspel:valueof param="user._realObject" /&gt;</pre>
<p>Basically you just unwrap whatever end/final object you&#8217;re trying to get to with _realObject.   Since we can&#8217;t see exactly what code called hashCode that caused the StackOverflowError, I can&#8217;t be certain this will avoid the StackOverflowError, but I suspect it will.</p>
<p>This solution will have the benefit of having minimal impact on your ability to access properties with JSTL.</p>
<p>I&#8217;ve entered a <a title="PR #155848: Need to document some features of dsp/dspel:tomap tag" href="https://www.atg.com/esupport/bugs/?FullViewBug=ViewBug&amp;bugId=155848">PR #155848</a> about some of these properties not being documented.</p></blockquote>
<p>Also <a title="PR #81771: Add the ability to recursively access repository items in JSTL" href="https://www.atg.com/esupport/bugs/?FullViewBug=ViewBug&amp;bugId=81771">PR #81771</a> was submitted requesting <span class="bodyTitle">the ability to recursively access repository items in JSTL.</span></p>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fbetweengo.com%2F2009%2F02%2F18%2Fdynamicbeanmap%2F&amp;title=DynamicBeanMap" id="wpa2a_8"><img src="http://betweengo.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p><p>Related posts:<ol>
<li><a href='http://betweengo.com/2008/05/09/accessing-repositoryitems-with-jstl/' rel='bookmark' title='Accessing RepositoryItems with JSTL'>Accessing RepositoryItems with JSTL</a></li>
<li><a href='http://betweengo.com/2008/06/10/sorting-nested-properties/' rel='bookmark' title='Sorting Nested Properties'>Sorting Nested Properties</a></li>
<li><a href='http://betweengo.com/2005/07/28/user-defined-property-type-gotchas/' rel='bookmark' title='user-defined property type gotcha&#8217;s'>user-defined property type gotcha&#8217;s</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://betweengo.com/2009/02/18/dynamicbeanmap/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Repository creating tables automatically</title>
		<link>http://betweengo.com/2008/08/01/repository-creating-tables-automatically/</link>
		<comments>http://betweengo.com/2008/08/01/repository-creating-tables-automatically/#comments</comments>
		<pubDate>Fri, 01 Aug 2008 14:48:33 +0000</pubDate>
		<dc:creator>Frank Kim</dc:creator>
				<category><![CDATA[Hibernate]]></category>
		<category><![CDATA[Repository]]></category>
		<category><![CDATA[ATG]]></category>
		<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://betweengo.com/?p=256</guid>
		<description><![CDATA[Recently we noticed while running some ATG unit tests that tables were being created by the ATG repository if they had not already been created by our SQL scripts.  This was a functionality that I was unaware of but apparently it is not unique, Hibernate does this too.  I could not find any documentation about [...]
Related posts:<ol>
<li><a href='http://betweengo.com/2008/08/01/best-practices-creating-tables/' rel='bookmark' title='Best Practices for Creating Tables'>Best Practices for Creating Tables</a></li>
<li><a href='http://betweengo.com/2008/07/03/content-repository-in-acc/' rel='bookmark' title='Content Repository in ACC'>Content Repository in ACC</a></li>
<li><a href='http://betweengo.com/2008/05/28/invalid-column-type-sqlexception-with-atg-repository/' rel='bookmark' title='Invalid column type SQLException with ATG Repository'>Invalid column type SQLException with ATG Repository</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Recently we noticed while running some ATG unit tests that tables were being created by the ATG repository if they had not already been created by our SQL scripts.  This was a functionality that I was unaware of but apparently it is not unique, Hibernate does this too.  I could not find any documentation about this nor could I determine how to turn it off.</p>
<p>The ATG repository creates these tables using the repository definition and the defaults for column width and data type.  It does not seem to warn that it is creating these tables.</p>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fbetweengo.com%2F2008%2F08%2F01%2Frepository-creating-tables-automatically%2F&amp;title=Repository%20creating%20tables%20automatically" id="wpa2a_10"><img src="http://betweengo.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p><p>Related posts:<ol>
<li><a href='http://betweengo.com/2008/08/01/best-practices-creating-tables/' rel='bookmark' title='Best Practices for Creating Tables'>Best Practices for Creating Tables</a></li>
<li><a href='http://betweengo.com/2008/07/03/content-repository-in-acc/' rel='bookmark' title='Content Repository in ACC'>Content Repository in ACC</a></li>
<li><a href='http://betweengo.com/2008/05/28/invalid-column-type-sqlexception-with-atg-repository/' rel='bookmark' title='Invalid column type SQLException with ATG Repository'>Invalid column type SQLException with ATG Repository</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://betweengo.com/2008/08/01/repository-creating-tables-automatically/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Fixing IllegalArgumentException in ACC</title>
		<link>http://betweengo.com/2008/07/22/fixing-illegalargumentexception-in-acc/</link>
		<comments>http://betweengo.com/2008/07/22/fixing-illegalargumentexception-in-acc/#comments</comments>
		<pubDate>Tue, 22 Jul 2008 19:06:26 +0000</pubDate>
		<dc:creator>Frank Kim</dc:creator>
				<category><![CDATA[ACC]]></category>
		<category><![CDATA[Repository]]></category>
		<category><![CDATA[ATG]]></category>

		<guid isPermaLink="false">http://betweengo.com/?p=221</guid>
		<description><![CDATA[Recently I was unable to create an item using the ACC because of an IllegalArgumentException. java.lang.IllegalArgumentException: Attempt to set property named view (ContentList:800007)  with value = moduleTemplate:2200004 (class=class atg.adapter.gsa.GSAItem). This property failed due to a property type specific test. Enable loggingDebug for details. It turned out to be a simple issue of the wrong case. [...]
Related posts:<ol>
<li><a href='http://betweengo.com/2008/07/03/content-repository-in-acc/' rel='bookmark' title='Content Repository in ACC'>Content Repository in ACC</a></li>
<li><a href='http://betweengo.com/2005/07/28/user-defined-property-type-gotchas/' rel='bookmark' title='user-defined property type gotcha&#8217;s'>user-defined property type gotcha&#8217;s</a></li>
<li><a href='http://betweengo.com/2007/12/06/viewing-expert-level-information-in-the-acc/' rel='bookmark' title='Viewing Expert-Level Information in the ACC'>Viewing Expert-Level Information in the ACC</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Recently I was unable to create an item using the ACC because of an IllegalArgumentException.</p>
<blockquote>
<pre>java.lang.IllegalArgumentException:  Attempt to set
property named view (ContentList:800007)  with value =
moduleTemplate:2200004 (class=class atg.adapter.gsa.GSAItem).
This property  failed due to a property type specific test.
Enable loggingDebug for  details.</pre>
</blockquote>
<p>It turned out to be a simple issue of the wrong case.  The repository path for the ContentList view item was:</p>
<blockquote><pre>/Betweengo/repository/Portal</pre>
</blockquote>
<p> when it should have been<br />
<blockquote>
<pre>/betweengo/repository/Portal.</pre>
</blockquote>
<p>  This is certainly not obvious from the exception.</p>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fbetweengo.com%2F2008%2F07%2F22%2Ffixing-illegalargumentexception-in-acc%2F&amp;title=Fixing%20IllegalArgumentException%20in%20ACC" id="wpa2a_12"><img src="http://betweengo.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p><p>Related posts:<ol>
<li><a href='http://betweengo.com/2008/07/03/content-repository-in-acc/' rel='bookmark' title='Content Repository in ACC'>Content Repository in ACC</a></li>
<li><a href='http://betweengo.com/2005/07/28/user-defined-property-type-gotchas/' rel='bookmark' title='user-defined property type gotcha&#8217;s'>user-defined property type gotcha&#8217;s</a></li>
<li><a href='http://betweengo.com/2007/12/06/viewing-expert-level-information-in-the-acc/' rel='bookmark' title='Viewing Expert-Level Information in the ACC'>Viewing Expert-Level Information in the ACC</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://betweengo.com/2008/07/22/fixing-illegalargumentexception-in-acc/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Content Repository in ACC</title>
		<link>http://betweengo.com/2008/07/03/content-repository-in-acc/</link>
		<comments>http://betweengo.com/2008/07/03/content-repository-in-acc/#comments</comments>
		<pubDate>Thu, 03 Jul 2008 15:42:53 +0000</pubDate>
		<dc:creator>Frank Kim</dc:creator>
				<category><![CDATA[ACC]]></category>
		<category><![CDATA[Repository]]></category>
		<category><![CDATA[ATG]]></category>

		<guid isPermaLink="false">http://betweengo.com/?p=206</guid>
		<description><![CDATA[To display a content repository in the ACC it must be listed in the initialRepositories property of the /atg/registry/ContentRepositories component. For example: initialRepositories+=\ /betweengo/repository/Portal From the ATG Repository Guide &#62; 12. SQL Repository Reference &#62; Configuring the SQL Repository Component &#62; Registering a Content Repository: Content repositories must be added to the list of repositories [...]
Related posts:<ol>
<li><a href='http://betweengo.com/2009/07/31/how-to-add-products-to-categories-using-content-groups/' rel='bookmark' title='How to Add Products to Categories using Content Groups'>How to Add Products to Categories using Content Groups</a></li>
<li><a href='http://betweengo.com/2007/11/17/date-and-timestamp-repository-data-types/' rel='bookmark' title='Date and Timestamp Repository Data Types'>Date and Timestamp Repository Data Types</a></li>
<li><a href='http://betweengo.com/2008/05/28/invalid-column-type-sqlexception-with-atg-repository/' rel='bookmark' title='Invalid column type SQLException with ATG Repository'>Invalid column type SQLException with ATG Repository</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>To display a content repository in the ACC it must be listed in the initialRepositories property of the /atg/registry/ContentRepositories component.</p>
<p>For example:</p>
<pre>initialRepositories+=\
       /betweengo/repository/Portal</pre>
<p>From the ATG Repository Guide &gt; 12. SQL Repository Reference &gt; Configuring the SQL Repository Component &gt; Registering a Content Repository:</p>
<blockquote><p>Content repositories must be added to the list of repositories in the <code>initialRepositories</code> property of the <code>/atg/registry/ContentRepositories</code> component. This also causes the new repository to show up in the Content window of the ATG Control Center.</p></blockquote>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fbetweengo.com%2F2008%2F07%2F03%2Fcontent-repository-in-acc%2F&amp;title=Content%20Repository%20in%20ACC" id="wpa2a_14"><img src="http://betweengo.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p><p>Related posts:<ol>
<li><a href='http://betweengo.com/2009/07/31/how-to-add-products-to-categories-using-content-groups/' rel='bookmark' title='How to Add Products to Categories using Content Groups'>How to Add Products to Categories using Content Groups</a></li>
<li><a href='http://betweengo.com/2007/11/17/date-and-timestamp-repository-data-types/' rel='bookmark' title='Date and Timestamp Repository Data Types'>Date and Timestamp Repository Data Types</a></li>
<li><a href='http://betweengo.com/2008/05/28/invalid-column-type-sqlexception-with-atg-repository/' rel='bookmark' title='Invalid column type SQLException with ATG Repository'>Invalid column type SQLException with ATG Repository</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://betweengo.com/2008/07/03/content-repository-in-acc/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Invalid column type SQLException with ATG Repository</title>
		<link>http://betweengo.com/2008/05/28/invalid-column-type-sqlexception-with-atg-repository/</link>
		<comments>http://betweengo.com/2008/05/28/invalid-column-type-sqlexception-with-atg-repository/#comments</comments>
		<pubDate>Wed, 28 May 2008 16:06:20 +0000</pubDate>
		<dc:creator>Frank Kim</dc:creator>
				<category><![CDATA[Repository]]></category>
		<category><![CDATA[ATG]]></category>

		<guid isPermaLink="false">http://betweengo.com/?p=187</guid>
		<description><![CDATA[Recently I was seeing this exception. CONTAINER:atg.repository.RepositoryException; SOURCE:java.sql.SQLException: Invalid column type at atg.adapter.gsa.GSAItemDescriptor.executeQuery(GSAItemDescriptor.java:6682) at atg.adapter.gsa.GSAView.executeUncachedQuery(GSAView.java:291) at atg.adapter.gsa.GSAView.executeQuery(GSAView.java:1027) at atg.repository.rql.RqlStatement.executeQuery(RqlStatement.java:208) For the longest time I could not figure out what this meant and then it dawned on me as I laid in bed. ATG expects certain Java class types for certain repository types which correspond to [...]
Related posts:<ol>
<li><a href='http://betweengo.com/2007/11/17/date-and-timestamp-repository-data-types/' rel='bookmark' title='Date and Timestamp Repository Data Types'>Date and Timestamp Repository Data Types</a></li>
<li><a href='http://betweengo.com/2010/04/19/set-atg-repository-date-timestamp-properties-to-current-time/' rel='bookmark' title='Set ATG Repository Item Date or Timestamp Properties to the Current Time'>Set ATG Repository Item Date or Timestamp Properties to the Current Time</a></li>
<li><a href='http://betweengo.com/2007/02/07/user-defined-property-types/' rel='bookmark' title='ATG Repository User-Defined Property Types'>ATG Repository User-Defined Property Types</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Recently I was seeing this exception.</p>
<pre>
CONTAINER:atg.repository.RepositoryException; SOURCE:java.sql.SQLException: Invalid column type
        at atg.adapter.gsa.GSAItemDescriptor.executeQuery(GSAItemDescriptor.java:6682)
        at atg.adapter.gsa.GSAView.executeUncachedQuery(GSAView.java:291)
        at atg.adapter.gsa.GSAView.executeQuery(GSAView.java:1027)
        at atg.repository.rql.RqlStatement.executeQuery(RqlStatement.java:208)
</pre>
<p>For the longest time I could not figure out what this meant and then it dawned on me as I laid in bed.</p>
<p>ATG expects certain Java class types for certain repository types which correspond to certain class types.  I talk about this in my <a href="http://betweengo.com/atg/repository/2007/11/17/date-and-timestamp-repository-data-types/" title="Date and Timestamp Repository Data Types">Date and Timestamp Repository Data Types</a> post.</p>
<p>I was trying to do this RQL query:</p>
<pre>
      lastModified > ?0
</pre>
<p>with this parameter:</p>
<pre>
      java.util.Calendar param = java.util.Calendar.getInstance();
</pre>
<p>When I changed the parameter to type:</p>
<pre>
      java.sql.Timestamp
</pre>
<p>I no longer saw this exception which makes sense because the lastModified property is of data-type timestamp.</p>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fbetweengo.com%2F2008%2F05%2F28%2Finvalid-column-type-sqlexception-with-atg-repository%2F&amp;title=Invalid%20column%20type%20SQLException%20with%20ATG%20Repository" id="wpa2a_16"><img src="http://betweengo.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p><p>Related posts:<ol>
<li><a href='http://betweengo.com/2007/11/17/date-and-timestamp-repository-data-types/' rel='bookmark' title='Date and Timestamp Repository Data Types'>Date and Timestamp Repository Data Types</a></li>
<li><a href='http://betweengo.com/2010/04/19/set-atg-repository-date-timestamp-properties-to-current-time/' rel='bookmark' title='Set ATG Repository Item Date or Timestamp Properties to the Current Time'>Set ATG Repository Item Date or Timestamp Properties to the Current Time</a></li>
<li><a href='http://betweengo.com/2007/02/07/user-defined-property-types/' rel='bookmark' title='ATG Repository User-Defined Property Types'>ATG Repository User-Defined Property Types</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://betweengo.com/2008/05/28/invalid-column-type-sqlexception-with-atg-repository/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Accessing RepositoryItems with JSTL</title>
		<link>http://betweengo.com/2008/05/09/accessing-repositoryitems-with-jstl/</link>
		<comments>http://betweengo.com/2008/05/09/accessing-repositoryitems-with-jstl/#comments</comments>
		<pubDate>Sat, 10 May 2008 04:32:25 +0000</pubDate>
		<dc:creator>Frank Kim</dc:creator>
				<category><![CDATA[JSTL]]></category>
		<category><![CDATA[Page Development]]></category>
		<category><![CDATA[Repository]]></category>
		<category><![CDATA[ATG]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[JSP]]></category>

		<guid isPermaLink="false">http://betweengo.com/?p=181</guid>
		<description><![CDATA[Often we are accessing repository items in a JSP page like this. &#60;dspel:droplet name="RQLQueryForEach" var="query"&#62; &#60;dspel:param name="repository" bean="/betweengo/repository/Repository"/&#62; &#60;dspel:param name="itemDescriptor" value="Account"/&#62; &#60;dspel:param name="queryRQL" value="ALL"/&#62; &#60;dspel:setvalue param="account" paramvalue="element"/&#62; &#60;dspel:oparam name="output"&#62; &#60;dspel:valueof param="account.name"/&#62;&#60;br/&#62; &#60;/dspel:oparam&#62; &#60;/dspel:droplet&#62; With JSTL we could try to display the name like this. &#60;c:out value="${query.account.name}"/&#62; If you are using JSP 2.0 you can display [...]
Related posts:<ol>
<li><a href='http://betweengo.com/2009/08/12/atg-currency-converter-not-working-with-jstl-c-set/' rel='bookmark' title='ATG Currency Converter Not Working With JSTL c:set'>ATG Currency Converter Not Working With JSTL c:set</a></li>
<li><a href='http://betweengo.com/2009/02/18/dynamicbeanmap/' rel='bookmark' title='DynamicBeanMap'>DynamicBeanMap</a></li>
<li><a href='http://betweengo.com/2008/04/29/comparison-of-dsp-and-dspel/' rel='bookmark' title='Comparison of DSP and DSPEL'>Comparison of DSP and DSPEL</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Often we are accessing repository items in a JSP page like this.</p>
<pre>  &lt;dspel:droplet name="RQLQueryForEach" var="query"&gt;
    &lt;dspel:param name="repository" bean="/betweengo/repository/Repository"/&gt;
    &lt;dspel:param name="itemDescriptor" value="Account"/&gt;
    &lt;dspel:param name="queryRQL" value="ALL"/&gt;
    &lt;dspel:setvalue param="account" paramvalue="element"/&gt;
    &lt;dspel:oparam name="output"&gt;
      &lt;dspel:valueof param="account.name"/&gt;&lt;br/&gt;
    &lt;/dspel:oparam&gt;
  &lt;/dspel:droplet&gt;</pre>
<p>With JSTL we could try to display the name like this.</p>
<pre>      &lt;c:out value="${query.account.name}"/&gt;</pre>
<p>If you are using JSP 2.0 you can display it even more simply.</p>
<pre>      ${query.account.name}</pre>
<p>However since account is a RepositoryItem object and there is no get method for the name property (i.e. it&#8217;s not a JavaBean object) the above will fail and produce an exception.</p>
<p>To get around this you can extend ATG&#8217;s RQLQueryForEach class by overriding the protected setElementParameter.  In addition to setting the element parameter in the request you can set a new parameter which we will call &#8220;item&#8221;.  This item is of class atg.beans.DynamicBeanMap and wraps a RepositoryItem.</p>
<pre>public class RQLQueryForEachEL extends RQLQueryForEach {
  protected void setElementParameter(DynamoHttpServletRequest pRequest,
                                     String pElementName, Object pValue) {
    super.setElementParameter(pRequest, pElementName, pValue);
    DynamicBeanMap itemBean = new DynamicBeanMap(pValue, true);
    pRequest.setParameter("item", itemBean);
  }
}</pre>
<p>Now we can access the repository item with JSTL like this.</p>
<pre>      ${query.item.name}</pre>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fbetweengo.com%2F2008%2F05%2F09%2Faccessing-repositoryitems-with-jstl%2F&amp;title=Accessing%20RepositoryItems%20with%20JSTL" id="wpa2a_18"><img src="http://betweengo.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p><p>Related posts:<ol>
<li><a href='http://betweengo.com/2009/08/12/atg-currency-converter-not-working-with-jstl-c-set/' rel='bookmark' title='ATG Currency Converter Not Working With JSTL c:set'>ATG Currency Converter Not Working With JSTL c:set</a></li>
<li><a href='http://betweengo.com/2009/02/18/dynamicbeanmap/' rel='bookmark' title='DynamicBeanMap'>DynamicBeanMap</a></li>
<li><a href='http://betweengo.com/2008/04/29/comparison-of-dsp-and-dspel/' rel='bookmark' title='Comparison of DSP and DSPEL'>Comparison of DSP and DSPEL</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://betweengo.com/2008/05/09/accessing-repositoryitems-with-jstl/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>ATG Consulting Interview</title>
		<link>http://betweengo.com/2008/03/10/atg-consulting-interview/</link>
		<comments>http://betweengo.com/2008/03/10/atg-consulting-interview/#comments</comments>
		<pubDate>Tue, 11 Mar 2008 05:55:49 +0000</pubDate>
		<dc:creator>Frank Kim</dc:creator>
				<category><![CDATA[Commerce]]></category>
		<category><![CDATA[Form Handlers]]></category>
		<category><![CDATA[Java SE]]></category>
		<category><![CDATA[Nucleus]]></category>
		<category><![CDATA[Repository]]></category>
		<category><![CDATA[ATG]]></category>
		<category><![CDATA[interview]]></category>
		<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://betweengo.com/atg/2008/03/10/atg-consulting-interview/</guid>
		<description><![CDATA[Today I had the most detailed but at same time most interesting ATG consulting interview yet. Here are the questions I was asked with answers when appropriate in italics. Which versions of ATG have you worked with? What parts of ATG&#8217;s stack have you worked with? How do you compare ATG with Ruby on Rails? [...]
Related posts:<ol>
<li><a href='http://betweengo.com/2008/03/12/data-structures-interview-questions/' rel='bookmark' title='Data Structures Interview Questions'>Data Structures Interview Questions</a></li>
<li><a href='http://betweengo.com/2008/03/12/computing-basics-interview-questions/' rel='bookmark' title='Computing Basics Interview Questions'>Computing Basics Interview Questions</a></li>
<li><a href='http://betweengo.com/2005/08/08/atg-forms-do-not-work-if-action-is-an-html-page/' rel='bookmark' title='ATG forms do not work if action is an HTML page'>ATG forms do not work if action is an HTML page</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Today I had the most detailed but at same time most interesting ATG consulting interview yet.  Here are the questions I was asked with answers when appropriate in italics.</p>
<ol>
<li>Which versions of ATG have you worked with?</li>
<li>What parts of ATG&#8217;s stack have you worked with?</li>
<li>How do you compare ATG with Ruby on Rails?</li>
<li>What is Nucleus?</li>
<li>What is the ATG Repository?</li>
<li>When creating form handlers typically what ATG base class do you extend?  <em>GenericFormHandler.java</em></li>
<li>When creating droplets what ATG base class do you extend?  <em>DynamoServlet.java</em></li>
<li>What form handlers and methods do you use during checkout?  <em>ShoppingCartFormHandler, numerous handlers like handleMoveToConfirm, etc.</em></li>
<li>What does a user typically see during checkout?  <em>Add to shopping cart, login, billing and shipping address, payment, confirm, confirmation, email confirmation, shipped email.</em></li>
<li>How do you compare strings in Java?  If String a = &#8220;hello&#8221; and String b= &#8220;hello&#8221; what is a == b?  <em>True, a and b both reference the same constant string.</em></li>
</ol>
<p>In another interview I was asked these questions.</p>
<ol>
<li>What is HTTP?  How does it work?</li>
<li>If HTTP is stateless then how does a web application maintain state.</li>
</ol>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fbetweengo.com%2F2008%2F03%2F10%2Fatg-consulting-interview%2F&amp;title=ATG%20Consulting%20Interview" id="wpa2a_20"><img src="http://betweengo.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p><p>Related posts:<ol>
<li><a href='http://betweengo.com/2008/03/12/data-structures-interview-questions/' rel='bookmark' title='Data Structures Interview Questions'>Data Structures Interview Questions</a></li>
<li><a href='http://betweengo.com/2008/03/12/computing-basics-interview-questions/' rel='bookmark' title='Computing Basics Interview Questions'>Computing Basics Interview Questions</a></li>
<li><a href='http://betweengo.com/2005/08/08/atg-forms-do-not-work-if-action-is-an-html-page/' rel='bookmark' title='ATG forms do not work if action is an HTML page'>ATG forms do not work if action is an HTML page</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://betweengo.com/2008/03/10/atg-consulting-interview/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>
<!-- WP Super Cache is installed but broken. The path to wp-cache-phase1.php in wp-content/advanced-cache.php must be fixed! -->
