[seam-commits] Seam SVN: r15060 - in branches/community/Seam_2_3: examples-ee6/jee6 and 33 other directories.

seam-commits at lists.jboss.org seam-commits at lists.jboss.org
Mon Aug 20 10:14:27 EDT 2012


Author: manaRH
Date: 2012-08-20 10:14:25 -0400 (Mon, 20 Aug 2012)
New Revision: 15060

Added:
   branches/community/Seam_2_3/examples-ee6/jee6/
   branches/community/Seam_2_3/examples-ee6/jee6/jee6-tests/
   branches/community/Seam_2_3/examples-ee6/jee6/jee6-tests/pom.xml
   branches/community/Seam_2_3/examples-ee6/jee6/jee6-tests/src/
   branches/community/Seam_2_3/examples-ee6/jee6/jee6-tests/src/test/
   branches/community/Seam_2_3/examples-ee6/jee6/jee6-tests/src/test/java/
   branches/community/Seam_2_3/examples-ee6/jee6/jee6-tests/src/test/java/org/
   branches/community/Seam_2_3/examples-ee6/jee6/jee6-tests/src/test/java/org/jboss/
   branches/community/Seam_2_3/examples-ee6/jee6/jee6-tests/src/test/java/org/jboss/seam/
   branches/community/Seam_2_3/examples-ee6/jee6/jee6-tests/src/test/java/org/jboss/seam/example/
   branches/community/Seam_2_3/examples-ee6/jee6/jee6-tests/src/test/java/org/jboss/seam/example/booking/
   branches/community/Seam_2_3/examples-ee6/jee6/jee6-tests/src/test/java/org/jboss/seam/example/booking/test/
   branches/community/Seam_2_3/examples-ee6/jee6/jee6-tests/src/test/java/org/jboss/seam/example/booking/test/BookingTest.java
   branches/community/Seam_2_3/examples-ee6/jee6/jee6-tests/src/test/java/org/jboss/seam/example/booking/test/ChangePasswordTest.java
   branches/community/Seam_2_3/examples-ee6/jee6/jee6-tests/src/test/java/org/jboss/seam/example/booking/test/Deployments.java
   branches/community/Seam_2_3/examples-ee6/jee6/jee6-tests/src/test/java/org/jboss/seam/example/booking/test/LoginTest.java
   branches/community/Seam_2_3/examples-ee6/jee6/jee6-tests/src/test/resources-ftest/
   branches/community/Seam_2_3/examples-ee6/jee6/jee6-tests/src/test/resources-ftest/testng-cluster.xml
   branches/community/Seam_2_3/examples-ee6/jee6/jee6-tests/src/test/resources-ftest/testng.xml
   branches/community/Seam_2_3/examples-ee6/jee6/jee6-tests/src/test/resources-integration/
   branches/community/Seam_2_3/examples-ee6/jee6/jee6-tests/src/test/resources-integration/arquillian.xml
   branches/community/Seam_2_3/examples-ee6/jee6/jee6-tests/src/test/resources/
   branches/community/Seam_2_3/examples-ee6/jee6/jee6-tests/src/test/resources/booking.properties
   branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/
   branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/pom.xml
   branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/
   branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/
   branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/java/
   branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/java/org/
   branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/java/org/jboss/
   branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/java/org/jboss/seam/
   branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/java/org/jboss/seam/example/
   branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/java/org/jboss/seam/example/booking/
   branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/java/org/jboss/seam/example/booking/AuthenticatorAction.java
   branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/java/org/jboss/seam/example/booking/Booking.java
   branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/java/org/jboss/seam/example/booking/BookingListAction.java
   branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/java/org/jboss/seam/example/booking/ChangePasswordAction.java
   branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/java/org/jboss/seam/example/booking/Hotel.java
   branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/java/org/jboss/seam/example/booking/HotelBookingAction.java
   branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/java/org/jboss/seam/example/booking/HotelSearchingAction.java
   branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/java/org/jboss/seam/example/booking/RecentBookingsAction.java
   branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/java/org/jboss/seam/example/booking/RecentDateConverter.java
   branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/java/org/jboss/seam/example/booking/RegisterAction.java
   branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/java/org/jboss/seam/example/booking/User.java
   branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/resources/
   branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/resources/META-INF/
   branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/resources/META-INF/ejb-jar.xml
   branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/resources/META-INF/jboss-seam-booking-ds.xml
   branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/resources/META-INF/persistence.xml
   branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/resources/import.sql
   branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/resources/messages.properties
   branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/resources/seam.properties
   branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/webapp-cluster/
   branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/webapp-cluster/WEB-INF/
   branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/webapp-cluster/WEB-INF/web.xml
   branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/webapp/
   branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/webapp/WEB-INF/
   branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/webapp/WEB-INF/components.xml
   branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/webapp/WEB-INF/ejb-jar.xml
   branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/webapp/WEB-INF/faces-config.xml
   branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/webapp/WEB-INF/jboss-deployment-structure.xml
   branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/webapp/WEB-INF/jboss-seam-booking-ds.xml
   branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/webapp/WEB-INF/pages.xml
   branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/webapp/WEB-INF/web.xml
   branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/webapp/book.xhtml
   branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/webapp/confirm.xhtml
   branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/webapp/conversations.xhtml
   branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/webapp/css/
   branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/webapp/css/screen.css
   branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/webapp/css/trailblazer_main.css
   branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/webapp/display.xhtml
   branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/webapp/edit.xhtml
   branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/webapp/exp/
   branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/webapp/exp/bookingExp.html
   branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/webapp/exp/confirmExp.html
   branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/webapp/exp/introExp.html
   branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/webapp/exp/loginExp.html
   branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/webapp/exp/mainExp.html
   branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/webapp/exp/registerExp.html
   branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/webapp/exp/workspaceExp.html
   branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/webapp/home.xhtml
   branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/webapp/hotel.xhtml
   branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/webapp/hotelview.xhtml
   branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/webapp/img/
   branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/webapp/img/bg.gif
   branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/webapp/img/btn.bg.gif
   branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/webapp/img/cal-next.png
   branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/webapp/img/cal-prev.png
   branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/webapp/img/cnt.bg.gif
   branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/webapp/img/dtpick.gif
   branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/webapp/img/hdr.ad.jpg
   branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/webapp/img/hdr.bar.jpg
   branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/webapp/img/hdr.bg.gif
   branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/webapp/img/hdr.title.gif
   branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/webapp/img/header_line.gif
   branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/webapp/img/input.bg.gif
   branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/webapp/img/sdb.bg.gif
   branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/webapp/img/spinner.gif
   branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/webapp/img/th.bg.gif
   branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/webapp/index.html
   branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/webapp/main.xhtml
   branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/webapp/password.xhtml
   branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/webapp/register.xhtml
   branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/webapp/template.xhtml
   branches/community/Seam_2_3/examples-ee6/jee6/pom.xml
   branches/community/Seam_2_3/examples-ee6/jee6/readme.txt
Modified:
   branches/community/Seam_2_3/examples-ee6/pom.xml
   branches/community/Seam_2_3/jboss-seam/src/main/java/org/jboss/seam/Component.java
   branches/community/Seam_2_3/jboss-seam/src/main/java/org/jboss/seam/ComponentType.java
   branches/community/Seam_2_3/jboss-seam/src/main/java/org/jboss/seam/Seam.java
   branches/community/Seam_2_3/jboss-seam/src/main/java/org/jboss/seam/util/EJB.java
Log:
JBSEAM-5003 added no interface view and singleton feature + modified booking in war

Added: branches/community/Seam_2_3/examples-ee6/jee6/jee6-tests/pom.xml
===================================================================
--- branches/community/Seam_2_3/examples-ee6/jee6/jee6-tests/pom.xml	                        (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/jee6/jee6-tests/pom.xml	2012-08-20 14:14:25 UTC (rev 15060)
@@ -0,0 +1,218 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<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/maven-v4_0_0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <artifactId>jee6</artifactId>
+        <groupId>org.jboss.seam.examples-ee6</groupId>
+        <version>2.3.0.CR1-SNAPSHOT</version>
+        <relativePath>../pom.xml</relativePath>
+    </parent>
+    
+    <groupId>org.jboss.seam.examples-ee6.booking-ee6</groupId>
+    <artifactId>jee6-tests</artifactId>
+    <name>Booking Integration Tests Module</name>
+    
+    <dependencies>
+        <dependency>
+            <groupId>org.jboss.seam</groupId>
+            <artifactId>jboss-seam</artifactId>
+            <type>ejb</type>
+            <scope>test</scope>
+        </dependency>        
+        <dependency>
+            <groupId>org.slf4j</groupId>
+            <artifactId>slf4j-log4j12</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.hibernate.javax.persistence</groupId>
+            <artifactId>hibernate-jpa-2.0-api</artifactId>
+            <scope>provided</scope>
+        </dependency>        
+        <dependency>
+            <groupId>org.jboss.spec.javax.faces</groupId>
+            <artifactId>jboss-jsf-api_2.0_spec</artifactId>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.jboss.spec.javax.ejb</groupId>
+            <artifactId>jboss-ejb-api_3.1_spec</artifactId>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.jboss.spec.javax.transaction</groupId>
+            <artifactId>jboss-transaction-api_1.1_spec</artifactId>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>javax.validation</groupId>
+            <artifactId>validation-api</artifactId>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>javax.mail</groupId>
+            <artifactId>mail</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.seleniumhq.selenium</groupId>
+            <artifactId>selenium-server</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.seleniumhq.selenium</groupId>
+            <artifactId>selenium-java</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.jboss.seam</groupId>
+            <artifactId>functional-tests</artifactId>
+            <scope>test</scope>
+        </dependency>
+        
+        <dependency>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
+            <scope>test</scope>
+        </dependency>
+        
+        <dependency>
+            <groupId>org.jboss.arquillian.junit</groupId>
+            <artifactId>arquillian-junit-container</artifactId>
+            <scope>test</scope>
+        </dependency>
+
+        <dependency>
+            <groupId>org.jboss.arquillian.protocol</groupId>
+            <artifactId>arquillian-protocol-servlet</artifactId>
+            <scope>test</scope>
+        </dependency>
+
+        <dependency>
+            <groupId>org.jboss.spec.javax.el</groupId>
+            <artifactId>jboss-el-api_2.2_spec</artifactId>
+        </dependency>
+    </dependencies>
+    
+    <build>
+        <testResources>
+            <testResource>
+                <directory>src/test/resources</directory>
+                <filtering>true</filtering>
+            </testResource>
+            <testResource>
+                <directory>src/test/resources-integration</directory>
+            </testResource>
+        </testResources>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-surefire-plugin</artifactId>
+                <configuration>
+                    <skip>true</skip>
+                </configuration>
+            </plugin>
+            <plugin>
+                <groupId>org.codehaus.mojo</groupId>
+                <artifactId>build-helper-maven-plugin</artifactId>
+                <executions>
+                  <execution>
+                    <id>add-test-source</id>
+                    <phase>generate-test-sources</phase>
+                    <goals>
+                      <goal>add-test-source</goal>
+                    </goals>
+                    <configuration>
+                      <sources>
+                        <source>../jee6-web/src/main/java</source>
+                      </sources>
+                    </configuration>
+                  </execution>
+                </executions>
+              </plugin>
+        </plugins>
+    </build>    
+
+    <profiles>
+        <profile>
+            <id>integration-tests</id>
+            <activation>
+                <property>
+                    <name>arquillian</name>
+                </property>
+            </activation> 
+        </profile>
+
+      <profile>
+         <id>arq-jbossas-7-managed</id>
+         <activation>
+            <property>
+               <name>arquillian</name>
+               <value>jbossas-managed-7</value>
+            </property>
+         </activation>
+         <build>
+            <plugins>
+               <plugin>
+                  <groupId>org.apache.maven.plugins</groupId>
+                  <artifactId>maven-dependency-plugin</artifactId>
+               </plugin>
+            </plugins>
+         </build>
+      </profile>
+
+
+        <profile>
+            <id>arq-jbossas-7-remote</id>
+            <activation>
+                <property>
+                    <name>arquillian</name>
+                    <value>jbossas-remote-7</value>
+                </property>
+            </activation>
+        </profile>
+    
+        <profile>
+            <id>ftest-jbossas</id>
+            <properties>
+                <example.context.path>jboss-seam-jee6</example.context.path>
+            </properties>
+            <build>
+                <plugins>
+                    <plugin>
+                        <groupId>org.codehaus.mojo</groupId>
+                        <artifactId>selenium-maven-plugin</artifactId>
+                    </plugin>
+                    <plugin>
+                        <groupId>org.codehaus.mojo</groupId>
+                        <artifactId>failsafe-maven-plugin</artifactId>
+                    </plugin>
+                    <plugin>
+                        <groupId>org.apache.maven.plugins</groupId>
+                        <artifactId>maven-antrun-plugin</artifactId>
+                    </plugin>
+                </plugins>
+            </build>
+        </profile>
+        <profile>
+            <id>ftest-jbossas-cluster</id>
+            <properties>
+                <example.context.path>jee6-web</example.context.path>
+            </properties>
+            <build>
+                <plugins>
+                    <plugin>
+                        <groupId>org.codehaus.mojo</groupId>
+                        <artifactId>selenium-maven-plugin</artifactId>
+                    </plugin>
+                    <plugin>
+                        <groupId>org.codehaus.mojo</groupId>
+                        <artifactId>failsafe-maven-plugin</artifactId>
+                    </plugin>
+                    <plugin>
+                        <groupId>org.apache.maven.plugins</groupId>
+                        <artifactId>maven-antrun-plugin</artifactId>
+                    </plugin>
+                </plugins>
+            </build>
+        </profile>
+    </profiles>
+    
+</project>

Added: branches/community/Seam_2_3/examples-ee6/jee6/jee6-tests/src/test/java/org/jboss/seam/example/booking/test/BookingTest.java
===================================================================
--- branches/community/Seam_2_3/examples-ee6/jee6/jee6-tests/src/test/java/org/jboss/seam/example/booking/test/BookingTest.java	                        (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/jee6/jee6-tests/src/test/java/org/jboss/seam/example/booking/test/BookingTest.java	2012-08-20 14:14:25 UTC (rev 15060)
@@ -0,0 +1,148 @@
+//$Id: BookingTest.java 5810 2007-07-16 06:46:47Z gavin $
+package org.jboss.seam.example.booking.test;
+
+import java.util.Calendar;
+import java.util.Date;
+
+import javax.faces.model.DataModel;
+import javax.faces.model.ListDataModel;
+
+import org.jboss.shrinkwrap.api.Archive;
+import org.jboss.shrinkwrap.api.spec.EnterpriseArchive;
+import org.jboss.shrinkwrap.api.spec.WebArchive;
+import org.jboss.arquillian.container.test.api.Deployment;
+import org.jboss.arquillian.container.test.api.OverProtocol;
+import org.jboss.arquillian.junit.Arquillian;
+import org.jboss.seam.Component;
+import org.jboss.seam.annotations.In;
+import org.jboss.seam.contexts.Contexts;
+import org.jboss.seam.contexts.Lifecycle;
+import org.jboss.seam.core.Manager;
+import org.jboss.seam.example.booking.Booking;
+import org.jboss.seam.example.booking.BookingListAction;
+import org.jboss.seam.example.booking.Hotel;
+import org.jboss.seam.example.booking.HotelBookingAction;
+import org.jboss.seam.example.booking.HotelSearchingAction;
+import org.jboss.seam.example.booking.RecentBookingsAction;
+import org.jboss.seam.example.booking.User;
+import org.jboss.seam.security.Identity;
+
+import static org.junit.Assert.*;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+ at RunWith(Arquillian.class)
+public class BookingTest
+{
+   @Deployment(name="BookingTest")
+   @OverProtocol("Servlet 3.0") 
+   public static Archive<?> createDeployment()
+   {
+      return Deployments.bookingDeployment();
+   }
+
+   @Before
+   public void before() {
+      Lifecycle.beginCall();
+   }
+
+   @After
+   public void after() {
+      Lifecycle.endCall();
+   }
+
+   @Test
+   public void testBookHotel() throws Exception
+   {
+      Manager manager = Manager.instance();
+      Identity identity = Identity.instance();
+      HotelSearchingAction hotelSearch = (HotelSearchingAction)Component.getInstance("hotelSearch");
+      HotelBookingAction hotelBooking = (HotelBookingAction)Component.getInstance("hotelBooking");
+      BookingListAction bookingList = (BookingListAction)Component.getInstance("bookingList");
+
+      manager.initializeTemporaryConversation();
+      Contexts.getSessionContext().set("user", new User("Gavin King", "foobar", "gavin"));
+
+      identity.setUsername("gavin");
+      identity.setPassword("foobar");
+      identity.login();
+
+      hotelSearch.setSearchString("Union Square");
+      hotelSearch.find();
+
+      DataModel hotels = (DataModel) Contexts.getSessionContext().get("hotels");
+      
+      assertEquals(1, hotels.getRowCount());
+      assertEquals("NY", ((Hotel) hotels.getRowData() ).getCity());
+      assertEquals("Union Square", hotelSearch.getSearchString());
+      assertFalse(manager.isLongRunningConversation());
+
+      long hotelId = ((Hotel) hotels.getRowData() ).getId();
+      RecentBookingsAction recentBookings = (RecentBookingsAction)Component.getInstance("recentBookings");
+      assertNull(recentBookings.getMostRecentBookingDate(hotelId));
+
+      hotels = (DataModel) Contexts.getSessionContext().get("hotels");
+      assertEquals(1, hotels.getRowCount());
+      hotelBooking.selectHotel( (Hotel) hotels.getRowData() );
+
+      Hotel hotel = (Hotel) Contexts.getConversationContext().get("hotel");
+      assertEquals("NY", hotel.getCity());
+      assertEquals("10011", hotel.getZip());
+      assertTrue(manager.isLongRunningConversation());
+
+      hotelBooking.bookHotel();
+
+      Booking booking = (Booking) Contexts.getConversationContext().get("booking");
+      assertNotNull(booking.getUser());
+      assertNotNull(booking.getHotel());
+      assertNull(booking.getCreditCard());
+      assertNull(booking.getCreditCardName());
+
+      assertEquals(Contexts.getConversationContext().get("hotel"), booking.getHotel());
+      assertEquals(Contexts.getSessionContext().get("user"), booking.getUser());
+      assertTrue(Manager.instance().isLongRunningConversation());
+
+      booking.setCreditCard("1234567891021234");
+      booking.setCreditCardName("GAVIN KING");
+      booking.setBeds(2);
+      Date now = new Date();
+      booking.setCheckinDate(now);
+      booking.setCheckoutDate(now);
+
+      hotelBooking.setBookingDetails();
+      assertFalse(hotelBooking.isBookingValid());
+
+      Calendar cal = Calendar.getInstance();
+      cal.add(Calendar.DAY_OF_MONTH, 2);
+      booking.setCheckoutDate(cal.getTime());
+
+      hotelBooking.setBookingDetails();
+      assertTrue(hotelBooking.isBookingValid());
+      assertTrue(manager.isLongRunningConversation());
+
+      hotelBooking.confirm();
+
+      ListDataModel bookings = (ListDataModel) Component.getInstance("bookings");
+      assertEquals(1, bookings.getRowCount());
+      bookings.setRowIndex(0);
+      booking = (Booking) bookings.getRowData();
+      assertEquals("NY",  booking.getHotel().getCity());
+      assertEquals("gavin",  booking.getUser().getUsername());
+      assertFalse(manager.isLongRunningConversation());
+
+      recentBookings = (RecentBookingsAction)Component.getInstance("recentBookings");
+      assertNotNull(recentBookings.getMostRecentBookingDate(hotelId));
+
+      bookings = (ListDataModel) Contexts.getSessionContext().get("bookings");
+      bookings.setRowIndex(0);
+      bookingList.cancel();
+
+      bookings = (ListDataModel) Contexts.getSessionContext().get("bookings");
+      assertEquals(0, bookings.getRowCount());
+      assertFalse(manager.isLongRunningConversation());
+   }
+
+}

Added: branches/community/Seam_2_3/examples-ee6/jee6/jee6-tests/src/test/java/org/jboss/seam/example/booking/test/ChangePasswordTest.java
===================================================================
--- branches/community/Seam_2_3/examples-ee6/jee6/jee6-tests/src/test/java/org/jboss/seam/example/booking/test/ChangePasswordTest.java	                        (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/jee6/jee6-tests/src/test/java/org/jboss/seam/example/booking/test/ChangePasswordTest.java	2012-08-20 14:14:25 UTC (rev 15060)
@@ -0,0 +1,102 @@
+//$Id: ChangePasswordTest.java 5810 2007-07-16 06:46:47Z gavin $
+package org.jboss.seam.example.booking.test;
+
+import org.jboss.shrinkwrap.api.Archive;
+import org.jboss.shrinkwrap.api.spec.EnterpriseArchive;
+import org.jboss.shrinkwrap.api.spec.WebArchive;
+import org.jboss.arquillian.container.test.api.Deployment;
+import org.jboss.arquillian.container.test.api.OverProtocol;
+import org.jboss.arquillian.junit.Arquillian;
+import org.jboss.seam.Component;
+import org.jboss.seam.contexts.Contexts;
+import org.jboss.seam.contexts.Lifecycle;
+import org.jboss.seam.core.Manager;
+import org.jboss.seam.example.booking.ChangePasswordAction;
+import org.jboss.seam.example.booking.User;
+import org.jboss.seam.security.Identity;
+
+import static org.junit.Assert.*;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+ at RunWith(Arquillian.class)
+public class ChangePasswordTest
+{
+   @Deployment(name="ChangePasswordTest")
+   @OverProtocol("Servlet 3.0") 
+   public static Archive<?> createDeployment()
+   {
+      return Deployments.bookingDeployment();
+   }
+
+   @Before
+   public void before() {
+      Lifecycle.beginCall();
+   }
+
+   @After
+   public void after() {
+      Lifecycle.endCall();
+   }
+
+   @Test
+   public void testChangePassword() throws Exception
+   {
+      Identity identity = Identity.instance();
+
+      Contexts.getSessionContext().set("user", new User("Gavin King", "foobar", "gavin"));
+      identity.setUsername("gavin");
+      identity.setPassword("foobar");
+      identity.login();
+
+      User user = (User)Component.getInstance("user");
+      assertEquals("Gavin King", user.getName());
+      assertEquals("gavin", user.getUsername());
+      assertEquals("foobar", user.getPassword());
+      assertFalse(Manager.instance().isLongRunningConversation());
+      assertTrue(identity.isLoggedIn());
+
+      user.setPassword("xxxyyy");
+      ChangePasswordAction changePassword = (ChangePasswordAction)Component.getInstance("changePassword");
+      changePassword.setVerify("xxyyyx");
+      changePassword.changePassword();
+
+      user = (User)Component.getInstance("user");
+      assertEquals("Gavin King", user.getName());
+      assertEquals("gavin", user.getUsername());
+      assertEquals("foobar", user.getPassword());
+      assertFalse(Manager.instance().isLongRunningConversation());
+      assertTrue(identity.isLoggedIn());
+
+      user = (User)Component.getInstance("user");
+      user.setPassword("xxxyyy");
+      changePassword = (ChangePasswordAction)Component.getInstance("changePassword");
+      changePassword.setVerify("xxxyyy");
+      changePassword.changePassword();
+
+      user = (User)Component.getInstance("user");
+      assertEquals("Gavin King", user.getName());
+      assertEquals("gavin", user.getUsername());
+      assertEquals("xxxyyy", user.getPassword());
+      assertFalse(Manager.instance().isLongRunningConversation());
+      assertTrue(identity.isLoggedIn());
+
+      user = (User)Component.getInstance("user");
+      assertEquals("xxxyyy", user.getPassword());
+      user.setPassword("foobar");
+      changePassword = (ChangePasswordAction)Component.getInstance("changePassword");
+      changePassword.setVerify("foobar");
+      changePassword.changePassword();
+
+      user = (User)Component.getInstance("user");
+      assertEquals("Gavin King", user.getName());
+      assertEquals("gavin", user.getUsername());
+      assertEquals("foobar", user.getPassword());
+      assertFalse(Manager.instance().isLongRunningConversation());
+      assertTrue(identity.isLoggedIn());
+   }
+
+}

Added: branches/community/Seam_2_3/examples-ee6/jee6/jee6-tests/src/test/java/org/jboss/seam/example/booking/test/Deployments.java
===================================================================
--- branches/community/Seam_2_3/examples-ee6/jee6/jee6-tests/src/test/java/org/jboss/seam/example/booking/test/Deployments.java	                        (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/jee6/jee6-tests/src/test/java/org/jboss/seam/example/booking/test/Deployments.java	2012-08-20 14:14:25 UTC (rev 15060)
@@ -0,0 +1,14 @@
+package org.jboss.seam.example.booking.test;
+
+import java.io.File;
+
+import org.jboss.shrinkwrap.api.ShrinkWrap;
+import org.jboss.shrinkwrap.api.spec.WebArchive;
+import org.jboss.shrinkwrap.api.importer.ZipImporter;
+
+public class Deployments {
+   public static WebArchive bookingDeployment() {
+      return ShrinkWrap.create(ZipImporter.class, "jboss-seam-booking-ee6.war").importFrom(new File("../booking-web/target/jboss-seam-booking-ee6.war"))
+            .as(WebArchive.class);
+   }
+}

Added: branches/community/Seam_2_3/examples-ee6/jee6/jee6-tests/src/test/java/org/jboss/seam/example/booking/test/LoginTest.java
===================================================================
--- branches/community/Seam_2_3/examples-ee6/jee6/jee6-tests/src/test/java/org/jboss/seam/example/booking/test/LoginTest.java	                        (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/jee6/jee6-tests/src/test/java/org/jboss/seam/example/booking/test/LoginTest.java	2012-08-20 14:14:25 UTC (rev 15060)
@@ -0,0 +1,92 @@
+//$Id: LoginTest.java 5810 2007-07-16 06:46:47Z gavin $
+package org.jboss.seam.example.booking.test;
+
+import org.jboss.shrinkwrap.api.Archive;
+import org.jboss.shrinkwrap.api.spec.EnterpriseArchive;
+import org.jboss.shrinkwrap.api.spec.WebArchive;
+import org.jboss.arquillian.container.test.api.Deployment;
+import org.jboss.arquillian.container.test.api.OverProtocol;
+import org.jboss.arquillian.junit.Arquillian;
+import org.jboss.seam.Component;
+import org.jboss.seam.annotations.In;
+import org.jboss.seam.contexts.Lifecycle;
+import org.jboss.seam.core.Manager;
+import org.jboss.seam.example.booking.User;
+import org.jboss.seam.security.Identity;
+import org.jboss.seam.web.Session;
+
+import static org.junit.Assert.*;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+ at RunWith(Arquillian.class)
+public class LoginTest
+{
+   @Deployment(name="LoginTest")
+   @OverProtocol("Servlet 3.0") 
+   public static Archive<?> createDeployment()
+   {
+      return Deployments.bookingDeployment();
+   }
+
+   @Before
+   public void before() {
+      Lifecycle.beginCall();
+   }
+
+   @After
+   public void after() {
+      Lifecycle.endCall();
+   }
+
+   @Test
+   public void testLoginComponent() throws Exception
+   {
+      Identity identity = Identity.instance();
+
+      assertFalse(identity.isLoggedIn());
+      identity.setUsername("gavin");
+      identity.setPassword("foobar");
+      identity.login();
+
+      User user = (User)Component.getInstance("user");
+      assertEquals("Gavin King", user.getName());
+      assertEquals("gavin", user.getUsername());
+      assertEquals("foobar", user.getPassword());
+      assertTrue(identity.isLoggedIn());
+      identity.logout();
+      assertFalse(identity.isLoggedIn());
+      identity.setUsername("gavin");
+      identity.setPassword("tiger");
+      identity.login();
+      assertFalse(identity.isLoggedIn());
+   }
+
+   @Test
+   public void testLogin() throws Exception
+   {
+      Identity identity = Identity.instance();
+
+      assertFalse(identity.isLoggedIn());
+
+      identity.setUsername("gavin");
+      identity.setPassword("foobar");
+      identity.login();
+
+      User user = (User)Component.getInstance("user");
+      assertEquals("Gavin King", user.getName());
+      assertEquals("gavin", user.getUsername());
+      assertEquals("foobar", user.getPassword());
+      assertFalse(Manager.instance().isLongRunningConversation());
+      assertTrue(identity.isLoggedIn());
+
+      identity.logout();
+      assertTrue(Session.instance().isInvalid());
+
+      assertFalse(identity.isLoggedIn());
+   }
+
+}

Added: branches/community/Seam_2_3/examples-ee6/jee6/jee6-tests/src/test/resources/booking.properties
===================================================================
--- branches/community/Seam_2_3/examples-ee6/jee6/jee6-tests/src/test/resources/booking.properties	                        (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/jee6/jee6-tests/src/test/resources/booking.properties	2012-08-20 14:14:25 UTC (rev 15060)
@@ -0,0 +1,84 @@
+ #
+ # JBoss, Home of Professional Open Source
+ # Copyright 2008, Red Hat Middleware LLC, and individual contributors
+ # by the @authors tag. See the copyright.txt in the distribution for a
+ # full listing of individual contributors.
+ #
+ # This is free software; you can redistribute it and/or modify it
+ # under the terms of the GNU Lesser General Public License as
+ # published by the Free Software Foundation; either version 2.1 of
+ # the License, or (at your option) any later version.
+ #
+ # This software is distributed in the hope that it will be useful,
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ # Lesser General Public License for more details.
+ #
+ # You should have received a copy of the GNU Lesser General Public
+ # License along with this software; if not, write to the Free
+ # Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ # 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ # 
+HOME_PAGE /home.seam
+MAIN_PAGE /main.seam
+PAGE_TITLE JBoss Suites: Seam Framework
+LOGIN_USERNAME_FIELD id=login:username
+LOGIN_PASSWORD_FIELD id=login:password
+LOGIN_SUBMIT id=login:login
+LOGOUT id=logout
+PASSWORD_UPDATED_MESSAGE Password updated
+PASSWORD_REENTER_MESSAGE Re-enter new password
+PASSWORD_VALUE_REQUIRED_MESSAGE //span[text() = 'value is required']
+PASSWORD_LENGTH_MESSAGE size must be between
+PASSWORD_PASSWORD id=setpassword:PasswordDecorate:password
+PASSWORD_VERIFY id=setpassword:VerifyDecorate:verify
+PASSWORD_SUBMIT id=setpassword:change
+SETTINGS id=settings
+SEARCH_STRING_FIELD id=searchCriteria:searchString
+SEARCH_SUBMIT id=searchCriteria:findHotels
+NO_HOTELS_FOUND id=NoHotelsFoundMessage
+SEARCH_RESULT_TABLE xpath=//table[@id = 'hotels']/tbody
+SEARCH_RESULT_TABLE_FIRST_ROW_LINK id=hotels:0:viewHotel
+BOOKING_BOOK id=hotel:bookHotel
+BOOKING_CANCEL id=hotel:cancel
+HOTEL_BED_FIELD id=booking:bedsDecorate:beds
+HOTEL_BED_FIELD_SELECT_CRITERIA value=
+HOTEL_CHECKIN_DATE_FIELD id=booking:checkinDateDecorate:checkinDateInputDate
+HOTEL_CHECKIN_DATE_MESSAGE id=booking:checkinDateDecorate:message
+HOTEL_CHECKOUT_DATE_FIELD id=booking:checkoutDateDecorate:checkoutDateInputDate
+HOTEL_CHECKOUT_DATE_MESSAGE id=booking:checkoutDateDecorate:message
+HOTEL_SMOKING_1 id=booking:smokingDecorate:smoking:0
+HOTEL_SMOKING_2 id=booking:smokingDecorate:smoking:1
+HOTEL_CREDIT_CARD id=booking:creditCardDecorate:creditCard
+HOTEL_CREDIT_CARD_NAME id=booking:creditCardNameDecorate:creditCardName
+HOTEL_PROCEED id=booking:proceed
+HOTEL_CANCEL id=booking:cancel
+HOTEL_CONFIRM id=confirm:confirm
+HOTEL_MESSAGE xpath=//ul[@id='messages']/li
+REGISTRATION id=login:register
+REGISTRATION_USERNAME id=registration:usernameDecorate:username
+REGISTRATION_USERNAME_MESSAGE id=registration:usernameDecorate:message
+REGISTRATION_NAME id=registration:nameDecorate:name
+REGISTRATION_NAME_MESSAGE id=registration:nameDecorate:message
+REGISTRATION_PASSWORD id=registration:passwordDecorate:password
+REGISTRATION_PASSWORD_MESSAGE id=registration:passwordDecorate:message
+REGISTRATION_VERIFY id=registration:verifyDecorate:verify
+REGISTRATION_VERIFY_MESSAGE id=registration:verifyDecorate:message
+REGISTRATION_SUBMIT id=registration:register
+REGISTRATION_REENTER_MESSAGE Re-enter your password
+REGISTRATION_LENGTH_MESSAGE size must be between
+REGISTRATION_SUCCESSFUL_MESSAGE Successfully registered as {0}
+REGISTRATION_USER_EXISTS_MESSAGE Username {0} already exists
+NOT_LOGGED_IN_MESSAGE Please log in first
+CONVERSATION_TIMEOUT_MESSAGE The conversation ended, timed out or was processing another request
+BOOKING_TABLE_ITEM xpath\=//table[@id\="bookings\:bookings"]/tbody/tr[normalize-space(td[6]/text()) \= "{0}"][normalize-space(td[1]/text()) \= "{1}"]
+BOOKING_TABLE_ITEM_LINK xpath\=//table[@id\="bookings\:bookings"]/tbody/tr[normalize-space(td[6]/text()) \= "{0}"][normalize-space(td[1]/text()) \= "{1}"]/td[7]/a
+BOOKING_CANCELLED_MESSAGE Booking cancelled for confirmation number {0}
+BOOKING_CONFIRMATION_MESSAGE Thank you, {0}, your confimation number for {1} is \\d+
+BOOKING_INVALID_DATE_MESSAGE1 Check out date must be later than check in date
+BOOKING_INVALID_DATE_MESSAGE2 Check in date must be a future date
+WORKSPACE_BOOKING_TEXT Book hotel: {0}
+WORKSPACE_VIEW_TEXT View hotel: {0}
+WORKSPACE_TABLE_LINK_BY_ID id=ConversationListForm:ConversationListDataTable:{0}:EntryDescriptionLink
+WORKSPACE_TABLE_ROW_COUNT = //table[@id='ConversationListForm:ConversationListDataTable']/tbody/tr
+SPINNER id\=searchCriteria\:SpinnerGif


Property changes on: branches/community/Seam_2_3/examples-ee6/jee6/jee6-tests/src/test/resources/booking.properties
___________________________________________________________________
Added: svn:executable
   + *

Added: branches/community/Seam_2_3/examples-ee6/jee6/jee6-tests/src/test/resources-ftest/testng-cluster.xml
===================================================================
--- branches/community/Seam_2_3/examples-ee6/jee6/jee6-tests/src/test/resources-ftest/testng-cluster.xml	                        (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/jee6/jee6-tests/src/test/resources-ftest/testng-cluster.xml	2012-08-20 14:14:25 UTC (rev 15060)
@@ -0,0 +1,26 @@
+<!--
+    JBoss, Home of Professional Open Source Copyright 2008, Red Hat
+    Middleware LLC, and individual contributors by the @authors tag. See
+    the copyright.txt in the distribution for a full listing of individual
+    contributors. This is free software; you can redistribute it and/or
+    modify it under the terms of the GNU Lesser General Public License as
+    published by the Free Software Foundation; either version 2.1 of the
+    License, or (at your option) any later version. This software is
+    distributed in the hope that it will be useful, but WITHOUT ANY
+    WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+    License for more details. You should have received a copy of the GNU
+    Lesser General Public License along with this software; if not, write
+    to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+    Boston, MA 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+--> 
+<!DOCTYPE suite SYSTEM "http://beust.com/testng/testng-1.0.dtd" >
+<suite name="Booking example" verbose="2" parallel="false">
+    <test name="booking_tests_cluster">
+        <parameter name="PROPERTY_FILE"
+            value="/booking.properties" />
+        <classes>
+            <class name="org.jboss.seam.example.common.test.booking.cluster.selenium.FailoverTest" />
+        </classes>
+    </test>
+</suite>

Added: branches/community/Seam_2_3/examples-ee6/jee6/jee6-tests/src/test/resources-ftest/testng.xml
===================================================================
--- branches/community/Seam_2_3/examples-ee6/jee6/jee6-tests/src/test/resources-ftest/testng.xml	                        (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/jee6/jee6-tests/src/test/resources-ftest/testng.xml	2012-08-20 14:14:25 UTC (rev 15060)
@@ -0,0 +1,36 @@
+
+	<!--
+		JBoss, Home of Professional Open Source Copyright 2008, Red Hat
+		Middleware LLC, and individual contributors by the @authors tag. See
+		the copyright.txt in the distribution for a full listing of individual
+		contributors. This is free software; you can redistribute it and/or
+		modify it under the terms of the GNU Lesser General Public License as
+		published by the Free Software Foundation; either version 2.1 of the
+		License, or (at your option) any later version. This software is
+		distributed in the hope that it will be useful, but WITHOUT ANY
+		WARRANTY; without even the implied warranty of MERCHANTABILITY or
+		FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+		License for more details. You should have received a copy of the GNU
+		Lesser General Public License along with this software; if not, write
+		to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+		Boston, MA 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+	--> 
+<!DOCTYPE suite SYSTEM "http://beust.com/testng/testng-1.0.dtd" >
+<suite name="Booking example" verbose="2" parallel="false">
+	<test name="booking_jboss5">
+		<parameter name="PROPERTY_FILE"
+			value="/booking.properties" />
+		<classes>
+			<class
+				name="org.jboss.seam.example.common.test.booking.selenium.RegistrationTest" />
+			<class
+				name="org.jboss.seam.example.common.test.booking.selenium.ChangePasswordTest" />
+			<class
+				name="org.jboss.seam.example.common.test.booking.selenium.BackButtonTest" />
+			<class
+				name="org.jboss.seam.example.common.test.booking.selenium.SimpleBookingTest" />
+			<class
+				name="org.jboss.seam.example.common.test.booking.selenium.ConversationTest" />
+		</classes>
+	</test>
+</suite>
\ No newline at end of file


Property changes on: branches/community/Seam_2_3/examples-ee6/jee6/jee6-tests/src/test/resources-ftest/testng.xml
___________________________________________________________________
Added: svn:executable
   + *

Added: branches/community/Seam_2_3/examples-ee6/jee6/jee6-tests/src/test/resources-integration/arquillian.xml
===================================================================
--- branches/community/Seam_2_3/examples-ee6/jee6/jee6-tests/src/test/resources-integration/arquillian.xml	                        (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/jee6/jee6-tests/src/test/resources-integration/arquillian.xml	2012-08-20 14:14:25 UTC (rev 15060)
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<arquillian xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xmlns="http://jboss.org/schema/arquillian"
+    xsi:schemaLocation="http://jboss.org/schema/arquillian http://jboss.org/schema/arquillian/arquillian_1_0.xsd">
+
+    <engine>
+        <property name="deploymentExportPath">target/</property>
+    </engine>
+
+    <container qualifier="jboss" default="true">
+        <configuration>
+            <property name="javaVmArguments">-Xmx1024m -XX:MaxPermSize=512m</property>
+            <property name="jbossHome">target/jboss-as-${version.jbossas7}</property>
+        </configuration>
+    </container>
+
+</arquillian>

Added: branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/pom.xml
===================================================================
--- branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/pom.xml	                        (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/pom.xml	2012-08-20 14:14:25 UTC (rev 15060)
@@ -0,0 +1,179 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<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/maven-v4_0_0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <artifactId>jee6</artifactId>
+        <groupId>org.jboss.seam.examples-ee6</groupId>
+        <version>2.3.0.CR1-SNAPSHOT</version>
+        <relativePath>../pom.xml</relativePath>
+    </parent>
+    
+    <groupId>org.jboss.seam.examples-ee6.jee6</groupId>
+    <artifactId>jee6-web</artifactId>
+    <packaging>war</packaging>
+    <name>Booking Web Module</name>
+    
+    <properties>
+        <!-- filtering property for components.xml -->
+        <jndiPattern>java:app/jboss-seam-jee6/#{ejbName}</jndiPattern>
+        <distributable>false</distributable>
+    </properties>
+    
+    <dependencies>
+        <dependency>
+            <groupId>org.hibernate.javax.persistence</groupId>
+            <artifactId>hibernate-jpa-2.0-api</artifactId>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.hibernate</groupId>
+            <artifactId>hibernate-validator</artifactId>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.hibernate</groupId>
+            <artifactId>hibernate-entitymanager</artifactId>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.jboss.spec.javax.servlet</groupId>
+            <artifactId>jboss-servlet-api_3.0_spec</artifactId>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.jboss.spec.javax.ejb</groupId>
+            <artifactId>jboss-ejb-api_3.1_spec</artifactId>
+            <scope>provided</scope>
+        </dependency>
+
+        <dependency>
+            <groupId>org.jboss.seam</groupId>
+            <artifactId>jboss-seam</artifactId>
+            <type>ejb</type>
+            <exclusions>
+                <exclusion>
+                    <groupId>org.testng</groupId>
+                    <artifactId>testng</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>junit</groupId>
+                    <artifactId>junit</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>org.jboss.spec.javax.faces</groupId>
+                    <artifactId>jboss-jsf-api_2.0_spec</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>javax.el</groupId>
+                    <artifactId>el-api</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+        <dependency>
+            <groupId>org.jboss.spec.javax.faces</groupId>
+            <artifactId>jboss-jsf-api_2.0_spec</artifactId>
+            <scope>provided</scope>
+        </dependency>
+
+        <dependency>
+            <groupId>org.jboss.seam</groupId>
+            <artifactId>jboss-seam-ui</artifactId>
+            <exclusions>
+                <exclusion>
+                    <groupId>org.jboss.seam</groupId>
+                    <artifactId>jboss-seam-jul</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>org.jboss.seam</groupId>
+                    <artifactId>jboss-seam</artifactId>
+                </exclusion>                
+            </exclusions>
+        </dependency>
+        <dependency>
+            <groupId>org.jboss.seam</groupId>
+            <artifactId>jboss-seam-debug</artifactId>
+            <exclusions>
+                <exclusion>
+                    <groupId>org.jboss.seam</groupId>
+                    <artifactId>jboss-seam</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+        <dependency>
+            <groupId>commons-beanutils</groupId>
+            <artifactId>commons-beanutils</artifactId>
+            <exclusions>
+                <exclusion>
+                    <groupId>commons-collections</groupId>
+                    <artifactId>commons-collections</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+        <dependency>
+            <groupId>commons-logging</groupId>
+            <artifactId>commons-logging</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.richfaces.ui</groupId>
+            <artifactId>richfaces-components-ui</artifactId>
+        </dependency>  
+        <dependency>
+            <groupId>org.richfaces.core</groupId>
+            <artifactId>richfaces-core-impl</artifactId>
+        </dependency>    
+        <dependency>
+            <groupId>org.richfaces.core</groupId>
+            <artifactId>richfaces-core-api</artifactId>
+        </dependency> 
+    </dependencies>
+  
+    <build>
+        <finalName>jboss-seam-jee6</finalName>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-war-plugin</artifactId>
+                <configuration>
+                    <webResources>
+                        <resource>
+                            <directory>src/main/webapp</directory>
+                            <filtering>true</filtering>
+                        </resource>
+                    </webResources>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+  
+    <profiles>
+        <profile>
+            <id>cluster</id>
+            <properties>
+                <distributable>true</distributable>
+            </properties>
+            <build>
+                <plugins>
+                    <plugin>
+                        <groupId>org.apache.maven.plugins</groupId>
+                        <artifactId>maven-war-plugin</artifactId>
+                        <configuration>
+                            <webResources>
+                                <resource>
+                                    <directory>src/main/webapp</directory>
+                                    <filtering>true</filtering>
+                                    <excludes>
+                                        <exclude>**/web.xml</exclude>
+                                    </excludes>
+                                </resource>
+                                <resource>
+                                    <directory>src/main/webapp-cluster</directory>
+                                    <filtering>true</filtering>
+                                </resource>
+                            </webResources>
+                        </configuration>
+                    </plugin>
+                </plugins>
+            </build>
+        </profile>
+    </profiles>
+</project>

Added: branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/java/org/jboss/seam/example/booking/AuthenticatorAction.java
===================================================================
--- branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/java/org/jboss/seam/example/booking/AuthenticatorAction.java	                        (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/java/org/jboss/seam/example/booking/AuthenticatorAction.java	2012-08-20 14:14:25 UTC (rev 15060)
@@ -0,0 +1,39 @@
+package org.jboss.seam.example.booking;
+
+import static org.jboss.seam.ScopeType.SESSION;
+
+import java.util.List;
+
+import javax.ejb.Stateless;
+import javax.persistence.EntityManager;
+import javax.persistence.PersistenceContext;
+
+import org.jboss.seam.annotations.In;
+import org.jboss.seam.annotations.Name;
+import org.jboss.seam.annotations.Out;
+
+ at Stateless
+ at Name("authenticator")
+public class AuthenticatorAction 
+{
+    @PersistenceContext 
+    private EntityManager em;
+
+    @In(required=false)   
+    @Out(required=false, scope = SESSION)
+    private User user;
+   
+    public boolean authenticate()
+    {
+	List results = em.createQuery("select u from User u where u.username=#{identity.username} and u.password=#{identity.password}")
+                         .getResultList();
+      
+	if (results.size()==0) {
+	    return false;
+	} else {
+	    user = (User) results.get(0);
+	    return true;
+	}
+    }
+    
+}

Added: branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/java/org/jboss/seam/example/booking/Booking.java
===================================================================
--- branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/java/org/jboss/seam/example/booking/Booking.java	                        (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/java/org/jboss/seam/example/booking/Booking.java	2012-08-20 14:14:25 UTC (rev 15060)
@@ -0,0 +1,193 @@
+//$Id: Booking.java 5579 2007-06-27 00:06:49Z gavin $
+package org.jboss.seam.example.booking;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.text.DateFormat;
+import java.util.Date;
+
+import javax.persistence.Basic;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.Id;
+import javax.persistence.ManyToOne;
+import javax.persistence.Temporal;
+import javax.persistence.TemporalType;
+import javax.persistence.Transient;
+
+import javax.validation.constraints.Size;
+import javax.validation.constraints.NotNull;
+import javax.validation.constraints.Pattern;
+import org.jboss.seam.annotations.Name;
+
+ at Entity
+ at Name("booking")
+public class Booking implements Serializable
+{
+
+   private static final long serialVersionUID = 1L;
+   
+   private Long id;
+   private User user;
+   private Hotel hotel;
+   private Date checkinDate;
+   private Date checkoutDate;
+   private String creditCard;
+   private String creditCardName;
+   private int creditCardExpiryMonth;
+   private int creditCardExpiryYear;
+   private boolean smoking;
+   private int beds;
+   
+   public Booking() {}
+   
+   public Booking(Hotel hotel, User user)
+   {
+      this.hotel = hotel;
+      this.user = user;
+   }
+   
+   @Transient
+   public BigDecimal getTotal()
+   {
+      return hotel.getPrice().multiply( new BigDecimal( getNights() ) );
+   }
+
+   @Transient
+   public int getNights()
+   {
+      return (int) ( checkoutDate.getTime() - checkinDate.getTime() ) / 1000 / 60 / 60 / 24;
+   }
+
+   @Id @GeneratedValue
+   public Long getId()
+   {
+      return id;
+   }
+   public void setId(Long id)
+   {
+      this.id = id;
+   }
+   
+   @NotNull
+   @Basic @Temporal(TemporalType.DATE) 
+   public Date getCheckinDate()
+   {
+      return checkinDate;
+   }
+   public void setCheckinDate(Date datetime)
+   {
+      this.checkinDate = datetime;
+   }
+
+   @ManyToOne @NotNull
+   public Hotel getHotel()
+   {
+      return hotel;
+   }
+   public void setHotel(Hotel hotel)
+   {
+      this.hotel = hotel;
+   }
+   
+   @ManyToOne @NotNull
+   public User getUser()
+   {
+      return user;
+   }
+   public void setUser(User user)
+   {
+      this.user = user;
+   }
+   
+   @Basic @Temporal(TemporalType.DATE) 
+   @NotNull
+   public Date getCheckoutDate()
+   {
+      return checkoutDate;
+   }
+   public void setCheckoutDate(Date checkoutDate)
+   {
+      this.checkoutDate = checkoutDate;
+   }
+   
+   @NotNull(message="Credit card number is required")
+   @Size(min=16, max=16, message="Credit card number must 16 digits long")
+   @Pattern(regexp="^\\d*$", message="Credit card number must be numeric")
+   public String getCreditCard()
+   {
+      return creditCard;
+   }
+
+   public void setCreditCard(String creditCard)
+   {
+      this.creditCard = creditCard;
+   }
+   
+   @Transient
+   public String getDescription()
+   {
+      DateFormat df = DateFormat.getDateInstance(DateFormat.MEDIUM);
+      return hotel==null ? null : hotel.getName() + 
+            ", " + df.format( getCheckinDate() ) + 
+            " to " + df.format( getCheckoutDate() );
+   }
+
+   public boolean isSmoking()
+   {
+      return smoking;
+   }
+
+   public void setSmoking(boolean smoking)
+   {
+      this.smoking = smoking;
+   }
+   
+   public int getBeds()
+   {
+      return beds;
+   }
+
+   public void setBeds(int beds)
+   {
+      this.beds = beds;
+   }
+   @NotNull(message="Credit card name is required")
+   @Size(min=3, max=70, message="Credit card name is required")
+   public String getCreditCardName()
+   {
+      return creditCardName;
+   }
+
+   public void setCreditCardName(String creditCardName)
+   {
+      this.creditCardName = creditCardName;
+   }
+
+   public int getCreditCardExpiryMonth()
+   {
+      return creditCardExpiryMonth;
+   }
+
+   public void setCreditCardExpiryMonth(int creditCardExpiryMonth)
+   {
+      this.creditCardExpiryMonth = creditCardExpiryMonth;
+   }
+
+   public int getCreditCardExpiryYear()
+   {
+      return creditCardExpiryYear;
+   }
+
+   public void setCreditCardExpiryYear(int creditCardExpiryYear)
+   {
+      this.creditCardExpiryYear = creditCardExpiryYear;
+   }
+   
+   @Override
+   public String toString()
+   {
+      return "Booking(" + user + ","+ hotel + ")";
+   }
+
+}

Added: branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/java/org/jboss/seam/example/booking/BookingListAction.java
===================================================================
--- branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/java/org/jboss/seam/example/booking/BookingListAction.java	                        (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/java/org/jboss/seam/example/booking/BookingListAction.java	2012-08-20 14:14:25 UTC (rev 15060)
@@ -0,0 +1,76 @@
+//$Id: BookingListAction.java 8748 2008-08-20 12:08:30Z pete.muir at jboss.org $
+package org.jboss.seam.example.booking;
+
+import static javax.ejb.TransactionAttributeType.REQUIRES_NEW;
+import static org.jboss.seam.ScopeType.SESSION;
+
+import java.io.Serializable;
+import java.util.List;
+
+import javax.ejb.Remove;
+import javax.ejb.Stateful;
+import javax.ejb.TransactionAttribute;
+import javax.persistence.EntityManager;
+import javax.persistence.PersistenceContext;
+
+import org.jboss.seam.annotations.Factory;
+import org.jboss.seam.annotations.In;
+import org.jboss.seam.annotations.Logger;
+import org.jboss.seam.annotations.Name;
+import org.jboss.seam.annotations.Observer;
+import org.jboss.seam.annotations.Scope;
+import org.jboss.seam.annotations.datamodel.DataModel;
+import org.jboss.seam.annotations.datamodel.DataModelSelection;
+import org.jboss.seam.annotations.security.Restrict;
+import org.jboss.seam.faces.FacesMessages;
+import org.jboss.seam.log.Log;
+
+ at Stateful
+ at Scope(SESSION)
+ at Name("bookingList")
+ at Restrict("#{identity.loggedIn}")
+ at TransactionAttribute(REQUIRES_NEW)
+public class BookingListAction implements Serializable
+{
+   private static final long serialVersionUID = 1L;
+   
+   @PersistenceContext
+   private EntityManager em;
+   
+   @In
+   private User user;
+   
+   @DataModel
+   private List<Booking> bookings;
+   @DataModelSelection 
+   private Booking booking;
+   
+   @Logger 
+   private Log log;
+   
+   @Factory
+   @Observer("bookingConfirmed")
+   public void getBookings()
+   {
+      bookings = em.createQuery("select b from Booking b where b.user.username = :username order by b.checkinDate")
+            .setParameter("username", user.getUsername())
+            .getResultList();
+   }
+   
+   public void cancel()
+   {
+      log.info("Cancel booking: #{bookingList.booking.id} for #{user.username}");
+      Booking cancelled = em.find(Booking.class, booking.getId());
+      if (cancelled!=null) em.remove( cancelled );
+      getBookings();
+      FacesMessages.instance().add("Booking cancelled for confirmation number #0", booking.getId());
+   }
+   
+   public Booking getBooking()
+   {
+      return booking;
+   }
+   
+   @Remove
+   public void destroy() {}
+}

Added: branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/java/org/jboss/seam/example/booking/ChangePasswordAction.java
===================================================================
--- branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/java/org/jboss/seam/example/booking/ChangePasswordAction.java	                        (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/java/org/jboss/seam/example/booking/ChangePasswordAction.java	2012-08-20 14:14:25 UTC (rev 15060)
@@ -0,0 +1,73 @@
+//$Id: ChangePasswordAction.java 5579 2007-06-27 00:06:49Z gavin $
+package org.jboss.seam.example.booking;
+
+import static org.jboss.seam.ScopeType.EVENT;
+
+import javax.ejb.Remove;
+import javax.ejb.Stateful;
+import javax.persistence.EntityManager;
+import javax.persistence.PersistenceContext;
+
+import org.jboss.seam.annotations.In;
+import org.jboss.seam.annotations.Name;
+import org.jboss.seam.annotations.Out;
+import org.jboss.seam.annotations.Scope;
+import org.jboss.seam.annotations.security.Restrict;
+import org.jboss.seam.faces.FacesMessages;
+
+ at Stateful
+ at Scope(EVENT)
+ at Name("changePassword")
+ at Restrict("#{identity.loggedIn}")
+public class ChangePasswordAction
+{
+   @In @Out
+   private User user;
+   
+   @PersistenceContext
+   private EntityManager em;
+   
+   private String verify;
+   
+   private boolean changed;
+   
+   @In
+   private FacesMessages facesMessages;
+   
+   public void changePassword()
+   {
+      if ( user.getPassword().equals(verify) )
+      {
+         user = em.merge(user);
+         facesMessages.add("Password updated");
+         changed = true;
+      }
+      else 
+      {
+         facesMessages.addToControl("verify", "Re-enter new password");
+         revertUser();
+         verify=null;
+      }
+   }
+   
+   public boolean isChanged()
+   {
+      return changed;
+   }
+   
+   private void revertUser()
+   {
+      user = em.find(User.class, user.getUsername());
+   }
+   public String getVerify()
+   {
+      return verify;
+   }
+   public void setVerify(String verify)
+   {
+      this.verify = verify;
+   }
+   
+   @Remove
+   public void destroy() {}
+}

Added: branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/java/org/jboss/seam/example/booking/Hotel.java
===================================================================
--- branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/java/org/jboss/seam/example/booking/Hotel.java	                        (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/java/org/jboss/seam/example/booking/Hotel.java	2012-08-20 14:14:25 UTC (rev 15060)
@@ -0,0 +1,117 @@
+//$Id: Hotel.java 5579 2007-06-27 00:06:49Z gavin $
+package org.jboss.seam.example.booking;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.Id;
+import javax.validation.constraints.NotNull;
+import javax.validation.constraints.Size;
+
+import org.jboss.seam.annotations.Name;
+
+ at Entity
+ at Name("hotel")
+public class Hotel implements Serializable
+{
+
+   private static final long serialVersionUID = 4718338262521261442L;
+   
+   private Long id;
+   private String name;
+   private String address;
+   private String city;
+   private String state;
+   private String zip;
+   private String country;
+   private BigDecimal price;
+   
+   @Id @GeneratedValue
+   public Long getId()
+   {
+      return id;
+   }
+   public void setId(Long id)
+   {
+      this.id = id;
+   }
+   
+   @Size(max=50) @NotNull
+   public String getName()
+   {
+      return name;
+   }
+   public void setName(String name)
+   {
+      this.name = name;
+   }
+   
+   @Size(max=100) @NotNull
+   public String getAddress()
+   {
+      return address;
+   }
+   public void setAddress(String address)
+   {
+      this.address = address;
+   }
+   
+   @Size(max=40) @NotNull
+   public String getCity()
+   {
+      return city;
+   }
+   public void setCity(String city)
+   {
+      this.city = city;
+   }
+   
+   @Size(min=4, max=6) @NotNull
+   public String getZip()
+   {
+      return zip;
+   }
+   public void setZip(String zip)
+   {
+      this.zip = zip;
+   }
+   
+   @Size(min=2, max=10) @NotNull
+   public String getState()
+   {
+      return state;
+   }
+   public void setState(String state)
+   {
+      this.state = state;
+   }
+   
+   @Size(min=2, max=40) @NotNull
+   public String getCountry()
+   {
+      return country;
+   }
+   public void setCountry(String country)
+   {
+      this.country = country;
+   }
+
+   @Column(precision=6, scale=2)
+   public BigDecimal getPrice()
+   {
+      return price;
+   }
+   public void setPrice(BigDecimal price)
+   {
+      this.price = price;
+   }
+   
+   @Override
+   public String toString()
+   {
+      return "Hotel(" + name + "," + address + "," + city + "," + zip + ")";
+   }
+}

Added: branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/java/org/jboss/seam/example/booking/HotelBookingAction.java
===================================================================
--- branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/java/org/jboss/seam/example/booking/HotelBookingAction.java	                        (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/java/org/jboss/seam/example/booking/HotelBookingAction.java	2012-08-20 14:14:25 UTC (rev 15060)
@@ -0,0 +1,108 @@
+//$Id: HotelBookingAction.java 5579 2007-06-27 00:06:49Z gavin $
+package org.jboss.seam.example.booking;
+
+import static javax.persistence.PersistenceContextType.EXTENDED;
+
+import java.util.Calendar;
+
+import javax.ejb.Remove;
+import javax.ejb.Stateful;
+import javax.persistence.EntityManager;
+import javax.persistence.PersistenceContext;
+
+import org.jboss.seam.annotations.Begin;
+import org.jboss.seam.annotations.End;
+import org.jboss.seam.annotations.In;
+import org.jboss.seam.annotations.Logger;
+import org.jboss.seam.annotations.Name;
+import org.jboss.seam.annotations.Out;
+import org.jboss.seam.annotations.security.Restrict;
+import org.jboss.seam.core.Events;
+import org.jboss.seam.faces.FacesMessages;
+import org.jboss.seam.log.Log;
+
+ at Stateful
+ at Name("hotelBooking")
+ at Restrict("#{identity.loggedIn}")
+public class HotelBookingAction
+{
+   
+   @PersistenceContext(type=EXTENDED)
+   private EntityManager em;
+   
+   @In 
+   private User user;
+   
+   @In(required=false) @Out
+   private Hotel hotel;
+   
+   @In(required=false) 
+   @Out(required=false)
+   private Booking booking;
+     
+   @In
+   private FacesMessages facesMessages;
+      
+   @In
+   private Events events;
+   
+   @Logger 
+   private Log log;
+   
+   private boolean bookingValid;
+   
+   @Begin
+   public void selectHotel(Hotel selectedHotel)
+   {
+      hotel = em.merge(selectedHotel);
+   }
+   
+   public void bookHotel()
+   {      
+      booking = new Booking(hotel, user);
+      Calendar calendar = Calendar.getInstance();
+      booking.setCheckinDate( calendar.getTime() );
+      calendar.add(Calendar.DAY_OF_MONTH, 1);
+      booking.setCheckoutDate( calendar.getTime() );
+   }
+   
+   public void setBookingDetails()
+   {
+      Calendar calendar = Calendar.getInstance();
+      calendar.add(Calendar.DAY_OF_MONTH, -1);
+      if ( booking.getCheckinDate().before( calendar.getTime() ) )
+      {
+         facesMessages.addToControl("checkinDate", "Check in date must be a future date");
+         bookingValid=false;
+      }
+      else if ( !booking.getCheckinDate().before( booking.getCheckoutDate() ) )
+      {
+         facesMessages.addToControl("checkoutDate", "Check out date must be later than check in date");
+         bookingValid=false;
+      }
+      else
+      {
+         bookingValid=true;
+      }
+   }
+   
+   public boolean isBookingValid()
+   {
+      return bookingValid;
+   }
+   
+   @End
+   public void confirm()
+   {
+      em.persist(booking);
+      facesMessages.add("Thank you, #{user.name}, your confimation number for #{hotel.name} is #{booking.id}");
+      log.info("New booking: #{booking.id} for #{user.username}");
+      events.raiseTransactionSuccessEvent("bookingConfirmed");
+   }
+   
+   @End
+   public void cancel() {}
+   
+   @Remove
+   public void destroy() {}
+}
\ No newline at end of file

Added: branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/java/org/jboss/seam/example/booking/HotelSearchingAction.java
===================================================================
--- branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/java/org/jboss/seam/example/booking/HotelSearchingAction.java	                        (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/java/org/jboss/seam/example/booking/HotelSearchingAction.java	2012-08-20 14:14:25 UTC (rev 15060)
@@ -0,0 +1,95 @@
+//$Id: HotelSearchingAction.java 8998 2008-09-16 03:08:11Z shane.bryzak at jboss.com $
+package org.jboss.seam.example.booking;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.ejb.Remove;
+import javax.ejb.Stateful;
+import javax.persistence.EntityManager;
+import javax.persistence.PersistenceContext;
+
+import org.jboss.seam.ScopeType;
+import org.jboss.seam.annotations.Factory;
+import org.jboss.seam.annotations.Name;
+import org.jboss.seam.annotations.Scope;
+import org.jboss.seam.annotations.datamodel.DataModel;
+import org.jboss.seam.annotations.security.Restrict;
+
+ at Stateful
+ at Name("hotelSearch")
+ at Scope(ScopeType.SESSION)
+ at Restrict("#{identity.loggedIn}")
+public class HotelSearchingAction
+{
+    @PersistenceContext
+    private EntityManager em;
+    
+    private String searchString;
+    private int pageSize = 10;
+    private int page;
+    private boolean nextPageAvailable;
+   
+    @DataModel
+    private List<Hotel> hotels;
+   
+    public void find() 
+    {
+        page = 0;
+        queryHotels();
+    }
+
+    public void nextPage() 
+    {
+        page++;
+        queryHotels();
+    }
+    
+    private void queryHotels() {
+        List<Hotel> results = em.createQuery("select h from Hotel h where lower(h.name) like #{pattern} or lower(h.city) like #{pattern} or lower(h.zip) like #{pattern} or lower(h.address) like #{pattern}")
+                                .setMaxResults(pageSize+1)
+                                .setFirstResult(page * pageSize)
+                                .getResultList();
+        
+        nextPageAvailable = results.size() > pageSize;
+        if (nextPageAvailable) 
+        {
+            hotels = new ArrayList<Hotel>(results.subList(0,pageSize));
+        } else {
+            hotels = results;
+        }
+    }
+
+    public boolean isNextPageAvailable()
+    {
+        return nextPageAvailable;
+    }
+   
+   public int getPageSize() {
+      return pageSize;
+   }
+   
+   public void setPageSize(int pageSize) {
+      this.pageSize = pageSize;
+   }
+   
+   @Factory(value="pattern", scope=ScopeType.EVENT)
+   public String getSearchPattern()
+   {
+      return searchString==null ? 
+            "%" : '%' + searchString.toLowerCase().replace('*', '%') + '%';
+   }
+   
+   public String getSearchString()
+   {
+      return searchString;
+   }
+   
+   public void setSearchString(String searchString)
+   {
+      this.searchString = searchString;
+   }
+   
+   @Remove
+   public void destroy() {}
+}

Added: branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/java/org/jboss/seam/example/booking/RecentBookingsAction.java
===================================================================
--- branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/java/org/jboss/seam/example/booking/RecentBookingsAction.java	                        (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/java/org/jboss/seam/example/booking/RecentBookingsAction.java	2012-08-20 14:14:25 UTC (rev 15060)
@@ -0,0 +1,45 @@
+package org.jboss.seam.example.booking;
+
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Map;
+
+import javax.annotation.PostConstruct;
+import javax.ejb.Lock;
+import javax.ejb.LockType;
+import javax.ejb.Singleton;
+
+import org.jboss.seam.Component;
+import org.jboss.seam.ScopeType;
+import org.jboss.seam.annotations.Name;
+import org.jboss.seam.annotations.Observer;
+import org.jboss.seam.annotations.Scope;
+import org.jboss.seam.annotations.intercept.BypassInterceptors;
+import org.jboss.seam.annotations.Startup;
+
+ at BypassInterceptors
+ at Scope(ScopeType.APPLICATION)
+ at Singleton
+ at Name("recentBookings")
+ at Startup
+public class RecentBookingsAction
+{
+   private Map<Long, Date> latestBookingsMap; 
+   
+   @Observer("bookingConfirmed")
+   @Lock(LockType.WRITE)
+   public void onBookingConfirmed() {
+      Booking booking = (Booking) Component.getInstance("booking");
+      latestBookingsMap.put(booking.getHotel().getId(), new Date());
+   }
+   
+   @Lock(LockType.READ)
+   public Date getMostRecentBookingDate(Long hotelId) {
+      return latestBookingsMap.get(hotelId);
+   }
+   
+   @PostConstruct
+   public void postConstruct() {
+      latestBookingsMap = new HashMap<Long, Date>();
+   }
+}

Added: branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/java/org/jboss/seam/example/booking/RecentDateConverter.java
===================================================================
--- branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/java/org/jboss/seam/example/booking/RecentDateConverter.java	                        (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/java/org/jboss/seam/example/booking/RecentDateConverter.java	2012-08-20 14:14:25 UTC (rev 15060)
@@ -0,0 +1,42 @@
+package org.jboss.seam.example.booking;
+
+import java.text.DateFormat;
+import java.util.Date;
+
+import javax.faces.component.UIComponent;
+import javax.faces.context.FacesContext;
+import javax.faces.convert.Converter;
+import javax.faces.convert.FacesConverter;
+
+ at FacesConverter("org.jboss.seam.example.booking.RecentDateConverter")
+public class RecentDateConverter implements Converter
+{
+   @Override
+   public Object getAsObject(FacesContext context, UIComponent component, String value)
+   {
+      throw new UnsupportedOperationException();
+   }
+
+   @Override
+   public String getAsString(FacesContext context, UIComponent component, Object value)
+   {
+      Date then = (Date)value;
+      Date now = new Date();
+      
+      long timeNow = now.getTime();
+      long timeThen = then.getTime();
+      
+      if (timeNow - timeThen < 120000) {
+         return "" + ((timeNow - timeThen) / 1000) + " seconds ago"; 
+      }
+      else if (timeNow - timeThen < 2*60000*60) {
+         return "" + ((timeNow - timeThen) / 60000) + " minutes ago"; 
+      }
+      else if (timeNow - timeThen < 60000*60*24) {
+         return "" + ((timeNow - timeThen) / 60000*60) + " hours ago"; 
+      }
+      else {
+         return DateFormat.getDateInstance().format(then);
+      }
+   }
+}

Added: branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/java/org/jboss/seam/example/booking/RegisterAction.java
===================================================================
--- branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/java/org/jboss/seam/example/booking/RegisterAction.java	                        (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/java/org/jboss/seam/example/booking/RegisterAction.java	2012-08-20 14:14:25 UTC (rev 15060)
@@ -0,0 +1,80 @@
+//$Id: RegisterAction.java 5579 2007-06-27 00:06:49Z gavin $
+package org.jboss.seam.example.booking;
+
+import static org.jboss.seam.ScopeType.EVENT;
+
+import java.util.List;
+
+import javax.ejb.Remove;
+import javax.ejb.Stateful;
+import javax.persistence.EntityManager;
+import javax.persistence.PersistenceContext;
+
+import org.jboss.seam.annotations.In;
+import org.jboss.seam.annotations.Name;
+import org.jboss.seam.annotations.Scope;
+import org.jboss.seam.faces.FacesMessages;
+
+ at Stateful
+ at Scope(EVENT)
+ at Name("register")
+public class RegisterAction
+{
+   @In
+   private User user;
+   
+   @PersistenceContext
+   private EntityManager em;
+   
+   @In
+   private FacesMessages facesMessages;
+   
+   private String verify;
+   
+   private boolean registered;
+   
+   public void register()
+   {
+      if ( user.getPassword().equals(verify) )
+      {
+         List existing = em.createQuery("select u.username from User u where u.username=#{user.username}")
+            .getResultList();
+         if (existing.size()==0)
+         {
+            em.persist(user);
+            facesMessages.add("Successfully registered as #{user.username}");
+            registered = true;
+         }
+         else
+         {
+            facesMessages.addToControl("username", "Username #{user.username} already exists");
+         }
+      }
+      else 
+      {
+         facesMessages.addToControl("verify", "Re-enter your password");
+         verify=null;
+      }
+   }
+   
+   public void invalid()
+   {
+      facesMessages.add("Please try again");
+   }
+   
+   public boolean isRegistered()
+   {
+      return registered;
+   }
+   public String getVerify()
+   {
+      return verify;
+   }
+   public void setVerify(String verify)
+   {
+      this.verify = verify;
+   }
+   
+   @Remove
+   public void destroy() {}
+}

Added: branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/java/org/jboss/seam/example/booking/User.java
===================================================================
--- branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/java/org/jboss/seam/example/booking/User.java	                        (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/java/org/jboss/seam/example/booking/User.java	2012-08-20 14:14:25 UTC (rev 15060)
@@ -0,0 +1,76 @@
+//$Id: User.java 5579 2007-06-27 00:06:49Z gavin $
+package org.jboss.seam.example.booking;
+
+import static org.jboss.seam.ScopeType.SESSION;
+
+import java.io.Serializable;
+
+import javax.persistence.Entity;
+import javax.persistence.Id;
+import javax.persistence.Table;
+
+import javax.validation.constraints.*;
+import org.jboss.seam.annotations.Name;
+import org.jboss.seam.annotations.Scope;
+
+ at Entity
+ at Name("user")
+ at Scope(SESSION)
+ at Table(name="Customer")
+public class User implements Serializable
+{
+   private static final long serialVersionUID = 4818188553954060410L;
+   
+   private String username;
+   private String password;
+   private String name;
+   
+   public User(String name, String password, String username)
+   {
+      this.name = name;
+      this.password = password;
+      this.username = username;
+   }
+   
+   public User() {}
+
+   @NotNull
+   @Size(max=100)
+   public String getName()
+   {
+      return name;
+   }
+   public void setName(String name)
+   {
+      this.name = name;
+   }
+   
+   @NotNull
+   @Size(min=5, max=15)
+   public String getPassword()
+   {
+      return password;
+   }
+   public void setPassword(String password)
+   {
+      this.password = password;
+   }
+   
+   @Id
+   @Size(min=4, max=15)
+   @Pattern(regexp="^\\w*$", message="not a valid username")
+   public String getUsername()
+   {
+      return username;
+   }
+   public void setUsername(String username)
+   {
+      this.username = username;
+   }
+   
+   @Override
+   public String toString() 
+   {
+      return "User(" + username + ")";
+   }
+}

Added: branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/resources/META-INF/ejb-jar.xml
===================================================================
--- branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/resources/META-INF/ejb-jar.xml	                        (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/resources/META-INF/ejb-jar.xml	2012-08-20 14:14:25 UTC (rev 15060)
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ejb-jar 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/ejb-jar_3_0.xsd"
+         version="3.0">
+         
+    <interceptors>
+        <interceptor>
+            <interceptor-class>org.jboss.seam.ejb.SeamInterceptor</interceptor-class>
+        </interceptor>
+    </interceptors>
+    
+    <assembly-descriptor>
+        <interceptor-binding>
+            <ejb-name>*</ejb-name>
+            <interceptor-class>org.jboss.seam.ejb.SeamInterceptor</interceptor-class>
+        </interceptor-binding>
+    </assembly-descriptor>
+    
+</ejb-jar>

Added: branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/resources/META-INF/jboss-seam-booking-ds.xml
===================================================================
--- branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/resources/META-INF/jboss-seam-booking-ds.xml	                        (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/resources/META-INF/jboss-seam-booking-ds.xml	2012-08-20 14:14:25 UTC (rev 15060)
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<datasources xmlns="http://www.jboss.org/ironjacamar/schema">
+    <datasource 
+        jndi-name="java:/bookingDatasource" 
+        enabled="true" 
+        use-java-context="true" pool-name="bookingdb">
+        <connection-url>jdbc:h2:mem:bookingdb;DB_CLOSE_DELAY=-1</connection-url>
+        <driver>h2</driver>
+        <security>
+            <user-name>sa</user-name>
+            <password>sa</password>
+        </security>
+    </datasource>
+</datasources>

Added: branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/resources/META-INF/persistence.xml
===================================================================
--- branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/resources/META-INF/persistence.xml	                        (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/resources/META-INF/persistence.xml	2012-08-20 14:14:25 UTC (rev 15060)
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<persistence xmlns="http://java.sun.com/xml/ns/persistence" 
+             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+             xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd" 
+             version="1.0">
+   <persistence-unit name="bookingDatabase">
+      <provider>org.hibernate.ejb.HibernatePersistence</provider>
+      <jta-data-source>java:/bookingDatasource</jta-data-source>
+      <properties>
+         <property name="hibernate.hbm2ddl.auto" value="create-drop"/>
+         <property name="hibernate.show_sql" value="true"/>
+         <!-- These are the default for JBoss EJB3, but not for HEM: -->
+<!--          <property name="hibernate.cache.provider_class" value="org.hibernate.cache.HashtableCacheProvider"/> -->
+         <property name="hibernate.transaction.manager_lookup_class" value="org.hibernate.transaction.JBossTransactionManagerLookup"/>
+      </properties>
+   </persistence-unit>
+</persistence>
\ No newline at end of file

Added: branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/resources/import.sql
===================================================================
--- branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/resources/import.sql	                        (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/resources/import.sql	2012-08-20 14:14:25 UTC (rev 15060)
@@ -0,0 +1,22 @@
+insert into Customer (username, password, name) values ('gavin', 'foobar', 'Gavin King')
+insert into Customer (username, password, name) values ('demo', 'demo', 'Demo User')
+insert into Hotel (id, price, name, address, city, state, zip, country) values (1, 120, 'Marriott Courtyard', 'Tower Place, Buckhead', 'Atlanta', 'GA', '30305', 'USA')
+insert into Hotel (id, price, name, address, city, state, zip, country) values (2, 180, 'Doubletree', 'Tower Place, Buckhead', 'Atlanta', 'GA', '30305', 'USA')
+insert into Hotel (id, price, name, address, city, state, zip, country) values (3, 450, 'W Hotel', 'Union Square, Manhattan', 'NY', 'NY', '10011', 'USA')
+insert into Hotel (id, price, name, address, city, state, zip, country) values (4, 450, 'W Hotel', 'Lexington Ave, Manhattan', 'NY', 'NY', '10011', 'USA')
+insert into Hotel (id, price, name, address, city, state, zip, country) values (5, 250, 'Hotel Rouge', '1315 16th Street NW', 'Washington', 'DC', '20036', 'USA')
+insert into Hotel (id, price, name, address, city, state, zip, country) values (6, 300, '70 Park Avenue Hotel', '70 Park Avenue', 'NY', 'NY', '10011', 'USA')
+insert into Hotel (id, price, name, address, city, state, zip, country) values (8, 300, 'Conrad Miami', '1395 Brickell Ave', 'Miami', 'FL', '33131', 'USA')
+insert into Hotel (id, price, name, address, city, state, zip, country) values (9, 80, 'Sea Horse Inn', '2106 N Clairemont Ave', 'Eau Claire', 'WI', '54703', 'USA')
+insert into Hotel (id, price, name, address, city, state, zip, country) values (10, 90, 'Super 8 Eau Claire Campus Area', '1151 W Macarthur Ave', 'Eau Claire', 'WI', '54701', 'USA')
+insert into Hotel (id, price, name, address, city, state, zip, country) values (11, 160, 'Marriott Downtown', '55 Fourth Street', 'San Francisco', 'CA', '94103', 'USA')
+insert into Hotel (id, price, name, address, city, state, zip, country) values (12, 200, 'Hilton Diagonal Mar', 'Passeig del Taulat 262-264', 'Barcelona', 'Catalunya', '08019', 'Spain')
+insert into Hotel (id, price, name, address, city, state, zip, country) values (13, 210, 'Hilton Tel Aviv', 'Independence Park', 'Tel Aviv', '', '63405', 'Israel')
+insert into Hotel (id, price, name, address, city, state, zip, country) values (14, 240, 'InterContinental Tokyo Bay', 'Takeshiba Pier', 'Tokyo', '', '105', 'Japan')
+insert into Hotel (id, price, name, address, city, state, zip, country) values (15, 130, 'Hotel Beaulac', ' Esplanade Léopold-Robert 2', 'Neuchatel', '', '2000', 'Switzerland')
+insert into Hotel (id, price, name, address, city, state, zip, country) values (16, 140, 'Conrad Treasury Place', 'William & George Streets', 'Brisbane', 'QLD', '4001', 'Australia')
+insert into Hotel (id, price, name, address, city, state, zip, country) values (17, 230, 'Ritz Carlton', '1228 Sherbrooke St', 'West Montreal', 'Quebec', 'H3G1H6', 'Canada')
+insert into Hotel (id, price, name, address, city, state, zip, country) values (18, 460, 'Ritz Carlton', 'Peachtree Rd, Buckhead', 'Atlanta', 'GA', '30326', 'USA')
+insert into Hotel (id, price, name, address, city, state, zip, country) values (19, 220, 'Swissotel', '68 Market Street', 'Sydney', 'NSW', '2000', 'Australia')
+insert into Hotel (id, price, name, address, city, state, zip, country) values (20, 250, 'Meliá White House', 'Albany Street', 'Regents Park London', '', 'NW13UP', 'Great Britain')
+insert into Hotel (id, price, name, address, city, state, zip, country) values (21, 210, 'Hotel Allegro', '171 West Randolph Street', 'Chicago', 'IL', '60601', 'USA')

Added: branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/resources/messages.properties
===================================================================
--- branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/resources/messages.properties	                        (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/resources/messages.properties	2012-08-20 14:14:25 UTC (rev 15060)
@@ -0,0 +1,50 @@
+javax.faces.component.UIInput.CONVERSION=value could not be converted to the expected type
+javax.faces.component.UIInput.REQUIRED=value is required
+javax.faces.component.UIInput.REQUIRED_detail=value is required
+javax.faces.component.UIInput.UPDATE=an error occurred when processing your submitted information
+javax.faces.component.UISelectOne.INVALID=value is not valid
+javax.faces.component.UISelectMany.INVALID=value is not valid
+
+javax.faces.converter.BigDecimalConverter.DECIMAL=value must be a number
+javax.faces.converter.BigDecimalConverter.DECIMAL_detail=value must be a signed decimal number consisting of zero or more digits, optionally followed by a decimal point and fraction, eg. {1}
+javax.faces.converter.BigIntegerConverter.BIGINTEGER=value must be a number
+javax.faces.converter.BigIntegerConverter.BIGINTEGER_detail=value must be a signed integer number consisting of zero or more digits
+javax.faces.converter.BooleanConverter.BOOLEAN=value must be true or false
+javax.faces.converter.BooleanConverter.BOOLEAN_detail=value must be true or false (any value other than true will evaluate to false)
+javax.faces.converter.ByteConverter.BYTE=value must be a number between 0 and 255
+javax.faces.converter.ByteConverter.BYTE_detail=value must be a number between 0 and 255
+javax.faces.converter.CharacterConverter.CHARACTER=value must be a character
+javax.faces.converter.CharacterConverter.CHARACTER_detail=value must be a valid ASCII character
+javax.faces.convert.DateTimeConverter.CONVERSION value must be a datetime
+javax.faces.convert.DateTimeConverter.CONVERSION_detail value must be a datetime
+javax.faces.converter.DateTimeConverter.DATE=value must be a date
+javax.faces.converter.DateTimeConverter.DATE_detail=value must be a date,  eg. {1}
+javax.faces.converter.DateTimeConverter.TIME=value must be a time
+javax.faces.converter.DateTimeConverter.TIME_detail=value must be a time,  eg. {1}
+javax.faces.converter.DateTimeConverter.DATETIME=value must be a date and time
+javax.faces.converter.DateTimeConverter.DATETIME_detail=value must be a date and time,  eg. {1}
+javax.faces.converter.DateTimeConverter.PATTERN_TYPE=a pattern or type attribute must be specified to convert the value
+javax.faces.converter.DoubleConverter.DOUBLE=value must be a number
+javax.faces.converter.DoubleConverter.DOUBLE_detail=value must be a number between 4.9E-324 and 1.7976931348623157E308
+javax.faces.converter.EnumConverter.ENUM=value must be convertible to an enum
+javax.faces.converter.EnumConverter.ENUM_detail=value must be convertible to an enum or from the enum that contains the constant {1}
+javax.faces.converter.EnumConverter.ENUM_NO_CLASS=value must be convertible to an enum or from the enum, but no enum class provided
+javax.faces.converter.EnumConverter.ENUM_NO_CLASS_detail=value must be convertible to an enum or from the enum, but no enum class provided
+javax.faces.converter.FloatConverter.FLOAT=value must be a number
+javax.faces.converter.FloatConverter.FLOAT_detail=value must be a number between 1.4E-45 and 3.4028235E38
+javax.faces.converter.IntegerConverter.INTEGER=value must be a number
+javax.faces.converter.IntegerConverter.INTEGER_detail=value must be a number between -2147483648 and 2147483647
+javax.faces.converter.LongConverter.LONG=value must be a number
+javax.faces.converter.LongConverter.LONG_detail=must be a number between -9223372036854775808 and 9223372036854775807
+javax.faces.converter.NumberConverter.CURRENCY=value must be a currency amount
+javax.faces.converter.NumberConverter.CURRENCY_detail=value must be a currency amount, eg. {1}
+javax.faces.converter.NumberConverter.PERCENT=value must be a percentage amount
+javax.faces.converter.NumberConverter.PERCENT_detail=value must be a percentage amount, eg. {1}
+javax.faces.converter.NumberConverter.NUMBER=value must be a number
+javax.faces.converter.NumberConverter.NUMBER_detail=value must be a number
+javax.faces.converter.NumberConverter.PATTERN=value must be a number
+javax.faces.converter.NumberConverter.PATTERN_detail=value must be a number
+javax.faces.converter.ShortConverter.SHORT=value must be a number
+javax.faces.converter.ShortConverter.SHORT_detail=value must be a number between -32768 and 32767
+
+

Added: branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/resources/seam.properties
===================================================================
Added: branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/webapp/WEB-INF/components.xml
===================================================================
--- branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/webapp/WEB-INF/components.xml	                        (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/webapp/WEB-INF/components.xml	2012-08-20 14:14:25 UTC (rev 15060)
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<components xmlns="http://jboss.org/schema/seam/components"
+            xmlns:core="http://jboss.org/schema/seam/core"
+            xmlns:security="http://jboss.org/schema/seam/security"
+            xmlns:transaction="http://jboss.org/schema/seam/transaction"
+            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+            xsi:schemaLocation=
+                "http://jboss.org/schema/seam/core http://jboss.org/schema/seam/core-2.3.xsd
+                 http://jboss.org/schema/seam/transaction http://jboss.org/schema/seam/transaction-2.3.xsd
+                 http://jboss.org/schema/seam/security http://jboss.org/schema/seam/security-2.3.xsd
+                 http://jboss.org/schema/seam/components http://jboss.org/schema/seam/components-2.3.xsd">
+    
+    <core:init jndi-pattern="${jndiPattern}" debug="true" distributable="${distributable}"/>   
+        
+    <core:manager conversation-timeout="120000"
+                  concurrent-request-timeout="500"
+                  conversation-id-parameter="cid"/>
+
+    <transaction:ejb-transaction/>
+
+    <security:identity authenticate-method="#{authenticator.authenticate}"/>    
+    
+</components>

Added: branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/webapp/WEB-INF/ejb-jar.xml
===================================================================
--- branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/webapp/WEB-INF/ejb-jar.xml	                        (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/webapp/WEB-INF/ejb-jar.xml	2012-08-20 14:14:25 UTC (rev 15060)
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ejb-jar 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/ejb-jar_3_0.xsd"
+         version="3.0">
+         
+    <interceptors>
+        <interceptor>
+            <interceptor-class>org.jboss.seam.ejb.SeamInterceptor</interceptor-class>
+        </interceptor>
+    </interceptors>
+    
+    <assembly-descriptor>
+        <interceptor-binding>
+            <ejb-name>*</ejb-name>
+            <interceptor-class>org.jboss.seam.ejb.SeamInterceptor</interceptor-class>
+        </interceptor-binding>
+    </assembly-descriptor>
+    
+</ejb-jar>

Added: branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/webapp/WEB-INF/faces-config.xml
===================================================================
--- branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/webapp/WEB-INF/faces-config.xml	                        (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/webapp/WEB-INF/faces-config.xml	2012-08-20 14:14:25 UTC (rev 15060)
@@ -0,0 +1,7 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<faces-config version="2.1"
+              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_2_1.xsd">
+    
+</faces-config>

Added: branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/webapp/WEB-INF/jboss-deployment-structure.xml
===================================================================
--- branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/webapp/WEB-INF/jboss-deployment-structure.xml	                        (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/webapp/WEB-INF/jboss-deployment-structure.xml	2012-08-20 14:14:25 UTC (rev 15060)
@@ -0,0 +1,12 @@
+<jboss-deployment-structure xmlns="urn:jboss:deployment-structure:1.0">
+  <deployment>
+  	  <dependencies>
+	      <module name="org.apache.log4j" export="true"/>
+	      <module name="org.dom4j" export="true"/>
+	      <module name="org.apache.commons.logging" export="true"/>
+    	  <module name="org.apache.commons.collections" export="true"/>
+	      <module name="javax.faces.api" export="true"/>
+          <module name="com.sun.jsf-impl" export="true"/>
+	    </dependencies>
+  </deployment>  
+</jboss-deployment-structure> 

Added: branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/webapp/WEB-INF/jboss-seam-booking-ds.xml
===================================================================
--- branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/webapp/WEB-INF/jboss-seam-booking-ds.xml	                        (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/webapp/WEB-INF/jboss-seam-booking-ds.xml	2012-08-20 14:14:25 UTC (rev 15060)
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<datasources xmlns="http://www.jboss.org/ironjacamar/schema">
+    <datasource 
+        jndi-name="java:/bookingDatasource" 
+        enabled="true" 
+        use-java-context="true" pool-name="bookingdb">
+        <connection-url>jdbc:h2:mem:bookingdb;DB_CLOSE_DELAY=-1</connection-url>
+        <driver>h2</driver>
+        <security>
+            <user-name>sa</user-name>
+            <password>sa</password>
+        </security>
+    </datasource>
+</datasources>

Added: branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/webapp/WEB-INF/pages.xml
===================================================================
--- branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/webapp/WEB-INF/pages.xml	                        (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/webapp/WEB-INF/pages.xml	2012-08-20 14:14:25 UTC (rev 15060)
@@ -0,0 +1,119 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<pages xmlns="http://jboss.org/schema/seam/pages"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="http://jboss.org/schema/seam/pages http://jboss.org/schema/seam/pages-2.3.xsd"
+
+       no-conversation-view-id="/main.xhtml"
+                 login-view-id="/home.xhtml">
+
+    <page view-id="/register.xhtml">
+    
+        <action if="#{validation.failed}" execute="#{register.invalid}"/>
+    
+        <navigation>
+            <rule if="#{register.registered}">
+                <redirect view-id="/home.xhtml"/>
+            </rule>
+        </navigation>
+        
+    </page>
+
+    <page view-id="/home.xhtml" action="#{identity.isLoggedIn}">
+
+        <navigation from-action="#{identity.isLoggedIn}"> 
+      		<rule if-outcome="true"> 
+         		<redirect view-id="/main.xhtml"/> 
+      		</rule> 
+      		<rule if-outcome="false"> 
+         		<render view-id="/home.xhtml"/> 
+      		</rule> 
+	</navigation>
+        
+    </page>
+    
+    <page view-id="/password.xhtml"
+          login-required="true">
+    
+        <navigation>
+            <rule if="#{identity.loggedIn and changePassword.changed}">
+                <redirect view-id="/main.xhtml"/>
+            </rule>
+        </navigation>
+        
+    </page>
+
+    <page view-id="/main.xhtml" 
+          login-required="true">
+    
+        <navigation from-action="#{hotelBooking.selectHotel(hot)}">
+            <redirect view-id="/hotel.xhtml"/>
+        </navigation>
+        
+        <navigation from-action="#{bookingList.cancel}">
+            <redirect/>
+        </navigation>
+        
+    </page>
+    
+    <page view-id="/hotel.xhtml" 
+          conversation-required="true" 
+          login-required="true">
+          
+        <description>View hotel: #{hotel.name}</description>
+        
+        <navigation from-action="#{hotelBooking.bookHotel}">
+            <redirect view-id="/book.xhtml"/>
+        </navigation>
+        
+    </page>
+
+    <page view-id="/book.xhtml" 
+          conversation-required="true" 
+          login-required="true">
+          
+        <description>Book hotel: #{hotel.name}</description>
+        
+        <navigation from-action="#{hotelBooking.setBookingDetails}">
+            <rule if="#{hotelBooking.bookingValid}">
+                <redirect view-id="/confirm.xhtml"/>
+            </rule>
+        </navigation>
+        
+    </page>
+
+    <page view-id="/confirm.xhtml" 
+          conversation-required="true" 
+          login-required="true">
+          
+        <description>Confirm booking: #{booking.description}</description>
+        
+        <navigation from-action="#{hotelBooking.confirm}">
+            <redirect view-id="/main.xhtml"/>
+        </navigation>
+        
+    </page>
+    
+    <page view-id="*">    
+        <navigation from-action="#{identity.logout}">
+            <redirect view-id="/home.xhtml"/>
+        </navigation>
+
+        <navigation from-action="#{hotelBooking.cancel}">
+            <redirect view-id="/main.xhtml"/>
+        </navigation>
+        
+    </page>
+    
+    <exception class="org.jboss.seam.security.NotLoggedInException">
+        <redirect view-id="/home.xhtml">
+            <message severity="warn">You must be logged in to use this feature</message>
+        </redirect>
+    </exception>
+    
+    <exception class="javax.faces.application.ViewExpiredException">
+        <redirect view-id="/home.xhtml">
+            <message severity="warn">Session expired, please log in again</message>
+        </redirect>
+    </exception>
+
+</pages>

Added: branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/webapp/WEB-INF/web.xml
===================================================================
--- branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/webapp/WEB-INF/web.xml	                        (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/webapp/WEB-INF/web.xml	2012-08-20 14:14:25 UTC (rev 15060)
@@ -0,0 +1,72 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<web-app version="3.0"
+    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_3_0.xsd">
+
+    <display-name>Seam Booking Example</display-name>
+    
+    <!-- Seam -->
+    
+    <listener>
+        <listener-class>org.jboss.seam.servlet.SeamListener</listener-class>
+    </listener>
+    
+    <servlet>
+        <servlet-name>Seam Resource Servlet</servlet-name>
+        <servlet-class>org.jboss.seam.servlet.SeamResourceServlet</servlet-class>
+    </servlet>
+    
+    <servlet-mapping>
+        <servlet-name>Seam Resource Servlet</servlet-name>
+        <url-pattern>/seam/resource/*</url-pattern>
+    </servlet-mapping>
+    
+    <filter>
+        <filter-name>Seam Filter</filter-name>
+        <filter-class>org.jboss.seam.servlet.SeamFilter</filter-class>
+    </filter>
+
+    <filter-mapping>
+        <filter-name>Seam Filter</filter-name>
+        <url-pattern>/*</url-pattern>
+    </filter-mapping>
+    
+    <!-- JSF -->
+    
+    <context-param>
+        <param-name>javax.faces.DEFAULT_SUFFIX</param-name>
+        <param-value>.xhtml</param-value>
+    </context-param>
+
+    <context-param>
+       <param-name>org.richfaces.enableControlSkinning</param-name>
+       <param-value>false</param-value>
+    </context-param>
+    
+<!--     <context-param> -->
+<!--      <param-name>javax.faces.DISABLE_FACELET_JSF_VIEWHANDLER</param-name> -->
+<!--      <param-value>true</param-value> -->
+<!--    </context-param> -->
+   
+<!--    <context-param> -->
+<!--         <param-name>org.ajax4jsf.VIEW_HANDLERS</param-name> -->
+<!--         <param-value>com.sun.facelets.FaceletViewHandler</param-value> -->
+<!--     </context-param> -->
+       
+    <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>*.seam</url-pattern>
+    </servlet-mapping>
+
+    <session-config>
+        <session-timeout>10</session-timeout> 
+    </session-config>    
+    
+</web-app>

Added: branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/webapp/book.xhtml
===================================================================
--- branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/webapp/book.xhtml	                        (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/webapp/book.xhtml	2012-08-20 14:14:25 UTC (rev 15060)
@@ -0,0 +1,122 @@
+<!DOCTYPE composition PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<ui:composition 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.org/schema/seam/taglib"
+                xmlns:a="http://richfaces.org/a4j"
+                xmlns:rich="http://richfaces.org/rich"
+				template="template.xhtml">
+
+<!-- content -->
+<ui:define name="content">
+<div class="section">
+	<h1>Book Hotel</h1>
+</div>
+<div class="section">
+	<div class="entry errors">
+		<s:message id="messages" globalOnly="true"/>
+	</div>
+
+	<ui:include src="hotelview.xhtml"/>
+	
+	<div style="clear:both"/>
+
+	<h:form id="booking">
+	<fieldset>
+			
+		<s:decorate id="checkinDateDecorate" template="edit.xhtml">
+			<ui:define name="label">Check In Date:</ui:define>
+			<rich:calendar id="checkinDate" value="#{booking.checkinDate}" required="true" datePattern="MM/dd/yyyy" render="checkinDateDecorate" style="width: auto;" />
+		</s:decorate>
+		
+		<s:decorate id="checkoutDateDecorate" template="edit.xhtml">
+			<ui:define name="label">Check Out Date:</ui:define>
+			<rich:calendar id="checkoutDate" value="#{booking.checkoutDate}" required="true" datePattern="MM/dd/yyyy" render="checkoutDateDecorate"  style="width: auto;"/>
+		</s:decorate>
+		
+		<s:decorate id="bedsDecorate" template="edit.xhtml">
+			<ui:define name="label">Room Preference:</ui:define>
+			<h:selectOneMenu id="beds" value="#{booking.beds}">
+				<f:selectItem id="OneKingBed" itemLabel="One king-size bed" itemValue="1"/>
+				<f:selectItem id="TwoDoubleBeds" itemLabel="Two double beds" itemValue="2"/>
+				<f:selectItem id="ThreeBeds" itemLabel="Three beds" itemValue="3"/>
+			</h:selectOneMenu>
+		</s:decorate>
+		
+		<s:decorate id="smokingDecorate" template="edit.xhtml">
+			<ui:define name="label">Smoking Preference:</ui:define>
+			<h:selectOneRadio id="smoking" value="#{booking.smoking}" layout="pageDirection" styleClass="radio">
+				<f:selectItem id="Smoking" itemLabel="Smoking" itemValue="true"/>
+				<f:selectItem id="NonSmoking" itemLabel="Non Smoking" itemValue="false"/>
+			</h:selectOneRadio>
+		</s:decorate>
+
+		<s:decorate id="creditCardDecorate" template="edit.xhtml">
+			<ui:define name="label">Credit Card #:</ui:define>
+			<h:inputText id="creditCard" value="#{booking.creditCard}" required="true">
+				<a:ajax event="blur" render="creditCardDecorate"/>
+			</h:inputText>
+		</s:decorate>
+
+		<s:decorate id="creditCardNameDecorate" template="edit.xhtml">
+			<ui:define name="label">Credit Card Name:</ui:define>
+			<h:inputText id="creditCardName" value="#{booking.creditCardName}" required="true">
+				<a:ajax event="blur" render="creditCardNameDecorate"/>
+			</h:inputText>
+		</s:decorate>
+
+		<s:decorate id="creditCardExpiryDecorate" template="edit.xhtml">
+			<ui:define name="label">Credit Card Expiry:</ui:define>
+			<h:selectOneMenu id="creditCardExpiryMonth" value="#{booking.creditCardExpiryMonth}">
+				<f:selectItem id="Jan" itemLabel="Jan" itemValue="1"/>
+				<f:selectItem id="Feb" itemLabel="Feb" itemValue="2"/>
+				<f:selectItem id="Mar" itemLabel="Mar" itemValue="3"/>
+				<f:selectItem id="Apr" itemLabel="Apr" itemValue="4"/>
+				<f:selectItem id="May" itemLabel="May" itemValue="5"/>
+				<f:selectItem id="Jun" itemLabel="Jun" itemValue="6"/>
+				<f:selectItem id="Jul" itemLabel="Jul" itemValue="7"/>
+				<f:selectItem id="Aug" itemLabel="Aug" itemValue="8"/>
+				<f:selectItem id="Sep" itemLabel="Sep" itemValue="9"/>
+				<f:selectItem id="Oct" itemLabel="Oct" itemValue="10"/>
+				<f:selectItem id="Nov" itemLabel="Nov" itemValue="11"/>
+				<f:selectItem id="Dec" itemLabel="Dec" itemValue="12"/>
+			</h:selectOneMenu>
+			<h:selectOneMenu id="creditCardExpiryYear" value="#{booking.creditCardExpiryYear}">
+				<f:selectItem id="Year2005" itemLabel="2005" itemValue="2005"/>
+				<f:selectItem id="Year2006" itemLabel="2006" itemValue="2006"/>
+				<f:selectItem id="Year2007" itemLabel="2007" itemValue="2007"/>
+				<f:selectItem id="Year2008" itemLabel="2008" itemValue="2008"/>
+				<f:selectItem id="Year2009" itemLabel="2009" itemValue="2009"/>
+			</h:selectOneMenu>
+		</s:decorate>
+		
+		<div class="buttonBox">
+			<h:commandButton id="proceed" value="Proceed" action="#{hotelBooking.setBookingDetails}"/>
+			&#160;
+			<s:button id="cancel" value="Cancel" action="#{hotelBooking.cancel}"/>
+		</div>
+		
+	</fieldset>
+	</h:form>
+</div>
+</ui:define>
+
+<!-- sidebar -->
+<ui:define name="sidebar">
+
+<h1>Workspace management</h1>
+<p>
+   As you can see, Seam makes it easy to work in multiple windows or multiple browser 
+   tabs. But you can even switch between multiple tasks inside a single browser tab!
+   The "Workspaces" section showcases this advanced feature.
+</p>
+<p>
+   <a href="#" onclick="window.open('exp/workspaceExp.html','exp','width=752,height=500,scrollbars=yes');">
+	  How does the workspace list work?
+   </a>
+</p>
+
+</ui:define>
+
+</ui:composition>

Added: branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/webapp/confirm.xhtml
===================================================================
--- branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/webapp/confirm.xhtml	                        (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/webapp/confirm.xhtml	2012-08-20 14:14:25 UTC (rev 15060)
@@ -0,0 +1,74 @@
+<!DOCTYPE composition PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<ui:composition 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.org/schema/seam/taglib"
+				template="template.xhtml">
+
+<!-- content -->
+<ui:define name="content">
+
+<div class="section">
+	<h1>Confirm Hotel Booking</h1>
+</div>
+
+<div class="section">
+
+	<ui:include src="hotelview.xhtml"/>
+		
+	<s:decorate id="DecorateTotalPayment" template="display.xhtml">
+		<ui:define name="label">Total Payment:</ui:define>
+		<h:outputText id="BookingTotal" value="#{booking.total}">
+			<f:convertNumber type="currency" currencySymbol="$"/>
+		</h:outputText>
+	</s:decorate>
+
+	<s:decorate id="DecorateCheckInDate" template="display.xhtml">
+		<ui:define name="label">Check In Date:</ui:define>
+		<h:outputText id="BookingCheckinDate" value="#{booking.checkinDate}"/>
+	</s:decorate>
+
+	<s:decorate id="DecorateCheckoutDate" template="display.xhtml">
+		<ui:define name="label">Check Out Date:</ui:define>
+		<h:outputText id="BookingCheckoutDate" value="#{booking.checkoutDate}"/>
+	</s:decorate>
+
+	<s:decorate id="DecorateCreditCard" template="display.xhtml">
+		<ui:define name="label">Credit Card #:</ui:define>
+		#{booking.creditCard}
+	</s:decorate>
+	
+	<div class="buttonBox">
+		<h:form id="confirm">
+			<h:commandButton id="confirm" value="Confirm" action="#{hotelBooking.confirm}"/>
+			&#160;
+    		<s:button id="revise" value="Revise" view="/book.xhtml"/>
+    		&#160;
+    		<h:commandButton id="cancel" value="Cancel" action="#{hotelBooking.cancel}"/>
+		</h:form>
+	</div>
+
+</div>
+
+</ui:define>
+
+<!-- sidebar -->
+<ui:define name="sidebar">
+<h1>Back button navigation</h1>
+<p>
+   When you click "Confirm", the new booking is written to the database, the 
+   conversation ends, and state associated with the conversation is automatically 
+   destroyed by Seam. After you confirm your booking, try hitting the back button
+   on your web browser and clicking "Confirm" again. Seam makes it easy implement
+   applications that behave elegantly in response to the back, forward and refresh
+   buttons.
+</p>
+<p>
+   <a href="#" onclick="window.open('exp/confirmExp.html','exp','width=752,height=500,scrollbars=yes');">
+      What happens when the conversation ends?
+   </a>
+</p>
+</ui:define>
+
+</ui:composition>

Added: branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/webapp/conversations.xhtml
===================================================================
--- branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/webapp/conversations.xhtml	                        (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/webapp/conversations.xhtml	2012-08-20 14:14:25 UTC (rev 15060)
@@ -0,0 +1,38 @@
+<!DOCTYPE composition PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<ui:composition xmlns="http://www.w3.org/1999/xhtml"
+     xmlns:c="http://java.sun.com/jstl/core"
+     xmlns:ui="http://java.sun.com/jsf/facelets"
+     xmlns:f="http://java.sun.com/jsf/core"
+     xmlns:h="http://java.sun.com/jsf/html"
+     xmlns:s="http://jboss.org/schema/seam/taglib">
+	<div>
+	     
+	<div class="section">
+	    <h1><h:outputText rendered="#{not empty conversationList}" value="Workspaces"/></h1>
+	</div>
+	
+	<div class="section">
+	    <h:form id="ConversationListForm">
+	        <h:dataTable id="ConversationListDataTable" value="#{conversationList}" var="entry">
+	            <h:column id="column1">
+	                <h:commandLink id="EntryDescriptionLink" action="#{entry.select}" value="#{entry.description}"/>
+	                &#160;
+	                <h:outputText id="CurrentEntry" value="[current]" rendered="#{entry.current}"/>
+	            </h:column>
+	            <h:column id="column2">
+	                <h:outputText id="EntryStartDateTime" value="#{entry.startDatetime}">
+	                   <!--<s:convertDateTime type="time" pattern="kk:mm:ss"/>-->
+                       <f:convertDateTime type="time" pattern="kk:mm:ss"/>
+	                </h:outputText>
+	                -
+	                <h:outputText id="EntryLastDateTime" value="#{entry.lastDatetime}">
+	                   <!--<s:convertDateTime type="time" pattern="hh:mm"/>-->
+                       <f:convertDateTime type="time" pattern="kk:mm:ss"/>
+	                </h:outputText>
+	            </h:column>
+	        </h:dataTable>
+	    </h:form>
+	</div>
+	
+	</div>
+</ui:composition>

Added: branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/webapp/css/screen.css
===================================================================
--- branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/webapp/css/screen.css	                        (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/webapp/css/screen.css	2012-08-20 14:14:25 UTC (rev 15060)
@@ -0,0 +1,280 @@
+/* Setup defaults since variable in browsers
+----------------------------------------------- */
+body, div, span, dd, dt, dl, img, ul, ol, li, p, h1, h2, h3, h4, h5, form, hr, fieldset {
+	margin: 0;
+	padding: 0;
+}
+/* Element Defaults
+----------------------------------------------- */
+html {
+	height: 100%;
+	background-color: #DBD4C6;
+}
+img {
+	border: 0;
+}
+body {
+	font-family: Verdana, Arial, Helvetica, sans-serif;
+	font-size: small;
+	line-height: 1.25em;
+	color: #362F2D;
+	position: relative;
+	width: 760px;
+	height: 100%;
+	margin-left: auto;
+	margin-right: auto;
+}
+.label {
+	font-weight: bold;
+	color: #5E5147;
+}
+input {
+	border: 1px solid #C3BBB6;
+	padding: 4px;
+	margin: 5px 0;
+	background: #fff url(../img/input.bg.gif) 0 0 repeat-x;
+}
+select {
+	border: 1px solid #C3BBB6;
+	padding: 4px;
+	margin: 5px 0;
+	background: #fff url(../img/input.bg.gif) 0 0 repeat-x;
+}
+ol, ul {
+	margin: 10px 0px 10px 6px;
+}
+li {
+	margin: 10px 12px;
+}
+fieldset {
+	border: 0;
+}
+/* Layout
+----------------------------------------------- */
+#document {
+	padding: 0 1px;
+	background: #fff url(../img/bg.gif) 0 0 repeat-y;
+	float: left;
+	border-bottom: 1px solid #C3BBB6;
+}
+#header {
+	float: left;
+	width: 758px;
+	height: 46px;
+	background: url(../img/hdr.bg.gif) 0 0 repeat-x;
+}
+#container {
+	float: left;
+	width: 758px;
+	background: url(../img/hdr.bar.jpg) 0 0 repeat-x;
+}
+#sidebar {
+	float: left;
+	width: 190px;
+	margin-top: 96px;
+	padding: 20px 10px 0 10px;
+	background: url(../img/sdb.bg.gif) 0 0 no-repeat;
+}
+#content {
+	float: left;
+	width: 548px;
+	margin-top: 75px;
+	padding-top: 5px;
+	background: #fff url(../img/cnt.bg.gif) 0 0 repeat-x;
+}
+#footer {
+	clear: both;
+	margin-top: 40px;
+	float: left;
+	padding: 20px;
+	border-top: 1px solid #C3BBB6;
+	background-color: #fff;
+	width: 718px;
+	text-align: right;
+}
+/* General
+----------------------------------------------- */
+input[type="submit"], input[type="button"] {
+	font-weight: bold;
+	color: #fff;
+	border: 1px solid #5D1414;
+	height: 26px;
+	background: #fff url(../img/btn.bg.gif) 0 0 repeat-x;
+	border-style: none;
+}
+.center {
+	text-align: center;
+}
+.entry {
+	clear: both;
+	padding-top: 10px;
+}
+.entry .label {
+	float: left;
+	padding-right: 5px;
+	font-weight: bold;
+	width: 150px;
+	text-align: right;
+}
+.entry .output {
+	float: right;
+	width: 360px;
+	padding-top: 10px;
+	text-align: left;
+}
+.entry .input {
+	float: right;
+	width: 360px;
+	text-align: left;
+}
+.entry .error {
+	float: right;
+	width: 360px;
+	text-align: left;
+}
+/* Sidebar
+----------------------------------------------- */
+.notes {
+	text-align: center;
+	font-size: small;
+}
+.subnotes {
+    margin-top: 1em;
+	font-size: small;
+}
+.errors {
+	font-size: small;
+	font-weight: bold;
+	text-align: center;
+	color: #600;
+}
+.errors div {
+	text-align: left;
+}
+.errors span {
+	text-align: left;
+}
+.errors input {
+	border: 1px solid #600;
+}
+.errors ul {
+	list-style: none;
+}
+.buttonBox {
+	text-align: center;
+	padding: 5px 0;
+	clear: both;
+}
+#sidebar p {
+	font-size: small;
+	color: #8B7869;
+	line-height: 150%;
+	padding-bottom: 10px;
+}
+#sidebar li {
+	font-size: small;
+	color: #8B7869;
+}
+#sidebar h1 {
+	line-height: normal;
+	font-weight: bold;
+	font-size: small;
+}
+/*
+#sidebar p:hover {
+	color: #362F2D;
+}
+*/
+/* Content
+----------------------------------------------- */
+#content .section {
+	float: left;
+	width: 518px;
+	padding: 15px 15px 0 15px;
+}
+#content .section h1 {
+	font-family: "Trebuchet MS", Arial, sans-serif;
+	line-height: normal;
+	font-weight: normal;
+	font-size: large;
+}
+#content .section p {
+	line-height: 150%;
+	padding: 10px 0;
+	font-size: small;
+}
+#content table {
+	width: 100%;
+	border: 1px solid #D2C9C4;
+	border-collapse: collapse;
+}
+#content table caption {
+	padding-bottom: 6px;
+	text-align: left;
+	font-weight: bold;
+}
+#content table thead th {
+	border-left: 1px solid #D2C9C4;
+	background: #fff url(../img/th.bg.gif) 0 100% repeat-x;	
+	border-bottom: 1px solid #D2C9C4;
+	padding: 6px;
+	text-align: left;
+	font-size: small;
+}
+#content table tbody td {
+	border-left: 1px solid #E4DBD5;
+	padding: 4px;
+	border-bottom: 1px solid #D2C9C4;
+	font-size: small;
+}
+#content dt {
+	font-weight: bold;
+	float: left;
+	width: 33%;
+}
+#content dd {
+	padding-left: 10px;
+	float: left;
+	width: 66%;
+}
+#content table.radio {
+	border: 0px;
+}
+#content .input table,
+#content .input tbody tr td,
+#content table.radio tbody tr td {
+	border: 0px;
+	border-left: 0px;
+	border-bottom: 0px;
+}
+/* Header
+----------------------------------------------- */
+#title {
+	float: left;
+	padding: 1px 0 6px 15px;
+}
+#status {
+	color: #C7B299;
+	float: right;
+	font-family: Verdana, Arial, Helvetica, sans-serif;
+	font-weight: bold;
+	font-size: x-small;
+	text-align: right;
+	padding-top: 14px;
+	padding-right: 15px;
+}
+#status a {
+	color: #C7B299;
+	text-decoration: none;
+}
+/* Homepage Modifications
+----------------------------------------------- */
+#pgHome #container {
+	background: url(../img/hdr.ad.jpg) 0 0 repeat-x;
+}
+#pgHome #sidebar {
+	margin-top: 207px;
+}
+#pgHome #content {
+	margin-top: 183px;
+}

Added: branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/webapp/css/trailblazer_main.css
===================================================================
--- branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/webapp/css/trailblazer_main.css	                        (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/webapp/css/trailblazer_main.css	2012-08-20 14:14:25 UTC (rev 15060)
@@ -0,0 +1,148 @@
+* {
+    margin:  0px; 
+    padding: 0px; 
+    border:  none;
+}
+
+body {
+    font: 1em verdana, arial, sans-serif;
+    background: #CCCCCC;
+}
+
+div#main {
+    margin-left:  0px;
+    width: 751px;
+    background: #ecefdf;
+}
+
+div#top,div#pictures{
+}
+
+div#pictures img {
+    float:left;
+}
+
+img#head1 {
+    margin-right: 3px;
+} 
+
+img#head2 {
+    margin-right: 4px;
+} 
+
+div.trail {
+    clear:both;     
+    margin-left:  50px;
+    margin-top:   0px;
+    margin-right: 50px
+}
+
+div.foot {
+    margin-left:  50px;
+    margin-right: 50px;
+    margin-top:   50px;
+    text-align:   center;
+    font-size:    .5em;
+    height: 36px;
+}
+
+div.trail h1 {
+    margin-top:   -30px;
+    margin-left:  -50px;
+    font-size:    1.2em;   
+    font-weight:  bold;
+    padding-left: .4em;
+}
+
+div.trail h2 { 
+    float:        left;
+    font-size:    1em;   
+    font-weight:  bold;
+    padding-left: .4em;
+}
+
+div.trail h3 { 
+    float:        left;
+    font-size:    .8em;   
+    font-weight:  bold;
+    margin-left: -1.4em;
+    margin-bottom: 1em;
+}
+
+
+div.trail p {
+    clear:      both;
+    margin-top: 20px;
+    font-size: .8em;
+    text-decoration: none;
+}
+
+div#next_trail {
+    margin-left: 36px;
+}
+
+div.numbox {
+    border: thin solid black; 
+    margin-left: -.8em;
+    float:   left;
+    background: #ffffff;
+    padding: .2em .35em .3em;
+    font-style: normal;
+    font-weight: bold;
+    font-size: 1.4em;
+}
+
+div.figure {
+    text-align: center;
+    font-size: .6em;
+    margin-top: 30px;
+}
+
+div.figure img {
+    display: block;
+    margin-right: auto;
+    margin-left: auto;
+}
+
+code {
+    font: 1.1em "Courier New", Courier, mono;
+}
+
+code.block {
+    white-space: pre;
+    font: 10pt "Courier New", Courier, mono;
+    display: block;
+    border-style: dashed;
+    border-width: thin;
+    padding: .5em;
+    background: #ffffff;
+    margin: 20px;
+}
+
+div.foot_image {
+   float: left;
+   height: 86px;
+}
+
+a:active {
+    color : #666666;
+    text-decoration: none;
+}
+
+a:hover {
+    color : #000000;
+    background-color : #D6E0FE;
+    text-decoration: none;
+}
+
+a:link {
+    color : #005EB6;
+    text-decoration: none;
+}
+
+a:visited {
+    color : #888888;
+    text-decoration: none;
+}
+
+

Added: branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/webapp/display.xhtml
===================================================================
--- branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/webapp/display.xhtml	                        (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/webapp/display.xhtml	2012-08-20 14:14:25 UTC (rev 15060)
@@ -0,0 +1,16 @@
+<ui:composition  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.org/schema/seam/taglib">
+                 
+    <div class="entry">
+        <span class="label">
+            <ui:insert name="label"/>
+        </span>
+        <span class="input">
+            <ui:insert/>
+        </span>
+    </div>
+    
+</ui:composition>
\ No newline at end of file

Added: branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/webapp/edit.xhtml
===================================================================
--- branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/webapp/edit.xhtml	                        (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/webapp/edit.xhtml	2012-08-20 14:14:25 UTC (rev 15060)
@@ -0,0 +1,21 @@
+<!DOCTYPE composition PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<ui:composition 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.org/schema/seam/taglib">
+                 
+    <div class="entry">
+        <s:label id="Label" styleClass="label #{invalid?'errors':''}">
+            <ui:insert name="label"/>
+            <s:span id="RequiredStyle" styleClass="required" rendered="#{required}">*</s:span>
+        </s:label>
+        <span class="input #{invalid?'errors':''}">
+            <s:validateAll id="ValidateAll">
+                <ui:insert/>
+            </s:validateAll>
+        </span>
+        <s:message id="message" styleClass="error errors" globalOnly="true"/>
+    </div>
+    
+</ui:composition>
\ No newline at end of file

Added: branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/webapp/exp/bookingExp.html
===================================================================
--- branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/webapp/exp/bookingExp.html	                        (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/webapp/exp/bookingExp.html	2012-08-20 14:14:25 UTC (rev 15060)
@@ -0,0 +1,161 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+          "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
+<head>
+	<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
+	<title>In-depth Explanation</title>
+	<link href="../css/trailblazer_main.css" rel="stylesheet" type="text/css" />
+</head>
+
+<body>
+
+<div id="main">
+  <div class="trail">
+    <div class="numbox">5</div>
+    <h2>Conversations</h2>
+    <img src="../img/header_line.gif" />
+    
+       <form>
+          <input type="button" value="Close Window" onclick="window.close()"/>
+       </form>
+
+    <p>
+       The hotel booking "wizard" is implemented by a conversation-scoped
+       stateful session bean. All Seam components are in the 
+       conversation scope by default. 
+       The <code>HotelBookingAction</code> maintains
+       state associated with the booking process in the Seam conversation
+       scope. This ensures that if the user is working in multiple brower
+       tabs or multiple brower windows, the various conversations are
+       completely isolated from each other.
+    </p>
+    <p>
+       To see this working in practice, right click on the "View Hotel" button 
+       in the search screen and select "open in new tab" or "open in new window",
+       and try working on multiple hotel bookings simultaneously. 
+       In the <a href="workspaceExp.html">next step</a>, we will discuss
+       Seam's built-in components to manage multiple concurrent conversations.
+    </p>
+    
+<code class="block">
+ at Stateful
+ at Name("hotelBooking")
+ at LoggedIn
+public class HotelBookingAction implements HotelBooking
+{
+   
+   @PersistenceContext(type=EXTENDED)
+   private EntityManager em;
+   
+   @In
+   private User user;
+   
+   @In(required=false) @Out
+   private Hotel hotel;
+   
+   @In(required=false) 
+   @Out(required=false)
+   private Booking booking;
+   
+   @In(create=true)
+   private FacesMessages facesMessages;
+      
+   @In(create=true)
+   private Events events;
+      
+   @In 
+   private HotelSearching hotelSearch;
+   
+   @Logger 
+   private Log log;
+   
+   private boolean bookingValid;
+   
+   @Begin
+   public void selectHotel(Hotel selectedHotel)
+   {
+      hotel = em.merge(selectedHotel);
+   }
+   
+   public void bookHotel()
+   {      
+      booking = new Booking(hotel, user);
+      Calendar calendar = Calendar.getInstance();
+      booking.setCheckinDate( calendar.getTime() );
+      calendar.add(Calendar.DAY_OF_MONTH, 1);
+      booking.setCheckoutDate( calendar.getTime() );
+   }
+   
+
+   public void setBookingDetails()
+   {
+      Calendar calendar = Calendar.getInstance();
+      calendar.add(Calendar.DAY_OF_MONTH, -1);
+      if ( booking.getCheckinDate().before( calendar.getTime() ) )
+      {
+         facesMessages.addToControl("checkinDate", "Check in date must be a future date");
+         bookingValid=false;
+      }
+      else if ( !booking.getCheckinDate().before( booking.getCheckoutDate() ) )
+      {
+         facesMessages.addToControl("checkoutDate", "Check out date must be later than check in date");
+         bookingValid=false;
+      }
+      else
+      {
+         bookingValid=true;
+      }
+   }
+   
+   public boolean isBookingValid()
+   {
+      return bookingValid;
+   }
+   
+   @End
+   public void confirm()
+   {
+      em.persist(booking);
+      facesMessages.add("Thank you, #{user.name}, your confimation number for #{hotel.name} is #{booking.id}");
+      log.info("New booking: #{booking.id} for #{user.username}");
+      events.raiseTransactionSuccessEvent("bookingConfirmed");
+   }
+   
+   @End
+   public void cancel() {}
+   
+   @Remove
+   public void destroy() {}
+}</code>
+
+    <p>
+       The conversation begins when the <code>@Begin</code> annotated
+       <code>selectHotel()</code> is called, and ends when 
+       the <code>@End</code> annotated 
+       <code>confirm()</code> or <code>cancel()</code> is called. Between the
+       <code>@Begin</code> and <code>@End</code> methods, the user can do
+       any number of things with the application (i.e., invoke any 
+       event handler method or use the BACK button etc.) and the 
+       <code>hotelBooking</code> maintains its state throughout the process.
+       When the <code>@End</code> method is called, Seam destroys this
+       component and avoids any memory leak.
+    </p>
+    
+    <p>
+      However, none of the <code>HotelBookingAction</code> bean methods 
+      may be called outside of a long-running conversation. 
+      So if we try to use the 
+      back button after the end of the conversation, Seam will redirect to the main page, with an 
+      error message.
+   </p>
+
+
+       <form>
+          <input type="button" value="Close Window" onclick="window.close()"/>
+       </form>
+
+  </div>
+</div>
+
+</body>
+</html>

Added: branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/webapp/exp/confirmExp.html
===================================================================
--- branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/webapp/exp/confirmExp.html	                        (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/webapp/exp/confirmExp.html	2012-08-20 14:14:25 UTC (rev 15060)
@@ -0,0 +1,104 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+          "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
+<head>
+	<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
+	<title>In-depth Explanation</title>
+	<link href="../css/trailblazer_main.css" rel="stylesheet" type="text/css" />
+</head>
+
+<body>
+
+<div id="main">
+  <div class="trail">
+    <div class="numbox">7</div>
+    <h2>Ending Conversations</h2>
+    <img src="../img/header_line.gif" />
+    
+       <form>
+          <input type="button" value="Close Window" onclick="window.close()"/>
+       </form>
+
+    <p>
+       The "Confirm" button is bound to the action method <code>confirm()</code>
+       of <code>HotelBookingAction</code>.
+    </p>
+
+<code class="block">
+&lt;h:commandButton value="Confirm" 
+                 action="#{hotelBooking.confirm}" 
+                 id="confirm"/&gt;
+</code>
+
+    <p>
+       The <code>confirm()</code> method is tagged with the <code>@End</code> annotation, 
+       which ends the long-running conversation and results in all state associated with
+       the conversation being destroyed at the end of the request. 
+       Since the <code>pages.xml</code> file specifies a redirect for this action, the state
+        will not be destroyed
+       until <em>after the redirect completes</em>. Note that even the success message
+       that we create using the built-in <code>facesMessages</code> component is transparently
+       propagated across the redirect!
+    </p>
+
+<code class="block">
+   @End
+   public void confirm()
+   {
+      if (booking==null || hotel==null) return "main";
+      em.persist(booking);
+      facesMessages.add("Thank you, #{user.name}, your confimation number " + 
+                        "for #{hotel.name} is #{booking.id}");
+      log.info("New booking: #{booking.id} for #{user.username}");
+      events.raiseEvent("bookingConfirmed");
+   }
+   
+   @End
+   public void cancel() {}
+   
+   @Destroy @Remove
+   public void destroy() {}
+}
+</code>
+
+   <p>
+      When the conversation state is finally destroyed, Seam calls the <code>@Destroy</code> method,
+      which results in removal of the SFSB.
+   </p>
+   
+   <p>
+      Notice that the <code>HotelBookingAction.confirm()</code> method
+      raises a <code>bookingConfirmed</code> event before it finishes. The
+      event mechanism allows Seam components to communicate with each other
+      without direct coupling. In this case, the <code>BookingListAction</code>
+      component captures the <code>bookingConfirmed</code> event and refreshes
+      the existing booking list for the current user.
+   </p>
+   
+<code class="block">
+public class BookingListAction implements BookingList, Serializable
+{
+
+   ... ...
+   
+   @Factory
+   @Observer("bookingConfirmed")
+   public void getBookings()
+   {
+      bookings = em.createQuery("from Booking b where b.user.username = " + 
+                                ":username order by b.checkinDate")
+            .setParameter("username", user.getUsername())
+            .getResultList();
+   }
+}
+</code>
+   
+       <form>
+          <input type="button" value="Close Window" onclick="window.close()"/>
+       </form>
+
+  </div>
+</div>
+
+</body>
+</html>

Added: branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/webapp/exp/introExp.html
===================================================================
--- branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/webapp/exp/introExp.html	                        (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/webapp/exp/introExp.html	2012-08-20 14:14:25 UTC (rev 15060)
@@ -0,0 +1,73 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+          "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
+<head>
+	<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
+	<title>In-depth Explanation</title>
+	<link href="../css/trailblazer_main.css" rel="stylesheet" type="text/css" />
+</head>
+
+<body>
+
+<div id="main">
+  <div class="trail">
+    <div class="numbox">1</div>
+    <h2>What is JBoss Seam</h2>
+    <img src="../img/header_line.gif" />
+    
+    <p>
+       <center>
+       <form>
+          <INPUT type="button" value="Close Window" onclick="window.close()">
+       </form>
+       </center>
+    </p>
+    
+    <p>
+       EJB 3.0 and JSF are perhaps the most exciting new developments in the Java EE 5 platform. 
+       Seam is an innovative new application framework that integrates the EJB 3.0 component model 
+       with JSF as a presentation tier. Seam builds upon the standard extension points provided by 
+       both specifications and provides a set of Java annotations that extends the standard 
+       annotations defined by the EJB specification. In addition, Seam introduces several innovative 
+       new ideas: managed conversations, declarative and contextual application state management, 
+       bijection and integrated business process management. 
+    </p>
+
+    <p>
+       Traditional web applications are incredibly vulnerable to bugs and performance problems 
+       relating to state management. Developers are forced to handle issues like back button 
+       navigation, multi-window browsing, session size management in an utterly ad-hoc fashion. 
+       Access to transactional components from the web tier has also been problematic. J2EE 
+       provided no way to have simultaneous access to state held in contexts associated with 
+       the web request, and state held in transactional resources accessed via EJB. Finally, 
+       J2EE had no first-class construct for representing state associated with a long-running 
+       business process. Seam tackles all these problems, and provides a uniform model for 
+       stateful components in Java EE 5.
+    </p>
+				
+    <p>
+       Like all JBoss software, this entire software stack is free. The full source code of this 
+       sample application is available in the <code>examples/booking</code> directory of the 
+       <a href="http://www.jboss.com/products/list/downloads#seam">Seam distribution</a>. 
+       <!--
+       There is even a  
+       <a target="_blank" href="http://docs.jboss.com/TrailBlazer/seam-booking/Seam.htm">
+          10-minute flash demo 
+       </a>
+       showing how to build a Seam web application from ground up.
+       -->
+    </p>
+
+    <p>
+       <center>
+       <form>
+          <INPUT type="button" value="Close Window" onclick="window.close()">
+       </form>
+       </center>
+    </p>
+
+  </div>
+</div>
+
+</body>
+</html>

Added: branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/webapp/exp/loginExp.html
===================================================================
--- branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/webapp/exp/loginExp.html	                        (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/webapp/exp/loginExp.html	2012-08-20 14:14:25 UTC (rev 15060)
@@ -0,0 +1,161 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+          "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
+<head>
+	<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
+	<title>In-depth Explanation</title>
+	<link href="../css/trailblazer_main.css" rel="stylesheet" type="text/css" />
+</head>
+
+<body>
+
+<div id="main">
+  <div class="trail">
+    <div class="numbox">2</div>
+    <h2>What happens when you login?</h2>
+    <img src="../img/header_line.gif" />
+    
+       <form>
+          <input type="button" value="Close Window" onclick="window.close()"/>
+       </form>
+    
+    <p>
+       The login page is defined using pure XHTML with JSF controls. 
+       The form uses JSF EL value binding and method binding 
+       expressions to refer to Seam components. For example, 
+       <code>#{identity.username}</code> refers to a property of the
+       <code>Identity</code> component and <code>#{identity.login}</code> 
+       refers to a method of the <code>Identity</code> component.
+    </p>
+
+<code class="block">
+&lt;div&gt;
+    &lt;h:outputLabel for="username">Login Name&lt;/h:outputLabel>
+    &lt;h:inputText id="username" value="#{identity.username}" />
+&lt;/div&gt;
+&lt;div&gt;
+    &lt;h:outputLabel for="password">Password&lt;/h:outputLabel>
+    &lt;h:inputSecret id="password" value="#{identity.password}" />
+&lt;/div&gt;
+
+... ...
+
+&lt;div class="buttonBox"&gt;
+    &lt;h:commandButton id="login"
+                     action="#{identity.login}" 
+                     value="Account Login" /&gt;
+&lt;/div&gt;
+</code>
+
+    <p>
+       After logging in, the <code>User</code> enity bean is mapped to the Seam  
+       context variable named <code>user</code> bean via the 
+       <code>@Name</code> annotation. <code>User</code> is
+       a session scoped bean, meaning that the <code>user</code>
+       component value is retained for the entire session for
+       each user. You might also notice there are validation annotation
+       on the data properties. We will discuss those annotations in the
+       <a href="registerExp.html">next step</a>.
+    </p>
+
+<code class="block">
+ at Entity
+ at Name("user")
+ at Scope(SESSION)
+public class User implements Serializable {
+   private String username;
+   private String password;
+   private String name;
+
+   @NotNull
+   @Length(min=5, max=15)
+   public String getPassword() {
+      return password;
+   }
+   public void setPassword(String password) {
+      this.password = password;
+   }
+   
+
+   @Id
+   @Length(min=4, max=15)
+   @Pattern(regex="^\\w*$", message="not a valid username")
+   public String getUsername () {
+      return username;
+   }
+   public void setUsername (String username) {
+      this.username = username;
+   }
+
+    // ... ...
+}
+</code>
+
+    <p>
+       Seam comes with its own Security framework, based on JAAS.  It allows you 
+       to perform user authentication by configuring your own authentication method
+       in <code>components.xml</code>.
+    </p>
+    
+<code class="block">
+  &lt;security:identity authenticate-method="#{authenticator.authenticate}"/&gt;
+</code>
+
+    <p>
+       <code>AuthenticatorAction</code> is an EJB 3.0 session bean mapped 
+       to the Seam context variable named <code>authenticator</code>. When 
+       the login button is clicked, the JSF method binding 
+       <code>#{identity.login}</code> is evaluated, and based upon the previous configuration, the 
+       <code>authenticate()</code> method is invoked upon <code>AuthenticatorAction</code>.
+    </p>
+
+<code class="block">
+ at Stateless
+ at Scope(EVENT)
+ at Name("authenticator")
+public class AuthenticatorAction implements Authenticator
+{
+   @PersistenceContext EntityManager em;
+   
+   @Out(required=false, scope = SESSION)
+   private User user;
+   
+   public boolean authenticate()
+   {
+      List results = em.createQuery("select u from User u where" + 
+                                    " u.username=#{identity.username}" + 
+                                    " and u.password=#{identity.password}")
+                       .getResultList();
+      
+      if ( results.size()==0 )
+      {
+         return false;
+      }
+      else
+      {
+         user = (User) results.get(0);
+         return true;
+      }
+   }
+}
+</code>
+
+    <p>
+       The <code>@Out</code> 
+       annotation indicates the <code>AuthenticatorAction</code> bean can change the
+       value of the <code>user</code> context variable and make the new instance 
+       available to other session beans and JSF pages.  The query expression 
+       makes use of a special syntax in Seam that allows EL expressions to 
+       serve as query parameters.  This query references the <code>identity</code> component,
+       a built-in Seam component that provides security functionality.
+    </p>
+
+       <form>
+          <input type="button" value="Close Window" onclick="window.close()"/>
+       </form>
+
+  </div>
+</div>
+
+</body>
+</html>

Added: branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/webapp/exp/mainExp.html
===================================================================
--- branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/webapp/exp/mainExp.html	                        (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/webapp/exp/mainExp.html	2012-08-20 14:14:25 UTC (rev 15060)
@@ -0,0 +1,214 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+          "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
+<head>
+	<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
+	<title>In-depth Explanation</title>
+	<link href="../css/trailblazer_main.css" rel="stylesheet" type="text/css" />
+</head>
+
+<body>
+
+<div id="main">
+  <div class="trail">
+    <div class="numbox">4</div>
+    <h2>Stateful components</h2>
+    <img src="../img/header_line.gif" />
+    
+       <form>
+          <input type="button" value="Close Window" onclick="window.close()"/>
+       </form>
+
+    <p>
+       The hotel search page is backed by the a stateful session bean named
+       <code>hotelSearch</code> and implemented by the class 
+       <code>HotelSearchingAction</code>.
+    </p>
+
+<code class="block">
+&lt;h:inputText id="searchString" value="#{hotelSearch.searchString}" &gt;
+    &lt;a:support event="onkeyup" actionListener="#{hotelSearch.find}" 
+               reRender="searchResults"/&gt;
+&lt;/h:inputText&gt;
+
+&lt;h:selectOneMenu value="#{hotelSearch.pageSize}" id="pageSize"&gt;
+    &lt;f:selectItem itemLabel="5" itemValue="5"/&gt;
+    &lt;f:selectItem itemLabel="10" itemValue="10"/&gt;
+    &lt;f::selectItem itemLabel="20" itemValue="20"/&gt;
+&lt;/h:selectOneMenu&gt;
+</code>
+
+    <p>
+       When the button is clicked, the form is submitted and JSF sets the value 
+       of the text box and drop down menu onto the <code>searchString</code> and
+       <code>pageSize</code> attributes of <code>HotelSearchingAction</code> 
+       before calling the <code>find()</code> action listener method. We've used a 
+       session-scope stateful bean because we want it's state (the search results) to 
+       be held in the session between requests to the server.  The <code>&lt;a:support&gt;</code>
+       tax specfies that after a keypress, the contents of the <code>&lt;a:outputPanel&gt;</code> whose
+       id is <code>searchResults</code> should be rerendererd.  This is done through an AJAX-style
+       call back to the server with no additional code required of the application.
+    </p>
+
+<code class="block">
+ at Stateful
+ at Name("hotelSearch")
+ at Scope(ScopeType.SESSION)
+ at LoggedIn
+public class HotelSearchingAction implements HotelSearching
+{
+   @PersistenceContext
+   private EntityManager em;
+   
+   private String searchString;
+   private int pageSize = 10;
+   private int page;
+   
+   @DataModel
+   private List&lt;Hotel&gt; hotels;
+   
+   public void find()
+   {
+      page = 0;
+      queryHotels();
+   }
+   public void nextPage()
+   {
+      page++;
+      queryHotels();
+   }
+      
+   private void queryHotels()
+   {
+      hotels = em.createQuery("select h from Hotel h where lower(h.name) " + 
+                              "like #{pattern} or lower(h.city) like #{pattern} " + 
+                              "or lower(h.zip) like #{pattern} or " + 
+                              "lower(h.address) like #{pattern}")
+            .setMaxResults(pageSize)
+            .setFirstResult( page * pageSize )
+            .getResultList();
+   }
+   
+   public boolean isNextPageAvailable()
+   {
+      return hotels!=null && hotels.size()==pageSize;
+   }
+   
+   public int getPageSize() {
+      return pageSize;
+   }
+   
+   public void setPageSize(int pageSize) {
+      this.pageSize = pageSize;
+   }
+   
+   @Factory(value="pattern", scope=ScopeType.EVENT)
+   public String getSearchPattern()
+   {
+      return searchString==null ? 
+            "%" : '%' + searchString.toLowerCase().replace('*', '%') + '%';
+   }
+   
+   public String getSearchString()
+   {
+      return searchString;
+   }
+   
+   public void setSearchString(String searchString)
+   {
+      this.searchString = searchString;
+   }
+   
+   @Remove
+   public void destroy() {}
+}</code>
+
+    <p>
+       The <code>find()</code> method retrieves a list of hotels from the database and
+       initializes the <code>hotels</code> field. The <code>hotels</code> field is marked 
+       with the <code>@DataModel</code> annotation, so when the <code>find()</code> method
+       returns, Seam outjects an instance of <code>ListDataModel</code> to a context
+       variable named <code>hotels</code>. So, when the search page is re-rendered, the
+       result list is available to the JSF <code>dataTable</code>. 
+       Each row of the data table has an associated command button or link 
+       (see below). 
+    </p>
+
+<code class="block">
+&lt;h:outputText value="No Hotels Found" 
+              rendered="#{hotels != null and hotels.rowCount==0}"/&gt;
+&lt;h:dataTable value="#{hotels}" var="hot" rendered="#{hotels.rowCount>0}"&gt;
+	&lt;h:column&gt;
+		&lt;f:facet name="header"&gt;Name&lt;/f:facet&gt;
+		#{hot.name}
+	&lt;/h:column&gt;
+	&lt;h:column&gt;
+		&lt;f:facet name="header"&gt;Address&lt;/f:facet&gt;
+		#{hot.address}
+	&lt;/h:column&gt;
+	&lt;h:column&gt;
+		&lt;f:facet name="header"&gt;City, State&lt;/f:facet&gt;
+		#{hot.city}, #{hot.state}
+	&lt;/h:column&gt;
+	&lt;h:column&gt;
+		&lt;f:facet name="header"&gt;Zip&lt;/f:facet&gt;
+		#{hot.zip}
+	&lt;/h:column&gt;
+	&lt;h:column&gt;
+		&lt;f:facet name="header"&gt;Action&lt;/f:facet&gt;
+		&lt;s:link value="View Hotel" 
+                        action="#{hotelBooking.selectHotel(hot)}"/&gt;
+	&lt;/h:column&gt;
+&lt;/h:dataTable&gt;
+</code>
+
+    <p>
+       The "View Hotel" link is the above mentioned command link associated
+       with each row of the data table. It is implemented 
+       using a Seam <code>&lt;s:link&gt;</code>, which is part of Seam's 
+       extension of JSF controls.
+       This JSF control let's us call an action, and pass a request parameter, without 
+       submitting any JSF form. The advantage of <code>&lt;s:link&gt;</code> is that, 
+       unlike a standard JSF <code>&lt;h:commandLink&gt;</code>, there is no JavaScript 
+       used, so "open link in new tab" works seamlessly.
+    </p>
+    <p>
+       When this link is clicked, the <code>selectHotel()</code> method of the
+       <code>HotelBookingAction</code> bean is called with the <code>hot</code>
+       parameter that is specified in the query.  The parameter values are evaluated
+       at invocation time, not when the link is generated, so the <code>&lt;s:link&gt;</code>
+       tag adds a dataModelSelection parameter that indicates the value of the 
+       <code>hot</code> loop variable for the given row.</p>
+    <p>  The <code>selectHotel()</code> method merges the selected hotel into 
+       the current persistence context (in case the same
+       hotel has been accessed before in the same session),
+       and starts a Seam conversation. We will discuss Seam conversations
+       in the next step.
+    </p>
+    
+<code class="block">
+ at Stateful
+ at Name("hotelBooking")
+ at LoggedIn
+public class HotelBookingAction implements HotelBooking
+{
+
+   ... ...
+   
+   @Begin
+   public void selectHotel(Hotel selectedHotel)
+   {
+      hotel = em.merge(selectedHotel);
+   }
+}
+</code>
+
+       <form>
+          <input type="button" value="Close Window" onclick="window.close()"/>
+       </form>
+
+  </div>
+</div>
+
+</body>
+</html>

Added: branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/webapp/exp/registerExp.html
===================================================================
--- branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/webapp/exp/registerExp.html	                        (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/webapp/exp/registerExp.html	2012-08-20 14:14:25 UTC (rev 15060)
@@ -0,0 +1,229 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+          "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
+<head>
+	<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
+	<title>In-depth Explanation</title>
+	<link href="../css/trailblazer_main.css" rel="stylesheet" type="text/css" />
+</head>
+
+<body>
+
+<div id="main">
+  <div class="trail">
+    <div class="numbox">3</div>
+    <h2>What happens in the registration process?</h2>
+    <img src="img/header_line.gif" />
+    
+       <form>
+          <input type="button" value="Close Window" onclick="window.close()"/>
+       </form>
+
+    <p>
+       The register.xhtml JSF form captures the user input for new account
+       registration. It validates the user input, binds the data to a 
+       Seam data component, and invokes a Seam UI event handler method
+       when the form is submitted.
+    </p>
+    
+<code class="block">
+&lt;s:validateAll&gt;
+&lt;div class="entry"&gt;
+    &lt;div class="label"&gt;
+        &lt;h:outputLabel for="username">Username:&lt;/h:outputLabel&gt;
+    &lt;/div&gt;
+    &lt;div class="input"&gt;
+        &lt;h:inputText id="username" value="#{user.username}"/&gt;&lt;br/&gt;
+        &lt;span class="errors"&gt;&lt;h:message for="username" /&gt;&lt;/span&gt;
+    &lt;/div&gt;
+&lt;/div&gt;
+&lt;div class="entry"&gt;
+    &lt;div class="label"&gt;
+        &lt;h:outputLabel for="name">Real Name:&lt;/h:outputLabel&gt;
+    &lt;/div&gt;
+    &lt;div class="input"&gt;
+        &lt;h:inputText id="name" value="#{user.name}" /&gt;&lt;br/&gt;
+        &lt;span class="errors">&lt;h:message for="name" /&gt;&lt;/span&gt;
+    &lt;/div&gt;
+&lt;/div&gt;
+&lt;/s:validateAll&gt;
+
+... ...
+
+    &lt;div class="input"&gt;
+        &lt;h:commandButton value="Register" 
+                         action="#{register.register}" 
+                         class="button"/&gt;
+        &lt;h:commandButton value="Cancel" action="login" class="button"/&gt;
+    &lt;/div&gt;
+</code>
+
+   <p>
+      The form fields are bound to properties of a Seam component named
+      <code>user</code> via JSF EL value binding expressions such as
+      <code>#{user.username}</code>. The form submit button is bound
+      to the <code>register()</code> method of the Seam component named
+      <code>register</code> using the JSF method binding expression 
+      <code>#{register.register}</code>.
+   </p>
+
+   <p>
+       Notice that the input fields are enclosed by a <code>&lt;s:validateAll</code>
+       tag. This tag is part of Seam's extension to JSF. It tells the Seam
+       runtime to validate those input fields when the form is submitted.
+       The validation conditions are specified on the entity bean classes
+       those input fields map to (e.g., here the validation condition is
+       on the <code>User</code> class, see later).
+       This JSF form also includes <code>&lt;h:message&gt;</code> tags that
+       will display the results of any JSF validation failures.
+    </p>
+
+   <p>
+      The <code>User</code> class is an EJB 3.0 entity bean with a 
+      <code>@Name</code> annotation that binds the bean instance to a
+      context variable named <code>user</code>. In addition to the standard 
+      EJB 3.0 O/R mapping metadata, this bean features several Hibernate 
+      Validator annotations such as 
+      <code>@NotNull</code>, <code>@Length</code>. Due to the 
+      <code>&lt;s:validateAll</code> tag in the form, these constraints are 
+      automatically validated by Seam when the form is submitted. If the user 
+      enters invalid data in the JSF form, the form will be redisplayed with 
+      error messages.
+   </p>
+
+<code class="block">
+ at Entity
+ at Name("user")
+ at Scope(SESSION)
+public class User implements Serializable
+{
+   private String username;
+   private String password;
+   private String name;
+   
+   public User(String name, String password, String username)
+   {
+      this.name = name;
+      this.password = password;
+      this.username = username;
+   }
+   
+   public User() {}
+
+   @NotNull
+   @Length(max=100)
+   public String getName()
+   {
+      return name;
+   }
+   public void setName(String name)
+   {
+      this.name = name;
+   }
+   
+   @NotNull
+   @Length(min=5, max=15)
+   public String getPassword()
+   {
+      return password;
+   }
+   public void setPassword(String password)
+   {
+      this.password = password;
+   }
+   
+   @Id
+   @Length(min=5, max=15)
+   public String getUsername()
+   {
+      return username;
+   }
+   public void setUsername(String username)
+   {
+      this.username = username;
+   }
+   
+}</code>
+
+    <p>
+       <code>RegisterAction</code> is an EJB 3.0 stateful session bean 
+       bound to the Seam context variable named <code>register</code>. 
+       The <code>register()</code> method is invoked  when the form is 
+       submitted.
+    </p>
+
+<code class="block">
+ at Stateful
+ at Scope(EVENT)
+ at Name("register")
+public class RegisterAction implements Register
+{
+
+   @In
+   private User user;
+   
+   @PersistenceContext
+   private EntityManager em;
+   
+   @In(create=true)
+   private transient FacesMessages facesMessages;
+   
+   private String verify;
+   
+   public String register()
+   {
+      if ( user.getPassword().equals(verify) )
+      {
+         List existing = em.createQuery("select username from User " + 
+                                        "where username=:username")
+            .setParameter("username", user.getUsername())
+            .getResultList();
+         if (existing.size()==0)
+         {
+            em.persist(user);
+            return "login";
+         }
+         else
+         {
+            facesMessages.add("username #{user.username} already exists");
+            return null;
+         }
+      }
+      else 
+      {
+         facesMessages.add("re-enter your password");
+         verify=null;
+         return null;
+      }
+   }
+
+   public String getVerify()
+   {
+      return verify;
+   }
+
+   public void setVerify(String verify)
+   {
+      this.verify = verify;
+   }
+   
+   @Destroy @Remove
+   public void destroy() {}
+}</code>
+
+    <p>
+       The <code>@In</code> annotations inject Seam components into the <code>RegisterAction</code>
+       bean. The <code>user</code> component is our entity bean, of course. The <code>facesMessages</code> 
+       component is a built-in Seam component that makes it very easy to display templated and localized
+       messages to the user, even when redirect after post is used.
+    </p>
+
+       <form>
+          <input type="button" value="Close Window" onclick="window.close()"/>
+       </form>
+
+  </div>
+</div>
+
+</body>
+</html>

Added: branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/webapp/exp/workspaceExp.html
===================================================================
--- branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/webapp/exp/workspaceExp.html	                        (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/webapp/exp/workspaceExp.html	2012-08-20 14:14:25 UTC (rev 15060)
@@ -0,0 +1,92 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+          "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
+<head>
+	<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
+	<title>In-depth Explanation</title>
+	<link href="../css/trailblazer_main.css" rel="stylesheet" type="text/css" />
+</head>
+
+<body>
+
+<div id="main">
+  <div class="trail">
+    <div class="numbox">6</div>
+    <h2>The Workspace List</h2>
+    <img src="../img/header_line.gif" />
+    
+    <p>
+       <center>
+       <form>
+          <INPUT type="button" value="Close Window" onclick="window.close()">
+       </form>
+       </center>
+    </p>
+
+    <p>
+       The workspace list allows the user to switch between multiple
+       conversations from the same browser tab. There is no Java code
+       to write, just the following JSF code to include:
+    </p>
+
+<code class="block">
+&lt;h:dataTable value="#{conversationList}" var="entry"&gt;
+  &lt;h:column&gt;
+    &lt;h:commandLink action="#{entry.select}" value="#{entry.description}"/&gt;
+    &nbsp;
+    &lt;h:outputText value="[current]" rendered="#{entry.current}"/&gt;
+  &lt;/h:column&gt;
+  &lt;h:column&gt;
+    &lt;h:outputText value="#{entry.startDatetime}"&gt;
+      &lt;f:convertDateTime type="time" pattern="hh:mm"/&gt;
+    &lt;/h:outputText&gt;
+    -
+    &lt;h:outputText value="#{entry.lastDatetime}"&gt;
+      &lt;f:convertDateTime type="time" pattern="hh:mm"/&gt;
+    &lt;/h:outputText&gt;
+  &lt;/h:column&gt;
+&lt;/h:dataTable&gt;
+</code>
+
+    <p>
+       We do need to specify what text will be displayed by <code>#{entry.description}</code>. 
+       We do this by setting the <code>description</code> value for each page in <code>pages.xml</code>.
+    </p>
+
+<code class="block">
+&lt;pages&gt;
+   &lt;!-- ... --&gt;
+   &lt;page view-id="/hotel.xhtml" 
+         conversation-required="true" 
+	 login-required="true"&gt;
+          
+       &lt;description&gt;View hotel: #{hotel.name}&lt;/description&gt;
+       &lt;!-- ... --&gt;
+    &lt;/page&gt;
+
+    &lt;page view-id="/book.xhtml" 
+             conversation-required="true" 
+	     login-required="true"&gt;
+      
+        &lt;description&gt;Book hotel: #{hotel.name}&lt;/description&gt;
+        &lt;!-- ... --&gt;
+    &lt;/page&gt;
+&lt;pages&gt;
+</code>
+
+    <p>
+       Note that you don't need the <code>pages.xml</code> file if you don't want the
+       workspace list in your application.
+    </p>
+
+    <p>
+       <form>
+      <input type="button" value="Close Window" onclick="window.close()"/>
+       </form>
+    </p>
+
+  </div>
+</div>
+
+</body>
+</html>

Added: branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/webapp/home.xhtml
===================================================================
--- branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/webapp/home.xhtml	                        (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/webapp/home.xhtml	2012-08-20 14:14:25 UTC (rev 15060)
@@ -0,0 +1,81 @@
+<!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.org/schema/seam/taglib">
+<h:head>
+	<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
+	<title>JBoss Suites: Seam Framework</title>
+	<link href="css/screen.css" rel="stylesheet" type="text/css" />
+</h:head>
+<body id="pgHome">
+<f:view>
+<div id="document">
+	<div id="header">
+		<div id="title"><img src="img/hdr.title.gif" alt="JBoss Suites: seam framework demo"/></div>
+	</div>
+	<div id="container">
+		<div id="sidebar">
+            <h:form id="login">
+			<fieldset>
+				<div>
+					<h:outputLabel id="UsernameLabel" for="username">Login Name</h:outputLabel>
+					<h:inputText id="username" value="#{identity.username}" style="width: 175px;"/>
+					<div class="errors"><h:message id="UsernameMessage" for="username"/></div>
+				</div>
+				<div>
+					<h:outputLabel id="PasswordLabel" for="password">Password</h:outputLabel>
+					<h:inputSecret id="password" value="#{identity.password}" style="width: 175px;"/>
+				</div>
+				<div class="errors"><h:messages id="messages" globalOnly="true"/></div>
+				<div class="buttonBox"><h:commandButton id="login" action="#{identity.quietLogin}" value="Account Login"/></div>
+				<div class="notes"><s:link id="register" view="/register.xhtml" value="Register New User"/></div>
+                <div class="subnotes">
+                    Or use a demo account:
+                    <ul>
+                        <li>gavin/foobar</li>
+                        <li>demo/demo</li>
+                    </ul>
+                </div>
+			</fieldset>
+            </h:form>
+		</div>
+		<div id="content">
+			<div class="section">
+				
+			    <h1>About this example application</h1>
+			    
+			    <p>
+			       This sample application demonstrates how easy it is to develop stateful web 
+			       applications using JBoss Seam. Just register, login, and book a room to see 
+			       Seam in action. Throughout the application you'll see popup links like 
+			       the ones at the bottom of this page. Click them to see how the application 
+			       works under the hood.
+                </p>
+			    
+			    <p>
+			       Note: Please do NOT enter personal information or your credit card number in 
+			       this sample application.
+			    </p>
+			    
+			    <p>
+			       <a href="#" onclick="window.open('exp/introExp.html','exp','width=752,height=500,scrollbars=yes');">
+			          What is JBoss Seam?
+			       </a>
+                </p>
+			    
+			    <p>
+			       <a href="#" onclick="window.open('exp/loginExp.html','exp','width=752,height=500,scrollbars=yes');">
+			          What happens when I login?
+			       </a>
+                </p>
+								
+			</div>
+		</div>
+	</div>
+	<div id="footer">Created with JBoss EJB 3.0, Seam, JSF (Mojarra), and Facelets</div>
+</div>
+</f:view>
+</body>
+</html>

Added: branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/webapp/hotel.xhtml
===================================================================
--- branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/webapp/hotel.xhtml	                        (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/webapp/hotel.xhtml	2012-08-20 14:14:25 UTC (rev 15060)
@@ -0,0 +1,56 @@
+<!DOCTYPE composition PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<ui:composition 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.org/schema/seam/taglib"
+				template="template.xhtml">
+
+<!-- content -->
+<ui:define name="content">
+
+<div class="section">
+	<h1>View Hotel</h1>
+</div>
+
+<div class="section">
+	<ui:include src="hotelview.xhtml"/>
+
+	<div class="buttonBox">
+		<h:form id="hotel">
+			<h:commandButton id="bookHotel" action="#{hotelBooking.bookHotel}" value="Book Hotel"/>
+			&#160;
+			<h:commandButton id="cancel" action="#{hotelBooking.cancel}" value="Back to Search"/>
+		</h:form>
+	</div>
+			
+
+</div>
+
+</ui:define>
+
+<!-- sidebar -->
+<ui:define name="sidebar">
+
+<h1>Don't kill your database</h1>
+<p>
+    Keeping conversational state in memory in the middle tier is a great way to
+    improve your application's scalability. It saves hitting the database every
+    time we refresh a page, to re-read the data we were just looking at five 
+    seconds ago. By using Seam's conversation context, we get a natural cache 
+    of data associated with the what the user is currently doing. By nature, 
+    this cache has a more efficient eviction policy than the MRU-type algorithms 
+    used by a typical second-level data cache in an O/R mapping engine like
+    Hibernate (at least for some kinds of data). Of course, you should use 
+    a clever combination of second-level caching and conversational data
+    caching to achieve the best performance for your application.
+</p>
+<p>
+   <a href="#" onclick="window.open('exp/bookingExp.html','exp','width=752,height=500,scrollbars=yes');">
+      How does the hotel booking wizard work?
+   </a>
+</p>
+
+</ui:define>
+
+</ui:composition>

Added: branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/webapp/hotelview.xhtml
===================================================================
--- branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/webapp/hotelview.xhtml	                        (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/webapp/hotelview.xhtml	2012-08-20 14:14:25 UTC (rev 15060)
@@ -0,0 +1,52 @@
+<!DOCTYPE composition PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<ui:composition 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.org/schema/seam/taglib">
+    
+    <s:decorate id="DecorateName" template="display.xhtml">             
+		<ui:define name="label">Name:</ui:define>
+		#{hotel.name}
+	</s:decorate>
+	
+    <s:decorate id="DecorateAddress" template="display.xhtml">             
+		<ui:define name="label">Address:</ui:define>
+		#{hotel.address}
+	</s:decorate>
+	
+    <s:decorate id="DecorateCity" template="display.xhtml">             
+		<ui:define name="label">City:</ui:define>
+		#{hotel.city}
+	</s:decorate>
+	
+    <s:decorate id="DecorateState" template="display.xhtml">             
+		<ui:define name="label">State:</ui:define>
+		#{hotel.state}
+	</s:decorate>
+	
+    <s:decorate id="DecorateZip" template="display.xhtml">             
+		<ui:define name="label">Zip:</ui:define>
+		#{hotel.zip}
+	</s:decorate>
+	
+    <s:decorate id="DecorateCountry" template="display.xhtml">             
+		<ui:define name="label">Country:</ui:define>
+		#{hotel.country}
+	</s:decorate>
+	
+    <s:decorate id="DecorateNightlyRate" template="display.xhtml">             
+		<ui:define name="label">Nightly rate:</ui:define>
+		<h:outputText id="HotelPrice" value="#{hotel.price}">
+			<f:convertNumber type="currency" currencySymbol="$"/>
+		</h:outputText>
+	</s:decorate>
+	
+	<s:decorate id="DecorateRecentBooking" template="display.xhtml" rendered="#{not empty recentBookings.getMostRecentBookingDate(hotel.id)}">
+		<ui:define name="label">Most Recent booking</ui:define>
+		<h:outputText value="#{recentBookings.getMostRecentBookingDate(hotel.id)}">
+		  <f:converter converterId="org.jboss.seam.example.booking.RecentDateConverter"/>
+		</h:outputText>
+	</s:decorate>
+	  
+</ui:composition>

Added: branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/webapp/img/bg.gif
===================================================================
--- branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/webapp/img/bg.gif	                        (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/webapp/img/bg.gif	2012-08-20 14:14:25 UTC (rev 15060)
@@ -0,0 +1,3 @@
+GIF89aø
+
+
\ No newline at end of file

Added: branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/webapp/img/btn.bg.gif
===================================================================
--- branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/webapp/img/btn.bg.gif	                        (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/webapp/img/btn.bg.gif	2012-08-20 14:14:25 UTC (rev 15060)
@@ -0,0 +1 @@
+GIF89a
\ No newline at end of file

Added: branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/webapp/img/cal-next.png
===================================================================
--- branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/webapp/img/cal-next.png	                        (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/webapp/img/cal-next.png	2012-08-20 14:14:25 UTC (rev 15060)
@@ -0,0 +1,6 @@
+‰PNG
+
+
\ No newline at end of file

Added: branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/webapp/img/cal-prev.png
===================================================================
--- branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/webapp/img/cal-prev.png	                        (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/webapp/img/cal-prev.png	2012-08-20 14:14:25 UTC (rev 15060)
@@ -0,0 +1,5 @@
+‰PNG
+
+
\ No newline at end of file

Added: branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/webapp/img/cnt.bg.gif
===================================================================
--- branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/webapp/img/cnt.bg.gif	                        (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/webapp/img/cnt.bg.gif	2012-08-20 14:14:25 UTC (rev 15060)
@@ -0,0 +1 @@
+GIF89a
\ No newline at end of file

Added: branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/webapp/img/dtpick.gif
===================================================================
--- branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/webapp/img/dtpick.gif	                        (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/webapp/img/dtpick.gif	2012-08-20 14:14:25 UTC (rev 15060)
@@ -0,0 +1,2 @@
+GIF89a
\ No newline at end of file

Added: branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/webapp/img/hdr.ad.jpg
===================================================================
--- branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/webapp/img/hdr.ad.jpg	                        (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/webapp/img/hdr.ad.jpg	2012-08-20 14:14:25 UTC (rev 15060)
@@ -0,0 +1,391 @@
+ÿØÿà
+
+
+
+
+
+
+
+ÿÂ
+
+ljAAX   á8Òƒ„æ(9©Iœ‘ó9ˆ
+DSOiô¤©–”HK„ƒbqª,,´*âMˆhÞ)ÜÕSh p"Æ,hBÉÐààPx<'!ÈàFyþê»H°ËK,êQvà¶rCNiP¡‡ÔŒrµ$»G•ìbqHÆf­Gpë¤Tä’HrK2¤(EH$&	ñ+iAÂ’¦z‘§N‡1Äàš})îH¹Ä(”8fÀËP²±¦à—š€[Šzq‚™J˜LˆÁÁÁCÄàxs8\aßÏ÷ÇKŸÉÜ9!¥	ÌÃh,¾jEVž—#Øð{j—Ÿs页ª±èxsÒ¡£ŠH‰'¾C¤à‘''"DˆäÑ b&Ø¢A²X±q¶ú“®Ó9ªd%Zàb óÐõ;*ãM¨@œE8¢ª`ø&”¬lbƒÈ‰‘Âààæp¸8888<³ÐäqW8meðÁÚ|V‹*%¥Y†¶ùhÓ‡kèò>‡ƒÃóþ]t:NŸhzo–ùnc´”%&¨PQ801CÍm´Î
+q&Ôpѵ;¦‚"ú²¢Gm€àsH1Å0pps88JŽùï7ã³Îøj‹\狲ŠÒæäCZÂÕ½
+eÇ¡Êö=Ž#Ïù¶Ñi:maààroC“sNB°|ì½3Pp*j…kƒ•²k}¶J
+<{®7[Eá:}±de¨êH›ƒöÊÃ\§¬Ôœae¨êv:q&Ðj8
+jÆò£.0@¼Ó,¶…¶‚ƒ„ƒ“%ÁÁÌ„!„ N!ð(e}E|nÛ;à9¬ÎØÔiXïok2©Ð­aª9²ó»™ô<
+??çÓGs¦ÖÇ!Àä<nCƒ¤ ÄÑhßiÀ©+81YhÙ{­ñp(gxú&Âë)Þ£Ûæ„ÎÆVæ‰ÒO×+
+q"³QF¨\µ-@ËA¦áD`Ô48e9#\|æ%L‰eç¤ÉÊ‚e¸zÂ>B‰̐H›C)èr([åwځ´³;eI¦r+³Î÷|ú[@¬Ã–ƒcPÒÐue%%cÃϰ½%ΣIPx(<Cš¬’ƒ3ÐäqÁÈáôŠ¼ôj{rT(Póí&YNé-¸1PyØêì·ÂËlJ¼ä©lÒ'P¹è&z	2¨Q5
+Nd×ô1ápZsôÏCZÎz@¢ZFÈØäp(pp(¦hÚ‡´Ç%§"<Ó·%Œ®ëà6–gl¨´ÎEg§é|{…9l(cZŒä¡àær<÷7¥¥¨´á8CØä†
+üj¦OIÎ*»IQɨ"1yè‰î4ÉÂáå9ö7+éÜ)ÐéŒj„ÏH­ô<âôÏ™Áv‰²*±3Ð<ônB6!  [™6ÃÃûñAp[su6lšlÄE*Ò&£b¦¢àPcNÒQQ¬¼—²Žõ*ÝöV ],ÎÙPi›Õتô¾M
+—Ía–(æ¬÷É-YDéò¼½N‘šzOE\•šrmy´4grÕ_¿ÀHû›{<îlj¢²ºæÉ47†wH^}´|úNØZ=0ŽhHÒ6õž‡œV™ó8eÇ5z	žg¨“P*ƒP P¤Ûô0Ap[ót—&š!BX¶AJQR‚¦”§"'š"(™©¥å»y.1½6 M,ÖÙguÍêìSô®]Nƒ™‡ZFZx7nxm
+rDÔØmSeËZ6¬™LMzs^×4\ÛÂÖ.—\¦éÅ­†«ùÒdû:\éûbVw\½}C§l-á¡cHÛÖzqZgÌàIm‡Øùhz‰5¸A€Ôpç$›ÎŸ»”bK½çÚáÍyÏK„nMÀ¨Pr9¤pKD’§*$	àÀú\*;œoK¨K5¶Y½s|݈ý'›Ss˜u¤a_¢!í„t„Ó6ŒœtÒJÎ{ÏQ†¤Ågõne#¼Þ)É•É¨}¸ÅR³Q„’Ѩ³ÚÎ4·¨Ìé”Nn¹·»ÃQiÚ¥¤¼cLHÒZžï<ÝrPàdÓaÇ64X± ‘cMA.6!JVw–§ÑààñùßÖb'¼èqßÃtê²çÖ&šÄg¤ôÈD¢|9G"‚£éqp\ãz¬mBjY³Ìë“æíèÜÚ›Va–
+Íi®%gDu(ZìèCBI‘ÉJ7*nb²Ü=qpZÅÄ'“@‰®A24·Ï[­#!®:ëÁ8úäçÜ:-Ñ£¼#(Y±UÊÑúd~¹yÏpç-Ncg ‘açbÅÁ$cb|‚Eo¦Z?C‡‘ãsÓëë	tŠ^}ü*ºí9¶‚¥Àà‘ „>’E=ÁÀ¡ôxxw8Þ»pKK1¶yms’jÑW¢ádçJ,1¤mTíYZé•v¹“.ù‰•	L•*4L‰ µç3-ÅÛMX1aË4Í7H¯¤%¨ÄÉÒÓ=×,ÝæmM¯/EŸ>ÁQl-%ãBEˆ[Àº‹
+r´Ûœ›ÍÍ"p«,<õ;*	q&Äù
+ßLtÜj,¶ö™øíáUÙkͬ4”‡¥ =9„–’)Àä(<X?GBçÙáNcéeµŒ®¹½U¢¯IʤÆøX
+±4„š°Š|!l…a^‹†u,–Ú|hà*P]…cÑG”»Irayýd¤¬“”ª$[RE¦¸2“Åmϵ®ZŒ+ai/(Šl5JTŸ®Vûó•y¨¹ª5-C‹*q&ÔÑŠãLo»xø<ÂwÔ)Ñ8­<¥ôEÍÑNCÐàP{Wúämç[ž‚Å°s
+×Lš6£Êúñà¹Æ÷Sie¶ŒŽÙÉ5i7é°;¬Œü¬:,¡¾"ÖeF² Œv¦Þ		Iå÷ªeú~YÜüý òõC¤Ü°#CÚ"Z9.n¨¶Ë²Ú4̼ UM¾:3vÄi/(
+l%R4c›²ºÛšz”§Øk[–¢MA-‰±>L²nµÆû»‹ƒ-ŽôvjáŠè½3…<–±gTÄ;}2Ó«)Ì#•¥Dîc¢ùž:8.1Ó{ƒp-,¦ÓÛ)¢í¢ýMÀp󭍖ªˆiYERí•F™Øã¥Î;Ôuò?=áFŠóv=`e¼÷É]¾óô;=Û4’æ’\-‹|ŸDYè;7Ô²æVŠ©/
+'ÇQnOOUxŽ¨9°•+GÔ^m…¦¹=®
+©Å5Pé]ž£KblM,›Ý1½ô8¸3YmUFžS¬žå¬jšµ#OIÌhW-'rŒpJ'‰¢ù«>„eÆ:z;{9¬¶Ë¶RMØÅúv™g³«Äú£!7­Ó<nzÖ2×Lé³ÐüïuÓË‹Ëa“³¨å£g[-9²ÓWÕ4±wŽ]ZQq¶5ñ{]ðÃcÑÞÏ|29i¬Ó,æ[
+Ùûc.åå¥ÿ
+L Êe®—\À©¶jY¬Î=·¯Ó†wy”æAT§/TYé¢îãX§…lÛpԍs²¸:¦³¯ôÉñJg!ÔIÅ.$á–:¨•Låãþ*
+÷†+Ò2z½33lÜׂPT(£l2«pÚ{ƒª[ŽZ&ˆð
+ŸžZz;x’Œž€4‰€nÙùü³äÓE.’DÕm+!;:…Ãz j	‡ÅS`ÓS))â6Ý$­ñ
+æÃ
+›Ž¡ºx¢dP0Ϩ‡Ÿ Øm³Ò@p€ªŸ6È?F'
+ÕÌÉó'!Aƒd‘&Á¢›Y!Û/ô9\7ËÑruú%å ×"t•iBA8J†·
+D¡#—YZ:9»®[r®jŸ¢ÎܝN£Tõ7ŸTX$SN‚„Œá ÆΠšbé•ð³õTtÁo}xéuÊZž1Âæ"1UTá¨ê¯ïKh ø\?ÖœœÉ´PT½7*šhôÇdJ§AñCE‡´¿78žZ0ø¥›‰§ŠTΓyËy-êoé8sÌ%ˆc74
+i
+
+8ºÞ‡!Á"rÈà‘4/Nq^eg¡XìÆ´·3OTZ"Êhõ”MX¥é<ZævyóOçÁâp 4Ș0ãA€8óÕn©$šr-²#¤•¨¦¥–BR‚5MqmYØ9	Y)ÌÍ8%€éù×ne²ŒA²^¸½¼ž„mÆœ2ÇšŠ*ArÖTç ‘wÚbÄÚ†’àPàòˆìz$CÐæ(¸PÒ§éÂxØŒ´tÒ´ÊBk„Ä_ãvrèõÏ#Õ„ª´˜i¨ÃM4ŒÈîóÆþ§‡?…Ãh˜Æ2  0+c6±êa£“.^I³14vtS›4¦©&¦D£`µ×8-)êdi’“„¬àpœÅiC™À¢á 46"$àš*zš‰Ðª‚AQ¶
+Âäs9
+ÎGŒì(Ü…'"oDŠ•8颢3¥O™"Q\YJ»ÍÐõóä:16ki˾ç1D¡Ö³SÓë“Æàp•ˆŽ6D6‹“‰:IÒ§-O©¶¼äÒ%¸(IÀúJ׃Sb[éBŸ!,è‹Emš&ˆVKICƒƒ„¡ÁÁÌàæp p ¢N¡T‰œ&¡£8%°lC`(yìt¸oIàƒPr+wÆ·|êß› ÜéPñ¼Bi™·“[Yø·f>Ë­ò-µ
+cÇ]gG¤O0clŽ
+pü¬-ÁýTÁzÅ«·½µõ«ö›³PßnBoÈš›òD7Ë›ºØÛÛB„ð”Ô31Ú\ùC›”ª PMiCJ®W'”äQÉ™/B•¥1‘'¶
+ÓÜ¢¥ê‚jbn%9=<§QÉ›7CŽÝu-Õø`òqèŒÐ„náÞ£w22ÊsXbΛŸš×9¦€õËátR2Vaÿ
+¸äàœ£UEE@¡Ë w°ùGýàÉE»ã¸÷ËE¥1¿”þp
+·ÜÑQã»xzíÿ
+û=1íb†º˜Í/v‹½d<jœÛˆ^ûªzˆ“B*o21žm
+g·Óù
+H¤kSâÏF1pù­O7÷¥VnÔË.ã˶÷G	°0¨<CœœŠ(äƒÎn*?ó1œ7O">O•Lâ›ÜðvïwED|·’›ÖÇþÁƒ–<53[ŸmÔû‹³ü­íêsaræ§ó¡	‰Ýd”MþHÙü”r‹”EµL40ÜÅý\
+á®k¿‰t§Žb!RÚ-%mþoÇ•n?´p›
+[+¸‘µ¹jŽÊêGþŠù~–ý~›pÇn÷j‰Þ
+ÛÛ¦u³×ÑQ]ܶµ¯{íÙF[´ê,=Û±üÝ¿Æê®-Ìn¥£b1¸–ÛZ9¾–Áª}°»Ðìt¼‹o°YÌélç
+13¶c{ÔÑþpC¬‹W÷4ɐ¸“#SN¥*ï··©>µ´Œ´[x'òmÏöŠ*bª‚­·‚™J‘©è£’ßÍo„ð¿»ðèÏbí’9íŽW
+O¥Õ½Ë%Ø.Ú×_ÑÞÑ»5ùu¾Â+
+¤q®Ûi4`ÓQï	C“›W°§Ï¿ÝQQ;Áºûe[RYvÎêäB™“:(ÚÕ
+Ýü×sM·€Ü:]1DÍ®_Õ®m¥ß6û»«û»]ÂІM<¯øæòÖ6iu¾ïñÚ¬¯ívé¦ÜusÖòZIvÛ+K;ûÕy
+Í¢.Þ-ö¨a’yß°îqµ­tUé–âÆkbøb.sVl;‹…ÄqµöÖ[…žË;ç’j°&ìîýL¶óÛ^ov·[­Í¥Í¡‰·¾m³~›uÃä
+wã{mss³zûI?a›ƒÛ;¦c¢±Ü&kí¯›-ÅŒ¬V툪V¢µ¨¢â‹Š.ONEUT(;±JßSƒü—Ĥ©hXÃÁ•Üªˆ¨o,>Ú–µ«šä¬}Í0wƒpöØ7ǺÝ6Ú
+º{ymî¼
+¹¹ÿ
+)¹Klçëû.4­HóU86´#
+Yå™Ü”Tsß. M•Ni'°ôÛIŠ}¬ŒQC¸E2­w«à¿k~Õÿ
+féÃ$í©ˆ¼(6«û…kbßäJ×ÅL¥rM#cÖBP»ˆ/R‹ž›#õÀÌ-NÜ`
+çscš9‚9Æ?#âxhZÜ™U¡ÎŽp©ù„ÜF\¥†wF>?¼93âÛ±Mø–â™ñ+´ÏŠÊ{“b
+n‹ˆ,T)Ü–´ªq¢–V’@c9*æª
+ZPjÒ¹-L¿^ªÝ>êßKA~m(²«°–Î.vÝ Zm6„?j°"{MšHÔÆK+­¾?y*°Ûî-$Ãä^?TTZJ1¹v^»]‡/Nå¸[ll®¶¸C¨'pÉ#“!¸znÛxQÚäÔÛ;”ݲü–m7kô³”ݐ£³Âë­˜˜øªŒ—ˆ-×n0€j.TdªªªÔµ*­Jª¸‚´®ÙÄQˆÔ6‹pž8â³|7Â6Ô‚4]ƪªªªªá¦ô®Íé^’íz‚¿]"ýa_¬õŒGo‰¡€'9tò¢¡ZJw'\s†Ãò[žÝ¹÷_˜û‹mæØ6è]¥Ú´ÕÛjù3
+nÍØîÅêhÊ«®ê°Ô×šwHñü—ò}wÿÚ
+›Á(¹É¹×‰È3…¡hZU>‘Ù‰å(¡˜pJ MÎPÈìF'
+`QÁ¸µ.hâ\å­Ê.a9=Èd•Tq)¸W㎸)‰B¢ÐV’ƒ8‡ ÀàåL‡€Z9Ñ;`ШŠÑT1©\×4*‹J¢QQhRaN
+r-ÃJ(5QýzâCé
+z8Æo\
+8Š×1Ë_¤®q‰à»áTV¥Tã7®QÁ'†x5Z–¥©Å7Š”òEëQZŠªª*ª¹AãѵNÄpŠo¨æ¢¢9(†w&âQC
+ªªªªª­Hœ”Oäj8L4ª ÕN9C àž.•¡hZrdd%jZÔ¥­jCšr®j­KRÔªªª«ÉUELµC
+ñ©p‰â…©jZ–¥«0ªª¨ã@´…£'qªªµf‡BÒ©‡$qk˜}!È2Qš‚)‰Ü]+ITÉE¥6<ã
+pi’‹JÒ©õ”ZJÒsU-h¼­eìKÑ8±;‹¨-C0Ôs
+-+JÒ´ýiâ~+SV°»wuwqw8‘…S•S¸‡
+-
+˜QP*eª®4AS
+ŠŠŠŠŠŠŠŠ˜r\—%ÉQQQQQQQQQQQQQQQQQQQQQS…0¢¢¢§
+ŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠ¸Gø€?Êñ4TÂœ
+*‰e¯Ð£9'9ã®úaŸ¡<!ÀäœGÑ®j*g€<sôA;#q8Œ‡ŒpÔµ-\*qFG`xÇè‚9‰Ä`^µ­J¼S”tú
+å€ú€ˆàr7ˆÁÝxç(éĪ¯
+¨"«…p8ÓŠ¢¦!ËRWâq;¯ÑW¶ «’ŠŠŠŠœA‘ØãׂvÐ9ªrÈŽFâq8sÂœcˆÅŸH2;œaL…prg_º8mĪ¦bqFq0gÒ‡
+ªª«¸°µŒç
+ ŽÀbsž1Gœ›ˆ+ZÔ°µ^«ô
+Œ
+(c®‹¹\j©ƒUF *-\Ð(Q.I¸Wž¥E¨ ‹‚ªGŽzbôúAÀýÓWÜàÜ>é«ï‡ÜàÒš¾õO8:ª¯ºjû×a÷pEܪzŽX59ÉÕSˆx#!Ï÷MG©UÇïcT_tUPC®ªjûª¦á÷qDr@Õj	ˆ`
+x¥Gx#->ŠŠŠœ!ÁnTÃJ¢Ò¨ˆãœÇ„8cƒEE¥iDg;àî¼›J¢¢§Ô…TG†¸C5UPÊsµ;àq¦TTZPn5ÀpꪉUぐžÀñ*ª«…0
+Ƙ;.•§(úÓôZ•p< 8TT‹Bд-+NANTTTC%UpZxaUW
+-(7Œ~Ž¨ŽÂ¸Uðg
+ðjªµ-k¸»‹_}
+V µÕ•ÁhZVˆӏU^V¥­kZÖµ\•úÄü–—-vÊí®Òí.ÚÐ8G
+ ªªªª‡`JÖµ*ªªªðëõ5UÉUU^#ŠªB0¢Ò¨¨©–¹ÃOø×àÞEsãò\²8Nÿ
+O
+ÑÔEB^^¹ºUm>áÐß7Tã‘I i*oð¨Â')žèëݧÒp·£W;Š¥¡Âÿ
+q
+o†•*ÍÚª¸‚·¥º!O¯n•^&÷(»B“a¥o?b²}6èë݆X‰Á4Þ‰ÎJ§¡Tâœ?Hª½Truûžõv£C›tȯA«Ò†‚U™s4ÙÂÖÊ6Ø©÷/˜>1šƒœHú+tªî„ÿ
+
+|NL3pVÇBhœ`·YµbŒô¤	\%M§ ü.ÓîLцå§üÇ¢4'ôN
+ººiÚãغ~`Qé³¹üH÷OB®zi‹—ï5toXÕ7uìÒ¹þïðŽ)«QCêrdÖûÃt•ë3jÜpvƒO.èÂí#±S×…ºÑÓÐúäMU:'F
+ººˆ>£ZrER£N¤I~%r1»PM7xMq)ôYÜþ${§¡YÔøC!4ÅGõ
+º,Ñôi\ÿ
+¦®Î«QÂtÍ8hwº9ÈŸ1ð»O6W/6¹óA!·ë¤{
+>]æ²ô˜gíB29ÔÓôà–
+X´gBß®…·MX|²b`	†q20QŒN5¸d¶v§èÀîòÆœóª´ß\ØÉ57õ‡¦4uÌҝßo»
+>ë;V¬
+ï'÷oP]#÷GTÝ	ÑïLïaåûã œã57b†r­¼H’£a2­(—F9mMmZžU7q¾*1‘è}r ¦³§ƒ+2¨)/(q²jõÇ]˜+šÔå^ko4N9–óHÉã[;S‹ª
+bŸØÅãŽEq»iU"c,h!úžõáÂ:
+Ð:æiOï·Ý„fk{¸x'woP^÷¸uLׄè÷¦÷°òߨÕõË„b—±Ÿµ;ªR%âûrj1ä·$K”ìOÓЊíV)”üveQ'©÷<Õrد:ƒÝæ˜Å¦Gì)±nñ0y9m†Å2`‰¦L#'ˆ½¶2ç¸iºÑ˜ .Ý–Ô|Á<Ê›Ç
+K59oQ–¸ê{ׇè7G\Í)ýöû°óUÅK¿ÓSa-…¶¨†\ò€iœc%5ÈÆ3N©å^lIÝ ûéA¢' WŸ
+c=»ê6°‹ŒCa™zqÐBe"#!±N“Çå*è¦AüRàÚ¬o‰pXN…ù†Zù[ÚµžÜWª>Té‹J‘ÞøŸˆf
+H¦èYàŽp€&†´æÀî˜M]v1Ím˜dI¤#¼½÷æŸ~½ÈBè½”/òf&&o*ÿ
+”D1¨ ¡Q»Øž-
+,-©šÂ¡ä•ðÇ$T.ç&J5Ÿx}ÖýªÚ3(!vX@,ÀDz4´á:±†ƒ„ˆ¨ÎÔîó»Si±¾g3SÓ¥ïv@ª\©yÆ\Ç7ÿ
+œÐ³&D²ÞÊœ_“s\~³[”œeu‚{ùôNõ‘V(Q¤#o–Oµ^,$C„7\ê°Œ-p–$ê´Ø.XMÉ
+ky³ŒKa•tÌR€M¿ŽäBy–æí8Å­qVì±hA”êÄç@tÔ-Ç(}¨åÐčO<ï ÞT:¡†H•w˜o–LÀ"ó"áfòÑ©guÙkW+2ë­ºT@Ö Ls•‰â1ˆE6£šE7?uËÄtsuÌҏxaÿ
+‡‘KÌž4á6DgŠÅbá\%p•aVgAšUØÎðÃþÀê§ØUv^ÔGU¸!—©£Þ]¡4´ŽÔ÷‘j9­Ö¡GàâL¢S͘
+“xk Ó¤cWyJÕ錗¥ìWªÕ{ß•Ä’H:·”á-— NRY|8XlW^¡fG9ña^ªç=Ù\IF{…7MÌÝ:Fæ*ä¼TLÎ4)ßq¦,f-˜oÓ{˜ì­0@Õª÷ÝlI–„]Uî¨ë/8ÄûQ¦áMÖ²2:•æ×bÕuõœá’Ž„S.Ôp4¥NfZêÕ\ÿ
+­õüá)ìoÌ_Y˜‚ÏÙ‡õ‰8ýéÚþXØÏÚÇþÍÄþÝgvÈÞ¿ö³y?÷ÂvLÿ
+^ŠÞ}¶–æqo£mv|¬ÛØuˆ¡¡JПÒ°Ï[Rc;þàòùöIå²LD¥°|ɸïDwþmÞE
+UÙÞX²¥÷ÛÊr-oæÙ½á”ÃŒ7<åþ
+/h8§“mª$öÞúzJÍ%íÍJpâ&ïgÊ`®_hÐr秤x¢vIxwìÏBt%"–XʶØé
+yÉðIúÙ÷ÿ
+Eï;yÚNüoZYØ}´ƒÐAÕs;P¶c+KÞækOaö¦ë¨ÑžéüOÚõL
+ÌêÐúƒ(³Ã°BåC^Œÿ
+lC~JP—¥Å•gB
+f0Ñ
+÷~¨­'vs’é¼.~¤ah*n1ç(÷;ÎÕÜ&óçÉŒ†ˆÅ½Zxæ—å¿þJŽ<›éw6¤m„|Ô‹èËæï.K#¼	Vä—€óaÔr²v‚sOò[Ø3k/þ·hAÝMÝ-þã»pé,.Ÿf+Ãë§[†o¡8}úX†ÀŽ9,͈Ý@ïSÏÄ°×é™T[ÆòÙÚpèÆø^ QJºœEC0wÑŸ8k|Æ÷~lªü‘§;ˆÄ¾"Ôµ}lÄTCeˆã k©`ùÊ PF+·fÉ}¸Ú3F§›¦#Žâ…R÷o‹xƒŒßI†ÝÄ(¼7±/¨Å׿ÒRœ‹`Î<áTV5¥býø™:µ
+ç¬i‰Å¥Fâ>ãê}]:Ç›÷¤f´ß­øÄ9„¼2Lü‰Úz’W]D„GCAvz²ÚvÈÚÖûF?º¾Deì)oœpnÏ6÷j	hàGiL’½
+Ö«*®ë,7|AQI€)Qkª†2
+ï«­™F€jÙØ:¹„qcŒ”ä«3X”Ö­Âqw†©'&‚på"‹"úP€1Pï0YÛŠ¹µ”÷Eebæõ
+K@ÔÙ.[s™l¢óÿ
+®'ÒlA¾Ö¬T 6–ðPgÎoÔXt­³ ûöb,fwú¬ªQÎßÉkˆ[Õ}6”†×G¤QhK
+ÕŒ]Å0›z&nmzDW
+ý.n¯¨ßÉEyy䈑™a{á\cx¬‚þdËzYb
+î|‰Uûî
+Aš1¦x̼"¸þ r‘ud£GœÙºÕúJ}HRw!]7J(¥ïW(§ÀËírÃê6hÿ
+¢™NeЪîRõ6Ê›_LD;L9:°«Ò=!­{ômÄ¢q,ªévƒ®–Lnû8 tž’N¸u£Ö!œ'•ƒ½±AQv¦Ä#ÖD‡zeíþ`wµR¨Ü[¶ïÌÌÔŠ‰r²Ö§½°•¡`å«–Ò™êËé5eÔ ¨ç	%ÐX´¨p¼¤ù°zš8.šëŐÓnÂÕ’î½Æfm3„½¨‚6y¢T³ˆÞ®ƒ؉Œ¬¿˜&Xâ7X1up¶/§û*b±¶ëS©èö63úAÞõ‰ßƒao€ô‡«¾:y±¹Ü;"¶þu´{Ù;Û2ì™Q”¹®`íºD:Pg`B¸ÀôŒROß9q7ÀŒª-£›[ys(v™†ì>øé9L)âã7‚Qš½#·Ç?µ¾Ú>´æò²ÂÖ^ºø%ìUáÎl‚/'höÔÆa·bê¹`` `ßh¥vëÅj®œÌ˜ŠzšâºyÑsŒøf\¿h,ð}ìÅ0vjËë´C`m¾*9Ô0±Õ ·bVx®ó|ÿ
+v 5
+òyóÌ°:è—Žó}nÓ/>{DÀøù›
+åó	¯išù¶ýamX6jíï3Â¹pÛÀí™v7BåïÑ™¢»OT9mÅÞ›#Vï>ŠÝhɶc/m쌆÷ƒP`ËÔgrnð;³>öœÊå‡Õÿ
+Ј•*0iß$q-û’²ærÊÃXõ¶|KtïœFK˜hb†G׬uì2ΞS¿Á1U&Å‘ÿ
+Š¢•Äwús/ØÇÈÇÜ6Ùó_ÉžgþEJ´?²˜×ô_µÅÔÔTÙk¿›Dó&lðYÁïî°¥Rèç¤àÎõˆp2ô¸h^ZZ^[]§‰Ô=ã
+N{ƹ”ýÔ<á
+ï¿Ù^
+vÀWI¾ñXÉ_S|m‚/¬·a”ð…Ãÿ
+_E%eeK—))+¡Rþ!©ñ÷Mˆâñ Ä<%hiRôb6o¢¸ÅÄ•†%k¿CÀaáÇðfZ[- q6K”ð{ËK—/ðìÔÔþ
+Ù ë³Rå›b#ÍÇ
+8¼!Ö‹Òü%i¿CÀa0K—¢õ¨’¥x‰ºVeEA6xïGñlÔÔÃÂt*Bø´¹sn£6A¨ÙÔη¸:
+£¶¡/0Ði²<FlèÁ…EÐ뇅¨K›ãjêh<,câ7›¥ès9Õ²üMºšØx%£M’ô³n“G#´0—’Óv‹!vÒ¦Íkðƒ«© ð±ˆÞn×	ÌZ‚á·àtK% ßu&ÿ
+Ïá“~£À:
+%CÞà6jÃ+¤hˆ/I¡½ERöTh ´a A$
+t5u<KÑŒ|&þ®•Sgÿ
+›u6‰7Chf[A
+¥YfX°»¡.`°©R™z\¿¡6<‘?$Òô\¿ƒ¢á
+´ÄZ—l\x+Je2˜^—N‹¢„|5Òô½kQ¶—Ð"0Õ/Eþ*Л°ßAøhÑ—/óI±¬èÙ/CJяÛà`@ƒÀ©QBë‚Ž´†\R,¸:\¿ÄÍáÅ"·ã;ƒ˜¿•44ÊÒ¡¡R x7ø¦È²’²’ŠËõh­O1h#ùÁa´â-T@üGF†Ãu&[AI‰sÏA—.-L éSBºª•ð^‹KKKËAh¸qà¥T`Òérÿ
+¡Ññøü•Ëè1^5µ½/Eük—._„ҢЁ¢¥JÐ!*TB+oórúÑÒÐq4¿~2¥õ­,‡EJÒ´e˃¢þ;—à¦_H–Þqt¸>-B´hƒ
+ümJ•*T0é½¥	a¥Ù7–——ÓYU\Ä¢Q¥øn\¹råË—.^µ*V£Gð߀%g“Må£8ðšB\.F­xxh©_^WJiWÂè^ŒÆ|%ñV¥JðŠðRQ(˜˜˜ÐSCÇŒêR]ø¦\¹rô£+)Ƴf›t¿Ä¿ØÄЕý5*TIZ¿jœhøÃùÀæ¦uk˜Á·ã¤t%´º?þÿÚ
+"¦¥ HÂ6M¡³fØÎSé
+T¯Ë²;j3á64¯þ6hÓ*TIRô-„2´èh±Ôkr®	M@ÑÕ4©_h3yxq GñÃ^à0Ò´½7G]šOæ¦Z´\¼¾…GEÇ*¯¯ñ„KtÍ­Ìü"Éü5p‹à™Ñå:Ú0„›¥Â\–Ð¥J‹F\½oJ•*T©Z†—
+åøª+ñYIM þAJbÙ}cH4¸5	y}8K–Ìè4îüÕ*T¯	ÿ
+—p~,LRc]‰¢F’½mÚ‘ý^êP̉•dg·‰_íë{:¹pŠ‘þ!zCÚº•QlDJ Kü׋VÁÉnÓ‘Lã›{ßv°mkàs@ýó€_€š\¼ý
+€gáÚÕØÓãV×ýõ´Æ··œ¹̾¡þ™RÚðŽYõLò[ãðÌÆâŸ4À¡™ƒÈÞn%Ÿç¨¯s™ËÍÈ `Øm³Þ?…ÐH!«~Ç7È‡eà'C×spì6‘nÊ"LSù»ñQ^8Þ4¾í­ÛÞ`a²©QVÑhüÛÃÚ^ ´‘FÄرpO¥^ŠxnqÖè÷æ^ßf6‡—©!(AÖŒ#ÆGCQœq“+Ìí1™àü`ëe=Ô¦ÜlµÙÆ6¥—÷—ëÐ>¡÷˜UõÞ’? <˜Æ¼ ·äß)aÓZç­Ä”ó«üòDùb‚֔ܙÕ;¹YÃü=6E‡ƒE5¹Œ­q)»H‚{Ò}k#sâµ>¾¸¶õšWòî>éV—íF¨÷µ^¦~ÁG/u«9J°"ÿ
+‡sõÔ¬TI,!>ïžÚÛYÊÉ™«JOB=ÑÇ•áƒ)4ÈB’_AâE Š%w‚Þ^:3<îSŠy_
+îj¿»$‰©ŸªN ¼ØyCkâ!`äùpfò=^Ø-gjû}5†±ÐŽÅg æQÝnsÜ­[1'ów2¼J¯Rº{3!¤d7À*ß{iZ(	%æ)¦9š„L]'ªÂ”Ø“:­C¢Ð¯ô<¡£>Á©D΀S|úd’7áÞ·Ð	šgD:nŸI¬Þºé—ä~·eä¾°”™§Vƒ‡BeR×:ßÏPèjpŒaj’Ü…ý¼J™+ êÆ
+A¢3¹5ز~ù·‚žúâb–â÷ 8G§$Ñ‘8‹W%óŠƒ7ŠŒ!AHÖqX®°Wy_ŸÚÄa/§ÿ
+è‡Ð	Ù9=\¶Œˆy@|ÕîùbƒöêÜßÞÿ
+»NGþJ…‘T›nÑ4›<ÔÎÿ
+ôEÂ_¢³ºÙ²#¡ÿ
+€J.Vg­f“f‚™îAg™P€ðJ=D„ú_zÁcþ¤þJÇøŽ„÷â÷_s-ãÉÚ<¨²t…¢x5†V9¨‹ÍÊ|GvÈ[´7‚ü¬S\S“'®çÃ-⹩]é'îlìúF}ƒÌ:Û àoŠƒÖF
+U¿õ'mA…ÈÌè	>‘P{[Ù
+M¾’®¿TÁ=½û—nñžó¨ß°r¯æÍÌ=e½¶j'”°¸Ì¢ñ²¼ÁÞTPÊ=ßluc6Ìg¢¨;ÿ
+|ûF„í\»JKÛ”ÅØâU¼ôŒB)ÏsqàYåÞV~ÿ
+ê§Ájub[)fvárÂÍÌ÷Gx½â…òÑuEîâ>IŽwa‡gUîš#äoÒÞZžr’èKÁÃ=¢«88„­oAý‹/Xyƒ
+øIF><ŸŽ•{!'7Ǫ‘ûfè°!”L®ÇÅC¥¥%Æ„7%žºþÂ9u—©êÊ÷Ø}iò©u¤½Uq0{Ô4Nª|¥mèWÆ\‹µ̧Hþ 30™+7€é	jÊŠu%–XúEYh/¾&
+îã¬il¸Ž£‘‰[†Jvî’¶Ï:
+Ð@¸Œnw¦ÖSf
+–zÊGÇ7·þF‹Ð¢=˜ÅiƉn¡GºV`¶]bÀ,²4,[¤ŸXj¡TÎC–Ǥ6	ÍMrX5ç?R2úùûE`À3Þ
+y†Æ-ÞãælTwÄa×÷±yÖ	ʇüžcçoö-ú1ŽG{¿ˆ
+T—67óœ3èG6+È‹äNìÇ=y¶®T7†Ñ×øÇ@ÊÛ¿ò©mLRÃhòÉ),{—úA*/iú]íúb³û€Q@)³
+†j7U1«pYt²SxJÖ°ˆD³œ@›ÙËvŽëå_«\Öí7œ¥ÂÊa=.!–âl¢)#êFÈRöŠ†Z¶Õ1–k‰“¥æŒo,ƒ
+ãœÍ
+ëhÓÈc†`bìÈå ¶™
+‚½“¾ÒÑ*žÏQÌ9šÿ
+‹KÒ¦ÑÁœ·à¿QšéöS¬¨ü±ï®}Ѩj•ì¤'ÜRÞ¯ú€hEîªÐV6×/ò8€®,“nÇiY¿€hÑ6CÏL
+¸bç1dG̦¼ŒG_[6Ù{Ø0LsUº£qf`Úuû# ð/vÁ*ÎÀ
+¡é/¦ÝÅG™VòÆû³OìK[ºšåÌòB¹Ä.Þæ6µ™ÿ
+Ì*µŠÍCÉlÐy%¾n67\Ô"®n쾬CWí½­°÷Ž¤µéWˆ<ÚÇ°z°+ÖìZªéêà¨î;tŽ«cšìÜ<JWIS4€Ù—®Ë£ï™NíËͲmÉÁLC<E-Wu€ˆÛùôûJˆå‹¢o”»‡î(;Þ1“x¯ô°„I³LÍ<ç8éG¼QÅ!Sâ~˜ƒö±ß=	mþ̏þðeÌ¿CBûÜ
+‚†ãh!Õ‡P€JFðAv0LË¡ÔdTÚB…
+4,9%ìb© ÇÄ!­;œÜ"6d¼CœVùøq‘¦p¿ÏXkª©Ö˜èÜ£ö‰Iéy¦â²*ŽßìÝÕOÜUŽ‘ߝQª<ý0´VBF£Ò
+¹¹tíŽÒ×è?°¬ÿ
+e£è£Ö;¡²m˜vŽÌÃGK
+§Bõ@óK¨ÖåcÖ–xØ.ÜýT½õhWº‰8ÙšØÚ*â§<«•Š•\@†\cØm¤„MàÍñµCÊ(”`•Kx‹¦òŽ¢J’JÀQÒÖ쨗!É´öÀ²‘7XoØK½gaƒLKP/³ãLëØßð ¹%Úa®ÉÁrF„èÚ­j0ÙÛÓ6-«ÀÖ.¢ÊcqµbÇh-ÎÂæϘzK.ï¹éQܪ†øÆLu˜ö°à2&Nð(¸Úð@â2à‡uÞ,%ˆ”ÄÈ:@×Óî@NyЉ\ò3$¾gæŸqF}n—ý:•¶^Ó‹39²+g§û*O¶¨È´
+¥Lš½å•¡ƒ¾æ ±Ía
+‡X}<¥9¸PÚÛT®3kS¡èL R‰}®V¶•„zš”ìü‰§k«>±µ8A褼 ›öò†ýˆgôÚõb)róÞ»Æ5•¹Dvßf-¶³(€kJ¯mÙ“-S²¥›cÑÿ
+>R¨F—rË"ÒÆ(“ZDƒò:­À­ÛÄèÚý£T
+‹;ÍÏb
+Uu…Úa%^Å,½¥€ 
+˜ŠÌ‚³­Ì­^!‘¸—ƒBËe¥ñ8ÖïKܺà8‹ä˜l²¹S%ÇáBûAPßÀ#y,¢q³²î+P‘aÏ\Ìð¡åm0sLY‰gœ9,+MálpéÝ`¸•M ÝÉŒíq³4ܧ™t©
+Ù°AO	AFñZHÇHÈ7I¦¼Ðk%!íkäf–W½^ rérù¶v€„¨S'Êupo·ªoY€KÚ^..Qáû€ÉЀÈ6}ÄT
+J<Òv³ÚŒ²,¤ÈƵrð%æ%B¥ò¥—­Üƒüf¸†¥ð±f3灀MEXj
+£ôˆ‘fÕQ8;¨g4ÓµÜÊóå ;zÚ¶—ìÛjë,QßCtâXHôT^h4ÇÜ– Ús=†2¯*ˆ$U°ŒÐyÔ¡Žr»À*ðE•Àº±^Ôå
+-:T®¼b€7@›§C’µÍ’;±tÌ	@P
+ÛÊ ÝE6žõæt9Ñë]Õ,KáJ°ëÝמ”²¸33+ó72N×qÚ’”
+‹E“º	@Nð]ªkªDÜÄh€u”Óc¸5&Jý·(•‹@ÿ
+X p¨[B»7ˆ¥…Zªc1ÚÄÀhI13»7¯¶—‰R¶ÎZå…ÕNÂU½åê©nïIeמ<æí–ÿ
+piÃ]ãô´’mD5­	V¡ˆkËæY(m0£t°¥Š·­MK½\»ƒ-²i;_3æe‚¼^Þ’ûçGh±^fâ$ó=: ÝÆ8kF‹Ê»ä®ôñõfÂðE~\ÃèÒäid,7 èÉ%!”l#cÔT܉›a¶ïVÏYt'Žƒj[.ñ«ÅnEª¹X˜tݾŒ;Ïú@ÌIÚuFÛ>’Ç,·*ÿ
+a;MO²¼ôÀ¥¯¡	[P
+½¹”Íþòþˆ%$Ýôœÿ
+•ƒ]²Y ½¦Þ¶%ï2pA´.ð0ãž„©‡¢ÄãØŠ`Û$®ê»÷€¶Ð»*¡ÞNÜËK·`‚‹ÞÏì°k‘—,· n*,ìÂeƬO+奥E¸›;ÉêdѼÉÁ-°‡Óª„–¹Lˆ;nŸY›3²¢ ÿ
+Lv˜b·wïèÊ^ªÙuÉ‹‹&½â·%-Ó˜º6½Ä(®/
+E¥vOT¢Æ	N3ñ	Íš–«¨’ýfĽK*ß6+M˜^ñ7®­
+öŒ¢tÁAìN¢bÄü3Î`Ü®óßö?O­
+Þpù€
+2;%1“¿£Ž>%\/e¼ˆ  T±œˆS57H4´\ì–ªmW’okKcŠãÿ
+Ò
+»Lq±»ëD¸
+ߨ#yéC†±QË“{˜gk.§$ŽÛÉÞç@±»³Úˆ½Ók+¿0 Ë^ed󅺦°ÏS˜6¯ÌŽP	„¯XÑ,…µ×Þ
+g“-ö”ÍŽ'­Äl¦0¡ÇTeSÔ9õV÷ò˜þíØ5ÌÊ”ö!v2Z´Ûî{ʪè¼y°&d]ú)/;°lW•AãeëÖ›6ô+6Xw„”1[1³ÞלŠbP0qDôbþUÔ6hVˁÚ¥4÷HVÊÅ­‡mˆ‰ÄN)	uÙ˜ÆLåH68„1p: DjD¥·…5§Œ;î]7ˆ1} bJÄJZÜŠë¨%¶íï-²«Tí){\^mõDZA8QXà8_ì§Ø=—{]Ÿ0x`ðss5hèV=8—Ìp”B8Ä·/'|ù#â©ÙìDx³îzú¢´
++× õ„˜R¢÷“‹ÚÓúu|êÜÄÖ
+k;	g.eRV9;•;±Âù›&}Ò‰]b2…°
+Øô6?°*çŬѻ¢5ß« g¦#
+AÃjJ/¯^#¡m|Ë)€XmLǶU1AmŠˆ@ɳ­2ᙇöHKC·YPÃp«Ü^ÆýåìRç±Nòâ×wºå/Ê„±˜·¥Ë…nèÊТ*GZ ¦½¬A*ý-Á-Ž2½zˆù†Vò©|à]Ú¦F­çí)Bðþ©j/M‚uo5¼ß­Ò!mðhN¦<ÏdR„Û­WªÇÍÌ
+L±?#9×yùYÀ
+®e"ZÛ ¥Ó­ÌÓëz‘n	ý;Í°>ŸcrØ4F‡r¯¹”içþã’
+
+^Öq¹˜,½üåùlqƒv¡ÎÓ/œgfŒß¬E
+
+Úqˆ8ájÃ)¸»h)ݵ
+œÐÊú†0¢˜ôŽÖàÿ
+"»›G6£f‚ª‘Òðޝ`pjjËÐ_Ì´+>;ª![ìÐ>P»ÐËØ\IPPm®ªÄæá¾èÁ˜j)µÈ7í­¶½y‰‘#öcî'x(ô?©YtSÚ`¨Eº3‚žÑ¦Òj5¾»ÅxžllÍ=bÏÖYXròØí
+½›#ª’«kú©iP\oü‹>«Ò\=Ë<²ùˆir©>I*è8ªÎ`’šB¾‹¦ÜÃU+º>!4‡?1À!º‚iN–\˜’S¬¨½ enl(ô¥yöºÀy2dwÜ?t	ø_û–Á[è	Vü˜ iÌ^êk‰VD…åÐlL\À@;)a«w
+VÐÈ3†ZJ靳ÅoWé, ªµ¹„ÎSWN6Ž]¨·lW	ˆ²Ú]íùË¥
+)bŽj!×…ŠÁƒ
+Ê!°PÇb?azÖmO$D¸Ê}Y–ùæD±Äµ¯Rˆ#±]y\¼ÆOhy„¬‘Äþ0{J`«7¼ìÉ-k°ïåfó k‚m9¯Jœ¤<ª`5¼º¬=ªT¨K–Ë—.\¶_Yq•z¼.YµG¸Œ¾=^Qø¤wÉT¬#)(¬ý#-˾Ëï
+çLóñ1ãLÎaÑ£Î{iŽcZ÷heöÍØß´n—wÅÿ
+ËDë:‰Ô¾ñë½ãÖ{Ǩ÷Ç»?è0³ú36ïxõÞó¾÷×¼î½ç}ï;ïyß{Îûï;Ïxu^ñ7wÞwÙß{ÎûÞwÞó¾÷÷ÞwÞóº÷×¼î½çuï;¯x;°
+¦éP*sêCR88>s,¦ÒQ)Ò0L½;Dô"zDtb{Äõ‹Ö-*T©^'MÂx..‹AKð1G¡F1ÓteËŒFfåº\Y—/CðÔI¼Ôœ„a
+MâÆ.³òÒXKÕŠ;`–ðK%Û‘éF|uHÊ ã+At”ÄA4¨Í`
+áM¢:J•ãŠ>›ôV‹ÞŒÝâ¯ÂÞjinÐ<ñ˳I¸	z®#Äy‹+št\EÉê©Z*ŠÙF…zÌaÊ1”Ñ—â„(éqc`/Á`ÏíO
+ø/]æ¤äU™tJÔßAÚpœ#ÃÊ\¹qq6ǘ±Ò£¡¢k[K—À"‹$MÒæ<ÍäX±fÒ¢ð(¢Š1ÑÖå¥J0Ò¼¼5¥Ë—._ƒŽ¤ØÀJbÀ°S¡¼aÛFÂbè½n‚.\¿
++ƒ[æV¨²Úl—.,ÍÒåÅ›S˜ó7ÅŒÝGZ\_‹âß(©¤O_X&´’ÜðT9˜ÒåþN¼|
+®›¥Y5ˆo´mL8i\\M±ËÑqeË—ЪÂ-‰qˆD#rØ™¼–ÅKGgN±f\Yºø„nÀ Ò2ÒÐF:¾cÉàxņY,`é»ÆEA;²Åx6ž?
+«†%j(:ºG
+¢øzÐq¥Œn])e«,”ó›Ä¨¸F`w†nˆº4Îðª*,Éôƒhcð!ÒôtGGMókΨŠÁé,VÐZ¨gx^ó· t']6Â1èÐ3.㽧2µÚø¶Øá°‡Tqû÷,¹‰˜Æó‰a›{ÅVòq*0ë–#ˆÑ[Ê-Ý1Â’Ëyº”°°0·Îo¼Ìc¼C‰j]TA²g¡s9„~Fp¹‚­Ø¡Qœ1«3»P–킨l¦!Ú2´ ›`Ë—.0º‡G[j‰‰çÙÌZ*1 Jðt©^-Ž»¢ŠGdÀVbètó1rN"S¹m;á.Z¯˜ì;¾g@ÐS²+˜‘´)([’(S”ö”ß0
+ÙV{$mpÌQ¼g$ÌZ
+È]áHÇ´µÄÌTØ!œt/Cð˜\e‰ˆs6!œÎäîǯ´ë¡“ÐvJ„³C§mU+l`Œ¹—'XuÊ7Rý',T¨—._‰e“%1yLÙ1
+&Xq
+	~ЀE‹/Ãq¢;Ó;ÄXpSh¸e¸¸£h£I†òé²V7UG­,æ+:‹eš\)m;³»¬ï³½:ˆ>°K¢Hc†_‘"^f9‚Åq;±\´ŠIÆ„¹rüFb¨d‹ƒç$5á.\¢XÌŸ†^¨ˆ;£L†b31jç¹åa+´BÒ)Ú'˜—qº¢$fÖq‡„‡Ò¦’­Çc™DHŒ÷J"K‹1œj<N+ˆ>%Ò¦Ù¸l™`V!Ti\t+•Å¼ÁYiz»EF),˜‹&2è¥Ãƒ‘0R²²Y–ƒœ­²ÓªsÒGJñ±Ui½Žã¥*ZÁø–-c…„,3”„•SˆCÂ>’÷h*åãßü€ÀJUb zJc	àEÒãåèø.0ÅÌÊzK¸—ðÎÃ/˜“"ËÌi+ƒ‚
+Â×D±Œ@y›iˆ3ˆ=³	¼ßƼõ&•*S////K¤G0.ÌN²ó wÉæ°”åPc©~±
+ÙA‰–
+%³A—.^KëßÅ	-ö\ÄÕ`¹Y‚¥Ë—.\¹rå]%=¥|D8‰Ùé™k°ß.:\Èf°
+›Lx
+¼tÅ1IÜ Œ½yêÍÆ›tvMìyeËÒ¦øeJ•*T©Q”†‚>M*T©R ‡ŠÐ1¡  ñ‡à·§“ýñãÀxPCë+Ë®%¼.~hë²n`Ú"LI¿Â©QÒ$ï&ôÕk¸e!´
+‹‹b³.%åå á!•ñYÃÁhë°›ÒÈæ¥çéç0.JÒ; ›EŠ¸9n%é²æùhTÀ @é
+§2ÑÕè›k43sÀ@‚ ‡ˆá”[³“ûé)Ò8°ß1<ɲÅMJ%2Úô”p4¯Çᯄ4uÛ7¢‹æs7åto4‘âho.Gΐ 2B¹f\M•Q³!¦±ÂGz)Lx at CBKƙڗé-
+À”ˆ„2åéz8ø,¹p{ÏÜ~Yqå›åQøUøwx6o‡'ïR°“)–e¢r@ΘRoúÇyó´•X‡DfÛJC9kp%þ½
+"×zA Qh¸hi½>—SîcöÓsÊÆ>=¿€Óv¬Û*o›½þ¼5¢e(…Iy†–%÷C`gHp‡/Xé³p%ËcCT˜¶V ”fíÊ|‚›ßx
+M7'ÖÊ•éÞ&^r¦÷”ß
+hè½oÁZnñ[æÿ
+ƒ—1)®Ix¢˜LyD†zÄ°QÓþ«C
+ܶfðˆÛý€cªlØà€œ’²ÊÊU	8@ž1_ä1P'Š€!ne˜zB˱‰sÑC Á¹=á•_åÉõߘÜ*˜¦Á¼¢:ŠA„4Ù3|¢®>åþŒÆ°	#`†:WˆÄ2Ô
+m	%GÀBõl‹à됿ì(±sÆ—F>
+ј®+òJ• <f6†ƒ7A–ÁL’ƒ1Çu˜ßH:÷ü™/ù9!\DH
+؃¬®Ù
+€·(†Àƒ
+D
+H&Äi‹¸—;M± ðÞq
+QÖã÷Þy#{EïmËu–„ uH‰rí½+ÇR´¹d£™Ý'p”w†ÃF4#dT:™L³‰ºÌ\Eµ¼)®øm£.\¹r’²²’’çßH=HhQ•[Ý”sæ1zLìA6#ÒK¤¨¬zÒÐÁR¼`T©Pj^€ÀÔ[™.Tª*¥¥J•*V—Ë9ù—oòÐu¢gvØæ@V&èÃSÌb¨—%®¥†™M-åå£,\¢â´_€—g@–àŠœ—«;ñnbŸ
+™N’Éz––Ëffffee1}Øóc£7é¶;C6Ã[›4¦[¤íF2%¯/-Öyå%`‘N%¤”Au¨©Z¾!qÉQ4ÝÞˆ®±»—/ç¯ÃrÓˤ²f0𳆙<'KrÕ-X©¹³WñêÏÞÐ˝9Ðè꯮ct%¡sr:¾>”.µ–ò¸„Äì•ÓýßÿÙ
\ No newline at end of file

Added: branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/webapp/img/hdr.bar.jpg
===================================================================
--- branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/webapp/img/hdr.bar.jpg	                        (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/webapp/img/hdr.bar.jpg	2012-08-20 14:14:25 UTC (rev 15060)
@@ -0,0 +1,194 @@
+ÿØÿà
+
+
+
+
+
+
+
+ÿÂ
+ZÙUȪÍé¹ß¬„U9ª…-Ôè뎶¸‘Êsus¼ìô©p¦ÉÚƘívò çòÛ"×H€Z’RÊÏLÜîíÈѯ¦W®H*jŒÕvä‹
+HPZùŸ>„éß`æ
+—)´ñÛdh½HÓÖ+,Hªc¯Ž±
+L¾ž&¹dkžÆiN¸ÝK
+ãQ·P}ÏU|Ûã{Ä®W”i[EÎŽNžÙÁ…›
+-{dG7´‹ÛŸjmÞsÔi“¥7ITÙ§yë놖™M¤ÆN	ŽX&©ç¦nzUšqM“¶§w\w}$Ö[eQÔÂVIv†œB at G2C²Ï,‰N‘E ˜˜|ÕŸC3_=Í‰®[eÇéNìߧiŽFZtbå1Û'IÒ¹çâÀÊ´heu4“ÃMXr2‹6"\
+ƒ"ô³Å	ªY«lÎiÓzs¡ÅEjy]tÖ¾7JÕˆ­¶¬ÊŠcÚÐÛ+:ç¥YÊ“'h)‚*¬]) *‚q—dZÚeÓw𸹉Û	¾øË>uµ¶nÄ$JM¤ª”ÐD		€sQGÎf³OK;ôŽw0T¹mNBÓ4tý#\ka®ø¹¶Í¹ÅhÒ³+´&[j"žvÕ$rdÝPœ š‰¢I…¨ÜÅ©MF.E8KPÀ;<4¹–˜Ú­l4Ð’à‹$ØT‹¶eèÏN³“Q‰rÇ,*ƒ,Uf‚˜æ¬ˆgå~#†ÞzWUÜã]~¹\ß9´‚BptHL]Ž^~w«®r@åÁ8KùóZ`ÖÇOLç&5K‘ÙqÚåiVÌi·®\LW¨B©7ÏMçk‹ ÈŒlm‰“žZS©-E”Ð	Ì*\nˆ©ÈD墖ù=Í®má–•%u%‹Õ	­'ˆùúëå¶V³Òa{Uš"«M7ÈÚÆ«„Ԑ˜Ób–4Ę%U±\¼wÑåanå°¢ýWUqo|ä$„ìꕇÍѧ®6šŒ¸K‚l†Ù ÓËOQçdg#«R3G|üö'¿<$ÓuÚp%N¹5Ú‚aU1VeAéå¥-qT®ÈDuKI]8ÆâÏ6ðËZÅ:*l%~¡“ ¡Ž´gj.·2õÎÖñ-ÏV%·N:®têp	ƒ‰Â)ÁN@ÈҐ[eã‡-üîêzÜýƒyl흋—iÀ‚q:"ÝqÒÏN
+º}ð„¸KŠl„ÇGn ÑËOVæeh‚ãu¡1˜j›ZÅn{’y3¢Olä
+`˜‘F.¼Ð¦]CŠ…sµYmú¸lk™\°ÜRcŠ#Š+Ï´Cn³dD"4xvšI9§4E©Ëš¢Í3ô™ ¹–¢UOX£·4œžZ¥³,JóÀN`;	z¼ÆÏ	tzV僄Bu†0€2"0B–Y¢ ˆH¢ëb¥AF
+iWœÐÌ»%º’
+L:$&¼ß¥Zš,YɤØGÕ©èë=ñ¨K`„´‚Rv@(EÐÏM+ÎÈ œ@ƒÇç®IÍ)h*&‰§°ú²…go-Í–¢ž³Sn@ÖSMÙlÅÂ5ªÕÄoävœÚr{¾|ßÔpç’E
+ \hJÛ‚¯NFZ±}¯6½z”8Í/˜ŽŸ_\Hr
+¶‘|!s{Ç=¦;	ìÍӍ0îDßmž^¥RúL³ptÀæcX;抷,ˆ4ºí¼× ¬tÈ•$Ô©8;Ž)
+Ó\æ[(}™Qš±s­¶U椄nbf’ p@„1&š@à‰›`d80 ``Š?ÿÚ
+1b˜¡Ž_å³ûÒÿ
+ÙýÍ;nƒ€ýJ	›ûxôa,ù;Ù¹Žû\¬ö3,(KëÄÖ—Ñn9m+c¹R¥Jó7B²ep×ÇŒòúù%ãå©’/Å*n9<vy=„˜¹ª6\‡|¼lUB˜Ñ¯óB䱸ìO.,f››s†ŸÓ–ǸØÇ=¨Àó+n‘—5VF9ý)•ÎøȘ'¥’œ+܁‘ÆýGõÒD1äbÖÍ"'biø|Ñ2áž2Yr#Üå=Îr;;CÏ»"+y®Îû=žäˆkçÄ`ËI9	ú9™VIiÊ1‡¸IgÝœçî3Ê‘ÏBYµ«ª±dÈ¥©ljwœ£ßº¼‹‘ú&êOfÌ8%oµ°¥¥“ï(ܼL'=¸òÔ©RR3JØMΘ"ñëð¯4#Wi›ûÔGýÈ’þÁå—oc3×Z‡½ÙØ1ÏOÇ­ß#±·$kã„qæÉ,ÒÊOæ!³[O¿a„Åãô™¦Èø]f~\^Tòú˜õ§¦þ¼^;W¶´5E§®o…ß	ØÂvñ¡¥Â¥J—Fü¿Gßsêj²žÚLüdk;̱üÜjP\!û±ôQþGÿ
+2Ö(1@흶M}-ÑZä’t¸““‚’/f¿“ÙŒrlc;Èé»°`þ¹6bÅXÿ
+Uc‡Ñ,UM8˜Üªšj¥çÓðr„${]{»eƒŒ‹hJ8ÙíµÙíõ¤<9nr“‘k-,Gj'j&ühÈUË[³«‘9¾r­ž6n9–X²xýŽÆ¾
+¯ïõäôÐüΉù\'žÝ†Æ“·±ù|Ìü—‘öó=ÆÛö
+¨g’sË&×)'bãO÷§Ž†—ñº[q0îã“î!2r„#¯8Ê2QnU(º§–±#×â^,líÄxË&Õ¸"áä¸k~çÿ
+	)Â|<>?:.¤Èô_"ç}…ÓB(K•rO’Ò…8ÇàσEx.“}'Óe:•¹×
+ž¥Ip|ëà#ó..\WE¾›è2¥J•<ÈñcEòÈo‘©R¥Åx'סò/ÒdzO‘p§
+r®yäeK‹ËËË‹Š—ð©R¨×$GÂœhZSàW"辪‰aiNFù¹¨\\Ë‹‹‹ˆ’+×|—\ëà)ȺL]•*T¼¼¼¼¯q\*Wžƒ K¯^t¹—RÂÂÂ…FZP]ñK•”(UÎ%ÔE………¬¡k,,9×
+rP¡B…¥œ”(Sâ(ZËYc,gl흲¼É—
+”bƒàݐrã\”(P¡B…8Þ^^Š…ÅÅdZZXZZS–¿BnáÜ;‡q—²ö\˘ªS¢¥Á2E
+q‰.8¾	éT¯"(P_Nj)Я|ß*é¡ð¯"|­àºo–?ãqð—Et">uÌþ‘ä_à¿ÿÚ
+à†„S…
+(P ‘`¨$P¢Bp)$Ù¢Ò…
+-($ZX((Z$Š"Ô4P¡Bˆ¢(>…
+(Š"ˆ¢䐹*U.Cø!‹¤ß¥82¦8Ôœm$ø!Ì©^.*T©R¬C*T©/™¬Çòã2#ø†SŠä}*ãB…
+áB…
+(S™rZS‘¯/—‹áWAr®[Šˆl¸©Râòââââââòòâ¥Jðl¸¸¨º,}vT¨„1ôßEr>túV¢ãN’<—äcë1ñE8>’C讥z”-*W ¹_à‡Æœ_]ñ´§Q.šèСBƒç‰.1á/ŸAsS©NµJð°\Mé.jð\¯áB<KKKJ–––
+<«©Q¾µ8%ÈúKªÊ•+È——"E
+r¯}ZrW‹é¾¥¥KJãQq‘BÖ§]ôÑR¥J.EzKƒø?˜¹%ÉQp¯
+|
+yÛç|+ËR¥J—2æWâ*\‹‘z/GqøP\­ð¨åÁ"Þ•J•*T©Qp§%J•*‹ËËËËŠ¿Š©^}>ÑÚ;gm"ÄZŠ#ЯFœ)¼‹ª¸6WüUyªT¯J|V…
+áB…9êW‹é¢œüløG¢Ä?…}EÅÿ
+„/ˬszxEhb$‘Þ‡ù5	"0¾åëU%âˆTvWÎ2ù5~·'¶¯V7~Üës¯¹ÅUž68 áÄÕ»™ÏO‡UÐ'ö©ÖyùŠŸSÞ*«Èٕ⷏Jß=+ÔwI^«ºJõÒW¨î’›¯—'¾î•ê;¤¯QÝ%z®é+ÕI^«úJlj:Ü¥xïŒz0ñ·j˜ùcb;’0#J©RµWÔ7 /¸»t`òÝkÔ0Å2¡xœê_o‹®Ãñ’øçÃK—æ׎[ÅmqÕ\ÜÅýz•{Ë¿E7
+¯Jfq½‰j.k<ˆrhüC´'a¥¤v§vº©lW•vY`ÆTb!ƒ‡&ØK­W¡­CÒ¬³
+¢ûrgTé;znv—OšÎS)# sLø‡o!íÈpÅÄ4g@/û¦Õè5z,^›TÚ2­–Œå6B<£¥
+}¸,CBy¬ªxu#zÅ°!‚X£`WªÏ.ñ‰·Bû`¸g—jûkzÖüVñ[&9V²ŒDIdÕÖˆ€öóqeW¯·7râZ o	u("×»j•¦1[N&ÒqóQEÅ>¶]–èæfS~!Ûȏ¼ÜxnkOB¹ÁRÓUØ»•þ.§÷œOümÝŽ|¨>¬(RÚ!Ҡͣ—7¶Š±\ƒ¯
+sCÇ20΋*T&2Šõ“þ‚û|E7f&1‰´œCIWcyΙw4SF!3«™µZ¢„qrMÇá¼w<§2‰ÄÜ3+x¯P ëä ï6ìMk¢WÜajµN.R–…uƒ0©Ö„ÄH\?ÌŽƒØ› s¶¨:yŠhÔUº¥€ºØZ ÝÜPƦ€Àχ¼¨þØ';öØ|-ºVÔ¦ÕµO ¯M6ÀL‘j{üùºwQ
+hºóvrŽ…5xɸ†2„l\Á
+Õä½åôO…Ó‚ +iQ%¾õƒ¤¨ñ`=Ö{Si°A­pÿ
+•'ô-¡sJÚsŽíR¦OÄU¬hQ5@Ô§P•â+t%Jã­lP`Q4嘠rÍôò2ÿ
+»tŒð+ûv‚óâ”l®¹›%¥MIY6­Räï-õ¼U¥cV-ÕcQ;
+Þ*£ŒÉ‰Š x‹®,`ßP¦öŒM[ë}B÷bÜr¤ÐØ]tz“_îzÖËBð•z×t4/Èv¨/Z¡ù”iÕqpµ·Š›NˆÅAÍžU’V«À¦sw€$äWlvC†.0R1 at uàIÃt¶ÅEŸÄÆèŽX)IZ¥·e¤sÀÛËÈƽ©ëÁÞ†
+ƇãõµÂԏ£òؼîÀÍ(/fe¸w¥n5þÞ¥áX–-Kÿ
+«Ù=-eU<?(ñÉsþ°x¥›w¶ó¯ (Í÷Ÿôéÿ
+¥«}~ß´	P|¨–}קê`ì‹øˏì¼N`6Kó gó·›â-FI Î\K6A³Wbg_ðُ#š±ÊÑ]½íF!€·b}ûDÅ
+î»(¨7›eøöÁVÅu."8¸¥¸ÏI²Á›
+žzÿ
+›õ^ñ|,ÜöcNu˜ÊµÎ 8#©NòŒïh}#Ô-ˆ)ñb+ø‰»þ7pÎ:E??¹_ÚJ7µž *œß^¤EHÓ
+±iØæeÜ±–ÔFËo‚•KÜ­×vâ\ L
+•¶éâÇÄB™¹+÷w+ü‰Ýã·V'ÿ
+Nðñï-“ë§ÚSÆ=¥EËŠ½ r?n–ÝÞŸ¹ìƇâ[߶S½ƒ¼^ø.
+žëŽ°V:üÔl
+\ÌLñ
+¯ãy\-F8÷†=PSƒËÃ^ÒÞÐÔ÷ þâÉìýËlû®f/iÐWŒG¿¸cÄTÛáÿ
+¯xhÁĨy˜ÿ
+ꃸÁøÊÌ4²,o¦ÆØ~çÜaâµ{Úá:ü@¯D’ža5Xºåˆì«Œ¯™½'®OÌÚ€‡Rw%ºË˜Ò´! àaìÓ
+Ž˜…“sfgxë(îfS³7þˆ‘¤<ÁY1,Oþ,'W¹ø]ÌvŠéQ#{ùŒÐ<k÷ûèèßtè¿qþN^ø?•1ðö7ñ>é¿ÄЗn±´çå2ìü°ª”0ª·Ø••0æZžüÆ…ÕbtQ£{¸‘(®eÜŸ‘!´-Ö÷•¢ºVØÏ3x\Äj¼Ž Ïü$n¸ÿ
+”””ú7\eGèÓ-é"´¼!¦Ó.\¸¡ăm9N¹8–zš•ô
+¡³ª©­WíB5Å©¯¶ŒˆøG¥$$’o¤ì²Bj‰5:Þ®%êØè.i[VÂi„Vë"çOþ\ ’m֝·“,™ÿ
+WÁ<%ìÀ«pŲ‚ø¼L¼qÇy†Êò÷‚5*DªÍ܁8üÄðS*)®¶Œ¿›Ssû¸–èå
+	ÉÖÀâƒOÒDÛ#zqYÀ¼¶Ú*¹`S¶ÀT·»´hä³
+TTÞ:þ‰äL–1´2N	–Øø¸lˆ]Õv–oæ†MÝžÐvéف•¬²ß•+µÔ
+À…pf7¶âé,µrBZY/ÉÕéè C%S`bÕÚÝagܱ´,UâËÏFÚõEHlZ
+æÓ~LQaoxDôÖR¶‘_	³YÆ©Y-¼c¬í^ÃÅóFÐŽ%jë¦Ë¦ý®R%™””¡xÌTåÀ•;1^Úu&Áföï®f£ n1x‰oóÀÊ@+³p¨SUÛT(Ý]=eÀ »^&è¦BLsx˜zƒ2€Û8„Ð]€¤
+廸<ãMîŠìD("¸Ü:3ˆ%%“&ðwsˆÑpäÞ¿
+Ë"ê‚¥™±€yÞ*¸qq®tkvzĪñz÷Ž‹‹tÎgÜ©ŠUðþà	¹@¦ã½?p¼XxÊJˆbG†3í¦yXî^t›ã"¢Þº?Lv=[àÖ+¸ê%
+vEÚ©9X{C{ZòÁ»
+<Ǽs˜Kî8°™ÐÝ8Rx @mECñ	®^!pìZ÷e  .ºÆ
+m’\pí)u¾m‹ï°€M‰°mã‰rm|ÊðUEÐ@ Jmx&Ö—ó@Ú-0œº@v¸j)Ÿ-‰Õ§ý‹جD&PaY %…Vªk•a&¬$¿Xk>*%=ì±ç	‘]ZÜpf_¸u¬F‘¨
+ʐ¡Ôf}þ‰\fœJ)švˆ.ãЕþ¬†$
+ÍÖ_7ôY—Ó0bÂ~†(Ôì(§æš#(0¢_á0îû;ϺÙÓ0ÿ
+Ê[Hoa"UnjË#†=€Š ¾CÚ9~BïQòÃa,Á`²"›Ú&”±lq]p¥ŠèŠ¯~*:N H\Òçox
+•›‘ö=¡×’•ýĪÍÓ=ó
+€­ç‚,n?Þ)"²¸?1D¢ù¿á‚µÀ/ýµo¿ý‡²æµ¼HíSíÌq’ñÿ
+ž(¿9f‚¹T"+ÃÉÄ©uªÞÐ2$Œ[è ˆ­ZDáêNH*JM富¤M°é¦­¶i¾an‰ŏâ{Z	¸KuTG‰q…j×æ<²Áãj6¡ú WÕQnÍ49âc]
+‚pÖí$~übQ¨¡n)RqÖ
+dfú»m,gU¸©„·y\o(@<·Â0Ò§P+¡Î
+ß¼d•”Wñ‰u9ìªÎ ‘ovCÜŒÁ^=Æã«A(—¿+0ìVûö"
+¿hÈÙÙ™þíªæQxå-˾ù‚n,ÌC4.+Šê±Y'c´;"fª¼Ž‚Y¸ð»ty@‚£}·6#3åÚo}žè®–›ÕBGz‹kÚb­”øgaÜéžÐª÷"¤à"}Èã¼ÛKùžQúËÍ÷É–<ÀÈ™N¬FÅÏ»ôeKßô•˜9Œ&Áb¢9Uc„d¢ˆµn)ž¼Á¦<Ëà
+tàKƒpE+Kñ„­ï³ìEw¢Ág£
+ö`¥{:Æl©¡üLùü¢Kí‰b•ÙsÎÊÄp]»!Îa•ß!Ü|ÃX²ÀE+,)ØSÒ<•P…h[øæxÅu¹²†(ÝŒ˜Ý=¢"þ®3b
+ ð=âÙ÷¥Êl\g0Ù8(¦QËÛæ¬Àß0hûÊ!bÍbá
+ÜA—g²Ua€†QIJ~¢P|Cj¨.Ú0c!Án†d½-ƒ0o³n,ñj£6
+ùÉ9Õ2‹›Ž&°]‰—¼{±y¸ëX<¼c¬n3%Vw”¡„Öv?²f>ñ16 ]  
+U+ähW»
+ÔƒU2ªÄV¹”¥…#Úà·b]ì›1›Çeý­°b´´WExœã[ȶSÄÅò‚Kqsòú%;LÌncžb÷ï$â]ÙxuŠˆd:+zçÁ4r.(±Þ=”® æct2ö¦¬~%´?ä
+¯îâßd—°QÅ'hÄr—µÁ°ÁÌÛùˆ¢ÍâQ·™†ì#W¼ ëÉð&HTìE9f>Så¨
+Ç1‹
+a—‰O·¼q—eÀ8X<RXºïeÞYa§.oäFB¬±áXüÔfAýAyqlX=±|r?âVõ+
+¶k‰hÃ|h>XÒp#Ž˜"1°ÇÔéQ{`?,FUy[wá0pZ”óXxWbJ.ªÁ^×°7—%[»¶ÒF¯²‰g€ws)«Å­°ø¼‚4º¦É]—VcKË…ŒKWîeô•Q	ÓFÝãÿ
+-¹[ƒcR1ÏÌÃx¾:M˜Ä»y†CN½GNX:ñ»b·˜º.ÚÛ¶Çð—|À”ËÍ|ÍŒ¾¾·ù—¯ˆ,ŠŠ=±Æ*´éæ|ïûŽ-ïaxÄmJJé—h?fY:Ú+ËPa€n÷@/vE­ùoÜ.¡÷pï=ûžÊ†è›26úæ5&&Þ|ÂP+
+ãŠÅ®`h¢f-¥›7‹m\‰!‰Ó±-¸$R÷G:CîÃ-÷±ü‰çÏè"id¸­Ò¯Ì¼¾ð‘.KÜá\_Vm4›6{³=RwKjg	d~be÷t…ct¯ðˆc»ùl£Äê¦P¾'SaŠŸpù,H5`7@G*?ÂTŠ.ê·º­–b¬jü²Ù]ʼnÝ%)YL¸$À<­v ePF*ÖÎI6Ð-óohá³Ê´·ïˆ´ÝAÆ[Ò$\.ü©wvŒeÂ+]pÅHÞ¹Mžlß¾žßõ0¹t¹ýÍág[~’Ê‹¸ýˆ†z"~®
+ë¤þ®èª¯’ÈlÜ”
+૸¥P0ÿ
+Á,ÓÈGh+¹PǾn¹IKÑz¨ó8ÚrÇÛ
+¹½é/à›ƒ_DþGõ$,þúaY¾Çö%¸ç,Ü®›êX¿õý™}jÊAЪ؂YÈýE#÷ˆE‚¥×gir”4­»uŽ¤‚v
+ÿ
+p°¯ˆ=àwxº»P:k`ípkEµ'î¢X}Åh.ÞÙXâùFÝrÆù¤,ÃrìX÷;Iž)ÔïÒaKVupm3Bjàà/8WâlóåaAÎ.šª—?àªØwT!àŽLö-‚„ÊRqÚ„Ï°á¤ç¼Á«EгS¤gp¶r;Åäí¾ùÂVÎF;1`ï™’
+
+_†t-u‹Š„hî_Ý8ÅŸ©Ë6ÜAÿ
+xÄ·wóKVñò…AhHçï7]¥®:u–gá
+ÂU@ ~¹ÚÛ&’ÌĵiCÕLWÉUó+*RÅ"¶y³'Åä€Úa•+Ð0eé._IQ	]¦vt…оÂÈC€ÚüÖXduä—r¹S{ðü–ÅCø¹çÊØy9¤(“^y¿w+‰_˜JŽ„WåF`.Ƙþ¡`Ô?õ2¸¡þÇ›CŽvxCù*W’_ȵxµþÌ+N–Ç凄*KÇ1¥¹ÃÈrEh5€oæSO3æPÐm«¡þLp1ÒaJ*ã¼Ê2ƒ±|±éŠÅBló-oJöæmrŒ±ç•ïGŒ_,Ý­ðý°9f2zBJìåa®ÌM1P>;~ÍÊeáLÆMwÌ5Òß‹‡ÌNDŸta¹,0Ê9£ðTknãäâì*MV9c–‡±¶ ʇ±l5Ç%Oš à–Âÿ
+ûés}
+àÇ}9ôluß­¶?ìB’ãáeªm
+©}ABUJa1˜	ƒižöï1PTÌq›EcôCµ&ÀÚ-a–nn-…˜#¸£ˆ•)1á†Cš;5JÓw´áZHA6Á—¢â‹ A7Mˆ2ôó„÷Ž‡¢ zj]KôÞ»wÇZA¼ÛˆGyŠ°3 Á™j€IÀ–‹c,b\èEUJ"‘E1B àåÞš’tØÚ[Ö-çAá¥Ï´®’Ý":¸["Æð{Ëïë-Ö7Ö'¬o´LGF0Þ`y„&}úEXëÄÃ}7è¹vÔ6‹ߥMŽ»æùihs"†#æöuuЄÜÐb‚´L2ÎSÊ=óÎÌ{¡s,wˆ9„ÀÀÄ ‰X*n4„Í3•Z
+Øàê\X±bÆ$c¡¼ì¶B‚A‡ßâô¡R•ËZ¥ËŒ2êm60—7ÇBV@\[ ¹‘ËlŠ§ð0„Yœh.]β
+í-Ú2ȱÌ]
+š¶ƒrëAÇZ
+ËÚ	h–ИÌaCÒ‹éZ*oŸª6Åc™Ä‚ª•¥ýÐ42Ëèå¥Í𣈴5/´{Á­b*/ÒiWĨf	
+Õ0
+A—/ÑËR+½;Œz’Îñ¾­™2Ënf
+E†+¦Ýqa˜Ä…AÓKix°ÕCã÷bÃm0‘Š¸AE”æ5b$´½Z\råÅõ*ƒ€3
+kk‚uˆØ1^ÉbØh_ \9z‘YÔˆë;G8‘ÎægjîUÅŠGdÛú;=!t”Kö‹¹—Õ;„êÉÕB0Æ«••2³¥[Áœ]²–…ó(ìƤ²¥Ëõ­Ep\Lu6K‚tƒsmjz.\¨¢7-£ë¨Š÷›Ã<ð˜[EH¼@Bn‹ˆ×h®l• KW¶)Î1=Á“ô¯Ñrå²Ùrã.BU°öF¢X´Éd…¸eÑ)´Yx†ƒLË—.,²0Þ,Q¼Ë)Ù¨uD%Ã0‹/RõF2b½n\½SÀ…EEF
+±ÎŠŽò¬ÇQ«±”AÒ8L‹ñ,›™/:&Öq‡¤ôºï(ŠÞ2‘HÔ¹¢PæoC¶›£8ÔkZ²+Út‡H—€µÄ+º‡Jè]GDÖQ£ã¢ã
+Ð]0Í"ÉY9{Z
+Á6J‰ef<h¯7³æ%[¼ç¤#¥}$§X®±ŒKˆs$Gx|³=,¢À16ºm‰E@‚‡Bv§c@€¯,(›ÊõŸf"Ð
+¥1e‘ŒlÔ$"¸Bé.\¹~‹Šq/á–q”ìñ;äî–Ö¶¥æ*ƒŽ%–b°ÌÎTlGDCHkÏE2òòÒÒÐ^‰Yw²\âÄ/f,¢ÂÅö ¹eë,,ói‡b+‚¹‘ªBKh¬=!/Rýåĸé.åWÙ(¥8”ËÑråËÑ"úG¡‘Ôïǯ-å‰hÛ8BË—3‹2D¡ÌÂ=c·Y¼í¥IYH)aÚOMJ‚ˆo*#&bĹ~º\Eh–h¯ŒKv‚&‡¬…2ýWråëràË—gb:k#ÐÃËèˆé)Òxi´¼[é@•(QЛ fd‚›T°¡ˆ
+æ).SÑ”—,¦–/®@ï(ÈàA_¥›àãBˆ€•j9‹ŠÈÚ)ÐÏÓ>£*"R3yhj4tç	½¼?hê&Øi³XûÍÓݝ7:A¦Æ€÷Ôo7A†§Ð÷ÍÙ½è7jý3ÒýÿÚ
+”KÌø–€`"ð!°–2¸&Ö…SwP=`ÊJ•*dƒˆ—--–ëRµH’´- ¬Ì/Kôm„¬hÇJŒ­,PŒIÁÞá˜o.c*T©Rµ
+¢¨Mj>°ï„ò!߀ã”ECáÁ:±i.w¡Fò¾òF$K¾b<C™Ë›¡´wŒ>k’iS32Dój:mœ¥ÅŒuYzoŠ|-K";Ã47îÇÒJ†ƒ¨\af i^ªÒ¥hJÑ€ÁUñ)„toѶ*:IsJL¶ Ø|6ŒaôLËIN=% t’¬l‹qeÇ0¿3~Ðn)ÖW¯¦"‡N䏿‰Û4»ñ²ô!tTtµ
+Üßa-/--Š8¾ŠÔÜeDTGóó*W¬œ%JŠ¦iLV¥T­
+ý
+ôצ ¦Ó¹¨
+5¤²S	R¥J•8B+eQu3|¸ñ o9":…¥úÅQ-’°…\Jt”t)jÄI}aÑrøõŸ¤o\‘0c@%*/ׯ§ihMdaég
+7zN‡FÎfÎfï³	·˜ï
+Í´çC£èwãC
+MèèÇé†ÄØC]ºŸüOÕÿÙ
\ No newline at end of file

Added: branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/webapp/img/hdr.bg.gif
===================================================================
--- branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/webapp/img/hdr.bg.gif	                        (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/webapp/img/hdr.bg.gif	2012-08-20 14:14:25 UTC (rev 15060)
@@ -0,0 +1 @@
+GIF89a
\ No newline at end of file

Added: branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/webapp/img/hdr.title.gif
===================================================================
--- branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/webapp/img/hdr.title.gif	                        (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/webapp/img/hdr.title.gif	2012-08-20 14:14:25 UTC (rev 15060)
@@ -0,0 +1,19 @@
+GIF89a$
+$§
+&ðòôý¸õ¯†
+¯JBhÁöð­ –
+<@1î
+lhô¥ÐI	)A â6˜Ðž\ŸiÛ
+F:lè	7¬ÿ®(
+0	fkA‰”GŒ
+ôc©;J
+7rÕ#
\ No newline at end of file

Added: branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/webapp/img/header_line.gif
===================================================================
--- branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/webapp/img/header_line.gif	                        (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/webapp/img/header_line.gif	2012-08-20 14:14:25 UTC (rev 15060)
@@ -0,0 +1,5 @@
+GIF89aj
+	ùýþ @°`Á
+XÈ°¡Ã‡H”
\ No newline at end of file

Added: branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/webapp/img/input.bg.gif
===================================================================
--- branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/webapp/img/input.bg.gif	                        (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/webapp/img/input.bg.gif	2012-08-20 14:14:25 UTC (rev 15060)
@@ -0,0 +1 @@
+GIF89a
\ No newline at end of file

Added: branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/webapp/img/sdb.bg.gif
===================================================================
--- branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/webapp/img/sdb.bg.gif	                        (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/webapp/img/sdb.bg.gif	2012-08-20 14:14:25 UTC (rev 15060)
@@ -0,0 +1,2 @@
+GIF89aÒ
+}t¨QE*ít©SMŸJuªÔV³JÀªÕ*×®WÁNe V*Ù²NÏ¢Uªv­Ñ¶n…ës.]vïÚÌ«W¦€¾?ÿÞ)xð͆g"Nür
\ No newline at end of file

Added: branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/webapp/img/spinner.gif
===================================================================
--- branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/webapp/img/spinner.gif	                        (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/webapp/img/spinner.gif	2012-08-20 14:14:25 UTC (rev 15060)
@@ -0,0 +1,26 @@
+GIF89a
+3Ãð¦DÅæH$^¶”@éøPd€°¸"U…³P#Îa…‚\;ŸÍƒÃ1ª
+
+oÏ::0
+v@$|,3‚_#	d€53—"s5e!
+
+¡ŠÄ8ö3ÌbÁ4…k”
+K*:	Ôu”Ñ#Á@tX
+ƒ!&0<U#'žáh€Øm'Ñ@Yˆ¢^hÂa-k÷Ü(„Áë.†ƒšNò€|$Cf)@‚f|!
+-ë"è*6CãÈ€*…‚+`jè4ˆ2`È 5’°X¢ÑpÀ’á	ñh/H±“`.Ð	¦ëh†ÌõR"]SWB]€~‚†€Š(!
+UÜ‘–¨ÅH
+šÝÀT@ˆF‘`˜B4¨À	…ð‰‚A€bZÅbq¸¬²‚ À°‚	·ÆÃ
+v«Ã"ÈBŽ®Ùlp¨ª¤£XbˆÕݤFŸ‘a²ƒAA&*X†ÇÁ(@ˆ3ºÔ,°(
+}Q+>	R!
+)`L¢
+?'I`¨JG‚ƒ¶øbP¾©âñhŽ
+ƒÊñX¸B)0¢Â׸X›Q#}	No"tI+ZI!
+¥!ÑMD„l!¡4%ØB‡öBe
+PDY00!
+\0`UL"r(!
+·mè•
+ŽAÉ72,
+ƒ©(PX鲪‚ø	“’8 at R%‚a	K‡*¡€þD¨ÁŒè2E{$ƒ„ft5†C%!
\ No newline at end of file

Added: branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/webapp/img/th.bg.gif
===================================================================
--- branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/webapp/img/th.bg.gif	                        (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/webapp/img/th.bg.gif	2012-08-20 14:14:25 UTC (rev 15060)
@@ -0,0 +1 @@
+GIF89a
\ No newline at end of file

Added: branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/webapp/index.html
===================================================================
--- branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/webapp/index.html	                        (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/webapp/index.html	2012-08-20 14:14:25 UTC (rev 15060)
@@ -0,0 +1,5 @@
+<html>
+<head>
+  <meta http-equiv="Refresh" content="0; URL=home.seam">
+</head>
+</html>
\ No newline at end of file

Added: branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/webapp/main.xhtml
===================================================================
--- branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/webapp/main.xhtml	                        (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/webapp/main.xhtml	2012-08-20 14:14:25 UTC (rev 15060)
@@ -0,0 +1,139 @@
+<!DOCTYPE composition PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<ui:composition 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.org/schema/seam/taglib"
+                xmlns:a="http://richfaces.org/a4j"
+				template="template.xhtml">
+
+<!-- content -->
+<ui:define name="content">
+
+<div class="section">
+  
+    <span class="errors">
+       <h:messages id="messages" globalOnly="true"/>
+    </span>
+    
+    <h1>Search Hotels</h1>
+
+	<h:form id="searchCriteria">
+	<fieldset>
+       <h:inputText id="searchString" value="#{hotelSearch.searchString}" style="width: 165px;">
+        <a:ajax event="keyup" render="searchResults" listener="#{hotelSearch.find}"/>
+       </h:inputText>                     
+       &#160;
+	   <a:commandButton id="findHotels" value="Find Hotels" actionListener="#{hotelSearch.find}"  render="searchResults"/>
+       &#160;
+       <a:status id="status">
+          <f:facet id="StartStatus" name="start">
+             <h:graphicImage id="SpinnerGif" value="/img/spinner.gif"/>
+          </f:facet>
+       </a:status>
+	   <br/>
+       <h:outputLabel id="MaximumResultsLabel" for="pageSize">Maximum results:</h:outputLabel>&#160;
+       <h:selectOneMenu id="pageSize" value="#{hotelSearch.pageSize}">
+          <f:selectItem id="PageSize5" itemLabel="5" itemValue="5"/>
+          <f:selectItem id="PageSize10" itemLabel="10" itemValue="10"/>
+          <f:selectItem id="PageSize20" itemLabel="20" itemValue="20"/>
+       </h:selectOneMenu>
+    </fieldset>
+    </h:form>
+    
+</div>
+
+<a:outputPanel id="searchResults">
+  <div class="section">
+	<h:outputText id="NoHotelsFoundMessage" value="No Hotels Found" rendered="#{hotels != null and hotels.rowCount==0}"/>
+	<h:dataTable id="hotels" value="#{hotels}" var="hot" rendered="#{hotels.rowCount>0}">
+		<h:column id="column1">
+			<f:facet id="NameFacet" name="header">Name</f:facet>
+			#{hot.name}
+		</h:column>
+		<h:column id="column2">
+			<f:facet id="AddressFacet" name="header">Address</f:facet>
+			#{hot.address}
+		</h:column>
+		<h:column id="column3">
+			<f:facet id="CityStateFacet" name="header">City, State</f:facet>
+			#{hot.city}, #{hot.state}, #{hot.country}
+		</h:column> 
+		<h:column id="column4">
+			<f:facet id="ZipFacet" name="header">Zip</f:facet>
+			#{hot.zip}
+		</h:column>
+		<h:column id="column5">
+			<f:facet id="ActionFacet" name="header">Action</f:facet>
+			<s:link id="viewHotel" value="View Hotel" action="#{hotelBooking.selectHotel(hot)}"/>
+		</h:column>
+	</h:dataTable>
+	<s:link id="MoreResultsLink" value="More results" action="#{hotelSearch.nextPage}" rendered="#{hotelSearch.nextPageAvailable}"/>
+  </div>
+</a:outputPanel>
+
+<div class="section">
+	<h1>Current Hotel Bookings</h1>
+</div>
+<div class="section">
+  <h:form id="bookings">
+	<h:outputText id="NoBookingsFoundMessage" value="No Bookings Found" rendered="#{bookings.rowCount==0}"/>
+	<h:dataTable id="bookings" value="#{bookings}" var="book" rendered="#{bookings.rowCount>0}">
+		<h:column id="column1">
+			<f:facet id="NameFacet" name="header">Name</f:facet>
+			#{book.hotel.name}
+		</h:column>
+		<h:column id="column2">
+			<f:facet id="AddressFacet" name="header">Address</f:facet>
+			#{book.hotel.address}
+		</h:column>
+		<h:column id="column3">
+			<f:facet id="CityStateFacet" name="header">City, State</f:facet>
+			#{book.hotel.city}, #{book.hotel.state}
+		</h:column>
+        <h:column id="column4">
+            <f:facet id="CheckInDateFacet" name="header">Check in date</f:facet>
+            <h:outputText id="BookingCheckInDate" value="#{book.checkinDate}"/>
+        </h:column>
+        <h:column id="column5">
+            <f:facet id="CheckOutDateFacet" name="header">Check out date</f:facet>
+            <h:outputText id="BookingCheckOutDate" value="#{book.checkoutDate}"/>
+        </h:column>
+		<h:column id="column6">
+			<f:facet id="ConfNumberFacet" name="header">Confirmation number</f:facet>
+			#{book.id}
+		</h:column>
+		<h:column id="column7">
+			<f:facet id="ActionFacet" name="header">Action</f:facet>
+			<h:commandLink id="cancel" value="Cancel" action="#{bookingList.cancel}"/>
+		</h:column>
+	</h:dataTable>
+  </h:form>
+</div>
+
+</ui:define>
+
+<!-- sidebar -->
+<ui:define name="sidebar">
+
+<h1>State management in Seam</h1>
+<p>
+   State in Seam is <em>contextual</em>. When you click "Find Hotels", the application
+   retrieves a list of hotels from the database and caches it in the session context. When you
+   navigate to one of the hotel records by clicking the "View Hotel" link, a <em>conversation</em> 
+   begins. The conversation is attached to a particular tab, in a particular browser window. You can
+   navigate to multiple hotels using "open in new tab" or "open in new window" in your web browser.
+   Each window will execute in the context of a different conversation. The application keeps state
+   associated with your hotel booking in the conversation context, which ensures that the concurrent
+   conversations do not interfere with each other.
+</p>
+
+<p>
+   <a href="#" onclick="window.open('exp/mainExp.html','exp','width=752,height=500,scrollbars=yes');">
+      How does the search page work?
+   </a>
+</p>
+
+</ui:define>
+
+</ui:composition>

Added: branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/webapp/password.xhtml
===================================================================
--- branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/webapp/password.xhtml	                        (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/webapp/password.xhtml	2012-08-20 14:14:25 UTC (rev 15060)
@@ -0,0 +1,64 @@
+<!DOCTYPE composition PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<ui:composition 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.org/schema/seam/taglib"
+				template="template.xhtml">
+
+<!-- content -->
+<ui:define name="content">
+
+<div class="section">
+	<h1>Change Your Password</h1>
+</div>
+
+<div class="section">
+
+	<div class="entry errors">
+		<h:messages id="messages" globalOnly="true"/>
+	</div>
+			
+	<h:form id="setpassword">
+	
+		<fieldset>
+		
+			<s:decorate id="PasswordDecorate" template="edit.xhtml">
+				<ui:define name="label">Password:</ui:define>
+				<h:inputSecret id="password" value="#{user.password}" required="true"/>
+			</s:decorate>
+			
+			<s:decorate id="VerifyDecorate" template="edit.xhtml">
+				<ui:define name="label">Verify:</ui:define>
+				<h:inputSecret id="verify" value="#{changePassword.verify}" required="true"/>
+			</s:decorate>
+			
+			<div class="buttonBox">
+				<h:commandButton id="change" value="Change" action="#{changePassword.changePassword}"/>
+				&#160;
+				<s:button id="cancel" value="Cancel" view="/main.xhtml"/>
+			</div>
+			
+		</fieldset>
+		
+	</h:form>
+</div>
+
+</ui:define>
+
+<!-- sidebar -->
+<ui:define name="sidebar">
+<h1>Simple things should be easy</h1>
+<p>
+    (And so should some complex things.) You shouldn't have to write four different classes
+    just to change a password. Traditional J2EE architectures require that developers spend
+    more time writing code to make the frameworks happy, than they ever get to spend writing
+    code to make the user happy. Seam lets you reduce the size of your code dramatically.
+    And that reduces bugs. And it makes refactoring easier. And it makes delivering new 
+    functionality quicker. Productivity matters. But with Seam, JSF, EJB 3.0 and jBPM, you 
+    don't need to sacrifice the ability to handle complex problems just to achieve great
+    productivity.
+</p>
+</ui:define>
+
+</ui:composition>
\ No newline at end of file

Added: branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/webapp/register.xhtml
===================================================================
--- branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/webapp/register.xhtml	                        (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/webapp/register.xhtml	2012-08-20 14:14:25 UTC (rev 15060)
@@ -0,0 +1,102 @@
+<!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.org/schema/seam/taglib"
+      xmlns:a="http://richfaces.org/a4j">
+<h:head>
+	<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
+	<title>JBoss Suites: Seam Framework</title>
+	<link href="css/screen.css" rel="stylesheet" type="text/css" />
+</h:head>
+
+<body id="pgHome">
+
+<div id="document">
+
+	<div id="header">
+		<div id="title"><img src="img/hdr.title.gif" alt="JBoss Suites: seam framework demo"/></div>
+	</div>
+	
+	<div id="container">
+	
+		<div id="sidebar">		    
+			<h1>Integrated multi-layer validation</h1>
+			<p>
+			    Robust applications need data validation in several different places. Seam integrates Hibernate Validator,
+			    a set of annotations for expressing data model constraints in your domain model classes. Then, these 
+			    constraints are applied almost completely transparently at three levels of the application: by Seam when 
+			    the user first enters data, by EJB before persisting data to the database, and, if you use Hibernate to 
+			    generate your database schema, by the database constraints themselves. Multi-layer validation hardens
+			    your application and protects your data. Even better, it's self-documenting, and easy to change when
+			    your business rules change.
+			</p>
+			<p>
+			   <a href="#" onclick="window.open('exp/registerExp.html','exp','width=752,height=500,scrollbars=yes');">
+			      What happens when I register?
+			   </a>
+			</p>
+		</div>
+		
+		<div id="content">
+		
+			<div class="section">
+				<h1>Register</h1>
+			</div>
+			
+			<div class="section">
+                
+				<div class="entry errors">
+					<h:messages id="messages" globalOnly="true"/>
+				</div>
+
+                <h:form id="registration">
+				<fieldset>
+				
+					<s:decorate id="usernameDecorate" template="edit.xhtml">
+						<ui:define name="label">Username:</ui:define>
+						<h:inputText id="username" value="#{user.username}" required="true">
+							<a:ajax event="blur" render="usernameDecorate"/>
+						</h:inputText>
+					</s:decorate>
+					
+					<s:decorate id="nameDecorate" template="edit.xhtml">
+						<ui:define name="label">Real Name:</ui:define>
+						<h:inputText id="name" value="#{user.name}" required="true">
+							<a:ajax event="blur" render="nameDecorate"/>
+						</h:inputText>
+					</s:decorate>
+					
+					<s:decorate id="passwordDecorate" template="edit.xhtml">
+						<ui:define name="label">Password:</ui:define>
+						<h:inputSecret id="password" value="#{user.password}" required="true"/>
+					</s:decorate>
+					
+					<s:decorate id="verifyDecorate" template="edit.xhtml">
+						<ui:define name="label">Verify Password:</ui:define>
+						<h:inputSecret id="verify" value="#{register.verify}" required="true"/>
+					</s:decorate>
+					
+					<div class="buttonBox">
+						<h:commandButton id="register" value="Register" action="#{register.register}"/>
+						&#160;
+						<s:button id="cancel" value="Cancel" view="/home.xhtml"/>
+					</div>
+									
+				</fieldset>
+                </h:form>
+                
+			</div>
+			
+		</div>
+		
+	</div>
+	
+	<div id="footer">Created with JBoss EJB 3.0, Seam, JSF (Mojarra) and Facelets</div>
+	
+</div>
+
+</body>
+
+</html>

Added: branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/webapp/template.xhtml
===================================================================
--- branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/webapp/template.xhtml	                        (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/webapp/template.xhtml	2012-08-20 14:14:25 UTC (rev 15060)
@@ -0,0 +1,41 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<f:view contentType="text/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.org/schema/seam/taglib">
+
+<html>
+<h:head>
+	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+	<title>JBoss Suites: Seam Framework</title>
+	<link href="css/screen.css" rel="stylesheet" type="text/css" />
+	<ui:insert name="head"/>
+</h:head>
+<body>
+
+<div id="document">
+	<div id="header">
+		<div id="title"><img src="img/hdr.title.gif" alt="JBoss Suites: seam framework demo"/></div>
+		<div id="status">
+            Welcome #{user.name}
+            | <s:link id="search" view="/main.xhtml" value="Search" propagation="none"/>
+            | <s:link id="settings" view="/password.xhtml" value="Settings" propagation="none"/>
+            | <s:link id="logout" action="#{identity.logout}" value="Logout"/>
+		</div>
+	</div>
+	<div id="container">
+		<div id="sidebar">
+			<ui:insert name="sidebar"/>
+		</div>
+		<div id="content">
+			<ui:insert name="content"/>
+		    <ui:include src="conversations.xhtml" />
+		</div>
+	</div>
+	<div id="footer">Created with JBoss Seam, EJB 3, JSF 2 and Hibernate 4</div>
+</div>
+</body>
+</html>
+</f:view>

Added: branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/webapp-cluster/WEB-INF/web.xml
===================================================================
--- branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/webapp-cluster/WEB-INF/web.xml	                        (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/jee6/jee6-web/src/main/webapp-cluster/WEB-INF/web.xml	2012-08-20 14:14:25 UTC (rev 15060)
@@ -0,0 +1,64 @@
+<?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">
+
+    <distributable/>
+
+    <display-name>Seam Booking Example</display-name>
+    
+    <!-- Seam -->
+    
+    <listener>
+        <listener-class>org.jboss.seam.servlet.SeamListener</listener-class>
+    </listener>
+    
+    <servlet>
+        <servlet-name>Seam Resource Servlet</servlet-name>
+        <servlet-class>org.jboss.seam.servlet.SeamResourceServlet</servlet-class>
+    </servlet>
+    
+    <servlet-mapping>
+        <servlet-name>Seam Resource Servlet</servlet-name>
+        <url-pattern>/seam/resource/*</url-pattern>
+    </servlet-mapping>
+    
+    <filter>
+        <filter-name>Seam Filter</filter-name>
+        <filter-class>org.jboss.seam.servlet.SeamFilter</filter-class>
+    </filter>
+
+    <filter-mapping>
+        <filter-name>Seam Filter</filter-name>
+        <url-pattern>/*</url-pattern>
+    </filter-mapping>
+    
+    <!-- JSF -->
+    
+    <context-param>
+        <param-name>javax.faces.DEFAULT_SUFFIX</param-name>
+        <param-value>.xhtml</param-value>
+    </context-param>
+    
+    <context-param>
+        <param-name>facelets.DEVELOPMENT</param-name>
+        <param-value>true</param-value>
+    </context-param>
+    
+    <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>*.seam</url-pattern>
+    </servlet-mapping>
+
+    <session-config>
+        <session-timeout>10</session-timeout> 
+    </session-config>    
+    
+</web-app>

Added: branches/community/Seam_2_3/examples-ee6/jee6/pom.xml
===================================================================
--- branches/community/Seam_2_3/examples-ee6/jee6/pom.xml	                        (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/jee6/pom.xml	2012-08-20 14:14:25 UTC (rev 15060)
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<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/maven-v4_0_0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <groupId>org.jboss.seam.examples-ee6</groupId>
+    <artifactId>jee6</artifactId>
+    <parent>
+        <groupId>org.jboss.seam</groupId>
+        <artifactId>examples-ee6</artifactId>
+        <version>2.3.0.CR1-SNAPSHOT</version>
+        <relativePath>../pom.xml</relativePath>
+    </parent>
+    <packaging>pom</packaging>
+    <name>Booking Example EE6</name>
+    
+    <properties>
+        <example.name>jee6</example.name>
+    </properties>
+    
+    <modules>
+        <module>jee6-web</module>
+        <module>jee6-tests</module>
+    </modules>
+    
+</project>

Added: branches/community/Seam_2_3/examples-ee6/jee6/readme.txt
===================================================================
--- branches/community/Seam_2_3/examples-ee6/jee6/readme.txt	                        (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/jee6/readme.txt	2012-08-20 14:14:25 UTC (rev 15060)
@@ -0,0 +1,19 @@
+Seam Booking Example
+====================
+
+This example demonstrates the use of Seam in a Java EE 6 environment.
+Transaction and persistence context management is handled by the
+EJB container. This example runs on JBoss AS as a WAR
+
+To deploy the example to JBossAS, follow these steps:
+
+* In the example root directory run:
+
+    mvn clean install
+
+* In the booking-web directory run:
+
+    mvn jboss-as:deploy
+
+* Open this URL in a web browser: http://localhost:8080/seam-jee6
+

Modified: branches/community/Seam_2_3/examples-ee6/pom.xml
===================================================================
--- branches/community/Seam_2_3/examples-ee6/pom.xml	2012-08-20 12:10:48 UTC (rev 15059)
+++ branches/community/Seam_2_3/examples-ee6/pom.xml	2012-08-20 14:14:25 UTC (rev 15060)
@@ -98,6 +98,7 @@
     </properties>
     
     <modules>
+        <module>booking-ee6</module>
         <module>blog</module>
         <module>booking</module>
         <module>contactlist</module>

Modified: branches/community/Seam_2_3/jboss-seam/src/main/java/org/jboss/seam/Component.java
===================================================================
--- branches/community/Seam_2_3/jboss-seam/src/main/java/org/jboss/seam/Component.java	2012-08-20 12:10:48 UTC (rev 15059)
+++ branches/community/Seam_2_3/jboss-seam/src/main/java/org/jboss/seam/Component.java	2012-08-20 14:14:25 UTC (rev 15060)
@@ -1366,6 +1366,7 @@
               return instantiateEntityBean();
            case STATELESS_SESSION_BEAN:
            case STATEFUL_SESSION_BEAN:
+           case SINGLETON_SESSION_BEAN:
               return instantiateSessionBean();
            case MESSAGE_DRIVEN_BEAN:
               throw new UnsupportedOperationException("Message-driven beans may not be called: " + name);
@@ -1385,6 +1386,7 @@
               break;
            case STATELESS_SESSION_BEAN:
            case STATEFUL_SESSION_BEAN:
+           case SINGLETON_SESSION_BEAN:
               postConstructSessionBean(bean);
               break;
            case MESSAGE_DRIVEN_BEAN:
@@ -1830,6 +1832,12 @@
                   return true;
                }
             }
+            
+            // No interface view
+            if (clazz.isInstance(bean)) {
+               return true;
+            }
+            
             return false;
       }
    }
@@ -2466,9 +2474,19 @@
       Set<Class> interfaces = new LinkedHashSet<Class>();
       interfaces.add(Instance.class);
       interfaces.add(Proxy.class);
+      
+      boolean noInterfaceView = false;
+      
       if ( type.isSessionBean() )
       {
-          interfaces.addAll(businessInterfaces);
+          if (businessInterfaces.isEmpty())
+          {
+             noInterfaceView = true;
+          }
+          else
+          {
+             interfaces.addAll(businessInterfaces);
+          }
       }
       else
       {
@@ -2476,7 +2494,7 @@
          interfaces.add(Mutable.class);
       }
       ProxyFactory factory = new ProxyFactory();
-      factory.setSuperclass( type==JAVA_BEAN ? beanClass : Object.class );
+      factory.setSuperclass( (type==JAVA_BEAN || noInterfaceView) ? beanClass : Object.class );
       factory.setInterfaces( interfaces.toArray( new Class[0] ) );
       factory.setFilter(FINALIZE_FILTER);
       return factory.createClass();

Modified: branches/community/Seam_2_3/jboss-seam/src/main/java/org/jboss/seam/ComponentType.java
===================================================================
--- branches/community/Seam_2_3/jboss-seam/src/main/java/org/jboss/seam/ComponentType.java	2012-08-20 12:10:48 UTC (rev 15059)
+++ branches/community/Seam_2_3/jboss-seam/src/main/java/org/jboss/seam/ComponentType.java	2012-08-20 14:14:25 UTC (rev 15060)
@@ -1,10 +1,12 @@
 //$Id: ComponentType.java 5355 2007-06-20 20:42:22Z gavin $
 package org.jboss.seam;
 
+import static org.jboss.seam.ScopeType.APPLICATION;
 import static org.jboss.seam.ScopeType.CONVERSATION;
 import static org.jboss.seam.ScopeType.EVENT;
 import static org.jboss.seam.ScopeType.STATELESS;
 
+
 /**
  * The types of components understood by Seam.
  * 
@@ -15,6 +17,7 @@
    ENTITY_BEAN, 
    STATELESS_SESSION_BEAN,
    STATEFUL_SESSION_BEAN,
+   SINGLETON_SESSION_BEAN,
    MESSAGE_DRIVEN_BEAN,
    JAVA_BEAN;
    
@@ -25,7 +28,7 @@
    
    public boolean isSessionBean()
    {
-      return this==STATELESS_SESSION_BEAN || this==STATEFUL_SESSION_BEAN;
+      return this==STATELESS_SESSION_BEAN || this==STATEFUL_SESSION_BEAN || this==SINGLETON_SESSION_BEAN;
    }
    
    public boolean isStateless()
@@ -37,6 +40,8 @@
    {
       switch (this)
       {
+         case SINGLETON_SESSION_BEAN:
+            return APPLICATION;
          case STATEFUL_SESSION_BEAN:
          case ENTITY_BEAN:
             return CONVERSATION;

Modified: branches/community/Seam_2_3/jboss-seam/src/main/java/org/jboss/seam/Seam.java
===================================================================
--- branches/community/Seam_2_3/jboss-seam/src/main/java/org/jboss/seam/Seam.java	2012-08-20 12:10:48 UTC (rev 15059)
+++ branches/community/Seam_2_3/jboss-seam/src/main/java/org/jboss/seam/Seam.java	2012-08-20 14:14:25 UTC (rev 15060)
@@ -6,9 +6,11 @@
 import static org.jboss.seam.ComponentType.MESSAGE_DRIVEN_BEAN;
 import static org.jboss.seam.ComponentType.STATEFUL_SESSION_BEAN;
 import static org.jboss.seam.ComponentType.STATELESS_SESSION_BEAN;
+import static org.jboss.seam.ComponentType.SINGLETON_SESSION_BEAN;
 import static org.jboss.seam.util.EJB.MESSAGE_DRIVEN;
 import static org.jboss.seam.util.EJB.STATEFUL;
 import static org.jboss.seam.util.EJB.STATELESS;
+import static org.jboss.seam.util.EJB.SINGLETON;
 import static org.jboss.seam.util.EJB.name;
 
 import java.io.IOException;
@@ -114,6 +116,10 @@
       {
           return STATELESS_SESSION_BEAN;
       } 
+      else if ( clazz.isAnnotationPresent(SINGLETON) ) 
+      {
+          return SINGLETON_SESSION_BEAN;
+      } 
       else if ( clazz.isAnnotationPresent(MESSAGE_DRIVEN) ) 
       {
           return MESSAGE_DRIVEN_BEAN;
@@ -216,6 +222,9 @@
            case STATELESS_SESSION_BEAN:
                return clazz.isAnnotationPresent(STATELESS) ?
                      getStatelessEjbName(clazz) : getEjbNameFromDescriptor(clazz);
+           case SINGLETON_SESSION_BEAN:
+              return clazz.isAnnotationPresent(SINGLETON) ?
+                     getSingletonEjbName(clazz) : getEjbNameFromDescriptor(clazz);
            case MESSAGE_DRIVEN_BEAN:
                return clazz.isAnnotationPresent(MESSAGE_DRIVEN) ?
                      getMessageDrivenEjbName(clazz) : getEjbNameFromDescriptor(clazz);
@@ -241,6 +250,12 @@
       String statefulName = name( clazz.getAnnotation(STATEFUL) );
       return statefulName.equals("") ? unqualifyClassName(clazz) : statefulName;
    }
+   
+   private static String getSingletonEjbName(Class<?> clazz)
+   {
+      String singletonName = name( clazz.getAnnotation(SINGLETON) );
+      return singletonName.equals("") ? unqualifyClassName(clazz) : singletonName;
+   }
 
    private static String getEjbNameFromDescriptor(Class<?> clazz)
    {

Modified: branches/community/Seam_2_3/jboss-seam/src/main/java/org/jboss/seam/util/EJB.java
===================================================================
--- branches/community/Seam_2_3/jboss-seam/src/main/java/org/jboss/seam/util/EJB.java	2012-08-20 12:10:48 UTC (rev 15059)
+++ branches/community/Seam_2_3/jboss-seam/src/main/java/org/jboss/seam/util/EJB.java	2012-08-20 14:14:25 UTC (rev 15060)
@@ -16,6 +16,7 @@
    
    public static final Class<Annotation> STATELESS;
    public static final Class<Annotation> STATEFUL;
+   public static final Class<Annotation> SINGLETON;
    public static final Class<Annotation> MESSAGE_DRIVEN;
    public static final Class<Annotation> PRE_PASSIVATE;
    public static final Class<Annotation> POST_ACTIVATE;
@@ -47,6 +48,7 @@
    {
       STATELESS = classForName("javax.ejb.Stateless");
       STATEFUL = classForName("javax.ejb.Stateful");
+      SINGLETON = classForName("javax.ejb.Singleton");
       MESSAGE_DRIVEN = classForName("javax.ejb.MessageDriven");
       APPLICATION_EXCEPTION = classForName("javax.ejb.ApplicationException");
       PERSISTENCE_CONTEXT = classForName("javax.persistence.PersistenceContext");



More information about the seam-commits mailing list