Less Configuration - Part II

After reading the initial Less Configuration posting it occurred to me that I left out the most important information, what is it all for?

So here is my specification without component auto-discovery:

<application name="tapestry-users" engine-class="com.mjhenderson.users.tapestry.engine.UsersEngine" > <description><![CDATA[ A Tapestry Test Application ]]></description> <property name="org.apache.tapestry.disable-caching" value="true"/> <property name="org.apache.tapestry.visit-class" value="com.mjhenderson.users.tapestry.Visit"/> <page name="Home" specification-path="pages/Home.page"/> <page name="CustomException" specification-path="pages/CustomException.page"/> <page name="Signup" specification-path="pages/Signup.page"/> <page name="ChangePassword" specification-path="pages/ChangePassword.page"/> <page name="ForgottenPassword" specification-path="pages/ForgottenPassword.page"/> <page name="Login" specification-path="pages/Login.page"/> <page name="EditUser" specification-path="pages/EditUser.page"/> <page name="RssFeedPage" specification-path="pages/RssFeedPage.page"/> <page name="Credits" specification-path="pages/Credits.page"/> <page name="MessagePage" specification-path="pages/MessagePage.page"/> <page name="Redirect" specification-path="pages/Redirect.page"/> <page name="ConfirmMembershipEmail" specification-path="email/ConfirmMembershipEmail.page"/> <page name="ForgottenPasswordEmail" specification-path="email/ForgottenPasswordEmail.page"/> <page name="MembershipConfirmationSucceeded" specification-path="pages/MembershipConfirmationSucceeded.page"/> <component-type type="PageBorder" specification-path="components/PageBorder.jwc"/> <component-type type="PageHeader" specification-path="components/PageHeader.jwc"/> <component-type type="Sidebar" specification-path="components/Sidebar.jwc"/> <component-type type="TopNavigation" specification-path="components/TopNavigation.jwc"/> <component-type type="LoginForm" specification-path="components/LoginForm.jwc"/> <component-type type="ChangePasswordForm" specification-path="components/ChangePasswordForm.jwc"/> <component-type type="UserSignupForm" specification-path="components/UserSignupForm.jwc"/> <component-type type="UserEditForm" specification-path="components/UserEditForm.jwc"/> <component-type type="LogoutLink" specification-path="components/LogoutLink.jwc"/> <component-type type="SecureFeed" specification-path="components/SecureFeed.jwc"/> <service name="users.membership" class="com.mjhenderson.users.tapestry.engine.MembershipEngineService"/> <library id="springinspector" specification-path="/com/mjhenderson/tapestry/springinspector/springinspector.library"/> <library id="contrib" specification-path="/org/apache/tapestry/contrib/Contrib.library"/> <extension name="org.apache.tapestry.specification-resolver-delegate" class="com.mjhenderson.users.tapestry.CustomSpecificationResolver" immediate="yes"> </extension> </application>

And here is the same application-specification with auto-discovery

<application name="tapestry-users" engine-class="com.mjhenderson.users.tapestry.engine.UsersEngine" > <description><![CDATA[ A Tapestry Test Application ]]></description> <property name="org.apache.tapestry.disable-caching" value="true"/> <property name="org.apache.tapestry.visit-class" value="com.mjhenderson.users.tapestry.Visit"/> <service name="users.membership" class="com.mjhenderson.users.tapestry.engine.MembershipEngineService"/> <library id="springinspector" specification-path="/com/mjhenderson/tapestry/springinspector/springinspector.library"/> <library id="contrib" specification-path="/org/apache/tapestry/contrib/Contrib.library"/> <extension name="org.apache.tapestry.specification-resolver-delegate" class="com.mjhenderson.users.tapestry.CustomSpecificationResolver" immediate="yes"> </extension> </application>

Now, if I can roll the auto-discovery into the Tapestry framework and do something about auto-discovery of component libraries then the application specification drops down to very little at all.