Author: craigmcc Date: Sat Jan 14 23:25:47 2006 New Revision: 369184 URL: http://svn.apache.org/viewcvs?rev=369184&view=rev Log: Document the current state of the Shale Tiger Extensions. Also, fix a couple of typos in other areas.
Modified: struts/shale/trunk/core-library/src/java/org/apache/shale/view/faces/CallbacksFactory.java struts/shale/trunk/tiger/nbproject/project.xml struts/shale/trunk/xdocs/features-tiger-extensions.xml struts/shale/trunk/xdocs/using.xml Modified: struts/shale/trunk/core-library/src/java/org/apache/shale/view/faces/CallbacksFactory.java URL: http://svn.apache.org/viewcvs/struts/shale/trunk/core-library/src/java/org/apache/shale/view/faces/CallbacksFactory.java?rev=369184&r1=369183&r2=369184&view=diff ============================================================================== --- struts/shale/trunk/core-library/src/java/org/apache/shale/view/faces/CallbacksFactory.java (original) +++ struts/shale/trunk/core-library/src/java/org/apache/shale/view/faces/CallbacksFactory.java Sat Jan 14 23:25:47 2006 @@ -60,7 +60,7 @@ ClassLoader cl = getApplicationClassLoader(); Class clazz = null; try { - clazz = cl.loadClass("org.apache.shale.tiger.view.faces.ViewControllerCallbacks"); + clazz = cl.loadClass("org.apache.shale.tiger.view.faces.ViewControllerCallbacks2"); } catch (ClassNotFoundException e) { ; } Modified: struts/shale/trunk/tiger/nbproject/project.xml URL: http://svn.apache.org/viewcvs/struts/shale/trunk/tiger/nbproject/project.xml?rev=369184&r1=369183&r2=369184&view=diff ============================================================================== --- struts/shale/trunk/tiger/nbproject/project.xml (original) +++ struts/shale/trunk/tiger/nbproject/project.xml Sat Jan 14 23:25:47 2006 @@ -8,17 +8,17 @@ <properties/> <folders> <source-folder> - <label>src/conf</label> + <label>Configuration Files</label> <type>java</type> <location>src/conf</location> </source-folder> <source-folder> - <label>src/java</label> + <label>Java Sources</label> <type>java</type> <location>src/java</location> </source-folder> <source-folder> - <label>src/test</label> + <label>Test Sources</label> <type>java</type> <location>src/test</location> </source-folder> @@ -49,15 +49,15 @@ <view> <items> <source-folder style="packages"> - <label>src/conf</label> + <label>Configuration Files</label> <location>src/conf</location> </source-folder> <source-folder style="packages"> - <label>src/java</label> + <label>Java Sources</label> <location>src/java</location> </source-folder> <source-folder style="packages"> - <label>src/test</label> + <label>Test Sources</label> <location>src/test</location> </source-folder> <source-file> Modified: struts/shale/trunk/xdocs/features-tiger-extensions.xml URL: http://svn.apache.org/viewcvs/struts/shale/trunk/xdocs/features-tiger-extensions.xml?rev=369184&r1=369183&r2=369184&view=diff ============================================================================== --- struts/shale/trunk/xdocs/features-tiger-extensions.xml (original) +++ struts/shale/trunk/xdocs/features-tiger-extensions.xml Sat Jan 14 23:25:47 2006 @@ -10,7 +10,188 @@ <section name="Shale Tiger Extensions"> <a name="tiger"/> - <p>FIXME - Describe tiger feature.</p> + <a name="tiger-introduction"/> + <subsection name="Introduction"> + + <p>Are you running your web container on a Java SE 5 (code named + "Tiger") or later JVM? If so, you can take advantage of several + Shale features that are enabled by this underlying platform:</p> + <ul> + <li>The ability to declare managed bean configuration + with annotations, rather than requiring configuration + in a <code>faces-config.xml</code> resource.</li> + <li>The ability of a backing bean to receive + <a href="features-view-controller.html">View Controller</a> + event callbacks to arbitrary methods declared with annotations, + rather than requiring the backing bean to implement the + <code>ViewController</code> interface and provide methods + with the names defined by this interface.</li> + </ul> + + <p>These features are enabled automatically if you include + <code>shale-tiger.jar</code> in your web application.</p> + + </subsection> + + <a name="tiger-services"/> + <subsection name="Services Provided"> + + <h4>Annotated Managed Beans</h4> + + <p>In a traditional JavaServer Faces application, managed + beans must be declared in a <code>faces-config.xml</code> + resource supplied by the application. In many cases, the + supplied values are effectively constant -- for example, the + name that the managed bean is known by is a dependency for + other elements of the application (such as value binding + expressions). In such cases, it would be very useful to + be able to configure the managed bean name, and the scope + this bean should be stored in, directly in the bean source + code itself.</p> + + <p>In addition to defining the characteristics of the managed + bean itself, you can also use the <code>@Value</code> + annotation to establish the initial value to which a + field should be set. (You must supply a corresponding public + property setter method.) This is not particularly useful + for setting literal values, because you can accomplish the + same result with a Java initialization expression on the + instance variable itself. However, it is very useful when + you want to specify an application-specific value binding + expression, without requiring the developer to explicitly + include the configuration in a <code>faces-config.xml</code> + resource.</p> + + <p>In some scenarios, an application developer will still want + to override the characteristics that are specified via annotations. + For this reason, any configuration information in a + <code>faces-config.xml</code> resource, for a particular + managed bean name, will <em>override</em> the corresponding + settings defined by annotations.</p> + + <h4>Annotated View Controllers</h4> + + <p>The <a href="features-view-controller.html">View Controller</a> + feature of Shale provides event callback services for several + interesting lifecycle events:</p> + + <ul> + <li><code>init</code> - Called when the view corresponding + to this class has been created or restored.</li> + <li><code>preprocess</code> - Called if this view is the one + that will process a form submit.</li> + <li><code>prerender</code> - Called immediately before this + view will be asked to render itself.</li> + <li><code>destroy</code> - Called after rendering, for all + instances where <code>init</code> was called.</li> + </ul> + + <p>In the standard Shale implementation, this functionality is + provided in the traditional way -- the backing bean interested + in these callbacks is required to implement the + <code>org.apache.shale.view.ViewController</code> interface, + with fixed method names for each callback. With the Shale Tiger + Extensions, however, this is no longer required (although it is, + of course, still supported).</p> + + <p>Instead, you implement a backing bean class with no requirements + on extending a particular base class, or implementing a particular + interface. Instead, you use the <code>@View</code> annotation on + the class itself to say that it is interested in view controller + callback events. Then, on any public method that takes no arguments, + you use the <code>@Init</code>, <code>@Preprocess</code>, + <code>@Prerender</code>, or <code>@Destroy</code> annotations + to request callbacks, to that particular method, when the corresponding + lifecycle event occurs. You are <strong>NOT</strong> required + to use a particular method name for these callbacks. In addition, + if your backing bean logic is not interested in one or more of the + view controller callbacks, you are <code>NOT</code> required to + provide a method that is marked with the corresponding annotaiton.</p> + + </subsection> + + <a name="tiger-using"/> + <subsection name="Using The Tiger Extensions"> + + <p>To use any of the Shale Tiger Extensions in your application, + you <strong>MUST</strong> run your web container on a Java SE 5 + or later container, and <strong>MUST</strong> include the + <code>shale-tiger.jar</code> resource in your web application.</p> + + <h4>Using Annotated Managed Beans</h4> + + <p>To use the <em>Annotated Managed Beans</em> feature, you must + use the <code>@Bean</code> annotation on the class itself, and + set the managed bean name (required) and scope (optional). These + elements correspond to the <code><managed-bean-name></code> + and <code><managed-bean-scope></code> elements in a + <code>faces-config.xml</code> resource. Then, within the class, + you can optionally use the <code>@Value</code> annotation on a + field to provide a literal value, or value binding expression, + that will provide the initial value for the corresponding property.</p> + + <p>Putting it all together, you might end up with a class that + looks like this:</p> + +<source> + package com.mycompany.mypackage; + + import org.apache.shale.tiger.managed.Bean; + import org.apache.shale.tiger.managed.Scope; + import org.apache.shale.tiger.managed.Value; + + // Define a managed bean named "mybean" to be put in session scope + @Bean(name="mybean" scope=Scope.SESSION) + public class MyBeanClass { // No required superclass or interface + + // Name a property that will be initialized via expression + @Value("#{otherBean.otherProperty}") + private String name = null; + + public String getName() { return this.name; } + public void setName(String name) { this.name = name; } + + } +</source> + + <h4>Using Annotated View Controllers</h4> + + <p>To use the <em>Annotated View Controllers</em> feature, + you must use the <code>@View</code> annotation on the class + itself. Then, you can use the <code>@Init</code>, + <code>@Preprocess</code>, <code>@Prerender</code>, and + <code>@Destroy</code> annotations on the methods that you + wish to have notified when the corresponding lifecycle trips + occur. You need to implement only the callbacks you are + interested in (unlike the traditional implementation of an + interface, where you must provide implementations for all of + the defined method signatures).</p> + + <p>A class that wishes to receive view controller callbacks + via these annotations might look like this:</p> + +<source> + package com.mycompany.mypackage; + + import org.apache.shale.tiger.view.Init; + import org.apache.shale.tiger.view.Preprocess; + import org.apache.shale.tiger.view.View; + + @View public class MyBean { // No required superclass or interface + + // Name your init() method whatever you want + @Init public void myInit() { ... } + + // Same with the prerender() method + @Prerender public void justBeforeRendering() { ... } + + // This class is not interested in preprocess or destroy + // methods, so they are not defined + + } +</source> + + </subsection> </section> Modified: struts/shale/trunk/xdocs/using.xml URL: http://svn.apache.org/viewcvs/struts/shale/trunk/xdocs/using.xml?rev=369184&r1=369183&r2=369184&view=diff ============================================================================== --- struts/shale/trunk/xdocs/using.xml (original) +++ struts/shale/trunk/xdocs/using.xml Sat Jan 14 23:25:47 2006 @@ -93,6 +93,13 @@ <td align="center">---</td> </tr> <tr> + <td><code>shale-tiger.jar</code></td> + <td>Java SE</td> + <td>5 or later</td> + <td><strong>MUST</strong> be running on a Java SE 5 + (code name "Tiger") or later JDK.</td> + </tr> + <tr> <td><code>shale-tiles.jar</code></td> <td><a href="http://cvs.apache.org/builds/struts/nightly/sandbox/tiles-core/"> Standalone Tiles</a></td> @@ -142,15 +149,21 @@ <p>All Shale based applications will require <code>shale-core.jar</code> (and its dependencies, as described above). If you wish to utilize the features provided in the optional Shale components - (<code>shale-clay.jar</code>, <code>shale-spring.jar</code>, and/or - <code>shale-tiles.jar</code>), include those JARs (and ther external - dependencies) as well.</p> + (<code>shale-clay.jar</code>, <code>shale-spring.jar</code>, + <code>shale-tiger.jar</code>, and/or <code>shale-tiles.jar</code>), + include those JARs (and ther external dependencies) as well.</p> <p>The <code>shale-test.jar</code> contains base classes for <a href="http://junit.org">JUnit</a> based unit tests for your application classes. As such, it is useful only at application build time, and should never be included in a runtime web application archive.</p> + + <p>The <code>shale-tiger.jar</code> contains feature extensions + that depend on platform capabilities (most particularly the + annotations facility) of Java SE 5 (code named "Tiger"). You + must <strong>NOT</strong> include this library if you are running + on a JDK 1.4 platform.</p> <h4>(B) Configure <code>/WEB-INF/web.xml</code> Resource</h4> --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]