<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	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:media="http://search.yahoo.com/mrss"
		>
<channel>
	<title>Comments on: Project Able: a complete Java web stack</title>
	<atom:link href="http://lightbody.net/blog/2006/08/project_able_a_complete_java_w.html/feed" rel="self" type="application/rss+xml" />
	<link>http://lightbody.net/blog/2006/08/project_able_a_complete_java_w.html</link>
	<description>Patrick Lightbody's personal blog</description>
	<lastBuildDate>Sat, 05 Dec 2009 14:40:17 -0600</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: Tutorial pantas project-able &#171; CASB Development Blog</title>
		<link>http://lightbody.net/blog/2006/08/project_able_a_complete_java_w.html/comment-page-1#comment-1282</link>
		<dc:creator>Tutorial pantas project-able &#171; CASB Development Blog</dc:creator>
		<pubDate>Sun, 13 Sep 2009 03:10:59 +0000</pubDate>
		<guid isPermaLink="false">http://lightbody.net/blog/2006/8/project_able_a_complete_java_w.html#comment-1282</guid>
		<description>[...] http://lightbody.net/blog/2006/08/project_able_a_complete_java_w.html [...]</description>
		<content:encoded><![CDATA[<p>[...] <a href="http://lightbody.net/blog/2006/08/project_able_a_complete_java_w.html" rel="nofollow">http://lightbody.net/blog/2006/08/project_able_a_complete_java_w.html</a> [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: JumpStart Your Web Application &#171; Connexxion : Connecting Life with Technology</title>
		<link>http://lightbody.net/blog/2006/08/project_able_a_complete_java_w.html/comment-page-1#comment-1081</link>
		<dc:creator>JumpStart Your Web Application &#171; Connexxion : Connecting Life with Technology</dc:creator>
		<pubDate>Wed, 03 Dec 2008 00:06:16 +0000</pubDate>
		<guid isPermaLink="false">http://lightbody.net/blog/2006/8/project_able_a_complete_java_w.html#comment-1081</guid>
		<description>[...] ABLE: is a starting point for building web apps. It is not a library and is an aggregation of various open source tools to in one cohesive stack. This is similar to Appfuse and something that Rails has done to Ruby. Able uses Spring for Ioc and iBatis for OR mapping. It does not support Hibernate as of now, or at least I could not find details on that. [...]</description>
		<content:encoded><![CDATA[<p>[...] <span class="caps">ABLE</span>: is a starting point for building web apps. It is not a library and is an aggregation of various open source tools to in one cohesive stack. This is similar to Appfuse and something that Rails has done to Ruby. Able uses Spring for Ioc and iBatis for OR mapping. It does not support Hibernate as of now, or at least I could not find details on that. [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Rahul</title>
		<link>http://lightbody.net/blog/2006/08/project_able_a_complete_java_w.html/comment-page-1#comment-1062</link>
		<dc:creator>Rahul</dc:creator>
		<pubDate>Tue, 25 Nov 2008 12:22:43 +0000</pubDate>
		<guid isPermaLink="false">http://lightbody.net/blog/2006/8/project_able_a_complete_java_w.html#comment-1062</guid>
		<description>Hi Patrick, 

Did project Able graduate from the sandbox? 

Also, Ted had some questions above - i am wondering if you have any thoughts on those. 

Cheers,
Rahul</description>
		<content:encoded><![CDATA[<p>Hi Patrick, </p>
<p>Did project Able graduate from the sandbox? </p>
<p>Also, Ted had some questions above &#8211; i am wondering if you have any thoughts on those. </p>
<p>Cheers,<br />
Rahul</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Patrick Lightbody</title>
		<link>http://lightbody.net/blog/2006/08/project_able_a_complete_java_w.html/comment-page-1#comment-820</link>
		<dc:creator>Patrick Lightbody</dc:creator>
		<pubDate>Mon, 11 Dec 2006 15:26:36 +0000</pubDate>
		<guid isPermaLink="false">http://lightbody.net/blog/2006/8/project_able_a_complete_java_w.html#comment-820</guid>
		<description>Jim,
Actually, yes... we&#039;re close to a release that should be much more &quot;official&quot; and provide better support channels for folks like you.
</description>
		<content:encoded><![CDATA[<p>Jim,<br />
Actually, yes&#8230; we&#8217;re close to a release that should be much more &#8220;official&#8221; and provide better support channels for folks like you.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jim Shingler</title>
		<link>http://lightbody.net/blog/2006/08/project_able_a_complete_java_w.html/comment-page-1#comment-819</link>
		<dc:creator>Jim Shingler</dc:creator>
		<pubDate>Mon, 11 Dec 2006 03:33:41 +0000</pubDate>
		<guid isPermaLink="false">http://lightbody.net/blog/2006/8/project_able_a_complete_java_w.html#comment-819</guid>
		<description>I am a newbie to this, . . . I have run into some newbie issues and don&#039;t really want to subscribe to the email list but would be happy to look through a forum or email archive for an answer.

Any chance of setting them up.
</description>
		<content:encoded><![CDATA[<p>I am a newbie to this, . . . I have run into some newbie issues and don&#8217;t really want to subscribe to the email list but would be happy to look through a forum or email archive for an answer.</p>
<p>Any chance of setting them up.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Ted Husted</title>
		<link>http://lightbody.net/blog/2006/08/project_able_a_complete_java_w.html/comment-page-1#comment-818</link>
		<dc:creator>Ted Husted</dc:creator>
		<pubDate>Fri, 06 Oct 2006 13:28:08 +0000</pubDate>
		<guid isPermaLink="false">http://lightbody.net/blog/2006/8/project_able_a_complete_java_w.html#comment-818</guid>
		<description>&gt; /person/1/view
&gt; The automatic parameter application only works for numeric values currently.

This is a showstopper for me, since my own applications use GUIDs, which are not pure numeric strings.

According to the spec, &quot;The hash (&quot;#&quot;, ASCII 23 hex) character is reserved as a delimiter to separate the URI of an object from a fragment identifier&quot;.

* &lt;a href=&quot;http://www.w3.org/Addressing/URL/uri-spec.html&quot; rel=&quot;nofollow&quot;&gt;http://www.w3.org/Addressing/URL/uri-spec.html&lt;/a&gt;

So, why not,

/person/#ABCD/view

instead, perhaps as an alternative escape character when the attribute is not numeric.

Also, moving the parameter into the middle of the string seems like it will cause incompatiblity with other systems. For example, the Confluence macros expect that a parameter can be tacked onto the end of a query string. It might be simpler to go with URIs that use a conventional sequence


* /person/view/1
* /person/view/#1234-abcd-5678-efgh

When the &quot;default&quot; attribute is not being used, we might also support expanding the pattern

* /person/view/personid#1/flavor#vanilla

where the last token without a # is the last token in the action path.

While the latter is not a vast improvement over query strings, I understand that some proxies don&#039;t like query strings, and prefer URIs that look like references to a static resource. For composing Action URIs, this at least simplifies whether to ? or not to ?.

----


&gt; 1. Actions must be stored in com.opensymphony.able.actions.

Why not just use &quot;actions&quot; for the package? If the code doesn&#039;t belong to com.opensymphony (or org.apache), why bother with the extra verbiage?


&gt; 2. Sub-packages in that package are treated as directories.
&gt; 3. Actions must be named in the style FooAction, meaning classes that don&#039;t end in &quot;Action&quot; won&#039;t be mapped.

Given #1, is not #3 redundant? Why not just use Foo for the classname? If it is a class under the &quot;actions&quot; package, then it should be by definition an action class.


&gt; 4. Results are assumed to be found at /path/to/action-resultValue.jsp. For example, if
&gt; com.opensymphony.able.actions.foo.BarAction returns &quot;success&quot;, then Able will look for /foo/bar-success.jsp.

Hmmm, did we change the example from the Foo Action to the Bar Action?

Given a Bar action in the package actions.foo, I&#039;d prefer we make the default path /foo/Bar-success.jsp, since this corresponds to the Action package and result code exactly. (I like the way this convention lines up with the  Classname-mapping-validator.xml.)

If we are automating mapping, then we should automate mapping, and avoid introducing arbitrary inconsistencies.


&gt; 5. If that JSP can&#039;t be found, Able will try /foo/bar.jsp. This is done because there is a common pattern of sharing the
&gt; same JSP for several result values.

As mentioned, for consistency, /foo/Bar.jsp



Extension to 1/3/4/5

If we accept the best practice &quot;Link only to mappings, never to pages&quot;, are we really linking to Action classes or to server pages?

Which begs the question: Should the framework generate mappings based on Action classes or server pages?

If we are looking to see if we have this page or that page, perhaps we should do that up front and generate the mappings based on the pages.

In this case, there would be a virtual mapping for each page, which may (or may not) be augmented by an Action or other meta-helper, such as validation, conversion, or localization.

We might even consider doing both. Everything in the &quot;actions&quot; package or &quot;pages&quot; folder is mapped.


----

@Results(values = {
@Result(name = Action.SUCCESS, type = Redirect.class,
location = &quot;http://www.hostedqa.com&quot;)
})
public class FooAction extends AbleActionSupport {
...


What is the purpose of the &quot;location&quot; attribute? Is it optional? Is still a way to change the default result type?


----

* Annotation-based result mapping
* Flash scope support
* Seamless un-checked checkbox support
* Partial page identification
* iBatis DAO wrapper


Are these not issues that can be addressed in the Struts HEAD, regardless of the Able ActionMapper?

-Ted.

</description>
		<content:encoded><![CDATA[<p>&gt; /person/1/view<br />
&gt; The automatic parameter application only works for numeric values currently.</p>
<p>This is a showstopper for me, since my own applications use <span class="caps">GUID</span>s, which are not pure numeric strings.</p>
<p>According to the spec, &#8220;The hash (&#8221;#&#8221;, <span class="caps">ASCII</span> 23 hex) character is reserved as a delimiter to separate the <span class="caps">URI </span>of an object from a fragment identifier&#8221;.</p>
<ul>
<li><a href="http://www.w3.org/Addressing/URL/uri-spec.html" rel="nofollow">http://www.w3.org/Addressing/URL/uri-spec.html</a></li>
</ul>
<p>So, why not,</p>
<p>/person/#ABCD/view</p>
<p>instead, perhaps as an alternative escape character when the attribute is not numeric.</p>
<p>Also, moving the parameter into the middle of the string seems like it will cause incompatiblity with other systems. For example, the Confluence macros expect that a parameter can be tacked onto the end of a query string. It might be simpler to go with <span class="caps">URI</span>s that use a conventional sequence</p>
<ul>
<li>/person/view/1</li>
<li>/person/view/#1234-abcd-5678-efgh</li>
</ul>
<p>When the &#8220;default&#8221; attribute is not being used, we might also support expanding the pattern</p>
<ul>
<li>/person/view/personid#1/flavor#vanilla</li>
</ul>
<p>where the last token without a # is the last token in the action path.</p>
<p>While the latter is not a vast improvement over query strings, I understand that some proxies don&#8217;t like query strings, and prefer <span class="caps">URI</span>s that look like references to a static resource. For composing Action <span class="caps">URI</span>s, this at least simplifies whether to ? or not to ?.</p>
<p>&#8212;-</p>
<p>&gt; 1. Actions must be stored in com.opensymphony.able.actions.</p>
<p>Why not just use &#8220;actions&#8221; for the package? If the code doesn&#8217;t belong to com.opensymphony (or org.apache), why bother with the extra verbiage?</p>
<p>&gt; 2. Sub-packages in that package are treated as directories.<br />
&gt; 3. Actions must be named in the style FooAction, meaning classes that don&#8217;t end in &#8220;Action&#8221; won&#8217;t be mapped.</p>
<p>Given #1, is not #3 redundant? Why not just use Foo for the classname? If it is a class under the &#8220;actions&#8221; package, then it should be by definition an action class.</p>
<p>&gt; 4. Results are assumed to be found at /path/to/action-resultValue.jsp. For example, if<br />
&gt; com.opensymphony.able.actions.foo.BarAction returns &#8220;success&#8221;, then Able will look for /foo/bar-success.jsp.</p>
<p>Hmmm, did we change the example from the Foo Action to the Bar Action?</p>
<p>Given a Bar action in the package actions.foo, I&#8217;d prefer we make the default path /foo/Bar-success.jsp, since this corresponds to the Action package and result code exactly. (I like the way this convention lines up with the  Classname-mapping-validator.xml.)</p>
<p>If we are automating mapping, then we should automate mapping, and avoid introducing arbitrary inconsistencies.</p>
<p>&gt; 5. If that <span class="caps">JSP </span>can&#8217;t be found, Able will try /foo/bar.jsp. This is done because there is a common pattern of sharing the<br />
&gt; same <span class="caps">JSP </span>for several result values.</p>
<p>As mentioned, for consistency, /foo/Bar.jsp</p>
<p>Extension to 1/3/4/5</p>
<p>If we accept the best practice &#8220;Link only to mappings, never to pages&#8221;, are we really linking to Action classes or to server pages?</p>
<p>Which begs the question: Should the framework generate mappings based on Action classes or server pages?</p>
<p>If we are looking to see if we have this page or that page, perhaps we should do that up front and generate the mappings based on the pages.</p>
<p>In this case, there would be a virtual mapping for each page, which may (or may not) be augmented by an Action or other meta-helper, such as validation, conversion, or localization.</p>
<p>We might even consider doing both. Everything in the &#8220;actions&#8221; package or &#8220;pages&#8221; folder is mapped.</p>
<p>&#8212;-</p>
<p>@Results(values = {<br />
@Result(name = Action.SUCCESS, type = Redirect.class,<br />
location = &#8220;http://www.hostedqa.com&#8221;)<br />
})<br />
public class FooAction extends AbleActionSupport {<br />
&#8230;</p>
<p>What is the purpose of the &#8220;location&#8221; attribute? Is it optional? Is still a way to change the default result type?</p>
<p>&#8212;-</p>
<ul>
<li>Annotation-based result mapping</li>
<li>Flash scope support</li>
<li>Seamless un-checked checkbox support</li>
<li>Partial page identification</li>
<li>iBatis <span class="caps">DAO </span>wrapper</li>
</ul>
<p>Are these not issues that can be addressed in the Struts <span class="caps">HEAD, </span>regardless of the Able ActionMapper?</p>
<p>-Ted.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: larry</title>
		<link>http://lightbody.net/blog/2006/08/project_able_a_complete_java_w.html/comment-page-1#comment-817</link>
		<dc:creator>larry</dc:creator>
		<pubDate>Tue, 05 Sep 2006 21:44:25 +0000</pubDate>
		<guid isPermaLink="false">http://lightbody.net/blog/2006/8/project_able_a_complete_java_w.html#comment-817</guid>
		<description>I am not sure I understand the question re: iBATIS and repeating the columns.

You can do things like including common column lists, etc with iBATIS (if that is the issue).

If not, post an enhancement request on JIRA and we will try to get it in the next release if we can. ;-)
</description>
		<content:encoded><![CDATA[<p>I am not sure I understand the question re: iBATIS and repeating the columns.</p>
<p>You can do things like including common column lists, etc with iBATIS (if that is the issue).</p>
<p>If not, post an enhancement request on <span class="caps">JIRA </span>and we will try to get it in the next release if we can. <img src='http://lightbody.net/blog/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Patrick Lightbody</title>
		<link>http://lightbody.net/blog/2006/08/project_able_a_complete_java_w.html/comment-page-1#comment-816</link>
		<dc:creator>Patrick Lightbody</dc:creator>
		<pubDate>Mon, 21 Aug 2006 04:40:16 +0000</pubDate>
		<guid isPermaLink="false">http://lightbody.net/blog/2006/8/project_able_a_complete_java_w.html#comment-816</guid>
		<description>Mike,
Not sure about the RemoteTestNG problem - could be that you have the wrong TestNG IDEA plugin?

Re: QuickStart - I turned off the class re-loading because it isn&#039;t reliable. We will be taking it out of Struts 2.0 entirely. Unfortunate, but necessary for now.

Re: validation - no particular reason. My philosophy is only to create that stuff when I need to reduce code duplication.

Re: repeated ibatis queries - yes, you do have to repeat the columns. I&#039;m hoping we can extend some APIs of iBatis to eventually make that less painful.

Re: holistic updates  - I tend to be pragmatic. Sometimes I have a general need to update the whole table, and other times I just want to offer a single update query. With iBatis, you can choose the best option for the situation on hand - something you can&#039;t do with Hibernate and other more full featured ORM frameworks.
</description>
		<content:encoded><![CDATA[<p>Mike,<br />
Not sure about the RemoteTestNG problem &#8211; could be that you have the wrong TestNG <span class="caps">IDEA </span>plugin?</p>
<p>Re: QuickStart &#8211; I turned off the class re-loading because it isn&#8217;t reliable. We will be taking it out of Struts 2.0 entirely. Unfortunate, but necessary for now.</p>
<p>Re: validation &#8211; no particular reason. My philosophy is only to create that stuff when I need to reduce code duplication.</p>
<p>Re: repeated ibatis queries &#8211; yes, you do have to repeat the columns. I&#8217;m hoping we can extend some <span class="caps">API</span>s of iBatis to eventually make that less painful.</p>
<p>Re: holistic updates  &#8211; I tend to be pragmatic. Sometimes I have a general need to update the whole table, and other times I just want to offer a single update query. With iBatis, you can choose the best option for the situation on hand &#8211; something you can&#8217;t do with Hibernate and other more full featured <span class="caps">ORM </span>frameworks.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Patrick Lightbody</title>
		<link>http://lightbody.net/blog/2006/08/project_able_a_complete_java_w.html/comment-page-1#comment-815</link>
		<dc:creator>Patrick Lightbody</dc:creator>
		<pubDate>Mon, 21 Aug 2006 04:33:02 +0000</pubDate>
		<guid isPermaLink="false">http://lightbody.net/blog/2006/8/project_able_a_complete_java_w.html#comment-815</guid>
		<description>Sameh,
We are going to take a good look at JPA/Hibernate.
</description>
		<content:encoded><![CDATA[<p>Sameh,<br />
We are going to take a good look at <span class="caps">JPA</span>/Hibernate.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Patrick Lightbody</title>
		<link>http://lightbody.net/blog/2006/08/project_able_a_complete_java_w.html/comment-page-1#comment-814</link>
		<dc:creator>Patrick Lightbody</dc:creator>
		<pubDate>Mon, 21 Aug 2006 04:32:29 +0000</pubDate>
		<guid isPermaLink="false">http://lightbody.net/blog/2006/8/project_able_a_complete_java_w.html#comment-814</guid>
		<description>Alexander,
Your patch has been applied. If you (or anyone else) has anymore thoughts on Able, come join the discussion at sandbox@opensymphony.com by sending an email to sandbox-subscribe@opensymphony.com.
</description>
		<content:encoded><![CDATA[<p>Alexander,<br />
Your patch has been applied. If you (or anyone else) has anymore thoughts on Able, come join the discussion at <a href="mailto:sandbox@opensymphony.com">sandbox@opensymphony.com</a> by sending an email to <a href="mailto:sandbox-subscribe@opensymphony.com">sandbox-subscribe@opensymphony.com</a>.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
