You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tapestry.apache.org by hl...@apache.org on 2007/08/27 17:57:03 UTC

svn commit: r570166 [1/2] - in /tapestry/tapestry5/trunk: ./ src/site/apt/ src/site/resources/css/ tapestry-core/ tapestry-core/src/main/java/org/apache/tapestry/ tapestry-core/src/main/java/org/apache/tapestry/internal/test/ tapestry-core/src/main/res...

Author: hlship
Date: Mon Aug 27 08:56:56 2007
New Revision: 570166

URL: http://svn.apache.org/viewvc?rev=570166&view=rev
Log:
Move Javadoc to the project level, rather than in each individual module.
TAPESTRY-1722: Startup service for Tapestry IoC to perform initialization when the Registry starts up

Added:
    tapestry/tapestry5/trunk/src/site/resources/css/
    tapestry/tapestry5/trunk/src/site/resources/css/jdstyle.css
      - copied unchanged from r569892, tapestry/tapestry5/trunk/tapestry-core/src/site/resources/css/jdstyle.css
    tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry/ioc/internal/services/RegistryStartup.java
    tapestry/tapestry5/trunk/tapestry-ioc/src/site/apt/startup.apt
    tapestry/tapestry5/trunk/tapestry-ioc/src/test/java/org/apache/tapestry/ioc/Pingable.java
    tapestry/tapestry5/trunk/tapestry-ioc/src/test/java/org/apache/tapestry/ioc/UnbuildablePingable.java
      - copied, changed from r569892, tapestry/tapestry5/trunk/tapestry-ioc/src/test/java/org/apache/tapestry/ioc/UnbuildableRunnable.java
    tapestry/tapestry5/trunk/tapestry-ioc/src/test/java/org/apache/tapestry/ioc/internal/services/RegistryStartupTest.java
    tapestry/tapestry5/trunk/tapestry-ioc/src/test/java/org/apache/tapestry/ioc/internal/services/StartupModule.java
Removed:
    tapestry/tapestry5/trunk/tapestry-core/src/site/resources/css/jdstyle.css
    tapestry/tapestry5/trunk/tapestry-hibernate/src/site/resources/css/jdstyle.css
    tapestry/tapestry5/trunk/tapestry-ioc/src/site/resources/css/jdstyle.css
    tapestry/tapestry5/trunk/tapestry-ioc/src/test/java/org/apache/tapestry/ioc/UnbuildableRunnable.java
    tapestry/tapestry5/trunk/tapestry-spring/src/site/resources/css/jdstyle.css
    tapestry/tapestry5/trunk/tapestry-test/src/site/resources/css/jdstyle.css
    tapestry/tapestry5/trunk/tapestry-upload/src/site/resources/css/jdstyle.css
Modified:
    tapestry/tapestry5/trunk/pom.xml
    tapestry/tapestry5/trunk/src/site/apt/index.apt
    tapestry/tapestry5/trunk/tapestry-core/pom.xml
    tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/TapestryFilter.java
    tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/test/InternalBaseTestCase.java
    tapestry/tapestry5/trunk/tapestry-core/src/main/resources/org/apache/tapestry/internal/services/ServicesStrings.properties
    tapestry/tapestry5/trunk/tapestry-core/src/site/apt/guide/appstate.apt
    tapestry/tapestry5/trunk/tapestry-core/src/site/apt/guide/assets.apt
    tapestry/tapestry5/trunk/tapestry-core/src/site/apt/guide/beaneditform.apt
    tapestry/tapestry5/trunk/tapestry-core/src/site/apt/guide/component-classes.apt
    tapestry/tapestry5/trunk/tapestry-core/src/site/apt/guide/dom.apt
    tapestry/tapestry5/trunk/tapestry-core/src/site/apt/guide/event.apt
    tapestry/tapestry5/trunk/tapestry-core/src/site/apt/guide/inject.apt
    tapestry/tapestry5/trunk/tapestry-core/src/site/apt/guide/lifecycle.apt
    tapestry/tapestry5/trunk/tapestry-core/src/site/apt/guide/localization.apt
    tapestry/tapestry5/trunk/tapestry-core/src/site/apt/guide/mixins.apt
    tapestry/tapestry5/trunk/tapestry-core/src/site/apt/guide/pagenav.apt
    tapestry/tapestry5/trunk/tapestry-core/src/site/apt/guide/parameters.apt
    tapestry/tapestry5/trunk/tapestry-core/src/site/apt/guide/persist.apt
    tapestry/tapestry5/trunk/tapestry-core/src/site/apt/guide/rendering.apt
    tapestry/tapestry5/trunk/tapestry-core/src/site/apt/guide/request.apt
    tapestry/tapestry5/trunk/tapestry-core/src/site/apt/guide/templates.apt
    tapestry/tapestry5/trunk/tapestry-core/src/site/apt/guide/unit-testing-pages.apt
    tapestry/tapestry5/trunk/tapestry-core/src/site/apt/guide/validation.apt
    tapestry/tapestry5/trunk/tapestry-core/src/site/apt/index.apt
    tapestry/tapestry5/trunk/tapestry-hibernate/pom.xml
    tapestry/tapestry5/trunk/tapestry-ioc/pom.xml
    tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry/ioc/IOCUtilities.java
    tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry/ioc/Registry.java
    tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry/ioc/RegistryBuilder.java
    tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry/ioc/internal/IOCInternalTestCase.java
    tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry/ioc/internal/RegistryImpl.java
    tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry/ioc/internal/RegistryWrapper.java
    tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry/ioc/internal/services/ServiceMessages.java
    tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry/ioc/services/TapestryIOCModule.java
    tapestry/tapestry5/trunk/tapestry-ioc/src/site/site.xml
    tapestry/tapestry5/trunk/tapestry-ioc/src/test/java/org/apache/tapestry/ioc/DuplicateServiceTypeModule.java
    tapestry/tapestry5/trunk/tapestry-ioc/src/test/java/org/apache/tapestry/ioc/IntegrationTest.java
    tapestry/tapestry5/trunk/tapestry-ioc/src/test/java/org/apache/tapestry/ioc/ServiceBuilderAutobuilderModule.java
    tapestry/tapestry5/trunk/tapestry-ioc/src/test/java/org/apache/tapestry/ioc/internal/ExceptionInConstructorModule.java
    tapestry/tapestry5/trunk/tapestry-ioc/src/test/java/org/apache/tapestry/ioc/internal/ExceptionInConstructorServiceImpl.java
    tapestry/tapestry5/trunk/tapestry-spring/pom.xml
    tapestry/tapestry5/trunk/tapestry-test/pom.xml
    tapestry/tapestry5/trunk/tapestry-upload/pom.xml

Modified: tapestry/tapestry5/trunk/pom.xml
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/pom.xml?rev=570166&r1=570165&r2=570166&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/pom.xml (original)
+++ tapestry/tapestry5/trunk/pom.xml Mon Aug 27 08:56:56 2007
@@ -242,6 +242,32 @@
           </reportSet>
         </reportSets>
       </plugin>
+      
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-javadoc-plugin</artifactId>
+        <!-- Had a classloader problem with version 2.0.3 -->
+        <!--        <version>2.0</version> -->
+        <configuration>
+          <!--
+            <tags>
+            <tag>
+            <name>todo</name>
+            <!- - Should be a combinaison of the letters Xaoptcmf - ->
+            <placement>a</placement>
+            <head>To do something:</head>
+            </tag>
+            </tags> -->
+          <linksource>true</linksource>
+          <links>
+            <link>http://java.sun.com/j2se/1.5.0/docs/api/</link>
+            <link>http://java.sun.com/j2ee/1.4/docs/api/</link>
+            <link>http://jakarta.apache.org/commons/logging/apidocs/</link>
+          </links>
+          <stylesheetfile>${basedir}/src/site/resources/css/jdstyle.css</stylesheetfile>
+          <aggregate>true</aggregate>
+        </configuration>
+      </plugin>
     </plugins>
   </reporting>
   <repositories>

Modified: tapestry/tapestry5/trunk/src/site/apt/index.apt
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/src/site/apt/index.apt?rev=570166&r1=570165&r2=570166&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/src/site/apt/index.apt (original)
+++ tapestry/tapestry5/trunk/src/site/apt/index.apt Mon Aug 27 08:56:56 2007
@@ -96,6 +96,8 @@
   
 New and Noteworthy
 
+  * There is now a RegistryStartup service, allowing you to provide logic that executes when the Registry is first created.
+
   * Logging in Tapestry is now implemented on top of {{{http://www.slf4j.org/docs.html}Simple Logging Facade for Java}}.
  
   * A file upload form component has been added, in a new library: {{{tapestry-upload/}tapestry-upload}}. 

Modified: tapestry/tapestry5/trunk/tapestry-core/pom.xml
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/pom.xml?rev=570166&r1=570165&r2=570166&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/pom.xml (original)
+++ tapestry/tapestry5/trunk/tapestry-core/pom.xml Mon Aug 27 08:56:56 2007
@@ -73,28 +73,6 @@
   <reporting>
     <plugins>
       <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-javadoc-plugin</artifactId>
-        <configuration>
-          <!--
-                    <tags>
-                        <tag>
-                            <name>todo</name>
-                            <!- - Should be a combinaition of the letters Xaoptcmf - ->
-                            <placement>a</placement>
-                            <head>To do something:</head>
-                        </tag>
-                    </tags> -->
-          <linksource>true</linksource>
-          <links>
-            <link>http://java.sun.com/j2se/1.5.0/docs/api/</link>
-            <link>http://jakarta.apache.org/commons/logging/apidocs/</link>
-            <link>http://tapestry.apache.org/tapestry5/tapestry-ioc/apidocs/</link>
-          </links>
-          <stylesheetfile>${basedir}/src/site/resources/css/jdstyle.css</stylesheetfile>
-        </configuration>
-      </plugin>
-      <plugin>
         <groupId>org.codehaus.mojo</groupId>
         <artifactId>cobertura-maven-plugin</artifactId>
         <version>${cobertura-plugin-version}</version>

Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/TapestryFilter.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/TapestryFilter.java?rev=570166&r1=570165&r2=570166&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/TapestryFilter.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/TapestryFilter.java Mon Aug 27 08:56:56 2007
@@ -86,7 +86,7 @@
 
         ai.initializeApplication(filterConfig.getServletContext());
 
-        _registry.eagerLoadServices();
+        _registry.performRegistryStartup();
 
         _handler = _registry.getService(
                 "HttpServletRequestHandler",

Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/test/InternalBaseTestCase.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/test/InternalBaseTestCase.java?rev=570166&r1=570165&r2=570166&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/test/InternalBaseTestCase.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/test/InternalBaseTestCase.java Mon Aug 27 08:56:56 2007
@@ -114,7 +114,7 @@
 
         // _registry.getService(Alias.class).setMode("servlet");
 
-        _registry.eagerLoadServices();
+        _registry.performRegistryStartup();
     }
 
     @AfterSuite
@@ -131,9 +131,9 @@
         _registry.cleanupThread();
     }
 
-    public void eagerLoadServices()
+    public void performRegistryStartup()
     {
-        _registry.eagerLoadServices();
+        _registry.performRegistryStartup();
     }
 
     public final <T> T getObject(Class<T> objectType, AnnotationProvider annotationProvider)

Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/resources/org/apache/tapestry/internal/services/ServicesStrings.properties
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/resources/org/apache/tapestry/internal/services/ServicesStrings.properties?rev=570166&r1=570165&r2=570166&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/main/resources/org/apache/tapestry/internal/services/ServicesStrings.properties (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/main/resources/org/apache/tapestry/internal/services/ServicesStrings.properties Mon Aug 27 08:56:56 2007
@@ -81,3 +81,4 @@
 no-display-for-data-type=There is no defined way to display data of type '%s'. Make a contribution to the BeanBlockSource service for this type.
 no-edit-for-data-type=There is no defined way to edit data of type '%s'.  Make a contribution to the BeanBlockSource service for this type.
 missing-validator-constraint=Validator '%s' requires a validation constraint (of type %s) but none was provided.
+startup-failure=An exception occurred during startup: %s

Modified: tapestry/tapestry5/trunk/tapestry-core/src/site/apt/guide/appstate.apt
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/site/apt/guide/appstate.apt?rev=570166&r1=570165&r2=570166&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/site/apt/guide/appstate.apt (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/site/apt/guide/appstate.apt Mon Aug 27 08:56:56 2007
@@ -14,7 +14,7 @@
   With an ASO, the value is automatically stored outside the page; with the default storage strategy, it is stored in the session. 
   
   A field holding an ASO is marked with the
-  {{{../apidocs/org/apache/tapestry/annotations/ApplicationState.html}ApplicationState}} annotation.
+  {{{../../apidocs/org/apache/tapestry/annotations/ApplicationState.html}ApplicationState}} annotation.
   
   Example:
   
@@ -68,7 +68,7 @@
   
   Alternately, you will configure an ASO so that you can control how it is instantiated.  You may need to inject some values into the ASO
   when it is first created, or otherwise initialize it.  In this second case, you may provide an
-  {{{../apidocs/org/apache/tapestry/services/ApplicationStateCreator.html}ApplicationStateCreator}} object, which will be called upon to create the ASO
+  {{{../../apidocs/org/apache/tapestry/services/ApplicationStateCreator.html}ApplicationStateCreator}} object, which will be called upon to create the ASO
   as necessary.  This is also the technique to use when you want your ASO to be represented by an <interface> rather than a <class>: you need to provide
   a creator that knows about the class that implements the interface.
   
@@ -96,5 +96,5 @@
   example.
   
   Finally, we create an 
-  {{{../apidocs/org/apache/tapestry/services/ApplicationStateContribution.html}ApplicationStateContribution}}
+  {{{../../apidocs/org/apache/tapestry/services/ApplicationStateContribution.html}ApplicationStateContribution}}
   identifying the strategy name and the creator, and give that to the configuration.

Modified: tapestry/tapestry5/trunk/tapestry-core/src/site/apt/guide/assets.apt
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/site/apt/guide/assets.apt?rev=570166&r1=570165&r2=570166&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/site/apt/guide/assets.apt (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/site/apt/guide/assets.apt Mon Aug 27 08:56:56 2007
@@ -12,14 +12,14 @@
   
   Tapestry will also make files stored <on the classpath>, with your Java class files, visible to the web browser.
   
-  Assets are exposed to your code as instances of the {{{../apidocs/org/apache/tapestry/Asset.html}Asset}} interface.
+  Assets are exposed to your code as instances of the {{{../../apidocs/org/apache/tapestry/Asset.html}Asset}} interface.
   
 Injecting Assets
 
   Components learn about assets via injection.  The 
   {{{inject.html}Inject}} annotation allows Assets to be injected into components as read-only properties.  The path to
   the resource is specified using the
-  {{{../apidocs/org/apache/tapestry/annotations/Path.html}Path}} annotation.
+  {{{../../apidocs/org/apache/tapestry/annotations/Path.html}Path}} annotation.
   
 +----+
   @Inject
@@ -74,7 +74,7 @@
 
   If you wish to create new domains for assets, for example to allow assets to be stored on the file system or in a database,
   you may define a new
-  {{{../apidocs/org/apache/tapestry/services/AssetFactory.html}AssetFactory}}
+  {{{../../apidocs/org/apache/tapestry/services/AssetFactory.html}AssetFactory}}
   and contribute it to the tapestry.AssetSource service configuration.  
   
 Simplified Paths

Modified: tapestry/tapestry5/trunk/tapestry-core/src/site/apt/guide/beaneditform.apt
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/site/apt/guide/beaneditform.apt?rev=570166&r1=570165&r2=570166&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/site/apt/guide/beaneditform.apt (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/site/apt/guide/beaneditform.apt Mon Aug 27 08:56:56 2007
@@ -49,7 +49,7 @@
 
   In some cases, a property may be updatable and of a supported type for editting, but should not be presented to the user for editting: for example,
   a property that holds the primary key of a database entity. In such a case, the
-  {{{../apidocs/org/apache/tapestry/beaneditor/NonVisual.html}NonVisual}} annotation may be applied to the property (either the getter
+  {{{../../apidocs/org/apache/tapestry/beaneditor/NonVisual.html}NonVisual}} annotation may be applied to the property (either the getter
   or the setter method). 
     
 * Default Validation
@@ -57,12 +57,12 @@
   Default validation for fields is primarly determined by property type.
   
   If desired, additional validation may be specified using the 
-  {{{../apidocs/org/apache/tapestry/beaneditor/Validate.html}Validate}} annotation.
+  {{{../../apidocs/org/apache/tapestry/beaneditor/Validate.html}Validate}} annotation.
   
 * Property ordering
 
   By default, the order in which properties are presented is as defined above (order of the getter method).
-  The {{{../apidocs/org/apache/tapestry/beaneditor/Order.html}Order}} annotation may be used to modify the normal ordering.
+  The {{{../../apidocs/org/apache/tapestry/beaneditor/Order.html}Order}} annotation may be used to modify the normal ordering.
   
 * Default Label
 
@@ -94,7 +94,7 @@
   
 Providing the BeanModel
 
-  The BeanEditForm component operates in terms of a {{{../apidocs/org/apache/tapestry/beaneditor/BeanModel.html}BeanModel}}, which describes
+  The BeanEditForm component operates in terms of a {{{../../apidocs/org/apache/tapestry/beaneditor/BeanModel.html}BeanModel}}, which describes
   the properties, their presentation order, labels and so forth.
   
   Normally, the BeanEditForm automatically creates the BeanModel as needed, based on the type of object bound to its object parameter.
@@ -144,8 +144,8 @@
   First, decide on a logical name for the data type.  For example, you may decide that the BigDecimal type will represent currency in your application, so name the data type "currency".
   
   Next, you must make contributions to the
-  {{{../apidocs/org/apache/tapestry/services/DataTypeAnalyzer.html}DataTypeAnalyzer}} or
-  {{{../apidocs/org/apache/tapestry/services/DefaultDataTypeAnalyzer.html}DefaultDataTypeAnalyzer}} services to match properties to your new name.
+  {{{../../apidocs/org/apache/tapestry/services/DataTypeAnalyzer.html}DataTypeAnalyzer}} or
+  {{{../../apidocs/org/apache/tapestry/services/DefaultDataTypeAnalyzer.html}DefaultDataTypeAnalyzer}} services to match properties to your new name.
   
   DataTypeAnalyzer is a chain of command that can make match properties to data types based on property type or annotations on the property.  In general, 
   DefaultDataTypeAnalyzer is used, as that only needs to consider property type.  DefaultDataTypeAnalyzer matches property types to data types, based on a search up
@@ -197,7 +197,7 @@
 +--+
 
   Finally, we tell the BeanEditForm component about the editor via a contribution to the 
-  {{{../apidocs/org/apache/tapestry/services/BeanBlockSource.html}BeanBlockSource}} service:
+  {{{../../apidocs/org/apache/tapestry/services/BeanBlockSource.html}BeanBlockSource}} service:
   
 +---+
 public static void contributeBeanBlockSource(Configuration<BeanBlockContribution> configuration)

Modified: tapestry/tapestry5/trunk/tapestry-core/src/site/apt/guide/component-classes.apt
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/site/apt/guide/component-classes.apt?rev=570166&r1=570165&r2=570166&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/site/apt/guide/component-classes.apt (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/site/apt/guide/component-classes.apt Mon Aug 27 08:56:56 2007
@@ -47,7 +47,7 @@
 +----+  
   
   This component's only job is to write out a fixed message. The
-  {{{../apidocs/org/apache/tapestry/annotations/BeginRender.html}BeginRender}} annotation is
+  {{{../../apidocs/org/apache/tapestry/annotations/BeginRender.html}BeginRender}} annotation is
   a type of <{{{rendering.html}component lifecycle annotation}}>, a method annotation that instructs
   Tapestry when and under what circumstances to invoke methods of your class.
  
@@ -150,7 +150,7 @@
   
   If you have a variable that can keep its value between requests and you would like
   to defeat that reset logic, then you should attach a
-  {{{../apidocs/org/apache/tapestry/annotations/Retain.html}Retain}} annotation to the field.  You should take
+  {{{../../apidocs/org/apache/tapestry/annotations/Retain.html}Retain}} annotation to the field.  You should take
   care that no client-specific data is stored into such a field, since on a later request
   the same page <instance> may be used for a different user. Likewise, on a later request for the <same> user,
   a <different> page instance may be used.
@@ -186,7 +186,7 @@
   
   You can define the type of component inside template, or you can create an instance variable for the component
   and use the
-  {{{../apidocs/org/apache/tapestry/annotations/Component.html}Component}} annotation to define the component type
+  {{{../../apidocs/org/apache/tapestry/annotations/Component.html}Component}} annotation to define the component type
   and parameters. 
   
   Example:

Modified: tapestry/tapestry5/trunk/tapestry-core/src/site/apt/guide/dom.apt
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/site/apt/guide/dom.apt?rev=570166&r1=570165&r2=570166&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/site/apt/guide/dom.apt (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/site/apt/guide/dom.apt Mon Aug 27 08:56:56 2007
@@ -39,7 +39,7 @@
   the serial (or buffered) approach used in Tapestry 4.
   
   A new 
-  {{{../apidocs/org/apache/tapestry/MarkupWriter.html}MarkupWriter}} interface
+  {{{../../apidocs/org/apache/tapestry/MarkupWriter.html}MarkupWriter}} interface
   allows the majority of code to treat the generation of output as a stream. In fact,
   MarkupWriter is more like a cursor into the DOM tree.
   
@@ -59,7 +59,7 @@
   DOM object includes methods that create new sub-objects.  This primarily applies to the Element
   class, which can be a container of text, comments and other elements.
   
-* {{{../apidocs/org/apache/tapestry/dom/Document.html}Document}}
+* {{{../../apidocs/org/apache/tapestry/dom/Document.html}Document}}
 
   The Document object represents the an entire document, which is to say, an entire response to be
   sent to the client.
@@ -69,7 +69,7 @@
   
   <<TODO: Support for doctypes, content type, processing instructions, and top-level comments.>>
   
-* {{{../apidocs/org/apache/tapestry/dom/Element.html}Element}}
+* {{{../../apidocs/org/apache/tapestry/dom/Element.html}Element}}
 
   An element of the document. Elements may have attributes, and they may themselves contain other
   elements, as well as text and comments.
@@ -82,7 +82,7 @@
   a few methods for re-parenting DOM nodes into new elements. In addition, some searching methods may be added.
   
   
-{{{../apidocs/org/apache/tapestry/MarkupWriter.html}MarkupWriter}}
+{{{../../apidocs/org/apache/tapestry/MarkupWriter.html}MarkupWriter}}
 
   The MarkupWriter interface allows the structure of the document to be built while maintaining a streaming metaphor.
   

Modified: tapestry/tapestry5/trunk/tapestry-core/src/site/apt/guide/event.apt
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/site/apt/guide/event.apt?rev=570166&r1=570165&r2=570166&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/site/apt/guide/event.apt (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/site/apt/guide/event.apt Mon Aug 27 08:56:56 2007
@@ -31,7 +31,7 @@
   
   Tapestry 5 introduces the concept of <event handler methods>, identified via a naming convention, or
   via the 
-  {{{../apidocs/org/apache/tapestry/annotations/OnEvent.html}OnEvent annotation}}.  Event handler methods
+  {{{../../apidocs/org/apache/tapestry/annotations/OnEvent.html}OnEvent annotation}}.  Event handler methods
   have any visibility, even private (normally they are given package private visibility, to support testing).
   
   Rather than configure a component to invoke a particular method, you identify one or more

Modified: tapestry/tapestry5/trunk/tapestry-core/src/site/apt/guide/inject.apt
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/site/apt/guide/inject.apt?rev=570166&r1=570165&r2=570166&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/site/apt/guide/inject.apt (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/site/apt/guide/inject.apt Mon Aug 27 08:56:56 2007
@@ -13,7 +13,7 @@
   
 Inject Annotation
 
-  The {{{../apidocs/org/apache/tapestry/annotations/Inject.html}Inject annotation}} is used to identify fields that will contain injected services and other resources.
+  The {{{../../apidocs/org/apache/tapestry/annotations/Inject.html}Inject annotation}} is used to identify fields that will contain injected services and other resources.
   
   Tapestry allows for two kinds of injection:
   
@@ -34,17 +34,17 @@
 * Asset Injection
 
   When the 
-  {{{../apidocs/org/apache/tapestry/annotations/Path.html}Path}} annotation is also present, then the injected value
+  {{{../../apidocs/org/apache/tapestry/annotations/Path.html}Path}} annotation is also present, then the injected value
   (relative to the component) will be a localized  {{{assets.html}asset}}.  
   
   Symbols in the annotation value are expanded.  
   
 * Block Injection
 
-  For field type {{{../apidocs/org/apache/tapestry/Block.html}Block}}, the value of the Inject annotation is the
+  For field type {{{../../apidocs/org/apache/tapestry/Block.html}Block}}, the value of the Inject annotation is the
   id of the {{{templates.apt}\<block\> element}} within the component's template.  Normally, the id of the block is determined from the field name
   (by stripping out leading "_" and "$" characters).  Where that is not appropriate, an
-  {{{../apidocs/org/apache/tapestry/annotations/Id.html}Id}} annotation can be supplied:
+  {{{../../apidocs/org/apache/tapestry/annotations/Id.html}Id}} annotation can be supplied:
   
 +---+
   @Inject
@@ -63,7 +63,7 @@
   For a particular set of field types, Tapestry will inject a <resource> related to the component, such as its Locale.
   
   A very common example occurs when a component needs access to its
-  {{{../apidocs/org/apache/tapestry/ComponentResources.html}resources}}.  The component
+  {{{../../apidocs/org/apache/tapestry/ComponentResources.html}resources}}.  The component
   can define a field of the appropriate type
   and use the Inject annotation without a value:
   
@@ -96,7 +96,7 @@
 
 Explicit Service Injection
 
-  Here, a specific object is requested. A {{{../apidocs/org/apache/tapestry/annotations/Service.html}Service}} annotation
+  Here, a specific object is requested. A {{{../../apidocs/org/apache/tapestry/annotations/Service.html}Service}} annotation
   is used to identify the service name.
   
   Example:
@@ -123,7 +123,7 @@
 Defining New Injection Logic
 
   Annonymous injection is controlled by the 
-  {{{../apidocs/org/apache/tapestry/services/InjectionProvider.html}InjectionProvider}}
+  {{{../../apidocs/org/apache/tapestry/services/InjectionProvider.html}InjectionProvider}}
   service. The configuration for this service is a 
   {{{http://tapestry.apache.org/tapestry5/tapestry-ioc/command.html}chain of command}} for handling component injections.
 

Modified: tapestry/tapestry5/trunk/tapestry-core/src/site/apt/guide/lifecycle.apt
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/site/apt/guide/lifecycle.apt?rev=570166&r1=570165&r2=570166&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/site/apt/guide/lifecycle.apt (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/site/apt/guide/lifecycle.apt Mon Aug 27 08:56:56 2007
@@ -27,11 +27,11 @@
   
   The annotations / method names are:
   
-   * {{{../apidocs/org/apache/tapestry/annotations/PageLoaded.html}PageLoaded}} annotation, or method name "pageLoaded"
+   * {{{../../apidocs/org/apache/tapestry/annotations/PageLoaded.html}PageLoaded}} annotation, or method name "pageLoaded"
    
-   * {{{../apidocs/org/apache/tapestry/annotations/PageAttached.html}PageAttached}} annotation, or method name "pageAttached"
+   * {{{../../apidocs/org/apache/tapestry/annotations/PageAttached.html}PageAttached}} annotation, or method name "pageAttached"
    
-   * {{{../apidocs/org/apache/tapestry/annotations/PageDetached.html}PageDetached}} annotation, or method name "pageDetached"
+   * {{{../../apidocs/org/apache/tapestry/annotations/PageDetached.html}PageDetached}} annotation, or method name "pageDetached"
    
    
    

Modified: tapestry/tapestry5/trunk/tapestry-core/src/site/apt/guide/localization.apt
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/site/apt/guide/localization.apt?rev=570166&r1=570165&r2=570166&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/site/apt/guide/localization.apt (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/site/apt/guide/localization.apt Mon Aug 27 08:56:56 2007
@@ -159,7 +159,7 @@
   When Tapestry renders a page, the very first step is to determine the output content type and charset.  
   
   This information is obtained from meta data on the page itself.  Meta data is specified using the
-  {{{../apidocs/org/apache/tapestry/annotations/Meta.html}Meta}} annotation.  
+  {{{../../apidocs/org/apache/tapestry/annotations/Meta.html}Meta}} annotation.  
   
   First, the response content type is obtained via meta-data key "tapestry.response-content-type".  This value defaults to "text/html".
   

Modified: tapestry/tapestry5/trunk/tapestry-core/src/site/apt/guide/mixins.apt
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/site/apt/guide/mixins.apt?rev=570166&r1=570165&r2=570166&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/site/apt/guide/mixins.apt (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/site/apt/guide/mixins.apt Mon Aug 27 08:56:56 2007
@@ -44,13 +44,13 @@
   in the {{{templates.html}component template}} with the mixins attribute of the
   \<comp\> element.  This is a comma-separated list of mixin names.
   
-  Alternately, when the {{{../apidocs/org/apache/tapestry/annotations/Component.html}Component annotation}}
+  Alternately, when the {{{../../apidocs/org/apache/tapestry/annotations/Component.html}Component annotation}}
   is used to define the component type, you may specify the mixins in two ways:
   
-  * The {{{../apidocs/org/apache/tapestry/annotations/Mixins.html}Mixins annotation}} allows a list
+  * The {{{../../apidocs/org/apache/tapestry/annotations/Mixins.html}Mixins annotation}} allows a list
     of mixin names to be specified.
     
-  * The {{{../apidocs/org/apache/tapestry/annotations/MixinClasses.html}MixinClasses annotation}}
+  * The {{{../../apidocs/org/apache/tapestry/annotations/MixinClasses.html}MixinClasses annotation}}
     allows a set of mixin class to be specified directly.
     
   []
@@ -74,7 +74,7 @@
 Implementation Mixins
 
   Implementation mixins, mixins which apply to all isntances of a component, are added using the
-  {{{../apidocs/org/apache/tapestry/annotations/Mixin.html}Mixin annotation}}. This annotation
+  {{{../../apidocs/org/apache/tapestry/annotations/Mixin.html}Mixin annotation}}. This annotation
   defines a field that will containg the mixin instance.
   
 +---+
@@ -131,6 +131,6 @@
   is reversed.
   
   Exception: Mixins whose class is annotated with
-  {{{../apidocs/org/apache/tapestry/annotations/MixinAfter.html}MixinAfter}} are ordered
+  {{{../../apidocs/org/apache/tapestry/annotations/MixinAfter.html}MixinAfter}} are ordered
   <after> the component, not before.  
   

Modified: tapestry/tapestry5/trunk/tapestry-core/src/site/apt/guide/pagenav.apt
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/site/apt/guide/pagenav.apt?rev=570166&r1=570165&r2=570166&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/site/apt/guide/pagenav.apt (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/site/apt/guide/pagenav.apt Mon Aug 27 08:56:56 2007
@@ -62,7 +62,7 @@
   
   You may also return an instance of a page, rather than the name or class of a page.
   
-  A page may be injected via the {{{../apidocs/org/apache/tapestry/annotations/InjectPage.html}InjectPage}} annotation.  
+  A page may be injected via the {{{../../apidocs/org/apache/tapestry/annotations/InjectPage.html}InjectPage}} annotation.  
   
   Often, you will configure the page in some way before returning the page (examples below).
   
@@ -71,15 +71,15 @@
 * Link response
 
   An event handler method may return a 
-  {{{../apidocs/org/apache/tapestry/Link.html}Link}} instance directly.  The Link is converted into a URL and a client redirect to that URL is sent to the client.
+  {{{../../apidocs/org/apache/tapestry/Link.html}Link}} instance directly.  The Link is converted into a URL and a client redirect to that URL is sent to the client.
   
-  The {{{../apidocs/org/apache/tapestry/ComponentResources.html}ComponentResources}} object that is injected into your pages (and components) has methods
+  The {{{../../apidocs/org/apache/tapestry/ComponentResources.html}ComponentResources}} object that is injected into your pages (and components) has methods
   for creating action and page links (they are actually defined in
-  {{{../apidocs/org/apache/tapestry/ComponentResourcesCommon.html}ComponentResourcesCommon}}).
+  {{{../../apidocs/org/apache/tapestry/ComponentResourcesCommon.html}ComponentResourcesCommon}}).
   
 * Stream response
 
-  An event handler can also return a {{{../apidocs/org/apache/tapestry/StreamResponse.html}StreamResponse}} object, which encapsulates a stream to
+  An event handler can also return a {{{../../apidocs/org/apache/tapestry/StreamResponse.html}StreamResponse}} object, which encapsulates a stream to
   be sent directly to the client browser.  This is useful for compnents that want to, say, generate an image or PDF and provide it to the client.
   
 * Object response

Modified: tapestry/tapestry5/trunk/tapestry-core/src/site/apt/guide/parameters.apt
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/site/apt/guide/parameters.apt?rev=570166&r1=570165&r2=570166&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/site/apt/guide/parameters.apt (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/site/apt/guide/parameters.apt Mon Aug 27 08:56:56 2007
@@ -12,7 +12,7 @@
   a specific Java type (which may be a primitive value), and may be <optional> or <required>.
   
   Parameters are defined by placing a
-  {{{../apidocs/org/apache/tapestry/annotations/Parameter.html}Parameter}} annotation
+  {{{../../apidocs/org/apache/tapestry/annotations/Parameter.html}Parameter}} annotation
   onto a private field.
   
   The component listed below is a looping component; it renders its body
@@ -205,26 +205,26 @@
 Translate Bindings
 
   The "translate:" binding prefix is also related to input validator. It is the name
-  of a configured {{{../apidocs/org/apache/tapestry/Translator.html}Translator}}, responsible
+  of a configured {{{../../apidocs/org/apache/tapestry/Translator.html}Translator}}, responsible
   for converting between server-side and client-side representations of data (for instance, between
   client-side strings and server-side numeric values).
   
   The list of available translators is configured by the
-  {{{../apidocs/org/apache/tapestry/services/TranslatorSource.html}TranslatorSource}} service.  
+  {{{../../apidocs/org/apache/tapestry/services/TranslatorSource.html}TranslatorSource}} service.  
   
 Informal Parameters
 
   Some components support <informal parameters>, additional parameters beyond the formally defined parameters.
   Informal parameters will be rendered into the output as additional attributes on the tag rendered by
   the component.  Generally speaking, components that have a 1:1 relationship with a particular HTML tag
-  (such as {{{../apidocs/org/apache/tapestry/corelib/components/TextField.html}TextField}} and 
+  (such as {{{../../apidocs/org/apache/tapestry/corelib/components/TextField.html}TextField}} and 
   \<input\> will support informal parameters.
   
   Informal parameters are often used to set the CSS class of an element, or to specify client-side event handlers.
   
   The default binding prefix for informal parameters depends on <where> the parameter binding is specified.
   If the parameter is bound inside a Java class, within the 
-  {{{../apidocs/org/apache/tapestry/annotations/Component.html}Component}} annotation, then the default binding
+  {{{../../apidocs/org/apache/tapestry/annotations/Component.html}Component}} annotation, then the default binding
   prefix is "prop:".  If the parameter is bound inside the component template, then the default binding
   prefix is "literal:".  This reflects the fact that a parameter specified in the Java class, using the annotation, is most likely
   a computed value, whereas a value in the template should simply be copied, as is, into the result HTML stream.
@@ -317,7 +317,7 @@
   In <rare> cases, you may want to compute the binding to be used as a parameter default. In this case, you will provide
   a <default binding method>, a method that takes no parameters.  The returned value is used to bind the parameter.  The return value may
   be a
-  {{{../apidocs/org/apache/tapestry/Binding.html}Binding}} instance, or it may be a simple value (which is more often the case).  
+  {{{../../apidocs/org/apache/tapestry/Binding.html}Binding}} instance, or it may be a simple value (which is more often the case).  
   
   The method name is "default" plus the capitalized name
   of the parameter.
@@ -417,7 +417,7 @@
   In rare cases, you may want to take different behaviors based on whether a parameter is bound
   or not. This can be accomplished by querying the component's resources, which can be 
   {{{inject.html}injected}}  into the component using the
-  {{{../apidocs/org/apache/tapestry/annotations/Inject.html}Inject}} annotation:
+  {{{../../apidocs/org/apache/tapestry/annotations/Inject.html}Inject}} annotation:
   
 +---+
 public class MyComponent
@@ -443,7 +443,7 @@
   it is hard to distinguish between no binding, and binding explicitly to the value 0.
   
   The Inject annotation will inject the
-  {{{../apidocs/org/apache/tapestry/ComponentResources.html}ComponentResources}} for the component.
+  {{{../../apidocs/org/apache/tapestry/ComponentResources.html}ComponentResources}} for the component.
   These resources are the linkage between the Java class you provide, and the infrastructure Tapestry
   builds around your class.  In any case, once the resources are injected,
   they can be queried.

Modified: tapestry/tapestry5/trunk/tapestry-core/src/site/apt/guide/persist.apt
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/site/apt/guide/persist.apt?rev=570166&r1=570165&r2=570166&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/site/apt/guide/persist.apt (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/site/apt/guide/persist.apt Mon Aug 27 08:56:56 2007
@@ -13,7 +13,7 @@
   to it in later requests.
   
   This is accomplished with the 
-  {{{../apidocs/org/apache/tapestry/annotations/Persist.html}Persist annotation}}.
+  {{{../../apidocs/org/apache/tapestry/annotations/Persist.html}Persist annotation}}.
   
   This annotation is applied to private instance fields.
     
@@ -76,7 +76,7 @@
   
   For each component, the meta-data property <<<tapestry.persistence-strategy>>> is checked.
   This can be specified using the 
-  {{{../apidocs/org/apache/tapestry/annotations/Meta.html}Meta}} annotation.
+  {{{../../apidocs/org/apache/tapestry/annotations/Meta.html}Meta}} annotation.
   
   If the value is non-blank, then that strategy is used. This allows a component to control
   the persistence strategy used inside any sub-components (that don't explicitly use a different

Modified: tapestry/tapestry5/trunk/tapestry-core/src/site/apt/guide/rendering.apt
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/site/apt/guide/rendering.apt?rev=570166&r1=570165&r2=570166&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/site/apt/guide/rendering.apt (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/site/apt/guide/rendering.apt Mon Aug 27 08:56:56 2007
@@ -131,13 +131,13 @@
   often contain ... more components! That means that many different components will
   be in different phases of their own state machine.
     
-* {{{../apidocs/org/apache/tapestry/annotations/SetupRender.html}SetupRender}}
+* {{{../../apidocs/org/apache/tapestry/annotations/SetupRender.html}SetupRender}}
 
   This is where you can perform any one-time per-render setup for your component.
   This is a good place to read component parameters and use them to set temporary instance
   variables.
   
-* {{{../apidocs/org/apache/tapestry/annotations/BeginRender.html}BeginRender}}
+* {{{../../apidocs/org/apache/tapestry/annotations/BeginRender.html}BeginRender}}
 
   For components that render a tag, the start tag is should be rendered here (the close tag
   should be rendered inside the AfterRender phase). The component
@@ -157,13 +157,13 @@
   this phase, but the template (if present) or body (if no template is present, but
   the component has a body) will be rendered.
   
-* {{{../apidocs/org/apache/tapestry/annotations/BeforeRenderTemplate.html}BeforeRenderTemplate}}
+* {{{../../apidocs/org/apache/tapestry/annotations/BeforeRenderTemplate.html}BeforeRenderTemplate}}
 
   This phase exists to allow a component to decorate
   its template (creating markup around the template generated markup), or to allow a component
   to skip its template.
   
-* {{{../apidocs/org/apache/tapestry/annotations/BeforeRenderBody.html}BeforeRenderBody}}
+* {{{../../apidocs/org/apache/tapestry/annotations/BeforeRenderBody.html}BeforeRenderBody}}
 
   Phase associated with a component's body (the portion of its container's template that
   the component occupies).  The BeforeRenderBody phase allows the component the ability
@@ -174,12 +174,12 @@
   is reached, or automatically if the component has no template (but the component does
   have a body).
 
-* {{{../apidocs/org/apache/tapestry/annotations/AfterRenderBody.html}AfterRenderBody}}
+* {{{../../apidocs/org/apache/tapestry/annotations/AfterRenderBody.html}AfterRenderBody}}
 
   Phase that is executed after the body is rendered; this only occurs for components with a 
   body.
   
-* {{{../apidocs/org/apache/tapestry/annotations/AfterRender.html}AfterRender}}
+* {{{../../apidocs/org/apache/tapestry/annotations/AfterRender.html}AfterRender}}
   
   This phase complements BeginRender, and is often used to render the close tag
   that matches the start tag rendered in the BeginRender phase.  In any case, the
@@ -189,7 +189,7 @@
   If no methods are annotated with AfterRender, then no special output occurs, and the
   CleanupRender phase is triggered.
    
-* {{{../apidocs/org/apache/tapestry/annotations/CleanupRender.html}CleanupRender}}
+* {{{../../apidocs/org/apache/tapestry/annotations/CleanupRender.html}CleanupRender}}
   
   The counterpart to SetupRender, this allows final cleanups to occur.
   
@@ -292,7 +292,7 @@
   The order in which the mixins execute is not defined at this time.
   
   Exception: Mixins whose class is annotated with
-  {{{../apidocs/org/apache/tapestry/annotations/MixinAfter.html}MixinAfter}} are ordered
+  {{{../../apidocs/org/apache/tapestry/annotations/MixinAfter.html}MixinAfter}} are ordered
   <after> the component, not before.
   
 * Parents before Child

Modified: tapestry/tapestry5/trunk/tapestry-core/src/site/apt/guide/request.apt
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/site/apt/guide/request.apt?rev=570166&r1=570165&r2=570166&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/site/apt/guide/request.apt (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/site/apt/guide/request.apt Mon Aug 27 08:56:56 2007
@@ -19,27 +19,27 @@
   functions.
   
   When it receives a request, the TapestryFilter obtains the
-  {{{../apidocs/org/apache/tapestry/services/HttpServletRequestHandler.html}HttpServletRequestHandler}} 
+  {{{../../apidocs/org/apache/tapestry/services/HttpServletRequestHandler.html}HttpServletRequestHandler}} 
   service, and invokes its service() method. 
     
 HttpServletRequestHandler Pipeline
 
   This pipeline performs initial processing of the request. It can be extended
   by contributing a
-  {{{../apidocs/org/apache/tapestry/services/HttpServletRequestFilter.html}HttpServletRequestFilter}} into
+  {{{../../apidocs/org/apache/tapestry/services/HttpServletRequestFilter.html}HttpServletRequestFilter}} into
   the HttpServletRequestHandler service's configuration.'
   
   Tapestry does not contribute any filters into this pipeline of its own
   
   The terminator for the pipeline does two things:
   
-  * It stores the request and response into the {{{../apidocs/org/apache/tapestry/services/RequestGlobals.html}RequestGlobals}}
+  * It stores the request and response into the {{{../../apidocs/org/apache/tapestry/services/RequestGlobals.html}RequestGlobals}}
     service. This is a threaded service that stores per-thread/per-request information.
     
   * It wraps the request and response as a
-    {{{../apidocs/org/apache/tapestry/services/Request.html}Request}} and
-    {{{../apidocs/org/apache/tapestry/services/Response.html}Response}}, and passes them into the
-    {{{../apidocs/org/apache/tapestry/services/RequestHandler.html}RequestHandler}} pipeline.
+    {{{../../apidocs/org/apache/tapestry/services/Request.html}Request}} and
+    {{{../../apidocs/org/apache/tapestry/services/Response.html}Response}}, and passes them into the
+    {{{../../apidocs/org/apache/tapestry/services/RequestHandler.html}RequestHandler}} pipeline.
  
   []
      
@@ -60,15 +60,15 @@
      the request, so that the servlet container can handle the reuest normally.
    
    * ErrorFilter catches uncaught exceptions from the lower levels of Tapestry and presents the exception report page.
-     This involves the {{{../apidocs/org/apache/tapestry/services/RequestExceptionHandler.html}alias:RequestExceptionHandler}} service,
+     This involves the {{{../../apidocs/org/apache/tapestry/services/RequestExceptionHandler.html}alias:RequestExceptionHandler}} service,
      which is responsible for initializing and rendering the
-     {{{../apidocs/org/apache/tapestry/corelib/pages/ExceptionReport.html}core/ExceptionReport}} page. 
+     {{{../../apidocs/org/apache/tapestry/corelib/pages/ExceptionReport.html}core/ExceptionReport}} page. 
     
     
    []
       
    The terminator for this pipeline stores the Request and the Response into RequestGlobals, then requests that the
-   {{{../apidocs/org/apache/tapestry/services/Dispatcher.html}MasterDispatcher}} service figure out how to
+   {{{../../apidocs/org/apache/tapestry/services/Dispatcher.html}MasterDispatcher}} service figure out how to
    handle the request (if it is, indeed, a Tapestry request).
    
 Master Dispatcher Service

Modified: tapestry/tapestry5/trunk/tapestry-core/src/site/apt/guide/templates.apt
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/site/apt/guide/templates.apt?rev=570166&r1=570165&r2=570166&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/site/apt/guide/templates.apt (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/site/apt/guide/templates.apt Mon Aug 27 08:56:56 2007
@@ -286,7 +286,7 @@
   element being instrumented.
     
   A component <must> have a type, either via the t:type attribute in the template, or by the defining the component in the Java class using the
-  {{{../apidocs/org/apache/tapestry/annotations/Component.html}Component}} annotation (and using the t:id attribute on the element in the template).
+  {{{../../apidocs/org/apache/tapestry/annotations/Component.html}Component}} annotation (and using the t:id attribute on the element in the template).
 
   
   In <most> cases,it is an aesthetic choice between normal emebedded components, and embedded components via invisible instrumentation.  In a few instances,

Modified: tapestry/tapestry5/trunk/tapestry-core/src/site/apt/guide/unit-testing-pages.apt
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/site/apt/guide/unit-testing-pages.apt?rev=570166&r1=570165&r2=570166&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/site/apt/guide/unit-testing-pages.apt (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/site/apt/guide/unit-testing-pages.apt Mon Aug 27 08:56:56 2007
@@ -10,7 +10,7 @@
 * Setting up a driving environment
 
   In order to unit test a page, you'll need to create an instance of 
-  {{{../apidocs/org/apache/tapestry/test/pagelevel/PageTester.html}PageTester}}.
+  {{{../../apidocs/org/apache/tapestry/test/pagelevel/PageTester.html}PageTester}}.
   It acts as both the browser and the servlet container so that you can
   use it to drive your page. As it is not a real servlet container, you need 
   to tell it the same information as you would in web.xml:
@@ -42,7 +42,7 @@
 
   To test if a page renders properly (optionally with context), you can tell
   the PageTester to render it and then assert against the 
-   {{{../apidocs/org/apache/tapestry/dom/Document.html}DOM Document}} returned.
+   {{{../../apidocs/org/apache/tapestry/dom/Document.html}DOM Document}} returned.
   
   Here is an example. Let's assuming the page being tested is named "MyPage"
   and it should return a page containing an HTML element whose id is "id1" 
@@ -129,7 +129,7 @@
 +---+
 
   To submit a form by clicking a submit button, call the
-  {{{../apidocs/org/apache/tapestry/test/pagelevel/PageTester.html#clickSubmit(org.apache.tapestry.dom.Element, java.util.Map)}clickSubmit()}} 
+  {{{../../apidocs/org/apache/tapestry/test/pagelevel/PageTester.html#clickSubmit(org.apache.tapestry.dom.Element, java.util.Map)}clickSubmit()}} 
   method instead.
 
 * Unit testing a component

Modified: tapestry/tapestry5/trunk/tapestry-core/src/site/apt/guide/validation.apt
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/site/apt/guide/validation.apt?rev=570166&r1=570165&r2=570166&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/site/apt/guide/validation.apt (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/site/apt/guide/validation.apt Mon Aug 27 08:56:56 2007
@@ -17,11 +17,11 @@
 Form component
 
   The core of Tapestry's form support is the
-  {{{../apidocs/org/apache/tapestry/corelib/components/Form.html}Form}} component.  The Form component encloses (wraps around) all the
+  {{{../../apidocs/org/apache/tapestry/corelib/components/Form.html}Form}} component.  The Form component encloses (wraps around) all the
   other <field components>  such as
-  {{{../apidocs/org/apache/tapestry/corelib/components/TextField.html}TextField}},
-  {{{../apidocs/org/apache/tapestry/corelib/components/TextArea.html}TextArea}},
-  {{{../apidocs/org/apache/tapestry/corelib/components/Checkbox.html}Checkbox}}, etc.
+  {{{../../apidocs/org/apache/tapestry/corelib/components/TextField.html}TextField}},
+  {{{../../apidocs/org/apache/tapestry/corelib/components/TextArea.html}TextArea}},
+  {{{../../apidocs/org/apache/tapestry/corelib/components/Checkbox.html}Checkbox}}, etc.
   
   The Form component generates a number of {{{event.html}component events}} that
   you may provide event handler methods for.
@@ -55,7 +55,7 @@
 Tracking Validation Errors
 
   Associated with the Form is an
-  {{{../apidocs/org/apache/tapestry/ValidationTracker.html}ValidationTracker}}
+  {{{../../apidocs/org/apache/tapestry/ValidationTracker.html}ValidationTracker}}
   that tracks all the provided user input and validation errors for every field in the
   form.  The tracker can be provided to the Form via the Form's tracker parameter,
   but this is rarely necessary.
@@ -65,7 +65,7 @@
   
   In your own logic, it is possible to record your own errors.  Form includes
   two different versions of method <<<recordError()>>>, one of which specifies a 
-  {{{../apidocs/org/apache/tapestry/Field.html}Field}} (an interface implemented by
+  {{{../../apidocs/org/apache/tapestry/Field.html}Field}} (an interface implemented by
   all form element components), and one of which is for "global" errors, unassociated
   with any particular field.
   
@@ -133,7 +133,7 @@
 	Because of the the fact that a form submission is <two> requests (the submission itself, then a re-render of the page),
 	it is necessary to make the value stored in the _userName field persist between the two requests. This would be necessary
 	for the _password field as well, except that the 
-	{{{../apidocs/org/apache/tapestry/corelib/components/PasswordField.html}PasswordField}} component never renders a value.
+	{{{../../apidocs/org/apache/tapestry/corelib/components/PasswordField.html}PasswordField}} component never renders a value.
 	
 	Note that the onSuccess() method is not public; event handler methods can have any visibility, even private.  Package private
 	(that is, no modifier) is the typical use, as it allows the component to be tested, from a test case class in the same package.
@@ -178,11 +178,11 @@
   responsibility, not yours).
   
   The 
-  {{{../apidocs/org/apache/tapestry/corelib/components/Errors.html}Errors}} component must be placed inside a Form, it outputs
+  {{{../../apidocs/org/apache/tapestry/corelib/components/Errors.html}Errors}} component must be placed inside a Form, it outputs
   all of the errors for all the fields within the Form as a single list. It uses some simple styling to make the result more presentable.
   
   Each field component, such as the TextField, is paired with a
-  {{{../apidocs/org/apache/tapestry/corelib/components/Label.html}Label}} component.  The Label will render out
+  {{{../../apidocs/org/apache/tapestry/corelib/components/Label.html}Label}} component.  The Label will render out
   a \<label\> element connected to the field. This is very important for useability, especially for users with
   visual disabilities. It also means you can click on the label text to move the cursor to the corresponding field.
   

Modified: tapestry/tapestry5/trunk/tapestry-core/src/site/apt/index.apt
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/site/apt/index.apt?rev=570166&r1=570165&r2=570166&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/site/apt/index.apt (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/site/apt/index.apt Mon Aug 27 08:56:56 2007
@@ -59,7 +59,7 @@
     methods return true (or void) to progress down the default path, and return false to either skip stages or return to earlier 
     stages. This may break some existing code.
   
-  * Component event handlers may now return a {{{apidocs/org/apache/tapestry/StreamResponse.html}StreamResponse}}
+  * Component event handlers may now return a {{{../apidocs/org/apache/tapestry/StreamResponse.html}StreamResponse}}
     to directly send a stream to the client web browser (this is intended for components that need to render
     images, PDF, or other non-page oriented content).
   

Modified: tapestry/tapestry5/trunk/tapestry-hibernate/pom.xml
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-hibernate/pom.xml?rev=570166&r1=570165&r2=570166&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-hibernate/pom.xml (original)
+++ tapestry/tapestry5/trunk/tapestry-hibernate/pom.xml Mon Aug 27 08:56:56 2007
@@ -136,30 +136,6 @@
   <reporting>
     <plugins>
       <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-javadoc-plugin</artifactId>
-        <configuration>
-          <!--
-            <tags>
-            <tag>
-            <name>todo</name>
-            <!- - Should be a combination of the letters Xaoptcmf - ->
-            <placement>a</placement>
-            <head>To do something:</head>
-            </tag>
-            </tags> -->
-          <linksource>true</linksource>
-          <links>
-            <link>http://java.sun.com/j2se/1.5.0/docs/api/</link>
-            <link>http://jakarta.apache.org/commons/logging/apidocs/</link>
-            <link>http://tapestry.apache.org/tapestry5/tapestry-ioc/apidocs/</link>
-            <link>http://tapestry.apache.org/tapestry5/tapestry-core/apidocs/</link>
-            <link>http://www.hibernate.org/hib_docs/v3/api/</link>
-          </links>
-          <stylesheetfile>${basedir}/src/site/resources/css/jdstyle.css</stylesheetfile>
-        </configuration>
-      </plugin>
-      <plugin>
         <groupId>org.codehaus.mojo</groupId>
         <artifactId>cobertura-maven-plugin</artifactId>
         <version>${cobertura-plugin-version}</version>

Modified: tapestry/tapestry5/trunk/tapestry-ioc/pom.xml
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-ioc/pom.xml?rev=570166&r1=570165&r2=570166&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-ioc/pom.xml (original)
+++ tapestry/tapestry5/trunk/tapestry-ioc/pom.xml Mon Aug 27 08:56:56 2007
@@ -99,30 +99,6 @@
   <reporting>
     <plugins>
       <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-javadoc-plugin</artifactId>
-        <!-- Had a classloader problem with version 2.0.3 -->
-        <!--        <version>2.0</version> -->
-        <configuration>
-          <!--
-                    <tags>
-                        <tag>
-                            <name>todo</name>
-                            <!- - Should be a combinaison of the letters Xaoptcmf - ->
-                            <placement>a</placement>
-                            <head>To do something:</head>
-                        </tag>
-                    </tags> -->
-          <linksource>true</linksource>
-          <links>
-            <link>http://java.sun.com/j2se/1.5.0/docs/api/</link>
-            <link>http://java.sun.com/j2ee/1.4/docs/api/</link>
-            <link>http://jakarta.apache.org/commons/logging/apidocs/</link>
-          </links>
-          <stylesheetfile>${basedir}/src/site/resources/css/jdstyle.css</stylesheetfile>
-        </configuration>
-      </plugin>
-      <plugin>
         <groupId>org.codehaus.mojo</groupId>
         <artifactId>cobertura-maven-plugin</artifactId>
         <!-- Version 2.1 is broken. -->

Modified: tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry/ioc/IOCUtilities.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry/ioc/IOCUtilities.java?rev=570166&r1=570165&r2=570166&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry/ioc/IOCUtilities.java (original)
+++ tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry/ioc/IOCUtilities.java Mon Aug 27 08:56:56 2007
@@ -47,7 +47,7 @@
 
         Registry registry = builder.build();
 
-        registry.eagerLoadServices();
+        registry.performRegistryStartup();
 
         return registry;
     }

Modified: tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry/ioc/Registry.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry/ioc/Registry.java?rev=570166&r1=570165&r2=570166&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry/ioc/Registry.java (original)
+++ tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry/ioc/Registry.java Mon Aug 27 08:56:56 2007
@@ -41,7 +41,8 @@
     void shutdown();
 
     /**
-     * Invoked to eagerly load services marked with the {@link EagerLoad} annotation.
+     * Invoked to eagerly load services marked with the {@link EagerLoad} annotation, and to execute
+     * all contributions to the Startup service.
      */
-    void eagerLoadServices();
+    void performRegistryStartup();
 }

Modified: tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry/ioc/RegistryBuilder.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry/ioc/RegistryBuilder.java?rev=570166&r1=570165&r2=570166&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry/ioc/RegistryBuilder.java (original)
+++ tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry/ioc/RegistryBuilder.java Mon Aug 27 08:56:56 2007
@@ -70,9 +70,10 @@
         // Make the ClassFactory appear to be a service inside TapestryIOCModule, even before that
         // module exists.
 
-        Logger classFactoryLog = logSource.getLogger(TapestryIOCModule.class.getName() + ".ClassFactory");
+        Logger classFactoryLogger = logSource.getLogger(TapestryIOCModule.class.getName()
+                + ".ClassFactory");
 
-        _classFactory = new ClassFactoryImpl(_classLoader, classFactoryLog);
+        _classFactory = new ClassFactoryImpl(_classLoader, classFactoryLogger);
 
         add(TapestryIOCModule.class);
     }

Modified: tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry/ioc/internal/IOCInternalTestCase.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry/ioc/internal/IOCInternalTestCase.java?rev=570166&r1=570165&r2=570166&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry/ioc/internal/IOCInternalTestCase.java (original)
+++ tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry/ioc/internal/IOCInternalTestCase.java Mon Aug 27 08:56:56 2007
@@ -68,9 +68,9 @@
         return _registry.autobuild(clazz);
     }
 
-    public final void eagerLoadServices()
+    public final void performRegistryStartup()
     {
-        _registry.eagerLoadServices();
+        _registry.performRegistryStartup();
     }
 
     @BeforeSuite
@@ -80,7 +80,7 @@
 
         _registry = builder.build();
 
-        _registry.eagerLoadServices();
+        _registry.performRegistryStartup();
 
         _classFactory = _registry.getService(ClassFactory.class);
     }

Modified: tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry/ioc/internal/RegistryImpl.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry/ioc/internal/RegistryImpl.java?rev=570166&r1=570165&r2=570166&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry/ioc/internal/RegistryImpl.java (original)
+++ tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry/ioc/internal/RegistryImpl.java Mon Aug 27 08:56:56 2007
@@ -180,12 +180,14 @@
      * RegistryImpl constructor. Moving eager loading of services out to its own method should
      * ensure thread safety.
      */
-    public void eagerLoadServices()
+    public void performRegistryStartup()
     {
         _eagerLoadLock.lock();
 
         for (Module m : _modules)
             m.eagerLoadServices();
+
+        getService("RegistryStartup", Runnable.class).run();
 
         cleanupThread();
     }

Modified: tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry/ioc/internal/RegistryWrapper.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry/ioc/internal/RegistryWrapper.java?rev=570166&r1=570165&r2=570166&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry/ioc/internal/RegistryWrapper.java (original)
+++ tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry/ioc/internal/RegistryWrapper.java Mon Aug 27 08:56:56 2007
@@ -63,9 +63,9 @@
         return _registry.autobuild(clazz);
     }
 
-    public void eagerLoadServices()
+    public void performRegistryStartup()
     {
-        _registry.eagerLoadServices();
+        _registry.performRegistryStartup();
     }
 
 }

Added: tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry/ioc/internal/services/RegistryStartup.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry/ioc/internal/services/RegistryStartup.java?rev=570166&view=auto
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry/ioc/internal/services/RegistryStartup.java (added)
+++ tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry/ioc/internal/services/RegistryStartup.java Mon Aug 27 08:56:56 2007
@@ -0,0 +1,71 @@
+// Copyright 2007 The Apache Software Foundation
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package org.apache.tapestry.ioc.internal.services;
+
+import java.util.List;
+
+import org.apache.tapestry.ioc.Registry;
+import org.apache.tapestry.ioc.internal.util.OneShotLock;
+import org.slf4j.Logger;
+
+/**
+ * Startup service for Tapestry IoC: automatically invoked at
+ * {@linkplain Registry#performRegistryStartup() registry startup} to execute a series of
+ * operations, via its ordered configuration of Runnable objects.
+ */
+public class RegistryStartup implements Runnable
+{
+    private final Logger _logger;
+
+    private final List<Runnable> _configuration;
+
+    private final OneShotLock _lock = new OneShotLock();
+
+    public RegistryStartup(Logger logger, final List<Runnable> configuration)
+    {
+        _logger = logger;
+        _configuration = configuration;
+    }
+
+    /**
+     * Invokes run() on each contributed object. If the object throws a runtime exception, it is
+     * logged but startup continues anyway. This method may only be
+     * {@linkplain OneShotLock invoked once}.
+     */
+    public void run()
+    {
+        _lock.lock();
+
+        // Do we want extra exception catching here?
+
+        for (Runnable r : _configuration)
+        {
+            try
+            {
+                r.run();
+            }
+            catch (RuntimeException ex)
+            {
+                _logger.error(ServiceMessages.startupFailure(ex));
+            }
+        }
+
+        // We don't need them any more since this method can only be run once. It's a insignificant
+        // savings, but still a nice thing to do.
+
+        _configuration.clear();
+    }
+
+}

Modified: tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry/ioc/internal/services/ServiceMessages.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry/ioc/internal/services/ServiceMessages.java?rev=570166&r1=570165&r2=570166&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry/ioc/internal/services/ServiceMessages.java (original)
+++ tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry/ioc/internal/services/ServiceMessages.java Mon Aug 27 08:56:56 2007
@@ -186,4 +186,9 @@
     {
         return MESSAGES.format("service-build-failure", serviceId, cause);
     }
+
+    static String startupFailure(Throwable cause)
+    {
+        return MESSAGES.format("startup-failure", cause);
+    }
 }

Modified: tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry/ioc/services/TapestryIOCModule.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry/ioc/services/TapestryIOCModule.java?rev=570166&r1=570165&r2=570166&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry/ioc/services/TapestryIOCModule.java (original)
+++ tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry/ioc/services/TapestryIOCModule.java Mon Aug 27 08:56:56 2007
@@ -44,6 +44,7 @@
 import org.apache.tapestry.ioc.internal.services.PipelineBuilderImpl;
 import org.apache.tapestry.ioc.internal.services.PropertyAccessImpl;
 import org.apache.tapestry.ioc.internal.services.PropertyShadowBuilderImpl;
+import org.apache.tapestry.ioc.internal.services.RegistryStartup;
 import org.apache.tapestry.ioc.internal.services.StrategyBuilderImpl;
 import org.apache.tapestry.ioc.internal.services.SymbolObjectProvider;
 import org.apache.tapestry.ioc.internal.services.SymbolSourceImpl;
@@ -73,6 +74,7 @@
         binder.bind(SymbolSource.class, SymbolSourceImpl.class);
         binder.bind(SymbolProvider.class, MapSymbolProvider.class).withId("ApplicationDefaults");
         binder.bind(SymbolProvider.class, MapSymbolProvider.class).withId("FactoryDefaults");
+        binder.bind(Runnable.class, RegistryStartup.class).withId("RegistryStartup");
     }
 
     /**

Added: tapestry/tapestry5/trunk/tapestry-ioc/src/site/apt/startup.apt
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-ioc/src/site/apt/startup.apt?rev=570166&view=auto
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-ioc/src/site/apt/startup.apt (added)
+++ tapestry/tapestry5/trunk/tapestry-ioc/src/site/apt/startup.apt Mon Aug 27 08:56:56 2007
@@ -0,0 +1,28 @@
+ ----
+ Registry Startup
+ ----
+ 
+Registry Startup
+
+  It is possible to provide extra logic to be executed at Registry startup, by making contributions to the 
+  RegistryStartup service configuration.
+  
+  The values contributed are Runnable objects.  The configuration is ordered, so it is possible to control
+  in what order the objects are executed.
+  
+  RegistryStartup occurs after eager loaded services are instantiated.
+  
+  Here's an example of a module that makes a contribution.
+  
+----
+
+public class MyModule
+{
+  public static void contributeRegistryStartup(OrderedConfiguration<Runnable> configuration)
+  {
+    configuration.add("MyContributionName", new Runnable() { ... });
+  }
+}
+----
+
+  Generally, these contributions are in the form of inner classes; if they were services, they could just be eagerly loaded.
\ No newline at end of file

Modified: tapestry/tapestry5/trunk/tapestry-ioc/src/site/site.xml
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-ioc/src/site/site.xml?rev=570166&r1=570165&r2=570166&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-ioc/src/site/site.xml (original)
+++ tapestry/tapestry5/trunk/tapestry-ioc/src/site/site.xml Mon Aug 27 08:56:56 2007
@@ -61,6 +61,7 @@
             <item name="Object Providers" href="provider.html"/>
             <item name="Ordering" href="order.html"/>
             <item name="Logging" href="logging.html"/>
+            <item name="Startup" href="startup.html"/>
         </menu>
         
         <menu name="Service Builders">

Modified: tapestry/tapestry5/trunk/tapestry-ioc/src/test/java/org/apache/tapestry/ioc/DuplicateServiceTypeModule.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-ioc/src/test/java/org/apache/tapestry/ioc/DuplicateServiceTypeModule.java?rev=570166&r1=570165&r2=570166&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-ioc/src/test/java/org/apache/tapestry/ioc/DuplicateServiceTypeModule.java (original)
+++ tapestry/tapestry5/trunk/tapestry-ioc/src/test/java/org/apache/tapestry/ioc/DuplicateServiceTypeModule.java Mon Aug 27 08:56:56 2007
@@ -16,12 +16,12 @@
 
 public class DuplicateServiceTypeModule
 {
-    public Runnable buildFred()
+    public Pingable buildFred()
     {
         return null;
     }
 
-    public Runnable buildBarney()
+    public Pingable buildBarney()
     {
         return null;
     }

Modified: tapestry/tapestry5/trunk/tapestry-ioc/src/test/java/org/apache/tapestry/ioc/IntegrationTest.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-ioc/src/test/java/org/apache/tapestry/ioc/IntegrationTest.java?rev=570166&r1=570165&r2=570166&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-ioc/src/test/java/org/apache/tapestry/ioc/IntegrationTest.java (original)
+++ tapestry/tapestry5/trunk/tapestry-ioc/src/test/java/org/apache/tapestry/ioc/IntegrationTest.java Mon Aug 27 08:56:56 2007
@@ -328,7 +328,7 @@
                 EagerLoadModule._eagerLoadDidHappen,
                 "EagerLoadModule is not in correct initial state.");
 
-        r.eagerLoadServices();
+        r.performRegistryStartup();
 
         assertTrue(EagerLoadModule._eagerLoadDidHappen);
     }
@@ -360,11 +360,11 @@
     {
         Registry r = buildRegistry(ExceptionInConstructorModule.class);
 
-        Runnable runnable = r.getService(Runnable.class);
+        Pingable pingable = r.getService(Pingable.class);
 
         try
         {
-            runnable.run();
+            pingable.ping();
             unreachable();
         }
         catch (RuntimeException ex)
@@ -373,7 +373,7 @@
                     ex,
                     "Error invoking constructor",
                     "ExceptionInConstructorServiceImpl() (at ExceptionInConstructorServiceImpl.java",
-                    "for service 'Runnable'",
+                    "for service 'Pingable'",
                     "Yes, we have no tomatoes.");
         }
     }
@@ -428,13 +428,13 @@
 
         // We can get the proxy.
 
-        Runnable runnable = r.getService(Runnable.class);
+        Pingable pingable = r.getService(Pingable.class);
 
         try
         {
             // But it fails at realization
 
-            runnable.run();
+            pingable.ping();
 
             unreachable();
         }
@@ -442,7 +442,7 @@
         {
             assertMessageContains(
                     ex,
-                    "Class org.apache.tapestry.ioc.UnbuildableRunnable does not contain a public constructor needed to autobuild.");
+                    "Class org.apache.tapestry.ioc.UnbuildablePingable does not contain a public constructor needed to autobuild.");
 
             // Like to check that the message includes the source location
 
@@ -458,7 +458,7 @@
 
         try
         {
-            r.autobuild(UnbuildableRunnable.class);
+            r.autobuild(UnbuildablePingable.class);
 
             unreachable();
         }
@@ -466,7 +466,7 @@
         {
             assertMessageContains(
                     ex,
-                    "Class org.apache.tapestry.ioc.UnbuildableRunnable does not contain a public constructor needed to autobuild.");
+                    "Class org.apache.tapestry.ioc.UnbuildablePingable does not contain a public constructor needed to autobuild.");
         }
     }
 
@@ -536,14 +536,14 @@
 
         try
         {
-            r.getService(Runnable.class);
+            r.getService(Pingable.class);
             unreachable();
         }
         catch (RuntimeException ex)
         {
             assertEquals(
                     ex.getMessage(),
-                    "Service interface java.lang.Runnable is matched by 2 services: Barney, Fred.  Automatic dependency resolution requires that exactly one service implement the interface.");
+                    "Service interface org.apache.tapestry.ioc.Pingable is matched by 2 services: Barney, Fred.  Automatic dependency resolution requires that exactly one service implement the interface.");
         }
     }
 

Added: tapestry/tapestry5/trunk/tapestry-ioc/src/test/java/org/apache/tapestry/ioc/Pingable.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-ioc/src/test/java/org/apache/tapestry/ioc/Pingable.java?rev=570166&view=auto
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-ioc/src/test/java/org/apache/tapestry/ioc/Pingable.java (added)
+++ tapestry/tapestry5/trunk/tapestry-ioc/src/test/java/org/apache/tapestry/ioc/Pingable.java Mon Aug 27 08:56:56 2007
@@ -0,0 +1,21 @@
+// Copyright 2007 The Apache Software Foundation
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package org.apache.tapestry.ioc;
+
+/** Interface used as a stand-in for testing for more complicated services. */
+public interface Pingable
+{
+    void ping();
+}

Modified: tapestry/tapestry5/trunk/tapestry-ioc/src/test/java/org/apache/tapestry/ioc/ServiceBuilderAutobuilderModule.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-ioc/src/test/java/org/apache/tapestry/ioc/ServiceBuilderAutobuilderModule.java?rev=570166&r1=570165&r2=570166&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-ioc/src/test/java/org/apache/tapestry/ioc/ServiceBuilderAutobuilderModule.java (original)
+++ tapestry/tapestry5/trunk/tapestry-ioc/src/test/java/org/apache/tapestry/ioc/ServiceBuilderAutobuilderModule.java Mon Aug 27 08:56:56 2007
@@ -21,8 +21,8 @@
         return resources.autobuild(StringHolderImpl.class);
     }
 
-    public Runnable buildRunnable(ServiceResources resources)
+    public Pingable buildPingable(ServiceResources resources)
     {
-        return resources.autobuild(UnbuildableRunnable.class);
+        return resources.autobuild(UnbuildablePingable.class);
     }
 }

Copied: tapestry/tapestry5/trunk/tapestry-ioc/src/test/java/org/apache/tapestry/ioc/UnbuildablePingable.java (from r569892, tapestry/tapestry5/trunk/tapestry-ioc/src/test/java/org/apache/tapestry/ioc/UnbuildableRunnable.java)
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-ioc/src/test/java/org/apache/tapestry/ioc/UnbuildablePingable.java?p2=tapestry/tapestry5/trunk/tapestry-ioc/src/test/java/org/apache/tapestry/ioc/UnbuildablePingable.java&p1=tapestry/tapestry5/trunk/tapestry-ioc/src/test/java/org/apache/tapestry/ioc/UnbuildableRunnable.java&r1=569892&r2=570166&rev=570166&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-ioc/src/test/java/org/apache/tapestry/ioc/UnbuildableRunnable.java (original)
+++ tapestry/tapestry5/trunk/tapestry-ioc/src/test/java/org/apache/tapestry/ioc/UnbuildablePingable.java Mon Aug 27 08:56:56 2007
@@ -17,13 +17,13 @@
 /**
  * Used to test failure to autobuild a service because of a lack of a public constructor.
  */
-public class UnbuildableRunnable implements Runnable
+public class UnbuildablePingable implements Pingable
 {
-    private UnbuildableRunnable()
+    private UnbuildablePingable()
     {
     }
 
-    public void run()
+    public void ping()
     {
     }
 

Modified: tapestry/tapestry5/trunk/tapestry-ioc/src/test/java/org/apache/tapestry/ioc/internal/ExceptionInConstructorModule.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-ioc/src/test/java/org/apache/tapestry/ioc/internal/ExceptionInConstructorModule.java?rev=570166&r1=570165&r2=570166&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-ioc/src/test/java/org/apache/tapestry/ioc/internal/ExceptionInConstructorModule.java (original)
+++ tapestry/tapestry5/trunk/tapestry-ioc/src/test/java/org/apache/tapestry/ioc/internal/ExceptionInConstructorModule.java Mon Aug 27 08:56:56 2007
@@ -14,12 +14,13 @@
 
 package org.apache.tapestry.ioc.internal;
 
+import org.apache.tapestry.ioc.Pingable;
 import org.apache.tapestry.ioc.ServiceBinder;
 
 public class ExceptionInConstructorModule
 {
     public static void bind(ServiceBinder binder)
     {
-        binder.bind(Runnable.class, ExceptionInConstructorServiceImpl.class);
+        binder.bind(Pingable.class, ExceptionInConstructorServiceImpl.class);
     }
 }

Modified: tapestry/tapestry5/trunk/tapestry-ioc/src/test/java/org/apache/tapestry/ioc/internal/ExceptionInConstructorServiceImpl.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-ioc/src/test/java/org/apache/tapestry/ioc/internal/ExceptionInConstructorServiceImpl.java?rev=570166&r1=570165&r2=570166&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-ioc/src/test/java/org/apache/tapestry/ioc/internal/ExceptionInConstructorServiceImpl.java (original)
+++ tapestry/tapestry5/trunk/tapestry-ioc/src/test/java/org/apache/tapestry/ioc/internal/ExceptionInConstructorServiceImpl.java Mon Aug 27 08:56:56 2007
@@ -14,7 +14,9 @@
 
 package org.apache.tapestry.ioc.internal;
 
-public class ExceptionInConstructorServiceImpl implements Runnable
+import org.apache.tapestry.ioc.Pingable;
+
+public class ExceptionInConstructorServiceImpl implements Pingable
 {
 
     public ExceptionInConstructorServiceImpl()
@@ -22,7 +24,7 @@
         throw new RuntimeException("Yes, we have no tomatoes.");
     }
 
-    public void run()
+    public void ping()
     {
     }