[webbeans-commits] Webbeans SVN: r2596 - in doc/tags: 1.0.0.PREVIEW1 and 1 other directories.

webbeans-commits at lists.jboss.org webbeans-commits at lists.jboss.org
Mon Apr 20 08:42:40 EDT 2009


Author: pete.muir at jboss.org
Date: 2009-04-20 08:42:39 -0400 (Mon, 20 Apr 2009)
New Revision: 2596

Added:
   doc/tags/1.0.0.PREVIEW1/
   doc/tags/1.0.0.PREVIEW1/en-US/gettingstarted.xml
   doc/tags/1.0.0.PREVIEW1/pom.xml
Removed:
   doc/tags/1.0.0.PREVIEW1/en-US/gettingstarted.xml
   doc/tags/1.0.0.PREVIEW1/pom.xml
Log:
[maven-release-plugin]  copy for tag 1.0.0.PREVIEW1

Copied: doc/tags/1.0.0.PREVIEW1 (from rev 2520, doc/trunk/reference)

Deleted: doc/tags/1.0.0.PREVIEW1/en-US/gettingstarted.xml
===================================================================
--- doc/trunk/reference/en-US/gettingstarted.xml	2009-04-19 21:01:39 UTC (rev 2520)
+++ doc/tags/1.0.0.PREVIEW1/en-US/gettingstarted.xml	2009-04-20 12:42:39 UTC (rev 2596)
@@ -1,1526 +0,0 @@
-<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN" "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd"  [ ]>
-
-<chapter id="ri">
-   <title>Getting started with Web Beans, the Reference Implementation of JSR-299</title>
-
-   <para>
-     The Web Beans is being developed at
-     <ulink url="http://seamframework.org/WebBeans">the Seam project</ulink>.
-     You can download the latest developer release of Web Beans from the
-     <ulink url="http://seamframework.org/Download">the downloads page</ulink>.
-   </para> 
-
-    <para>
-      Web Beans comes with a two deployable example applications:
-      <literal>webbeans-numberguess</literal>, a war example, containing only
-      simple beans, and <literal>webbeans-translator</literal> an ear example,
-      containing enterprise beans. There are also two variations on the 
-      numberguess example, the tomcat example (suitable for deployment to 
-      Tomcat) and the jsf2 example, which you can use if you are running JSF2.
-      To run the examples you'll need the following:
-   </para>
-   
-   <itemizedlist>
-     <listitem>
-       <para>the latest release of Web Beans,</para>
-     </listitem>
-     <listitem>
-       <para>JBoss AS 5.0.1.GA, or</para>
-     </listitem>
-     <listitem>
-       <para>Apache Tomcat 6.0.x, and</para>
-     </listitem>
-     <listitem>
-       <para>Ant 1.7.0.</para>
-     </listitem>
-   </itemizedlist>
-   
-   <section>
-      <title>Using JBoss AS 5</title>
-   
-      <para> 
-         You'll need to download JBoss AS 5.0.1.GA from 
-         <ulink url="http://www.jboss.org/jbossas/downloads/">jboss.org</ulink>,
-         and unzip it. For example:
-      </para>
-      
-      <programlisting><![CDATA[$ cd /Applications
-$ unzip ~/jboss-5.0.1.GA.zip]]></programlisting>
-
-      <para>
-         Next, download Web Beans from 
-         <ulink url="http://seamframework.org/Download">seamframework.org</ulink>,
-         and unzip it. For example
-      </para>
-      
-      <programlisting><![CDATA[$ cd ~/
-$ unzip ~/webbeans-$VERSION.zip]]></programlisting>
-
-   
-      <para>
-         Next, we need to tell Web Beans where JBoss is located. Edit
-         <literal>jboss-as/build.properties</literal> and set the
-         <literal>jboss.home</literal> property. For example:
-      </para>
-      
-      <programlisting>jboss.home=/Applications/jboss-5.0.1.GA</programlisting>
-      
-      <para>
-         To install Web Beans, you'll need Ant 1.7.0 installed, and the 
-         <literal>ANT_HOME</literal> environment variable set. For example:
-      </para>
-      
-         <programlisting>$ unzip apache-ant-1.7.0.zip
-$ export ANT_HOME=~/apache-ant-1.7.0</programlisting>
-
-      <para>
-         Then, you can install the update. The update script will use Maven to
-         download Web Beans automatically.
-      </para>
-      
-      <programlisting>$ cd webbeans-$VERSION/jboss-as
-$ ant update</programlisting>
-
-      <para>
-         Now, you're ready to deploy your first example!
-      </para>
-      
-      <tip>
-         <para>
-            The build scripts for the examples offer a number of targets for 
-            JBoss AS, these are:
-         </para>
-         <itemizedlist>
-            <listitem>
-               <para>
-                  <literal>ant restart</literal> - deploy the example in exploded 
-                  format
-               </para>
-            </listitem>
-            <listitem>
-               <para>
-                  <literal>ant explode</literal> - update an exploded example, without
-                  restarting the deployment
-               </para>
-            </listitem>
-            <listitem>
-               <para>
-                  <literal>ant deploy</literal> - deploy the example in compressed jar format
-               </para>
-            </listitem>
-            <listitem>
-               <para>
-                  <literal>ant undeploy</literal> - remove the example from the server
-               </para>
-            </listitem>
-            <listitem>
-               <para>
-                  <literal>ant clean</literal> - clean the example
-              </para>
-            </listitem>
-         </itemizedlist>
-      </tip>
-   
-      <para>
-         To deploy the numberguess example:
-      </para>
-   
-      <programlisting>$ cd examples/numberguess
-ant deploy</programlisting>
-
-      <para>
-         Start JBoss AS:
-      </para>
-      
-      <programlisting>$ /Application/jboss-5.0.0.GA/bin/run.sh</programlisting>
-      
-      <tip>
-         <para>
-            If you use Windows, use the <literal>run.bat</literal>script.
-         </para>
-      </tip>
-   
-      <para>
-         Wait for the application to deploy, and enjoy hours of fun at
-         <ulink url="http://localhost:8080/webbeans-numberguess" />!
-      </para>
-      
-      <para>
-         Web Beans includes a second simple example that will translate your text
-         into Latin. The numberguess example is a war example, and uses only simple
-         beans; the translator example is an ear example, and includes enterprise
-         beans, packaged in an EJB module. To try it out:
-      </para>
-   
-      <programlisting>$ cd examples/translator
-ant deploy</programlisting>
-   
-      <para>
-         Wait for the application to deploy, and visit
-         <ulink url="http://localhost:8080/webbeans-translator" />!
-      </para>
-      
-   </section>
-   
-   <section>
-      <title>Using Apache Tomcat 6.0</title>
-      
-      <para> 
-         You'll need to download Tomcat 6.0.18 or later from 
-         <ulink url="http://tomcat.apache.org/download-60.cgi">tomcat.apache.org</ulink>,
-         and unzip it. For example:
-      </para>
-      
-      <programlisting><![CDATA[$ cd /Applications
-$ unzip ~/apache-tomcat-6.0.18.zip]]></programlisting>
-
-      <para>
-         Next, download Web Beans from 
-         <ulink url="http://seamframework.org/Download">seamframework.org</ulink>,
-         and unzip it. For example
-      </para>
-      
-      <programlisting><![CDATA[$ cd ~/
-$ unzip ~/webbeans-$VERSION.zip]]></programlisting>
-
-      <para>
-         Next, we need to tell Web Beans where Tomcat is located. Edit
-         <literal>jboss-as/build.properties</literal> and set the
-         <literal>tomcat.home</literal> property. For example:
-      </para>
-      
-      <programlisting>tomcat.home=/Applications/apache-tomcat-6.0.18</programlisting>
-
-      <tip>
-         <para>
-            The build scripts for the examples offer a number of targets for 
-            Tomcat, these are:
-         </para>
-         <itemizedlist>
-            <listitem>
-               <para>
-                  <literal>ant tomcat.restart</literal> - deploy the example in exploded 
-                  format
-               </para>
-            </listitem>
-            <listitem>
-               <para>
-                  <literal>ant tomcat.explode</literal> - update an exploded example, without
-                  restarting the deployment
-               </para>
-            </listitem>
-            <listitem>
-               <para>
-                  <literal>ant tomcat.deploy</literal> - deploy the example in compressed jar format
-               </para>
-            </listitem>
-            <listitem>
-               <para>
-                  <literal>ant tomcat.undeploy</literal> - remove the example from the server
-               </para>
-            </listitem>
-            <listitem>
-               <para>
-                  <literal>ant tomcat.clean</literal> - clean the example
-              </para>
-            </listitem>
-         </itemizedlist>
-      </tip>
-      
-      <para>
-         To deploy the numberguess example for tomcat:
-      </para>
-   
-      <programlisting>$ cd examples/tomcat
-ant tomcat.deploy</programlisting>
-
-      <para>
-         Start Tomcat:
-      </para>
-      
-      <programlisting>$ /Applications/apache-tomcat-6.0.18/bin/startup.sh</programlisting>
-      
-      <tip>
-         <para>
-            If you use Windows, use the <literal>startup.bat</literal>script.
-         </para>
-      </tip>
-   
-      <para>
-         Wait for the application to deploy, and enjoy hours of fun at
-         <ulink url="http://localhost:8080/webbeans-numberguess" />!
-      </para>
-
-   </section>
-   
-   <section>
-      <title>Using GlassFish</title>
-      
-      <para>TODO</para>
-   </section>
-   
-   <section>
-      <title>The numberguess example</title>
-      
-      <para>
-         In the numberguess application you get given 10 attempts to guess a
-         number between 1 and 100. After each attempt, you will be told whether
-         you are too high, or too low.
-      </para>
-      
-      <para>
-         The numberguess example is comprised of a number of Web Beans, 
-         configuration files, and Facelet JSF pages, packaged as a war. Let's 
-         start with the configuration files.
-      </para>
-      
-      <para>
-          All the configuration files for this example are located in 
-          <literal>WEB-INF/</literal>, which is stored in
-          <literal>WebContent</literal> in the source tree. First, we have 
-          <literal>faces-config.xml</literal>, in which we tell JSF to use
-          Facelets:
-      </para>
-      
-      <programlisting role="XML"><![CDATA[<?xml version='1.0' encoding='UTF-8'?>
-<faces-config version="1.2"
-              xmlns="http://java.sun.com/xml/ns/javaee"
-              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-              xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_1_2.xsd">
-    
-    <application>
-        <view-handler>com.sun.facelets.FaceletViewHandler</view-handler>
-    </application>
-
-</faces-config>]]></programlisting>
-
-      <para>
-         There is an empty <literal>web-beans.xml</literal> file, which marks
-         this application as a Web Beans application.
-      </para>
-      
-      <para>
-         Finally there is <literal>web.xml</literal>:
-      </para>
-      
-      <programlistingco>
-         <areaspec>
-            <area id="faces.servlet" coords="12" />
-            <area id="faces.servlet.mapping" coords="18" />
-            <area id="faces.default.suffix" coords="23" />
-            <area id="session.timeout" coords="28" />
-            <area id="webbeans.listener" coords="32" />
-         </areaspec>
-         <programlisting><![CDATA[<?xml version="1.0" encoding="UTF-8"?>
-
-<web-app version="2.5"
-    xmlns="http://java.sun.com/xml/ns/javaee"
-    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
-   
-   <display-name>Web Beans Numbergues example</display-name>
-
-   <!-- JSF -->
-
-   <servlet>
-      <servlet-name>Faces Servlet</servlet-name>
-      <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
-      <load-on-startup>1</load-on-startup>
-   </servlet>
-
-   <servlet-mapping>
-      <servlet-name>Faces Servlet</servlet-name>
-      <url-pattern>*.jsf</url-pattern>
-   </servlet-mapping>
-   
-   <context-param>
-      <param-name>javax.faces.DEFAULT_SUFFIX</param-name>
-      <param-value>.xhtml</param-value>
-   </context-param>
-
-   <session-config>
-      <session-timeout>10</session-timeout>
-   </session-config>
-
-</web-app>]]></programlisting>
-         <calloutlist>
-            <callout arearefs="faces.servlet">
-               <para>
-                  Enable and load the JSF servlet
-               </para>
-            </callout>
-            <callout arearefs="faces.servlet.mapping">
-               <para>
-                  Configure requests to <literal>.jsf</literal> pages to be
-                  handled by JSF
-               </para>
-            </callout>
-            <callout arearefs="faces.default.suffix">
-               <para>
-                  Tell JSF that we will be giving our source files (facelets) an
-                  extension of <literal>.xhtml</literal>
-               </para>
-            </callout>
-            <callout arearefs="session.timeout">
-               <para>
-                  Configure a session timeout of 10 minutes
-               </para>
-            </callout>
-         </calloutlist>
-      </programlistingco>
-      
-      <note>
-         <para>
-            Whilst this demo is a JSF demo, you can use Web Beans with any 
-            Servlet based web framework.
-         </para>
-      </note>
-      
-      <para>
-         Let's take a look at the Facelet view:
-      </para>
-      
-      <programlistingco>
-         <areaspec>
-            <area id="template" coords="8" />
-            <area id="messages2" coords="12" />
-            <area id="instructions" coords="19" />
-            <area id="guess" coords="25" />
-            <area id="validator" coords="30" />
-            <area id="submit" coords="33" />
-         </areaspec>
-         <programlisting><![CDATA[<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"
-    xmlns:ui="http://java.sun.com/jsf/facelets"
-    xmlns:h="http://java.sun.com/jsf/html"
-    xmlns:f="http://java.sun.com/jsf/core"
-    xmlns:s="http://jboss.com/products/seam/taglib">
-
-  <ui:composition template="template.xhtml">
-    <ui:define name="content">
-       <h1>Guess a number...</h1>
-       <h:form id="NumberGuessMain">
-          <div style="color: red">
-             <h:messages id="messages" globalOnly="false"/>
-             <h:outputText id="Higher" value="Higher!" rendered="#{game.number gt game.guess and game.guess ne 0}"/>
-             <h:outputText id="Lower" value="Lower!" rendered="#{game.number lt game.guess and game.guess ne 0}"/>
-          </div>
-   
-          <div>
-             I'm thinking of a number between #{game.smallest} and #{game.biggest}.
-             You have #{game.remainingGuesses} guesses.
-          </div>
-     
-          <div>
-             Your guess: 
-             <h:inputText id="inputGuess" 
-                          value="#{game.guess}" 
-                          required="true" 
-                          size="3" 
-                          disabled="#{game.number eq game.guess}">
-                <f:validateLongRange maximum="#{game.biggest}" 
-                                     minimum="#{game.smallest}"/>
-             </h:inputText>
-            <h:commandButton id="GuessButton"  
-                             value="Guess" 
-                             action="#{game.check}" 
-                             disabled="#{game.number eq game.guess}"/>
-          </div>
-          <div>
-            <h:commandButton id="RestartButton" value="Reset" action="#{game.reset}" immediate="true" />
-          </div>
-       </h:form>
-    </ui:define>
-  </ui:composition>
-</html>]]></programlisting>
-         <calloutlist>
-            <callout arearefs="template">
-               <para>
-                  Facelets is a templating language for JSF, here we are 
-                  wrapping our page in a template which defines the header.
-               </para>
-            </callout>
-            <callout arearefs="messages2">
-               <para>
-                  There are a number of messages which can be sent to the user,
-                  "Higher!", "Lower!" and "Correct!"
-               </para>
-            </callout>
-            <callout arearefs="instructions">
-               <para>
-                  As the user guesses, the range of numbers they can guess gets
-                  smaller - this sentance changes to make sure they know what 
-                  range to guess in.
-               </para>
-            </callout>
-            <callout arearefs="guess">
-               <para>
-                  This input field is bound to a Web Bean, using the value
-                  expression.
-               </para>
-            </callout>
-            <callout arearefs="validator">
-               <para>
-                  A range validator is used to make sure the user doesn't
-                  accidentally input a number outside of the range in which they
-                  can guess - if the validator wasn't here, the user might use
-                  up a guess on an out of range number.
-               </para>
-            </callout>
-            <callout arearefs="submit">
-               <para>
-                  And, of course, there must be a way for the user to send their
-                  guess to the server. Here we bind to an action method on the
-                  Web Bean.
-               </para>
-            </callout>
-         </calloutlist>
-      </programlistingco>
-      
-      <para>
-         The example exists of 4 classes, the first two of which are binding
-         types. First, there is the <literal>@Random</literal> binding type, 
-         used for injecting a random number:
-      </para>
-      
-      <programlisting role="JAVA"><![CDATA[@Target( { TYPE, METHOD, PARAMETER, FIELD })
- at Retention(RUNTIME)
- at Documented
- at BindingType
-public @interface Random {}]]></programlisting>
-
-      <para>
-         There is also the <literal>@MaxNumber</literal> binding type, used for
-         injecting the maximum number that can be injected:
-      </para>
-      
-      <programlisting role="JAVA"><![CDATA[@Target( { TYPE, METHOD, PARAMETER, FIELD })
- at Retention(RUNTIME)
- at Documented
- at BindingType
-public @interface MaxNumber {}
-]]></programlisting>
-
-      <para>
-         The <literal>Generator</literal> class is responsible for creating the
-         random number, via a producer method. It also exposes the maximum
-         possible number via a producer method:
-      </para>
-
-      <programlisting role="JAVA"><![CDATA[@ApplicationScoped
-public class Generator {
-   
-   private java.util.Random random = new java.util.Random( System.currentTimeMillis() );
-   
-   private int maxNumber = 100;
-   
-   java.util.Random getRandom()
-   {
-      return random;
-   }
-   
-   @Produces @Random int next() { 
-      return getRandom().nextInt(maxNumber); 
-   }
-   
-   @Produces @MaxNumber int getMaxNumber()
-   {
-      return maxNumber;
-   }
-
-}]]></programlisting>
-
-      <para>
-         You'll notice that the <literal>Generator</literal> is application
-         scoped; therefore we don't get a different random each time.
-      </para>
-      
-      <para>
-         The final Web Bean in the application is the session scoped
-         <literal>Game</literal>.
-      </para>
-      
-      <para>
-         You'll note that we've used the <literal>@Named</literal> 
-         annotation, so that we can use the bean through EL in the JSF page.
-         Finally, we've used constructor injection to initialize the game with
-         a random number. And of course, we need to tell the player when they've
-         won, so we give feedback with a <literal>FacesMessage</literal>.
-      </para>
-      
-      <programlisting role="JAVA"><![CDATA[package org.jboss.webbeans.examples.numberguess;
-
-
-import javax.annotation.PostConstruct;
-import javax.faces.application.FacesMessage;
-import javax.faces.context.FacesContext;
-import javax.webbeans.AnnotationLiteral;
-import javax.webbeans.Current;
-import javax.webbeans.Initializer;
-import javax.webbeans.Named;
-import javax.webbeans.SessionScoped;
-import javax.webbeans.manager.Manager;
-
- at Named
- at SessionScoped
-public class Game
-{
-   private int number;
-   
-   private int guess;
-   private int smallest;
-   private int biggest;
-   private int remainingGuesses;
-   
-   @Current Manager manager;
-   
-   public Game()
-   {
-   }
-   
-   @Initializer
-   Game(@MaxNumber int maxNumber)
-   {      
-      this.biggest = maxNumber;
-   }
-
-   public int getNumber()
-   {
-      return number;
-   }
-   
-   public int getGuess()
-   {
-      return guess;
-   }
-   
-   public void setGuess(int guess)
-   {
-      this.guess = guess;
-   }
-   
-   public int getSmallest()
-   {
-      return smallest;
-   }
-   
-   public int getBiggest()
-   {
-      return biggest;
-   }
-   
-   public int getRemainingGuesses()
-   {
-      return remainingGuesses;
-   }
-   
-   public String check()
-   {
-      if (guess>number)
-      {
-         biggest = guess - 1;
-      }
-      if (guess<number)
-      {
-         smallest = guess + 1;
-      }
-      if (guess == number)
-      {
-         FacesContext.getCurrentInstance().addMessage(null, new FacesMessage("Correct!"));
-      }
-      remainingGuesses--;
-      return null;
-   }
-   
-   @PostConstruct
-   public void reset()
-   {
-      this.smallest = 0;
-      this.guess = 0;
-      this.remainingGuesses = 10;
-      this.number = manager.getInstanceByType(Integer.class, new AnnotationLiteral<Random>(){});
-   }
-   
-}]]></programlisting>
-
-      <section>
-         <title>The numberguess example in Tomcat</title>
-         
-         <para>
-            The numberguess for Tomcat differs in a couple of ways. Firstly, 
-            Web Beans should be deployed as a Web Application library in
-            <literal>WEB-INF/lib</literal>. For your convenience we provide a
-            single jar suitable for running Web Beans in any servlet container 
-            <literal>webbeans-servlet.jar</literal>.
-         </para>
-         
-         <tip>
-            <para>
-               Of course, you must also include JSF and EL, as well common 
-               annotations (<literal>jsr250-api.jar</literal>) which a JEE server
-               includes by default.
-            </para>
-         </tip>
-         
-         <para>
-            Secondly, we need to explicitly specify the servlet listener
-            (used to boot Web Beans, and control it's interaction with requests)
-            in <literal>web.xml</literal>:
-         </para>
-         
-         <programlisting><![CDATA[<listener>
-   <listener-class>org.jboss.webbeans.environment.servlet.Listener</listener-class>
-</listener>]]></programlisting>
-         
-      </section>
-      
-      <section id="numberguessWicket">
-      <title>The numberguess example for Apache Wicket</title>
-         <para>
-            Whilst JSR-299 specifies integration with Java ServerFaces, Web 
-            Beans allows you to inject into Wicket components, and also allows 
-            you to use a conversation context with Wicket. In this section, 
-            we'll walk you through the Wicket version of the numberguess 
-            example.  
-         </para>
-         
-         <note>
-            <para>   
-               You may want to review the Wicket documentation at 
-               <ulink url="http://wicket.apache.org/">http://wicket.apache.org/</ulink>.
-            </para>
-         </note>
-
-         <para>
-            Like the previous example, the Wicket WebBeans examples make use of 
-            the <literal>webbeans-servlet</literal> module.   The use of the 
-            <ulink url="http://jetty.mortbay.org/">Jetty servlet container</ulink>
-            is common in the Wicket community,  and is chosen here as the 
-            runtime container in order to facilitate comparison between the 
-            standard Wicket examples and these examples, and also to show how 
-            the webbeans-servlet integration is not dependent upon Tomcat as the
-            servlet container.
-         </para>
-         
-         <para>
-            These examples make use of the Eclipse IDE; instructions are also 
-            given to deploy the application from the command line.
-         </para>
-            
-         <section>
-            <title>Creating the Eclipse project</title>
-         
-            <para>
-               To generate an Eclipse project from the example:
-            </para>
-         
-            <programlisting><![CDATA[cd examples/wicket/numberguess
-mvn -Pjetty eclipse:eclipse]]></programlisting>
-         
-            <para>
-               Then, from eclipse, choose <emphasis>File -> Import -> General -> Existing Projects into Workspace</emphasis>, 
-               select the root directory of the numberguess example, and click 
-               finish.  Note that if you do not intend to run the example with jetty from 
-               within eclipse, omit the "-Pjetty."  This will create a project in your 
-               workspace called <literal>webbeans-wicket-numberguess</literal>
-            </para>
-   
-            <mediaobject>
-               <imageobject>
-                  <imagedata fileref="images/wicket-numberguess-project.png" format="PNG"/> 
-               </imageobject>
-            </mediaobject>
-         </section>
-   
-         <section>
-            <title>Running the example from Eclipse</title>
-         
-            <para>
-               This project follows the <literal>wicket-quickstart</literal> 
-               approach of creating an instance of Jetty in the
-               <literal>Start</literal> class.  So running the example is as 
-               simple as right-clicking on that Start class in 
-               <literal>src/test/java</literal> in the 
-               <emphasis>Package Explorer</emphasis> and choosing 
-               <emphasis>Run as Java Application</emphasis>.  You should
-               see console output related to Jetty starting up; then visit able 
-               <literal>http://localhost:8080</literal> to view the app.  To 
-               debug choose <emphasis>Debug as Java Application</emphasis>.
-            </para>
-         </section>
-      
-         <section>
-            <title>Running the example from the command line in JBoss AS or Tomcat</title>
-         
-            <para>
-               This example can also be deployed from the command line in a 
-               (similar to the other examples).  Assuming you have set up the
-               <literal>build.properties</literal> file in the 
-               <literal>examples</literal> directory to specify the location of 
-               JBoss AS or Tomcat, as previously described, you can run 
-               <literal>ant deploy</literal> from the 
-               <literal>examples/wicket/numberguess</literal> directory, and 
-               access the application at 
-               <literal>http://localhost:8080/webbeans-numberguess-wicket</literal>.
-            </para>
-         </section>
-   
-         <section>
-            <title>Understanding the code</title>
-         
-            <para>
-               JSF uses Unified EL expressions to bind view layer components in 
-               JSP or Facelet views to beans, Wicket defines it's components in 
-               Java. The markup is plain html with a one-to-one mapping between 
-               html elements and the view components. All view logic, including 
-               binding of components to models and controlling the response of 
-               view actions, is handled in Java.  The integration of Web Beans 
-               with Wicket takes advantage of the same binding annotations used 
-               in your business layer to provide injection into your WebPage 
-               subclass (or into other custom wicket component subclasses).
-            </para>
-
-            <para>
-               The code in the wicket numberguess example is very similar to the 
-               JSF-based numberguess example. The business layer is identical!
-            </para>
-         
-            <para>    
-               Differences are:
-            </para>
-            <itemizedlist>
-               <listitem>
-                  <para>
-                     Each wicket application must have a 
-                     <literal>WebApplication</literal> subclass,  In our case, 
-                     our application class is 
-                     <literal>SampleApplication</literal>:
-                  </para>
-                  <programlisting><![CDATA[public class SampleApplication extends WebBeansApplication {
-   @Override
-   public Class getHomePage() {
-      return HomePage.class;
-   }
-}]]></programlisting>
-                  <para>
-                     This class specifies which page wicket should treat as our 
-                     home page, in our case, <literal>HomePage.class</literal>
-                  </para>
-               </listitem>
-               <listitem>
-                  <para>
-                     In <literal>HomePage</literal> we see typical wicket code 
-                     to set up page elements.  The bit that is interesting is 
-                     the injection of the <literal>Game</literal> bean:
-                  </para>
-                  
-                  <programlisting><![CDATA[ @Current Game game;]]></programlisting>
-               
-                  <para>
-                     The <literal>Game</literal> bean is can then be used, for 
-                     example, by the code for submitting a guess:
-                  </para>
-               
-                  <programlisting><![CDATA[final Component guessButton = new AjaxButton("GuessButton") { 
-   protected void onSubmit(AjaxRequestTarget target, Form form) {
-      if (game.check()) {]]></programlisting>
-      
-                  <note>
-                     <para>
-                        All injections may be serialized; actual storage of the 
-                        bean is managed by JSR-299.  Note that Wicket 
-                        components, like the HomePage and it subcomponents, are 
-                        <emphasis>not</emphasis> JSR-299 beans.
-                     </para>
-                     <para>
-                        Wicket components allow injection, but they 
-                        <emphasis>cannot</emphasis> use interceptors, decorators
-                        and lifecycle callbacks such as 
-                        <literal>@PostConstruct</literal> or 
-                        <literal>@Initializer</literal> methods.
-                     </para>
-                  </note>
-               </listitem>
-               <listitem>
-                  <para>
-                     The example uses AJAX for processing of button events, and 
-                     dynamically hides buttons that are no longer relevant, for 
-                     example when the user has won the game.
-                  </para>
-               </listitem>
-
-               <listitem>
-                  <para>
-                     In order to activate wicket for this webapp, the Wicket 
-                     filter is added to web.xml, and our application class is 
-                     specified:
-                  </para>
-                  <programlisting><![CDATA[<filter>
-   <filter-name>wicket.numberguess-example</filter-name>
-   <filter-class>org.apache.wicket.protocol.http.WicketFilter</filter-class>
-   <init-param>
-      <param-name>applicationClassName</param-name>
-      <param-value>org.jboss.webbeans.examples.wicket.SampleApplication</param-value>
-   </init-param>
-</filter>
-
-<filter-mapping>
-   <filter-name>wicket.numberguess-example</filter-name>
-   <url-pattern>/*</url-pattern>
-</filter-mapping>
- 
-<listener>
-   <listener-class>org.jboss.webbeans.environment.servlet.Listener</listener-class>
-</listener>]]></programlisting>
-                  <para>
-                     Note that the servlet listener is also added, as in the 
-                     Tomcat example, in order to boostrap Web Beans when Jetty 
-                     starts, and to hook Web Beans into the Jetty servlet 
-                     request and session lifecycles.
-                  </para>
-               </listitem>
-  
-            </itemizedlist>
-         </section>
-      </section>
-      
-      <section>
-         <title>The numberguess example for Java SE with Swing</title>
-
-         <para>
-            This example can be found in the 
-            <literal>examples/se/numberguess</literal> folder of the Web 
-            Beans distribution.
-         </para>
-            
-            
-         <para>
-            To run this example:
-         </para>
-       
-         <itemizedlist>
-            <listitem>
-               <para>
-                  Open a command line/terminal window in the
-                  <literal>examples/se/numberguess</literal> directory
-               </para>
-            </listitem>
-            <listitem>
-               <para>
-                  Ensure that Maven 2 is installed and in your PATH
-               </para>
-            </listitem>
-            <listitem>
-               <para>
-                  Ensure that the <literal>JAVA_HOME</literal> environment 
-                  variable is pointing to your JDK installation
-               </para>
-            </listitem>
-            <listitem>
-               <para>
-                  execute the following command
-               </para>
-               <programlisting>mvn -Drun</programlisting>
-            </listitem>
-         </itemizedlist>
-
-       
-
-         <para>
-            There is an empty <literal>beans.xml</literal> file in the root 
-            package (<literal>src/main/resources/beans.xml</literal>), which 
-            marks this application as a Web Beans application.
-         </para>
-
-         <para>
-            The game's main logic is located in <literal>Game.java</literal>. 
-            Here is the code for that class, highlighting the changes made 
-            from the web application version:
-         </para>
-
-         <programlistingco>
-            <areaspec>
-               <area id="scope" coords="1" />
-               <area id="name" coords="1" />
-               <area id="messages1" coords="26" />
-               <area id="validation" coords="39" />
-               <area id="reset" coords="68" />
-             </areaspec>
-             <programlisting role="JAVA"><![CDATA[@ApplicationScoped
-public class Game implements Serializable
-{
-
-    private int number;
-    private int guess;
-    private int smallest;
-
-    @MaxNumber
-    private int maxNumber;
-
-    private int biggest;
-    private int remainingGuesses;
-    private boolean validNumberRange = true;
-
-    @Current Generator rndGenerator;
-
-    ...
-
-    public boolean isValidNumberRange()
-    {
-        return validNumberRange;
-    }
-
-    public boolean isGameWon()
-    {
-        return guess == number;
-    }
-
-    public boolean isGameLost()
-    {
-        return guess != number && remainingGuesses <= 0;
-    }
-
-    public boolean check()
-    {
-        boolean result = false;
-
-        if ( checkNewNumberRangeIsValid() )
-        {
-            if ( guess > number )
-            {
-                biggest = guess - 1;
-            }
-
-            if ( guess < number )
-            {
-                smallest = guess + 1;
-            }
-
-            if ( guess == number )
-            {
-                result = true;
-            }
-
-            remainingGuesses--;
-        }
-
-        return result;
-    }
-
-    private boolean checkNewNumberRangeIsValid()
-    {
-        return validNumberRange = ( ( guess >= smallest ) && ( guess <= biggest ) );
-    }
-
-    @PostConstruct
-    public void reset()
-    {
-        this.smallest = 0;
-        ...
-        this.number = rndGenerator.next();
-    }
-}]]></programlisting>
-            <calloutlist>
-               <callout arearefs="scope">
-                  <para>
-                     The bean is application scoped instead of session scoped, 
-                     since an instance of the application represents a single 'session'.
-                 </para>
-               </callout>
-               <callout arearefs="name">
-                  <para>
-                     The bean is not named, since it doesn't need to be accessed
-                     via EL
-                  </para>
-               </callout>
-               <callout arearefs="messages1">
-                  <para>
-                     There is no JSF <literal>FacesContext</literal> to add 
-                     messages to. Instead the <literal>Game</literal> class 
-                     provides additional information about the state of the 
-                     current game including:
-                  </para>
-
-
-                  <itemizedlist>
-                     <listitem>
-                        <para>
-                           If the game has been won or lost
-                        </para>
-                     </listitem>
-                     <listitem>
-                        <para>
-                           If the most recent guess was invalid
-                        </para>
-                     </listitem>
-                  </itemizedlist>
-
-                  <para>
-                     This allows the Swing UI to query the state of the game, 
-                     which it does indirectly via a class called 
-                     <literal>MessageGenerator,</literal> in order to determine 
-                     the appropriate messages to display to the user during the 
-                     game.
-                  </para>
-               </callout>
-               <callout arearefs="validation">
-                  <para>
-                     Validation of user input is performed during the 
-                     <literal>check()</literal> method, since there is no 
-                     dedicated validation phase
-                  </para>
-               </callout>
-               <callout arearefs="reset">
-                  <para>
-                     The <literal>reset()</literal> method makes a call to the 
-                     injected <literal>rndGenerator</literal> in order to get 
-                     the random number at the start of each game. It cannot use
-                     <literal>manager.getInstanceByType(Integer.class, new AnnotationLiteral&lt;Random&gt;(){})</literal>
-                     as the JSF example does because there will not be any active contexts like
-                     there is during a JSF request.
-                  </para>
-               </callout>
-            </calloutlist>
-         </programlistingco>
-
-         <para>
-            The <literal>MessageGenerator</literal> class depends on the 
-            current instance of <literal>Game</literal>, and queries its 
-            state in order to determine the appropriate messages to provide 
-            as the prompt for the user's next guess and the response to the 
-            previous guess. The code for <literal>MessageGenerator</literal> 
-            is as follows:
-         </para>
-
-         <programlistingco>
-         <areaspec>
-            <area id="game" coords="3" />
-            <area id="challenge" coords="5" />
-            <area id="result" coords="16" />
-         </areaspec>
-         <programlisting role="JAVA"><![CDATA[public class MessageGenerator
-{
-    @Current Game game;
-
-    public String getChallengeMessage()
-    {
-        StringBuilder challengeMsg = new StringBuilder( "I'm thinking of a number between " );
-        challengeMsg.append( game.getSmallest() );
-        challengeMsg.append( " and " );
-        challengeMsg.append( game.getBiggest() );
-        challengeMsg.append( ". Can you guess what it is?" );
-
-        return challengeMsg.toString();
-    }
-
-    public String getResultMessage()
-    {
-        if ( game.isGameWon() )
-        {
-            return "You guess it! The number was " + game.getNumber();
-        } else if ( game.isGameLost() )
-        {
-            return "You are fail! The number was " + game.getNumber();
-        } else if ( ! game.isValidNumberRange() )
-        {
-            return "Invalid number range!";
-        } else if ( game.getRemainingGuesses() == Game.MAX_NUM_GUESSES )
-        {
-            return "What is your first guess?";
-        } else
-        {
-            String direction = null;
-
-            if ( game.getGuess() < game.getNumber() )
-            {
-                direction = "Higher";
-            } else
-            {
-                direction = "Lower";
-            }
-
-            return direction + "! You have " + game.getRemainingGuesses() + " guesses left.";
-        }
-    }
-}]]></programlisting>
-               <calloutlist>
-               <callout arearefs="game">
-                  <para>
-                     The instance of <literal>Game</literal> for the application
-                      is injected here.
-                  </para>
-               </callout>
-               <callout arearefs="challenge">
-                  <para>
-                     The <literal>Game</literal>'s state is interrogated to 
-                     determine the appropriate challenge message.
-                  </para>
-               </callout>
-              <callout arearefs="result">
-                  <para>
-                     And again to determine whether to congratulate, console or
-                     encourage the user to continue.
-                  </para>
-               </callout>
-            </calloutlist>
-         </programlistingco>
-
-         <para>
-            Finally we come to the <literal>NumberGuessFrame</literal> class 
-            which provides the Swing front end to our guessing game. 
-         </para>
-
-         <programlistingco>
-            <areaspec>
-               <area id="gameIn" coords="3" />
-               <area id="messagesIn" coords="4" />
-               <area id="start" coords="6" />
-               <area id="init" coords="18" />
-               <area id="guess1" coords="34" />
-               <area id="replay" coords="44" />
-               <area id="refresh" coords="50" />
-            </areaspec>
-            <programlisting role="JAVA"><![CDATA[public class NumberGuessFrame  extends javax.swing.JFrame
-{
-    private @Current Game game;
-    private @Current MessageGenerator msgGenerator;
-
-    public void start( @Observes @Deployed Manager manager )
-    {
-        java.awt.EventQueue.invokeLater( new Runnable()
-            {
-                public void run()
-                {
-                    initComponents();
-                    setVisible( true );
-                }
-            } );
-    }
-
-    private void initComponents() {
-
-        buttonPanel = new javax.swing.JPanel();
-        mainMsgPanel = new javax.swing.JPanel();
-        mainLabel = new javax.swing.JLabel();
-        messageLabel = new javax.swing.JLabel();
-        guessText = new javax.swing.JTextField();
-        ...
-        mainLabel.setText(msgGenerator.getChallengeMessage());
-        mainMsgPanel.add(mainLabel);
-
-        messageLabel.setText(msgGenerator.getResultMessage());
-        mainMsgPanel.add(messageLabel);
-        ...
-    }
-
-    private void guessButtonActionPerformed( java.awt.event.ActionEvent evt )
-    {
-        int guess =  Integer.parseInt(guessText.getText());
-
-        game.setGuess( guess );
-        game.check();
-        refreshUI();
-
-    }
-
-    private void replayBtnActionPerformed( java.awt.event.ActionEvent evt )
-    {
-       game.reset();
-       refreshUI();
-    }
-
-    private void refreshUI()
-    {
-        mainLabel.setText( msgGenerator.getChallengeMessage() );
-        messageLabel.setText( msgGenerator.getResultMessage() );
-        guessText.setText( "" );
-        guessesLeftBar.setValue( game.getRemainingGuesses() );
-        guessText.requestFocus();
-    }
-
-    // swing components
-    private javax.swing.JPanel borderPanel;
-    ...
-    private javax.swing.JButton replayBtn;
-
-}]]></programlisting>
-            <calloutlist>
-               <callout arearefs="gameIn">
-                  <para>
-                     The injected instance of the game (logic and state).
-                  </para>
-               </callout>
-               <callout arearefs="messagesIn">
-                  <para>
-                     The injected message generator for UI messages.
-                  </para>
-               </callout>
-               <callout arearefs="start">
-                  <para>
-                    This application is started in the usual Web Beans SE way, 
-                    by observing the <literal>@Deployed Manager</literal> event.
-                  </para>
-               </callout>
-               <callout arearefs="init">
-                  <para>
-                     This method initialises all of the Swing components. Note 
-                     the use of the <literal>msgGenerator</literal>.
-                  </para>
-               </callout>
-               <callout arearefs="guess1">
-                  <para>
-                     <literal>guessButtonActionPerformed</literal> is called 
-                     when the 'Guess' button is clicked, and it does the 
-                     following:
-                  </para>
-
-                  <itemizedlist>
-                     <listitem>
-                        <para>
-                           Gets the guess entered by the user and sets it as the
-                           current guess in the <literal>Game</literal>
-                        </para>
-                     </listitem>
-                     <listitem>
-                        <para>
-                           Calls <literal>game.check()</literal> to validate and
-                           perform one 'turn' of the game
-                        </para>
-                     </listitem>
-                     <listitem>
-                        <para>
-                           Calls <literal>refreshUI</literal>. If there were 
-                           validation errors with the input, this will have been 
-                           captured during <literal>game.check()</literal> and 
-                           as such will be reflected in the messeges returned by
-                           <literal>MessageGenerator</literal> and subsequently
-                           presented to the user. If there are no validation 
-                           errors then the user will be told to guess again 
-                           (higher or lower) or that the game has ended either 
-                           in a win (correct guess) or a loss (ran out of 
-                           guesses).
-                        </para>
-                     </listitem>
-                  </itemizedlist>
-               </callout>
-               <callout arearefs="replay">
-                  <para>
-                     <literal>replayBtnActionPerformed</literal> simply calls 
-                     <literal>game.reset()</literal> to start a new game and 
-                     refreshes the messages in the UI.
-                  </para>
-               </callout>
-               <callout arearefs="refresh">
-                  <para>
-                     <literal>refreshUI</literal> uses the 
-                     <literal>MessageGenerator</literal> to update the messages 
-                     to the user based on the current state of the Game.
-                  </para>
-               </callout>
-            </calloutlist>
-         </programlistingco>
-
-      </section>
-   </section>
-   
-   <section>
-      <title>The translator example</title>
-      
-      <para>
-         The translator example will take any sentences you enter, and translate
-         them to Latin.
-      </para>
-      
-      <para>
-         The translator example is built as an ear, and contains EJBs. As a result, it's structure is more complex than
-         the numberguess example.
-      </para>
-      
-      <note>
-         <para>
-            EJB 3.1 and Jave EE 6 allow you to package EJBs in a war, which will
-            make this structure much simpler!
-         </para>
-      </note>
-      
-      <para>
-         First, let's take a look at the ear aggregator, which is located in 
-         <literal>webbeans-translator-ear</literal> module. Maven automatically
-         generates the <literal>application.xml</literal> for us:
-      </para>
-      
-      <programlisting role="XML"><![CDATA[<plugin>
-   <groupId>org.apache.maven.plugins</groupId>
-   <artifactId>maven-ear-plugin</artifactId>
-   <configuration>
-      <modules>
-         <webModule>
-            <groupId>org.jboss.webbeans.examples.translator</groupId>
-            <artifactId>webbeans-translator-war</artifactId>
-            <contextRoot>/webbeans-translator</contextRoot>
-         </webModule>
-      </modules>
-   </configuration>
-</plugin>]]></programlisting>
-
-      <para>
-         Here we set the context path, which gives us a nice url 
-         (<ulink url="http://localhost:8080/webbeans-translator">http://localhost:8080/webbeans-translator</ulink>).
-      </para>
-      
-      <tip>
-         <para>
-            If you aren't using Maven to generate these files, you would need
-            <literal>META-INF/application.xml</literal>:
-         </para>
-         
-         <programlisting role="XML"><![CDATA[<?xml version="1.0" encoding="UTF-8"?>
-<application xmlns="http://java.sun.com/xml/ns/javaee" 
-             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-             xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/application_5.xsd"
-             version="5">
-  <display-name>webbeans-translator-ear</display-name>
-  <description>Ear Example for the reference implementation of JSR 299: Web Beans</description>
-  
-  <module>
-    <web>
-      <web-uri>webbeans-translator.war</web-uri>
-      <context-root>/webbeans-translator</context-root>
-    </web>
-  </module>
-  <module>
-    <ejb>webbeans-translator.jar</ejb>
-  </module>
-</application>]]></programlisting>
-      </tip>
-      
-      <para>
-         Next, lets look at the war. Just as in the numberguess example, we have
-         a <literal>faces-config.xml</literal> (to enable Facelets) and a 
-         <literal>web.xml</literal> (to enable JSF) in 
-         <literal>WebContent/WEB-INF</literal>.
-      </para>
-      
-      <para>
-         More intersting is the facelet used to translate text. Just as in
-         the numberguess example we have a template, which surrounds the form
-         (ommitted here for brevity):
-      </para>
-      
-      <programlisting role="XML"><![CDATA[<h:form id="NumberGuessMain">
-            
-   <table>
-      <tr align="center" style="font-weight: bold" >
-         <td>
-            Your text
-         </td>
-         <td>
-            Translation
-         </td>
-      </tr>
-      <tr>
-         <td>
-            <h:inputTextarea id="text" value="#{translator.text}" required="true" rows="5" cols="80" />
-         </td>
-         <td>
-            <h:outputText value="#{translator.translatedText}" />
-         </td>
-      </tr>
-   </table>
-   <div>
-      <h:commandButton id="button" value="Translate" action="#{translator.translate}"/>
-   </div>
-   
-</h:form>]]></programlisting>
-
-      <para>
-         The user can enter some text in the lefthand textarea, and hit the 
-         translate button to see the result to the right.
-      </para>
-      
-      <para>
-         Finally, let's look at the ejb module, 
-         <literal>webbeans-translator-ejb</literal>.
-         In <literal>src/main/resources/META-INF</literal> there is just an 
-         empty <literal>web-beans.xml</literal>, used to mark the archive as 
-         containing Web Beans.
-      </para>
-      
-      <para>
-         We've saved the most interesting bit to last, the code! The project has
-         two simple beans, <literal>SentenceParser</literal> and
-         <literal>TextTranslator</literal> and two enterprise beans,
-         <literal>TranslatorControllerBean</literal> and 
-         <literal>SentenceTranslator</literal>. You should be getting quite
-         familiar with what a Web Bean looks like by now, so we'll just 
-         highlight the most interesting bits here.
-      </para>
-      
-      <para>
-         Both <literal>SentenceParser</literal> and 
-         <literal>TextTranslator</literal> are dependent beans, and 
-         <literal>TextTranslator</literal> uses constructor initialization:
-      </para>
-      
-      <programlisting role="JAVA"><![CDATA[public class TextTranslator { 
-   private SentenceParser sentenceParser; 
-   private Translator sentenceTranslator; 
-   
-   @Initializer
-   TextTranslator(SentenceParser sentenceParser, Translator sentenceTranslator) 
-   { 
-      this.sentenceParser = sentenceParser; 
-      this.sentenceTranslator = sentenceTranslator;]]></programlisting>
-      
-      <para>
-         <literal>TextTranslator</literal> is a stateless bean (with a local 
-         business interface), where the magic happens - of course, we couldn't 
-         develop a full translator, but we gave it a good go!
-      </para>
-      
-      <para>
-         Finally, there is UI orientated controller, that collects the text from
-         the user, and dispatches it to the translator. This is a request 
-         scoped, named, stateful session bean, which injects the translator.
-      </para>
-      
-      <programlisting role="JAVA"><![CDATA[@Stateful
- at RequestScoped
- at Named("translator")
-public class TranslatorControllerBean implements TranslatorController
-{
-   
-   @Current TextTranslator translator;]]></programlisting>
-   
-      <para>
-         The bean also has getters and setters for all the fields on the page.
-      </para>
-      
-      <para>
-         As this is a stateful session bean, we have to have a remove method:
-      </para>
-      
-      <programlisting role="JAVA"><![CDATA[   @Remove
-   public void remove()
-   {
-      
-   }]]></programlisting>
-   
-      <para>
-         The Web Beans manager will call the remove method for you when the bean
-         is destroyed; in this case at the end of the request.
-      </para>
-   </section>
-   
-   <para>
-      That concludes our short tour of the Web Beans examples. For more on Web 
-      Beans , or to help out, please visit 
-      <ulink url="http://www.seamframework.org/WebBeans/Development">http://www.seamframework.org/WebBeans/Development</ulink>.
-   </para>
-   
-   <para>
-      We need help in all areas - bug fixing, writing new features, writing
-      examples and translating this reference guide.
-   </para>
-
-</chapter>

Copied: doc/tags/1.0.0.PREVIEW1/en-US/gettingstarted.xml (from rev 2556, doc/trunk/reference/en-US/gettingstarted.xml)
===================================================================
--- doc/tags/1.0.0.PREVIEW1/en-US/gettingstarted.xml	                        (rev 0)
+++ doc/tags/1.0.0.PREVIEW1/en-US/gettingstarted.xml	2009-04-20 12:42:39 UTC (rev 2596)
@@ -0,0 +1,1533 @@
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN" "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd"  [ ]>
+
+<chapter id="ri">
+   <title>Getting started with Web Beans, the Reference Implementation of JSR-299</title>
+
+   <para>
+     The Web Beans is being developed at
+     <ulink url="http://seamframework.org/WebBeans">the Seam project</ulink>.
+     You can download the latest developer release of Web Beans from the
+     <ulink url="http://seamframework.org/Download">the downloads page</ulink>.
+   </para> 
+
+    <para>
+      Web Beans comes with a two deployable example applications:
+      <literal>webbeans-numberguess</literal>, a war example, containing only
+      simple beans, and <literal>webbeans-translator</literal> an ear example,
+      containing enterprise beans. There are also two variations on the 
+      numberguess example, the tomcat example (suitable for deployment to 
+      Tomcat) and the jsf2 example, which you can use if you are running JSF2.
+      To run the examples you'll need the following:
+   </para>
+   
+   <itemizedlist>
+     <listitem>
+       <para>the latest release of Web Beans,</para>
+     </listitem>
+     <listitem>
+       <para>JBoss AS 5.0.1.GA, or</para>
+     </listitem>
+     <listitem>
+       <para>Apache Tomcat 6.0.x, and</para>
+     </listitem>
+     <listitem>
+       <para>Ant 1.7.0.</para>
+     </listitem>
+   </itemizedlist>
+   
+   <section>
+      <title>Using JBoss AS 5</title>
+   
+      <para> 
+         You'll need to download JBoss AS 5.0.1.GA from 
+         <ulink url="http://www.jboss.org/jbossas/downloads/">jboss.org</ulink>,
+         and unzip it. For example:
+      </para>
+      
+      <programlisting><![CDATA[$ cd /Applications
+$ unzip ~/jboss-5.0.1.GA.zip]]></programlisting>
+
+      <para>
+         Next, download Web Beans from 
+         <ulink url="http://seamframework.org/Download">seamframework.org</ulink>,
+         and unzip it. For example
+      </para>
+      
+      <programlisting><![CDATA[$ cd ~/
+$ unzip ~/webbeans-$VERSION.zip]]></programlisting>
+
+   
+      <para>
+         Next, we need to tell Web Beans where JBoss is located. Edit
+         <literal>jboss-as/build.properties</literal> and set the
+         <literal>jboss.home</literal> property. For example:
+      </para>
+      
+      <programlisting>jboss.home=/Applications/jboss-5.0.1.GA</programlisting>
+      
+      <para>
+         To install Web Beans, you'll need Ant 1.7.0 installed, and the 
+         <literal>ANT_HOME</literal> environment variable set. For example:
+      </para>
+      
+      <note>
+         <para>
+            JBoss 5.1.0 comes with Web Beans built in, so there is no need to
+            update the server.
+         </para>
+      </note>
+      
+         <programlisting>$ unzip apache-ant-1.7.0.zip
+$ export ANT_HOME=~/apache-ant-1.7.0</programlisting>
+
+      <para>
+         Then, you can install the update. The update script will use Maven to
+         download Web Beans automatically.
+      </para>
+      
+      <programlisting>$ cd webbeans-$VERSION/jboss-as
+$ ant update</programlisting>
+
+      <para>
+         Now, you're ready to deploy your first example!
+      </para>
+      
+      <tip>
+         <para>
+            The build scripts for the examples offer a number of targets for 
+            JBoss AS, these are:
+         </para>
+         <itemizedlist>
+            <listitem>
+               <para>
+                  <literal>ant restart</literal> - deploy the example in exploded 
+                  format
+               </para>
+            </listitem>
+            <listitem>
+               <para>
+                  <literal>ant explode</literal> - update an exploded example, without
+                  restarting the deployment
+               </para>
+            </listitem>
+            <listitem>
+               <para>
+                  <literal>ant deploy</literal> - deploy the example in compressed jar format
+               </para>
+            </listitem>
+            <listitem>
+               <para>
+                  <literal>ant undeploy</literal> - remove the example from the server
+               </para>
+            </listitem>
+            <listitem>
+               <para>
+                  <literal>ant clean</literal> - clean the example
+              </para>
+            </listitem>
+         </itemizedlist>
+      </tip>
+   
+      <para>
+         To deploy the numberguess example:
+      </para>
+   
+      <programlisting>$ cd examples/numberguess
+ant deploy</programlisting>
+
+      <para>
+         Start JBoss AS:
+      </para>
+      
+      <programlisting>$ /Application/jboss-5.0.0.GA/bin/run.sh</programlisting>
+      
+      <tip>
+         <para>
+            If you use Windows, use the <literal>run.bat</literal>script.
+         </para>
+      </tip>
+   
+      <para>
+         Wait for the application to deploy, and enjoy hours of fun at
+         <ulink url="http://localhost:8080/webbeans-numberguess" />!
+      </para>
+      
+      <para>
+         Web Beans includes a second simple example that will translate your text
+         into Latin. The numberguess example is a war example, and uses only simple
+         beans; the translator example is an ear example, and includes enterprise
+         beans, packaged in an EJB module. To try it out:
+      </para>
+   
+      <programlisting>$ cd examples/translator
+ant deploy</programlisting>
+   
+      <para>
+         Wait for the application to deploy, and visit
+         <ulink url="http://localhost:8080/webbeans-translator" />!
+      </para>
+      
+   </section>
+   
+   <section>
+      <title>Using Apache Tomcat 6.0</title>
+      
+      <para> 
+         You'll need to download Tomcat 6.0.18 or later from 
+         <ulink url="http://tomcat.apache.org/download-60.cgi">tomcat.apache.org</ulink>,
+         and unzip it. For example:
+      </para>
+      
+      <programlisting><![CDATA[$ cd /Applications
+$ unzip ~/apache-tomcat-6.0.18.zip]]></programlisting>
+
+      <para>
+         Next, download Web Beans from 
+         <ulink url="http://seamframework.org/Download">seamframework.org</ulink>,
+         and unzip it. For example
+      </para>
+      
+      <programlisting><![CDATA[$ cd ~/
+$ unzip ~/webbeans-$VERSION.zip]]></programlisting>
+
+      <para>
+         Next, we need to tell Web Beans where Tomcat is located. Edit
+         <literal>jboss-as/build.properties</literal> and set the
+         <literal>tomcat.home</literal> property. For example:
+      </para>
+      
+      <programlisting>tomcat.home=/Applications/apache-tomcat-6.0.18</programlisting>
+
+      <tip>
+         <para>
+            The build scripts for the examples offer a number of targets for 
+            Tomcat, these are:
+         </para>
+         <itemizedlist>
+            <listitem>
+               <para>
+                  <literal>ant tomcat.restart</literal> - deploy the example in exploded 
+                  format
+               </para>
+            </listitem>
+            <listitem>
+               <para>
+                  <literal>ant tomcat.explode</literal> - update an exploded example, without
+                  restarting the deployment
+               </para>
+            </listitem>
+            <listitem>
+               <para>
+                  <literal>ant tomcat.deploy</literal> - deploy the example in compressed jar format
+               </para>
+            </listitem>
+            <listitem>
+               <para>
+                  <literal>ant tomcat.undeploy</literal> - remove the example from the server
+               </para>
+            </listitem>
+            <listitem>
+               <para>
+                  <literal>ant tomcat.clean</literal> - clean the example
+              </para>
+            </listitem>
+         </itemizedlist>
+      </tip>
+      
+      <para>
+         To deploy the numberguess example for tomcat:
+      </para>
+   
+      <programlisting>$ cd examples/tomcat
+ant tomcat.deploy</programlisting>
+
+      <para>
+         Start Tomcat:
+      </para>
+      
+      <programlisting>$ /Applications/apache-tomcat-6.0.18/bin/startup.sh</programlisting>
+      
+      <tip>
+         <para>
+            If you use Windows, use the <literal>startup.bat</literal>script.
+         </para>
+      </tip>
+   
+      <para>
+         Wait for the application to deploy, and enjoy hours of fun at
+         <ulink url="http://localhost:8080/webbeans-numberguess" />!
+      </para>
+
+   </section>
+   
+   <section>
+      <title>Using GlassFish</title>
+      
+      <para>TODO</para>
+   </section>
+   
+   <section>
+      <title>The numberguess example</title>
+      
+      <para>
+         In the numberguess application you get given 10 attempts to guess a
+         number between 1 and 100. After each attempt, you will be told whether
+         you are too high, or too low.
+      </para>
+      
+      <para>
+         The numberguess example is comprised of a number of Web Beans, 
+         configuration files, and Facelet JSF pages, packaged as a war. Let's 
+         start with the configuration files.
+      </para>
+      
+      <para>
+          All the configuration files for this example are located in 
+          <literal>WEB-INF/</literal>, which is stored in
+          <literal>WebContent</literal> in the source tree. First, we have 
+          <literal>faces-config.xml</literal>, in which we tell JSF to use
+          Facelets:
+      </para>
+      
+      <programlisting role="XML"><![CDATA[<?xml version='1.0' encoding='UTF-8'?>
+<faces-config version="1.2"
+              xmlns="http://java.sun.com/xml/ns/javaee"
+              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+              xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_1_2.xsd">
+    
+    <application>
+        <view-handler>com.sun.facelets.FaceletViewHandler</view-handler>
+    </application>
+
+</faces-config>]]></programlisting>
+
+      <para>
+         There is an empty <literal>web-beans.xml</literal> file, which marks
+         this application as a Web Beans application.
+      </para>
+      
+      <para>
+         Finally there is <literal>web.xml</literal>:
+      </para>
+      
+      <programlistingco>
+         <areaspec>
+            <area id="faces.servlet" coords="12" />
+            <area id="faces.servlet.mapping" coords="18" />
+            <area id="faces.default.suffix" coords="23" />
+            <area id="session.timeout" coords="28" />
+            <area id="webbeans.listener" coords="32" />
+         </areaspec>
+         <programlisting><![CDATA[<?xml version="1.0" encoding="UTF-8"?>
+
+<web-app version="2.5"
+    xmlns="http://java.sun.com/xml/ns/javaee"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
+   
+   <display-name>Web Beans Numbergues example</display-name>
+
+   <!-- JSF -->
+
+   <servlet>
+      <servlet-name>Faces Servlet</servlet-name>
+      <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+      <load-on-startup>1</load-on-startup>
+   </servlet>
+
+   <servlet-mapping>
+      <servlet-name>Faces Servlet</servlet-name>
+      <url-pattern>*.jsf</url-pattern>
+   </servlet-mapping>
+   
+   <context-param>
+      <param-name>javax.faces.DEFAULT_SUFFIX</param-name>
+      <param-value>.xhtml</param-value>
+   </context-param>
+
+   <session-config>
+      <session-timeout>10</session-timeout>
+   </session-config>
+
+</web-app>]]></programlisting>
+         <calloutlist>
+            <callout arearefs="faces.servlet">
+               <para>
+                  Enable and load the JSF servlet
+               </para>
+            </callout>
+            <callout arearefs="faces.servlet.mapping">
+               <para>
+                  Configure requests to <literal>.jsf</literal> pages to be
+                  handled by JSF
+               </para>
+            </callout>
+            <callout arearefs="faces.default.suffix">
+               <para>
+                  Tell JSF that we will be giving our source files (facelets) an
+                  extension of <literal>.xhtml</literal>
+               </para>
+            </callout>
+            <callout arearefs="session.timeout">
+               <para>
+                  Configure a session timeout of 10 minutes
+               </para>
+            </callout>
+         </calloutlist>
+      </programlistingco>
+      
+      <note>
+         <para>
+            Whilst this demo is a JSF demo, you can use Web Beans with any 
+            Servlet based web framework.
+         </para>
+      </note>
+      
+      <para>
+         Let's take a look at the Facelet view:
+      </para>
+      
+      <programlistingco>
+         <areaspec>
+            <area id="template" coords="8" />
+            <area id="messages2" coords="12" />
+            <area id="instructions" coords="19" />
+            <area id="guess" coords="25" />
+            <area id="validator" coords="30" />
+            <area id="submit" coords="33" />
+         </areaspec>
+         <programlisting><![CDATA[<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+    xmlns:ui="http://java.sun.com/jsf/facelets"
+    xmlns:h="http://java.sun.com/jsf/html"
+    xmlns:f="http://java.sun.com/jsf/core"
+    xmlns:s="http://jboss.com/products/seam/taglib">
+
+  <ui:composition template="template.xhtml">
+    <ui:define name="content">
+       <h1>Guess a number...</h1>
+       <h:form id="NumberGuessMain">
+          <div style="color: red">
+             <h:messages id="messages" globalOnly="false"/>
+             <h:outputText id="Higher" value="Higher!" rendered="#{game.number gt game.guess and game.guess ne 0}"/>
+             <h:outputText id="Lower" value="Lower!" rendered="#{game.number lt game.guess and game.guess ne 0}"/>
+          </div>
+   
+          <div>
+             I'm thinking of a number between #{game.smallest} and #{game.biggest}.
+             You have #{game.remainingGuesses} guesses.
+          </div>
+     
+          <div>
+             Your guess: 
+             <h:inputText id="inputGuess" 
+                          value="#{game.guess}" 
+                          required="true" 
+                          size="3" 
+                          disabled="#{game.number eq game.guess}">
+                <f:validateLongRange maximum="#{game.biggest}" 
+                                     minimum="#{game.smallest}"/>
+             </h:inputText>
+            <h:commandButton id="GuessButton"  
+                             value="Guess" 
+                             action="#{game.check}" 
+                             disabled="#{game.number eq game.guess}"/>
+          </div>
+          <div>
+            <h:commandButton id="RestartButton" value="Reset" action="#{game.reset}" immediate="true" />
+          </div>
+       </h:form>
+    </ui:define>
+  </ui:composition>
+</html>]]></programlisting>
+         <calloutlist>
+            <callout arearefs="template">
+               <para>
+                  Facelets is a templating language for JSF, here we are 
+                  wrapping our page in a template which defines the header.
+               </para>
+            </callout>
+            <callout arearefs="messages2">
+               <para>
+                  There are a number of messages which can be sent to the user,
+                  "Higher!", "Lower!" and "Correct!"
+               </para>
+            </callout>
+            <callout arearefs="instructions">
+               <para>
+                  As the user guesses, the range of numbers they can guess gets
+                  smaller - this sentance changes to make sure they know what 
+                  range to guess in.
+               </para>
+            </callout>
+            <callout arearefs="guess">
+               <para>
+                  This input field is bound to a Web Bean, using the value
+                  expression.
+               </para>
+            </callout>
+            <callout arearefs="validator">
+               <para>
+                  A range validator is used to make sure the user doesn't
+                  accidentally input a number outside of the range in which they
+                  can guess - if the validator wasn't here, the user might use
+                  up a guess on an out of range number.
+               </para>
+            </callout>
+            <callout arearefs="submit">
+               <para>
+                  And, of course, there must be a way for the user to send their
+                  guess to the server. Here we bind to an action method on the
+                  Web Bean.
+               </para>
+            </callout>
+         </calloutlist>
+      </programlistingco>
+      
+      <para>
+         The example exists of 4 classes, the first two of which are binding
+         types. First, there is the <literal>@Random</literal> binding type, 
+         used for injecting a random number:
+      </para>
+      
+      <programlisting role="JAVA"><![CDATA[@Target( { TYPE, METHOD, PARAMETER, FIELD })
+ at Retention(RUNTIME)
+ at Documented
+ at BindingType
+public @interface Random {}]]></programlisting>
+
+      <para>
+         There is also the <literal>@MaxNumber</literal> binding type, used for
+         injecting the maximum number that can be injected:
+      </para>
+      
+      <programlisting role="JAVA"><![CDATA[@Target( { TYPE, METHOD, PARAMETER, FIELD })
+ at Retention(RUNTIME)
+ at Documented
+ at BindingType
+public @interface MaxNumber {}
+]]></programlisting>
+
+      <para>
+         The <literal>Generator</literal> class is responsible for creating the
+         random number, via a producer method. It also exposes the maximum
+         possible number via a producer method:
+      </para>
+
+      <programlisting role="JAVA"><![CDATA[@ApplicationScoped
+public class Generator {
+   
+   private java.util.Random random = new java.util.Random( System.currentTimeMillis() );
+   
+   private int maxNumber = 100;
+   
+   java.util.Random getRandom()
+   {
+      return random;
+   }
+   
+   @Produces @Random int next() { 
+      return getRandom().nextInt(maxNumber); 
+   }
+   
+   @Produces @MaxNumber int getMaxNumber()
+   {
+      return maxNumber;
+   }
+
+}]]></programlisting>
+
+      <para>
+         You'll notice that the <literal>Generator</literal> is application
+         scoped; therefore we don't get a different random each time.
+      </para>
+      
+      <para>
+         The final Web Bean in the application is the session scoped
+         <literal>Game</literal>.
+      </para>
+      
+      <para>
+         You'll note that we've used the <literal>@Named</literal> 
+         annotation, so that we can use the bean through EL in the JSF page.
+         Finally, we've used constructor injection to initialize the game with
+         a random number. And of course, we need to tell the player when they've
+         won, so we give feedback with a <literal>FacesMessage</literal>.
+      </para>
+      
+      <programlisting role="JAVA"><![CDATA[package org.jboss.webbeans.examples.numberguess;
+
+
+import javax.annotation.PostConstruct;
+import javax.faces.application.FacesMessage;
+import javax.faces.context.FacesContext;
+import javax.webbeans.AnnotationLiteral;
+import javax.webbeans.Current;
+import javax.webbeans.Initializer;
+import javax.webbeans.Named;
+import javax.webbeans.SessionScoped;
+import javax.webbeans.manager.Manager;
+
+ at Named
+ at SessionScoped
+public class Game
+{
+   private int number;
+   
+   private int guess;
+   private int smallest;
+   private int biggest;
+   private int remainingGuesses;
+   
+   @Current Manager manager;
+   
+   public Game()
+   {
+   }
+   
+   @Initializer
+   Game(@MaxNumber int maxNumber)
+   {      
+      this.biggest = maxNumber;
+   }
+
+   public int getNumber()
+   {
+      return number;
+   }
+   
+   public int getGuess()
+   {
+      return guess;
+   }
+   
+   public void setGuess(int guess)
+   {
+      this.guess = guess;
+   }
+   
+   public int getSmallest()
+   {
+      return smallest;
+   }
+   
+   public int getBiggest()
+   {
+      return biggest;
+   }
+   
+   public int getRemainingGuesses()
+   {
+      return remainingGuesses;
+   }
+   
+   public String check()
+   {
+      if (guess>number)
+      {
+         biggest = guess - 1;
+      }
+      if (guess<number)
+      {
+         smallest = guess + 1;
+      }
+      if (guess == number)
+      {
+         FacesContext.getCurrentInstance().addMessage(null, new FacesMessage("Correct!"));
+      }
+      remainingGuesses--;
+      return null;
+   }
+   
+   @PostConstruct
+   public void reset()
+   {
+      this.smallest = 0;
+      this.guess = 0;
+      this.remainingGuesses = 10;
+      this.number = manager.getInstanceByType(Integer.class, new AnnotationLiteral<Random>(){});
+   }
+   
+}]]></programlisting>
+
+      <section>
+         <title>The numberguess example in Tomcat</title>
+         
+         <para>
+            The numberguess for Tomcat differs in a couple of ways. Firstly, 
+            Web Beans should be deployed as a Web Application library in
+            <literal>WEB-INF/lib</literal>. For your convenience we provide a
+            single jar suitable for running Web Beans in any servlet container 
+            <literal>webbeans-servlet.jar</literal>.
+         </para>
+         
+         <tip>
+            <para>
+               Of course, you must also include JSF and EL, as well common 
+               annotations (<literal>jsr250-api.jar</literal>) which a JEE server
+               includes by default.
+            </para>
+         </tip>
+         
+         <para>
+            Secondly, we need to explicitly specify the servlet listener
+            (used to boot Web Beans, and control it's interaction with requests)
+            in <literal>web.xml</literal>:
+         </para>
+         
+         <programlisting><![CDATA[<listener>
+   <listener-class>org.jboss.webbeans.environment.servlet.Listener</listener-class>
+</listener>]]></programlisting>
+         
+      </section>
+      
+      <section id="numberguessWicket">
+      <title>The numberguess example for Apache Wicket</title>
+         <para>
+            Whilst JSR-299 specifies integration with Java ServerFaces, Web 
+            Beans allows you to inject into Wicket components, and also allows 
+            you to use a conversation context with Wicket. In this section, 
+            we'll walk you through the Wicket version of the numberguess 
+            example.  
+         </para>
+         
+         <note>
+            <para>   
+               You may want to review the Wicket documentation at 
+               <ulink url="http://wicket.apache.org/">http://wicket.apache.org/</ulink>.
+            </para>
+         </note>
+
+         <para>
+            Like the previous example, the Wicket WebBeans examples make use of 
+            the <literal>webbeans-servlet</literal> module.   The use of the 
+            <ulink url="http://jetty.mortbay.org/">Jetty servlet container</ulink>
+            is common in the Wicket community,  and is chosen here as the 
+            runtime container in order to facilitate comparison between the 
+            standard Wicket examples and these examples, and also to show how 
+            the webbeans-servlet integration is not dependent upon Tomcat as the
+            servlet container.
+         </para>
+         
+         <para>
+            These examples make use of the Eclipse IDE; instructions are also 
+            given to deploy the application from the command line.
+         </para>
+            
+         <section>
+            <title>Creating the Eclipse project</title>
+         
+            <para>
+               To generate an Eclipse project from the example:
+            </para>
+         
+            <programlisting><![CDATA[cd examples/wicket/numberguess
+mvn -Pjetty eclipse:eclipse]]></programlisting>
+         
+            <para>
+               Then, from eclipse, choose <emphasis>File -> Import -> General -> Existing Projects into Workspace</emphasis>, 
+               select the root directory of the numberguess example, and click 
+               finish.  Note that if you do not intend to run the example with jetty from 
+               within eclipse, omit the "-Pjetty."  This will create a project in your 
+               workspace called <literal>webbeans-wicket-numberguess</literal>
+            </para>
+   
+            <mediaobject>
+               <imageobject>
+                  <imagedata fileref="images/wicket-numberguess-project.png" format="PNG"/> 
+               </imageobject>
+            </mediaobject>
+         </section>
+   
+         <section>
+            <title>Running the example from Eclipse</title>
+         
+            <para>
+               This project follows the <literal>wicket-quickstart</literal> 
+               approach of creating an instance of Jetty in the
+               <literal>Start</literal> class.  So running the example is as 
+               simple as right-clicking on that Start class in 
+               <literal>src/test/java</literal> in the 
+               <emphasis>Package Explorer</emphasis> and choosing 
+               <emphasis>Run as Java Application</emphasis>.  You should
+               see console output related to Jetty starting up; then visit able 
+               <literal>http://localhost:8080</literal> to view the app.  To 
+               debug choose <emphasis>Debug as Java Application</emphasis>.
+            </para>
+         </section>
+      
+         <section>
+            <title>Running the example from the command line in JBoss AS or Tomcat</title>
+         
+            <para>
+               This example can also be deployed from the command line in a 
+               (similar to the other examples).  Assuming you have set up the
+               <literal>build.properties</literal> file in the 
+               <literal>examples</literal> directory to specify the location of 
+               JBoss AS or Tomcat, as previously described, you can run 
+               <literal>ant deploy</literal> from the 
+               <literal>examples/wicket/numberguess</literal> directory, and 
+               access the application at 
+               <literal>http://localhost:8080/webbeans-numberguess-wicket</literal>.
+            </para>
+         </section>
+   
+         <section>
+            <title>Understanding the code</title>
+         
+            <para>
+               JSF uses Unified EL expressions to bind view layer components in 
+               JSP or Facelet views to beans, Wicket defines it's components in 
+               Java. The markup is plain html with a one-to-one mapping between 
+               html elements and the view components. All view logic, including 
+               binding of components to models and controlling the response of 
+               view actions, is handled in Java.  The integration of Web Beans 
+               with Wicket takes advantage of the same binding annotations used 
+               in your business layer to provide injection into your WebPage 
+               subclass (or into other custom wicket component subclasses).
+            </para>
+
+            <para>
+               The code in the wicket numberguess example is very similar to the 
+               JSF-based numberguess example. The business layer is identical!
+            </para>
+         
+            <para>    
+               Differences are:
+            </para>
+            <itemizedlist>
+               <listitem>
+                  <para>
+                     Each wicket application must have a 
+                     <literal>WebApplication</literal> subclass,  In our case, 
+                     our application class is 
+                     <literal>SampleApplication</literal>:
+                  </para>
+                  <programlisting><![CDATA[public class SampleApplication extends WebBeansApplication {
+   @Override
+   public Class getHomePage() {
+      return HomePage.class;
+   }
+}]]></programlisting>
+                  <para>
+                     This class specifies which page wicket should treat as our 
+                     home page, in our case, <literal>HomePage.class</literal>
+                  </para>
+               </listitem>
+               <listitem>
+                  <para>
+                     In <literal>HomePage</literal> we see typical wicket code 
+                     to set up page elements.  The bit that is interesting is 
+                     the injection of the <literal>Game</literal> bean:
+                  </para>
+                  
+                  <programlisting><![CDATA[ @Current Game game;]]></programlisting>
+               
+                  <para>
+                     The <literal>Game</literal> bean is can then be used, for 
+                     example, by the code for submitting a guess:
+                  </para>
+               
+                  <programlisting><![CDATA[final Component guessButton = new AjaxButton("GuessButton") { 
+   protected void onSubmit(AjaxRequestTarget target, Form form) {
+      if (game.check()) {]]></programlisting>
+      
+                  <note>
+                     <para>
+                        All injections may be serialized; actual storage of the 
+                        bean is managed by JSR-299.  Note that Wicket 
+                        components, like the HomePage and it subcomponents, are 
+                        <emphasis>not</emphasis> JSR-299 beans.
+                     </para>
+                     <para>
+                        Wicket components allow injection, but they 
+                        <emphasis>cannot</emphasis> use interceptors, decorators
+                        and lifecycle callbacks such as 
+                        <literal>@PostConstruct</literal> or 
+                        <literal>@Initializer</literal> methods.
+                     </para>
+                  </note>
+               </listitem>
+               <listitem>
+                  <para>
+                     The example uses AJAX for processing of button events, and 
+                     dynamically hides buttons that are no longer relevant, for 
+                     example when the user has won the game.
+                  </para>
+               </listitem>
+
+               <listitem>
+                  <para>
+                     In order to activate wicket for this webapp, the Wicket 
+                     filter is added to web.xml, and our application class is 
+                     specified:
+                  </para>
+                  <programlisting><![CDATA[<filter>
+   <filter-name>wicket.numberguess-example</filter-name>
+   <filter-class>org.apache.wicket.protocol.http.WicketFilter</filter-class>
+   <init-param>
+      <param-name>applicationClassName</param-name>
+      <param-value>org.jboss.webbeans.examples.wicket.SampleApplication</param-value>
+   </init-param>
+</filter>
+
+<filter-mapping>
+   <filter-name>wicket.numberguess-example</filter-name>
+   <url-pattern>/*</url-pattern>
+</filter-mapping>
+ 
+<listener>
+   <listener-class>org.jboss.webbeans.environment.servlet.Listener</listener-class>
+</listener>]]></programlisting>
+                  <para>
+                     Note that the servlet listener is also added, as in the 
+                     Tomcat example, in order to boostrap Web Beans when Jetty 
+                     starts, and to hook Web Beans into the Jetty servlet 
+                     request and session lifecycles.
+                  </para>
+               </listitem>
+  
+            </itemizedlist>
+         </section>
+      </section>
+      
+      <section>
+         <title>The numberguess example for Java SE with Swing</title>
+
+         <para>
+            This example can be found in the 
+            <literal>examples/se/numberguess</literal> folder of the Web 
+            Beans distribution.
+         </para>
+            
+            
+         <para>
+            To run this example:
+         </para>
+       
+         <itemizedlist>
+            <listitem>
+               <para>
+                  Open a command line/terminal window in the
+                  <literal>examples/se/numberguess</literal> directory
+               </para>
+            </listitem>
+            <listitem>
+               <para>
+                  Ensure that Maven 2 is installed and in your PATH
+               </para>
+            </listitem>
+            <listitem>
+               <para>
+                  Ensure that the <literal>JAVA_HOME</literal> environment 
+                  variable is pointing to your JDK installation
+               </para>
+            </listitem>
+            <listitem>
+               <para>
+                  execute the following command
+               </para>
+               <programlisting>mvn -Drun</programlisting>
+            </listitem>
+         </itemizedlist>
+
+       
+
+         <para>
+            There is an empty <literal>beans.xml</literal> file in the root 
+            package (<literal>src/main/resources/beans.xml</literal>), which 
+            marks this application as a Web Beans application.
+         </para>
+
+         <para>
+            The game's main logic is located in <literal>Game.java</literal>. 
+            Here is the code for that class, highlighting the changes made 
+            from the web application version:
+         </para>
+
+         <programlistingco>
+            <areaspec>
+               <area id="scope" coords="1" />
+               <area id="name" coords="1" />
+               <area id="messages1" coords="26" />
+               <area id="validation" coords="39" />
+               <area id="reset" coords="68" />
+             </areaspec>
+             <programlisting role="JAVA"><![CDATA[@ApplicationScoped
+public class Game implements Serializable
+{
+
+    private int number;
+    private int guess;
+    private int smallest;
+
+    @MaxNumber
+    private int maxNumber;
+
+    private int biggest;
+    private int remainingGuesses;
+    private boolean validNumberRange = true;
+
+    @Current Generator rndGenerator;
+
+    ...
+
+    public boolean isValidNumberRange()
+    {
+        return validNumberRange;
+    }
+
+    public boolean isGameWon()
+    {
+        return guess == number;
+    }
+
+    public boolean isGameLost()
+    {
+        return guess != number && remainingGuesses <= 0;
+    }
+
+    public boolean check()
+    {
+        boolean result = false;
+
+        if ( checkNewNumberRangeIsValid() )
+        {
+            if ( guess > number )
+            {
+                biggest = guess - 1;
+            }
+
+            if ( guess < number )
+            {
+                smallest = guess + 1;
+            }
+
+            if ( guess == number )
+            {
+                result = true;
+            }
+
+            remainingGuesses--;
+        }
+
+        return result;
+    }
+
+    private boolean checkNewNumberRangeIsValid()
+    {
+        return validNumberRange = ( ( guess >= smallest ) && ( guess <= biggest ) );
+    }
+
+    @PostConstruct
+    public void reset()
+    {
+        this.smallest = 0;
+        ...
+        this.number = rndGenerator.next();
+    }
+}]]></programlisting>
+            <calloutlist>
+               <callout arearefs="scope">
+                  <para>
+                     The bean is application scoped instead of session scoped, 
+                     since an instance of the application represents a single 'session'.
+                 </para>
+               </callout>
+               <callout arearefs="name">
+                  <para>
+                     The bean is not named, since it doesn't need to be accessed
+                     via EL
+                  </para>
+               </callout>
+               <callout arearefs="messages1">
+                  <para>
+                     There is no JSF <literal>FacesContext</literal> to add 
+                     messages to. Instead the <literal>Game</literal> class 
+                     provides additional information about the state of the 
+                     current game including:
+                  </para>
+
+
+                  <itemizedlist>
+                     <listitem>
+                        <para>
+                           If the game has been won or lost
+                        </para>
+                     </listitem>
+                     <listitem>
+                        <para>
+                           If the most recent guess was invalid
+                        </para>
+                     </listitem>
+                  </itemizedlist>
+
+                  <para>
+                     This allows the Swing UI to query the state of the game, 
+                     which it does indirectly via a class called 
+                     <literal>MessageGenerator,</literal> in order to determine 
+                     the appropriate messages to display to the user during the 
+                     game.
+                  </para>
+               </callout>
+               <callout arearefs="validation">
+                  <para>
+                     Validation of user input is performed during the 
+                     <literal>check()</literal> method, since there is no 
+                     dedicated validation phase
+                  </para>
+               </callout>
+               <callout arearefs="reset">
+                  <para>
+                     The <literal>reset()</literal> method makes a call to the 
+                     injected <literal>rndGenerator</literal> in order to get 
+                     the random number at the start of each game. It cannot use
+                     <literal>manager.getInstanceByType(Integer.class, new AnnotationLiteral&lt;Random&gt;(){})</literal>
+                     as the JSF example does because there will not be any active contexts like
+                     there is during a JSF request.
+                  </para>
+               </callout>
+            </calloutlist>
+         </programlistingco>
+
+         <para>
+            The <literal>MessageGenerator</literal> class depends on the 
+            current instance of <literal>Game</literal>, and queries its 
+            state in order to determine the appropriate messages to provide 
+            as the prompt for the user's next guess and the response to the 
+            previous guess. The code for <literal>MessageGenerator</literal> 
+            is as follows:
+         </para>
+
+         <programlistingco>
+         <areaspec>
+            <area id="game" coords="3" />
+            <area id="challenge" coords="5" />
+            <area id="result" coords="16" />
+         </areaspec>
+         <programlisting role="JAVA"><![CDATA[public class MessageGenerator
+{
+    @Current Game game;
+
+    public String getChallengeMessage()
+    {
+        StringBuilder challengeMsg = new StringBuilder( "I'm thinking of a number between " );
+        challengeMsg.append( game.getSmallest() );
+        challengeMsg.append( " and " );
+        challengeMsg.append( game.getBiggest() );
+        challengeMsg.append( ". Can you guess what it is?" );
+
+        return challengeMsg.toString();
+    }
+
+    public String getResultMessage()
+    {
+        if ( game.isGameWon() )
+        {
+            return "You guess it! The number was " + game.getNumber();
+        } else if ( game.isGameLost() )
+        {
+            return "You are fail! The number was " + game.getNumber();
+        } else if ( ! game.isValidNumberRange() )
+        {
+            return "Invalid number range!";
+        } else if ( game.getRemainingGuesses() == Game.MAX_NUM_GUESSES )
+        {
+            return "What is your first guess?";
+        } else
+        {
+            String direction = null;
+
+            if ( game.getGuess() < game.getNumber() )
+            {
+                direction = "Higher";
+            } else
+            {
+                direction = "Lower";
+            }
+
+            return direction + "! You have " + game.getRemainingGuesses() + " guesses left.";
+        }
+    }
+}]]></programlisting>
+               <calloutlist>
+               <callout arearefs="game">
+                  <para>
+                     The instance of <literal>Game</literal> for the application
+                      is injected here.
+                  </para>
+               </callout>
+               <callout arearefs="challenge">
+                  <para>
+                     The <literal>Game</literal>'s state is interrogated to 
+                     determine the appropriate challenge message.
+                  </para>
+               </callout>
+              <callout arearefs="result">
+                  <para>
+                     And again to determine whether to congratulate, console or
+                     encourage the user to continue.
+                  </para>
+               </callout>
+            </calloutlist>
+         </programlistingco>
+
+         <para>
+            Finally we come to the <literal>NumberGuessFrame</literal> class 
+            which provides the Swing front end to our guessing game. 
+         </para>
+
+         <programlistingco>
+            <areaspec>
+               <area id="gameIn" coords="3" />
+               <area id="messagesIn" coords="4" />
+               <area id="start" coords="6" />
+               <area id="init" coords="18" />
+               <area id="guess1" coords="34" />
+               <area id="replay" coords="44" />
+               <area id="refresh" coords="50" />
+            </areaspec>
+            <programlisting role="JAVA"><![CDATA[public class NumberGuessFrame  extends javax.swing.JFrame
+{
+    private @Current Game game;
+    private @Current MessageGenerator msgGenerator;
+
+    public void start( @Observes @Deployed Manager manager )
+    {
+        java.awt.EventQueue.invokeLater( new Runnable()
+            {
+                public void run()
+                {
+                    initComponents();
+                    setVisible( true );
+                }
+            } );
+    }
+
+    private void initComponents() {
+
+        buttonPanel = new javax.swing.JPanel();
+        mainMsgPanel = new javax.swing.JPanel();
+        mainLabel = new javax.swing.JLabel();
+        messageLabel = new javax.swing.JLabel();
+        guessText = new javax.swing.JTextField();
+        ...
+        mainLabel.setText(msgGenerator.getChallengeMessage());
+        mainMsgPanel.add(mainLabel);
+
+        messageLabel.setText(msgGenerator.getResultMessage());
+        mainMsgPanel.add(messageLabel);
+        ...
+    }
+
+    private void guessButtonActionPerformed( java.awt.event.ActionEvent evt )
+    {
+        int guess =  Integer.parseInt(guessText.getText());
+
+        game.setGuess( guess );
+        game.check();
+        refreshUI();
+
+    }
+
+    private void replayBtnActionPerformed( java.awt.event.ActionEvent evt )
+    {
+       game.reset();
+       refreshUI();
+    }
+
+    private void refreshUI()
+    {
+        mainLabel.setText( msgGenerator.getChallengeMessage() );
+        messageLabel.setText( msgGenerator.getResultMessage() );
+        guessText.setText( "" );
+        guessesLeftBar.setValue( game.getRemainingGuesses() );
+        guessText.requestFocus();
+    }
+
+    // swing components
+    private javax.swing.JPanel borderPanel;
+    ...
+    private javax.swing.JButton replayBtn;
+
+}]]></programlisting>
+            <calloutlist>
+               <callout arearefs="gameIn">
+                  <para>
+                     The injected instance of the game (logic and state).
+                  </para>
+               </callout>
+               <callout arearefs="messagesIn">
+                  <para>
+                     The injected message generator for UI messages.
+                  </para>
+               </callout>
+               <callout arearefs="start">
+                  <para>
+                    This application is started in the usual Web Beans SE way, 
+                    by observing the <literal>@Deployed Manager</literal> event.
+                  </para>
+               </callout>
+               <callout arearefs="init">
+                  <para>
+                     This method initialises all of the Swing components. Note 
+                     the use of the <literal>msgGenerator</literal>.
+                  </para>
+               </callout>
+               <callout arearefs="guess1">
+                  <para>
+                     <literal>guessButtonActionPerformed</literal> is called 
+                     when the 'Guess' button is clicked, and it does the 
+                     following:
+                  </para>
+
+                  <itemizedlist>
+                     <listitem>
+                        <para>
+                           Gets the guess entered by the user and sets it as the
+                           current guess in the <literal>Game</literal>
+                        </para>
+                     </listitem>
+                     <listitem>
+                        <para>
+                           Calls <literal>game.check()</literal> to validate and
+                           perform one 'turn' of the game
+                        </para>
+                     </listitem>
+                     <listitem>
+                        <para>
+                           Calls <literal>refreshUI</literal>. If there were 
+                           validation errors with the input, this will have been 
+                           captured during <literal>game.check()</literal> and 
+                           as such will be reflected in the messeges returned by
+                           <literal>MessageGenerator</literal> and subsequently
+                           presented to the user. If there are no validation 
+                           errors then the user will be told to guess again 
+                           (higher or lower) or that the game has ended either 
+                           in a win (correct guess) or a loss (ran out of 
+                           guesses).
+                        </para>
+                     </listitem>
+                  </itemizedlist>
+               </callout>
+               <callout arearefs="replay">
+                  <para>
+                     <literal>replayBtnActionPerformed</literal> simply calls 
+                     <literal>game.reset()</literal> to start a new game and 
+                     refreshes the messages in the UI.
+                  </para>
+               </callout>
+               <callout arearefs="refresh">
+                  <para>
+                     <literal>refreshUI</literal> uses the 
+                     <literal>MessageGenerator</literal> to update the messages 
+                     to the user based on the current state of the Game.
+                  </para>
+               </callout>
+            </calloutlist>
+         </programlistingco>
+
+      </section>
+   </section>
+   
+   <section>
+      <title>The translator example</title>
+      
+      <para>
+         The translator example will take any sentences you enter, and translate
+         them to Latin.
+      </para>
+      
+      <para>
+         The translator example is built as an ear, and contains EJBs. As a result, it's structure is more complex than
+         the numberguess example.
+      </para>
+      
+      <note>
+         <para>
+            EJB 3.1 and Jave EE 6 allow you to package EJBs in a war, which will
+            make this structure much simpler!
+         </para>
+      </note>
+      
+      <para>
+         First, let's take a look at the ear aggregator, which is located in 
+         <literal>webbeans-translator-ear</literal> module. Maven automatically
+         generates the <literal>application.xml</literal> for us:
+      </para>
+      
+      <programlisting role="XML"><![CDATA[<plugin>
+   <groupId>org.apache.maven.plugins</groupId>
+   <artifactId>maven-ear-plugin</artifactId>
+   <configuration>
+      <modules>
+         <webModule>
+            <groupId>org.jboss.webbeans.examples.translator</groupId>
+            <artifactId>webbeans-translator-war</artifactId>
+            <contextRoot>/webbeans-translator</contextRoot>
+         </webModule>
+      </modules>
+   </configuration>
+</plugin>]]></programlisting>
+
+      <para>
+         Here we set the context path, which gives us a nice url 
+         (<ulink url="http://localhost:8080/webbeans-translator">http://localhost:8080/webbeans-translator</ulink>).
+      </para>
+      
+      <tip>
+         <para>
+            If you aren't using Maven to generate these files, you would need
+            <literal>META-INF/application.xml</literal>:
+         </para>
+         
+         <programlisting role="XML"><![CDATA[<?xml version="1.0" encoding="UTF-8"?>
+<application xmlns="http://java.sun.com/xml/ns/javaee" 
+             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+             xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/application_5.xsd"
+             version="5">
+  <display-name>webbeans-translator-ear</display-name>
+  <description>Ear Example for the reference implementation of JSR 299: Web Beans</description>
+  
+  <module>
+    <web>
+      <web-uri>webbeans-translator.war</web-uri>
+      <context-root>/webbeans-translator</context-root>
+    </web>
+  </module>
+  <module>
+    <ejb>webbeans-translator.jar</ejb>
+  </module>
+</application>]]></programlisting>
+      </tip>
+      
+      <para>
+         Next, lets look at the war. Just as in the numberguess example, we have
+         a <literal>faces-config.xml</literal> (to enable Facelets) and a 
+         <literal>web.xml</literal> (to enable JSF) in 
+         <literal>WebContent/WEB-INF</literal>.
+      </para>
+      
+      <para>
+         More intersting is the facelet used to translate text. Just as in
+         the numberguess example we have a template, which surrounds the form
+         (ommitted here for brevity):
+      </para>
+      
+      <programlisting role="XML"><![CDATA[<h:form id="NumberGuessMain">
+            
+   <table>
+      <tr align="center" style="font-weight: bold" >
+         <td>
+            Your text
+         </td>
+         <td>
+            Translation
+         </td>
+      </tr>
+      <tr>
+         <td>
+            <h:inputTextarea id="text" value="#{translator.text}" required="true" rows="5" cols="80" />
+         </td>
+         <td>
+            <h:outputText value="#{translator.translatedText}" />
+         </td>
+      </tr>
+   </table>
+   <div>
+      <h:commandButton id="button" value="Translate" action="#{translator.translate}"/>
+   </div>
+   
+</h:form>]]></programlisting>
+
+      <para>
+         The user can enter some text in the lefthand textarea, and hit the 
+         translate button to see the result to the right.
+      </para>
+      
+      <para>
+         Finally, let's look at the ejb module, 
+         <literal>webbeans-translator-ejb</literal>.
+         In <literal>src/main/resources/META-INF</literal> there is just an 
+         empty <literal>web-beans.xml</literal>, used to mark the archive as 
+         containing Web Beans.
+      </para>
+      
+      <para>
+         We've saved the most interesting bit to last, the code! The project has
+         two simple beans, <literal>SentenceParser</literal> and
+         <literal>TextTranslator</literal> and two enterprise beans,
+         <literal>TranslatorControllerBean</literal> and 
+         <literal>SentenceTranslator</literal>. You should be getting quite
+         familiar with what a Web Bean looks like by now, so we'll just 
+         highlight the most interesting bits here.
+      </para>
+      
+      <para>
+         Both <literal>SentenceParser</literal> and 
+         <literal>TextTranslator</literal> are dependent beans, and 
+         <literal>TextTranslator</literal> uses constructor initialization:
+      </para>
+      
+      <programlisting role="JAVA"><![CDATA[public class TextTranslator { 
+   private SentenceParser sentenceParser; 
+   private Translator sentenceTranslator; 
+   
+   @Initializer
+   TextTranslator(SentenceParser sentenceParser, Translator sentenceTranslator) 
+   { 
+      this.sentenceParser = sentenceParser; 
+      this.sentenceTranslator = sentenceTranslator;]]></programlisting>
+      
+      <para>
+         <literal>TextTranslator</literal> is a stateless bean (with a local 
+         business interface), where the magic happens - of course, we couldn't 
+         develop a full translator, but we gave it a good go!
+      </para>
+      
+      <para>
+         Finally, there is UI orientated controller, that collects the text from
+         the user, and dispatches it to the translator. This is a request 
+         scoped, named, stateful session bean, which injects the translator.
+      </para>
+      
+      <programlisting role="JAVA"><![CDATA[@Stateful
+ at RequestScoped
+ at Named("translator")
+public class TranslatorControllerBean implements TranslatorController
+{
+   
+   @Current TextTranslator translator;]]></programlisting>
+   
+      <para>
+         The bean also has getters and setters for all the fields on the page.
+      </para>
+      
+      <para>
+         As this is a stateful session bean, we have to have a remove method:
+      </para>
+      
+      <programlisting role="JAVA"><![CDATA[   @Remove
+   public void remove()
+   {
+      
+   }]]></programlisting>
+   
+      <para>
+         The Web Beans manager will call the remove method for you when the bean
+         is destroyed; in this case at the end of the request.
+      </para>
+   </section>
+   
+   <para>
+      That concludes our short tour of the Web Beans examples. For more on Web 
+      Beans , or to help out, please visit 
+      <ulink url="http://www.seamframework.org/WebBeans/Development">http://www.seamframework.org/WebBeans/Development</ulink>.
+   </para>
+   
+   <para>
+      We need help in all areas - bug fixing, writing new features, writing
+      examples and translating this reference guide.
+   </para>
+
+</chapter>

Deleted: doc/tags/1.0.0.PREVIEW1/pom.xml
===================================================================
--- doc/trunk/reference/pom.xml	2009-04-19 21:01:39 UTC (rev 2520)
+++ doc/tags/1.0.0.PREVIEW1/pom.xml	2009-04-20 12:42:39 UTC (rev 2596)
@@ -1,321 +0,0 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-
-   <modelVersion>4.0.0</modelVersion>
-
-   <groupId>org.jboss.webbeans.reference-guide</groupId>
-   <artifactId>webbeans-reference-guide</artifactId>
-   <version>1.0.0-SNAPSHOT</version>
-   <packaging>jdocbook</packaging>
-   <name>Web Beans Reference Guide</name>
-
-   <pluginRepositories>
-      <pluginRepository>
-         <id>repository.jboss.org</id>
-         <name>JBoss Repository</name>
-         <url>http://repository.jboss.org/maven2</url>
-      </pluginRepository>
-   </pluginRepositories>
-   <repositories>
-      <repository>
-         <id>repository.jboss.org</id>
-         <name>JBoss Repository</name>
-         <url>http://repository.jboss.org/maven2</url>
-      </repository>
-   </repositories>
-
-   <properties>
-      <mpjdocbook.version>2.1.1</mpjdocbook.version>
-   </properties>
-
-   <build>
-      <defaultGoal>process-classes</defaultGoal>
-      <plugins>
-         <plugin>
-            <groupId>org.jboss.maven.plugins</groupId>
-            <artifactId>maven-jdocbook-plugin</artifactId>
-            <version>${mpjdocbook.version}</version>
-            <extensions>true</extensions>
-            <dependencies>
-               <dependency>
-                  <groupId>org.jboss.webbeans</groupId>
-                  <artifactId>webbeans-docbook-xslt</artifactId>
-                  <version>1.1.1.BETA2</version>
-                  <exclusions>
-                     <exclusion>
-                        <groupId>org.eclipse.wst.css</groupId>
-                        <artifactId>core</artifactId>
-                     </exclusion>
-                     <exclusion>
-                        <groupId>org.eclipse.wst.sse</groupId>
-                        <artifactId>core</artifactId>
-                     </exclusion>
-                  </exclusions>
-               </dependency>
-               <dependency>
-                  <groupId>org.jboss.seam</groupId>
-                  <artifactId>seam-jdocbook-style</artifactId>
-                  <version>1.1.0.GA</version>
-                  <type>jdocbook-style</type>
-               </dependency>
-               <dependency>
-                  <groupId>org.jboss</groupId>
-                  <artifactId>jbossorg-jdocbook-style</artifactId>
-                  <version>1.1.0</version>
-                  <type>jdocbook-style</type>
-               </dependency>
-            </dependencies>
-            <configuration>
-               <sourceDirectory>${pom.basedir}</sourceDirectory>
-               <sourceDocumentName>master.xml</sourceDocumentName>
-               <masterTranslation>en-US</masterTranslation>
-               <translations>
-                 <translation>it-IT</translation>
-                 <translation>zh-CN</translation>
-                 <translation>zh-TW</translation>
-                 <translation>es-ES</translation>
-                 <translation>ko-KR</translation>
-                 <translation>de-DE</translation>
-                 <translation>pt-BR</translation>
-               </translations>
-               <imageResource>
-                  <directory>${pom.basedir}/en-US</directory>
-                  <includes>
-                     <include>images/*.png</include>
-                  </includes>
-               </imageResource>
-               <formats>
-                  <format>
-                     <formatName>pdf</formatName>
-                     <stylesheetResource>
-                        classpath:/xslt/org/jboss/webbeans/pdf.xsl
-                     </stylesheetResource>
-                     <finalName>webbeans_reference.pdf</finalName>
-                  </format>
-                  <format>
-                     <formatName>html</formatName>
-                     <stylesheetResource>
-                        classpath:/xslt/org/jboss/webbeans/xhtml.xsl
-                     </stylesheetResource>
-                     <finalName>index.html</finalName>
-                  </format>
-                  <format>
-                     <formatName>html_single</formatName>
-                     <stylesheetResource>
-                        classpath:/xslt/org/jboss/webbeans/xhtml-single.xsl
-                     </stylesheetResource>
-                     <finalName>index.html</finalName>
-                  </format>
-               </formats>
-               <options>
-                  <xincludeSupported>true</xincludeSupported>
-                  <xmlTransformerType>saxon</xmlTransformerType>
-                  <!-- needed for uri-resolvers; can be ommitted if using 'current' uri scheme -->
-                  <!--     could also locate the docbook dependency and inspect its version... -->
-                  <docbookVersion>1.72.0</docbookVersion>
-                  <localeSeparator>-</localeSeparator>
-               </options>
-            </configuration>
-         </plugin>
-         <plugin>
-            <artifactId>maven-antrun-plugin</artifactId>
-            <executions>
-               <execution>
-                  <phase>process-classes</phase>
-                  <configuration>
-                     <tasks>
-                        <copy file="${basedir}/target/docbook/publish/en-US/pdf/webbeans_reference.pdf" todir="${basedir}" />
-                     </tasks>
-                  </configuration>
-                  <goals>
-                     <goal>run</goal>
-                  </goals>
-               </execution>
-            </executions>
-         </plugin>
-         <plugin>
-            <groupId>org.apache.maven.plugins</groupId>
-            <artifactId>maven-enforcer-plugin</artifactId>
-         </plugin>
-          <plugin>
-            <groupId>org.apache.maven.plugins</groupId>
-            <artifactId>maven-release-plugin</artifactId>
-            <configuration>
-               <arguments>-Dbuild.translations</arguments>
-            </configuration>
-         </plugin>
-      </plugins>
-      <pluginManagement>
-         <plugins>
-            <plugin>
-               <groupId>org.apache.maven.plugins</groupId>
-               <artifactId>maven-dependency-plugin</artifactId>
-               <version>2.0</version>
-            </plugin>
-            <plugin>
-               <groupId>org.jboss.maven.plugins</groupId>
-               <artifactId>maven-jdocbook-plugin</artifactId>
-               <version>${mpjdocbook.version}</version>
-            </plugin>
-            <plugin>
-               <groupId>org.apache.maven.plugins</groupId>
-               <artifactId>maven-jar-plugin</artifactId>
-               <configuration>
-                  <archive>
-                     <manifest>
-                        <addDefaultImplementationEntries>
-                           true
-                        </addDefaultImplementationEntries>
-                        <addDefaultSpecificationEntries>
-                           true
-                        </addDefaultSpecificationEntries>
-                     </manifest>
-                  </archive>
-               </configuration>
-            </plugin>
-            <plugin>
-               <groupId>org.apache.maven.plugins</groupId>
-               <artifactId>maven-surefire-report-plugin</artifactId>
-               <version>2.4.3</version>
-            </plugin>
-            <plugin>
-               <groupId>org.apache.maven.plugins</groupId>
-               <artifactId>maven-surefire-plugin</artifactId>
-               <version>2.4.3</version>
-            </plugin>
-            <plugin>
-               <groupId>org.apache.maven.plugins</groupId>
-               <artifactId>maven-clean-plugin</artifactId>
-               <version>2.2</version>
-            </plugin>
-            <plugin>
-               <groupId>org.apache.maven.plugins</groupId>
-               <artifactId>maven-deploy-plugin</artifactId>
-               <version>2.4</version>
-            </plugin>
-            <plugin>
-               <groupId>org.apache.maven.plugins</groupId>
-               <artifactId>maven-install-plugin</artifactId>
-               <version>2.2</version>
-            </plugin>
-            <plugin>
-               <groupId>org.apache.maven.plugins</groupId>
-               <artifactId>maven-site-plugin</artifactId>
-               <version>2.0-beta-6</version>
-            </plugin>
-            <plugin>
-               <groupId>org.apache.maven.plugins</groupId>
-               <artifactId>maven-source-plugin</artifactId>
-               <version>2.0.4</version>
-            </plugin>
-            <plugin>
-               <groupId>org.apache.maven.plugins</groupId>
-               <artifactId>maven-jar-plugin</artifactId>
-               <version>2.2</version>
-            </plugin>
-            <plugin>
-               <groupId>org.apache.maven.plugins</groupId>
-               <artifactId>maven-antrun-plugin</artifactId>
-               <version>1.1</version>
-            </plugin>
-            <plugin>
-               <groupId>org.apache.maven.plugins</groupId>
-               <artifactId>maven-release-plugin</artifactId>
-               <version>2.0-beta-7</version>
-            </plugin>
-            <plugin>
-               <groupId>org.apache.maven.plugins</groupId>
-               <artifactId>maven-enforcer-plugin</artifactId>
-               <version>1.0-alpha-4</version>
-               <executions>
-                  <execution>
-                     <id>enforce</id>
-                     <goals>
-                        <goal>enforce</goal>
-                     </goals>
-                     <configuration>
-                        <rules>
-                           <requireMavenVersion>
-                              <version>2.0.9</version>
-                           </requireMavenVersion>
-                           <requirePluginVersions>
-                              <unCheckedPlugins>
-                                 <unCheckedPlugin>org.apache.maven.plugins:maven-eclipse-plugin</unCheckedPlugin>
-                              </unCheckedPlugins>
-                           </requirePluginVersions>
-                        </rules>
-                     </configuration>
-                  </execution>
-               </executions>
-            </plugin>
-         </plugins>
-      </pluginManagement>
-      <extensions>
-         <extension>
-            <groupId>org.apache.maven.wagon</groupId>
-            <artifactId>wagon-webdav</artifactId>
-            <version>1.0-beta-2</version>
-         </extension>
-      </extensions>
-   </build>
-   
-   <profiles>
-      <profile>
-         <activation>
-            <property>
-               <name>build.translations</name>  
-            </property>
-         </activation>
-         <build>
-            <plugins>
-               <plugin>
-               <groupId>org.jboss.maven.plugins</groupId>
-               <artifactId>maven-jdocbook-plugin</artifactId>
-                  <executions>
-                     <execution>
-                        <phase>process-resources</phase>
-                        <goals>
-                           <goal>translate</goal>
-                        </goals>
-                     </execution>
-                  </executions>
-               </plugin>
-            </plugins>
-         </build>
-      </profile>
-   </profiles>
-   
-      <ciManagement>
-      <system>Hudson</system>
-      <url />
-
-   </ciManagement>
-
-   <issueManagement>
-      <system>JIRA</system>
-      <url>http://jira.jboss.org/browse/WBRI</url>
-   </issueManagement>
-
-   <inceptionYear>2008</inceptionYear>
-
-   <scm>
-
-      <connection>scm:svn:http://anonsvn.jboss.org/repos/webbeans/doc</connection>
-      <developerConnection>scm:svn:https://svn.jboss.org/repos/webbeans/doc</developerConnection>
-      <url>http://fisheye.jboss.org/browse/WebBeans/doc</url>
-   </scm>   
-   
-      <distributionManagement>
-      <repository>
-         <!-- Copy the dist to the local checkout of the JBoss maven2 repo ${maven.repository.root} -->
-         <!-- It is anticipated that ${maven.repository.root} be set in user's settings.xml -->
-         <!-- todo : replace this with direct svn access once the svnkit providers are available -->
-         <id>repository.jboss.org</id>
-         <url>file://${maven.repository.root}</url>
-      </repository>
-      <snapshotRepository>
-         <id>snapshots.jboss.org</id>
-         <name>JBoss Snapshot Repository</name>
-         <url>dav:https://snapshots.jboss.org/maven2</url>
-      </snapshotRepository>
-   </distributionManagement>
-</project>
\ No newline at end of file

Copied: doc/tags/1.0.0.PREVIEW1/pom.xml (from rev 2595, doc/trunk/reference/pom.xml)
===================================================================
--- doc/tags/1.0.0.PREVIEW1/pom.xml	                        (rev 0)
+++ doc/tags/1.0.0.PREVIEW1/pom.xml	2009-04-20 12:42:39 UTC (rev 2596)
@@ -0,0 +1,321 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+
+   <modelVersion>4.0.0</modelVersion>
+
+   <groupId>org.jboss.webbeans.reference-guide</groupId>
+   <artifactId>webbeans-reference-guide</artifactId>
+   <version>1.0.0.PREVIEW1</version>
+   <packaging>jdocbook</packaging>
+   <name>Web Beans Reference Guide</name>
+
+   <pluginRepositories>
+      <pluginRepository>
+         <id>repository.jboss.org</id>
+         <name>JBoss Repository</name>
+         <url>http://repository.jboss.org/maven2</url>
+      </pluginRepository>
+   </pluginRepositories>
+   <repositories>
+      <repository>
+         <id>repository.jboss.org</id>
+         <name>JBoss Repository</name>
+         <url>http://repository.jboss.org/maven2</url>
+      </repository>
+   </repositories>
+
+   <properties>
+      <mpjdocbook.version>2.1.1</mpjdocbook.version>
+   </properties>
+
+   <build>
+      <defaultGoal>process-classes</defaultGoal>
+      <plugins>
+         <plugin>
+            <groupId>org.jboss.maven.plugins</groupId>
+            <artifactId>maven-jdocbook-plugin</artifactId>
+            <version>${mpjdocbook.version}</version>
+            <extensions>true</extensions>
+            <dependencies>
+               <dependency>
+                  <groupId>org.jboss.webbeans</groupId>
+                  <artifactId>webbeans-docbook-xslt</artifactId>
+                  <version>1.1.1.BETA2</version>
+                  <exclusions>
+                     <exclusion>
+                        <groupId>org.eclipse.wst.css</groupId>
+                        <artifactId>core</artifactId>
+                     </exclusion>
+                     <exclusion>
+                        <groupId>org.eclipse.wst.sse</groupId>
+                        <artifactId>core</artifactId>
+                     </exclusion>
+                  </exclusions>
+               </dependency>
+               <dependency>
+                  <groupId>org.jboss.seam</groupId>
+                  <artifactId>seam-jdocbook-style</artifactId>
+                  <version>1.1.0.GA</version>
+                  <type>jdocbook-style</type>
+               </dependency>
+               <dependency>
+                  <groupId>org.jboss</groupId>
+                  <artifactId>jbossorg-jdocbook-style</artifactId>
+                  <version>1.1.0</version>
+                  <type>jdocbook-style</type>
+               </dependency>
+            </dependencies>
+            <configuration>
+               <sourceDirectory>${pom.basedir}</sourceDirectory>
+               <sourceDocumentName>master.xml</sourceDocumentName>
+               <masterTranslation>en-US</masterTranslation>
+               <translations>
+                 <translation>it-IT</translation>
+                 <translation>zh-CN</translation>
+                 <translation>zh-TW</translation>
+                 <translation>es-ES</translation>
+                 <translation>ko-KR</translation>
+                 <translation>de-DE</translation>
+                 <translation>pt-BR</translation>
+               </translations>
+               <imageResource>
+                  <directory>${pom.basedir}/en-US</directory>
+                  <includes>
+                     <include>images/*.png</include>
+                  </includes>
+               </imageResource>
+               <formats>
+                  <format>
+                     <formatName>pdf</formatName>
+                     <stylesheetResource>
+                        classpath:/xslt/org/jboss/webbeans/pdf.xsl
+                     </stylesheetResource>
+                     <finalName>webbeans_reference.pdf</finalName>
+                  </format>
+                  <format>
+                     <formatName>html</formatName>
+                     <stylesheetResource>
+                        classpath:/xslt/org/jboss/webbeans/xhtml.xsl
+                     </stylesheetResource>
+                     <finalName>index.html</finalName>
+                  </format>
+                  <format>
+                     <formatName>html_single</formatName>
+                     <stylesheetResource>
+                        classpath:/xslt/org/jboss/webbeans/xhtml-single.xsl
+                     </stylesheetResource>
+                     <finalName>index.html</finalName>
+                  </format>
+               </formats>
+               <options>
+                  <xincludeSupported>true</xincludeSupported>
+                  <xmlTransformerType>saxon</xmlTransformerType>
+                  <!-- needed for uri-resolvers; can be ommitted if using 'current' uri scheme -->
+                  <!--     could also locate the docbook dependency and inspect its version... -->
+                  <docbookVersion>1.72.0</docbookVersion>
+                  <localeSeparator>-</localeSeparator>
+               </options>
+            </configuration>
+         </plugin>
+         <plugin>
+            <artifactId>maven-antrun-plugin</artifactId>
+            <executions>
+               <execution>
+                  <phase>process-classes</phase>
+                  <configuration>
+                     <tasks>
+                        <copy file="${basedir}/target/docbook/publish/en-US/pdf/webbeans_reference.pdf" todir="${basedir}" />
+                     </tasks>
+                  </configuration>
+                  <goals>
+                     <goal>run</goal>
+                  </goals>
+               </execution>
+            </executions>
+         </plugin>
+         <plugin>
+            <groupId>org.apache.maven.plugins</groupId>
+            <artifactId>maven-enforcer-plugin</artifactId>
+         </plugin>
+          <plugin>
+            <groupId>org.apache.maven.plugins</groupId>
+            <artifactId>maven-release-plugin</artifactId>
+            <configuration>
+               <arguments>-Dbuild.translations</arguments>
+            </configuration>
+         </plugin>
+      </plugins>
+      <pluginManagement>
+         <plugins>
+            <plugin>
+               <groupId>org.apache.maven.plugins</groupId>
+               <artifactId>maven-dependency-plugin</artifactId>
+               <version>2.0</version>
+            </plugin>
+            <plugin>
+               <groupId>org.jboss.maven.plugins</groupId>
+               <artifactId>maven-jdocbook-plugin</artifactId>
+               <version>${mpjdocbook.version}</version>
+            </plugin>
+            <plugin>
+               <groupId>org.apache.maven.plugins</groupId>
+               <artifactId>maven-jar-plugin</artifactId>
+               <configuration>
+                  <archive>
+                     <manifest>
+                        <addDefaultImplementationEntries>
+                           true
+                        </addDefaultImplementationEntries>
+                        <addDefaultSpecificationEntries>
+                           true
+                        </addDefaultSpecificationEntries>
+                     </manifest>
+                  </archive>
+               </configuration>
+            </plugin>
+            <plugin>
+               <groupId>org.apache.maven.plugins</groupId>
+               <artifactId>maven-surefire-report-plugin</artifactId>
+               <version>2.4.3</version>
+            </plugin>
+            <plugin>
+               <groupId>org.apache.maven.plugins</groupId>
+               <artifactId>maven-surefire-plugin</artifactId>
+               <version>2.4.3</version>
+            </plugin>
+            <plugin>
+               <groupId>org.apache.maven.plugins</groupId>
+               <artifactId>maven-clean-plugin</artifactId>
+               <version>2.2</version>
+            </plugin>
+            <plugin>
+               <groupId>org.apache.maven.plugins</groupId>
+               <artifactId>maven-deploy-plugin</artifactId>
+               <version>2.4</version>
+            </plugin>
+            <plugin>
+               <groupId>org.apache.maven.plugins</groupId>
+               <artifactId>maven-install-plugin</artifactId>
+               <version>2.2</version>
+            </plugin>
+            <plugin>
+               <groupId>org.apache.maven.plugins</groupId>
+               <artifactId>maven-site-plugin</artifactId>
+               <version>2.0-beta-6</version>
+            </plugin>
+            <plugin>
+               <groupId>org.apache.maven.plugins</groupId>
+               <artifactId>maven-source-plugin</artifactId>
+               <version>2.0.4</version>
+            </plugin>
+            <plugin>
+               <groupId>org.apache.maven.plugins</groupId>
+               <artifactId>maven-jar-plugin</artifactId>
+               <version>2.2</version>
+            </plugin>
+            <plugin>
+               <groupId>org.apache.maven.plugins</groupId>
+               <artifactId>maven-antrun-plugin</artifactId>
+               <version>1.1</version>
+            </plugin>
+            <plugin>
+               <groupId>org.apache.maven.plugins</groupId>
+               <artifactId>maven-release-plugin</artifactId>
+               <version>2.0-beta-7</version>
+            </plugin>
+            <plugin>
+               <groupId>org.apache.maven.plugins</groupId>
+               <artifactId>maven-enforcer-plugin</artifactId>
+               <version>1.0-alpha-4</version>
+               <executions>
+                  <execution>
+                     <id>enforce</id>
+                     <goals>
+                        <goal>enforce</goal>
+                     </goals>
+                     <configuration>
+                        <rules>
+                           <requireMavenVersion>
+                              <version>2.0.9</version>
+                           </requireMavenVersion>
+                           <requirePluginVersions>
+                              <unCheckedPlugins>
+                                 <unCheckedPlugin>org.apache.maven.plugins:maven-eclipse-plugin</unCheckedPlugin>
+                              </unCheckedPlugins>
+                           </requirePluginVersions>
+                        </rules>
+                     </configuration>
+                  </execution>
+               </executions>
+            </plugin>
+         </plugins>
+      </pluginManagement>
+      <extensions>
+         <extension>
+            <groupId>org.apache.maven.wagon</groupId>
+            <artifactId>wagon-webdav</artifactId>
+            <version>1.0-beta-2</version>
+         </extension>
+      </extensions>
+   </build>
+   
+   <profiles>
+      <profile>
+         <activation>
+            <property>
+               <name>build.translations</name>  
+            </property>
+         </activation>
+         <build>
+            <plugins>
+               <plugin>
+               <groupId>org.jboss.maven.plugins</groupId>
+               <artifactId>maven-jdocbook-plugin</artifactId>
+                  <executions>
+                     <execution>
+                        <phase>process-resources</phase>
+                        <goals>
+                           <goal>translate</goal>
+                        </goals>
+                     </execution>
+                  </executions>
+               </plugin>
+            </plugins>
+         </build>
+      </profile>
+   </profiles>
+   
+      <ciManagement>
+      <system>Hudson</system>
+      <url />
+
+   </ciManagement>
+
+   <issueManagement>
+      <system>JIRA</system>
+      <url>http://jira.jboss.org/browse/WBRI</url>
+   </issueManagement>
+
+   <inceptionYear>2008</inceptionYear>
+
+   <scm>
+
+      <connection>scm:svn:http://anonsvn.jboss.org/repos/webbeans/doc/tags/1.0.0.PREVIEW1</connection>
+      <developerConnection>scm:svn:https://svn.jboss.org/repos/webbeans/doc/tags/1.0.0.PREVIEW1</developerConnection>
+      <url>http://fisheye.jboss.org/browse/WebBeans/doc/tags/1.0.0.PREVIEW1</url>
+   </scm>   
+   
+      <distributionManagement>
+      <repository>
+         <!-- Copy the dist to the local checkout of the JBoss maven2 repo ${maven.repository.root} -->
+         <!-- It is anticipated that ${maven.repository.root} be set in user's settings.xml -->
+         <!-- todo : replace this with direct svn access once the svnkit providers are available -->
+         <id>repository.jboss.org</id>
+         <url>file://${maven.repository.root}</url>
+      </repository>
+      <snapshotRepository>
+         <id>snapshots.jboss.org</id>
+         <name>JBoss Snapshot Repository</name>
+         <url>dav:https://snapshots.jboss.org/maven2</url>
+      </snapshotRepository>
+   </distributionManagement>
+</project>
\ No newline at end of file




More information about the weld-commits mailing list