[seam-commits] Seam SVN: r14566 - in branches/community/Seam_2_3/examples-ee6: contactlist/contactlist-tests/src/test/java/org/jboss/seam/example/contactlist/test and 42 other directories.

seam-commits at lists.jboss.org seam-commits at lists.jboss.org
Fri Apr 13 00:53:53 EDT 2012


Author: dhinojosa
Date: 2012-04-13 00:53:48 -0400 (Fri, 13 Apr 2012)
New Revision: 14566

Added:
   branches/community/Seam_2_3/examples-ee6/icefaces/
   branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-ear/
   branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-ear/pom.xml
   branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-ear/src/
   branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-ear/src/main/
   branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-ear/src/main/application/
   branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-ear/src/main/application/META-INF/
   branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-ear/src/main/application/META-INF/jboss-deployment-structure.xml
   branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-ear/src/main/resources/
   branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-ear/src/main/resources/seam-icefaces-ds.xml
   branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-ejb/
   branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-ejb/pom.xml
   branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-ejb/src/
   branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-ejb/src/main/
   branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-ejb/src/main/java/
   branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-ejb/src/main/java/org/
   branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-ejb/src/main/java/org/jboss/
   branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-ejb/src/main/java/org/jboss/seam/
   branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-ejb/src/main/java/org/jboss/seam/example/
   branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-ejb/src/main/java/org/jboss/seam/example/booking/
   branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-ejb/src/main/java/org/jboss/seam/example/booking/Authenticator.java
   branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-ejb/src/main/java/org/jboss/seam/example/booking/AuthenticatorAction.java
   branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-ejb/src/main/java/org/jboss/seam/example/booking/Booking.java
   branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-ejb/src/main/java/org/jboss/seam/example/booking/BookingList.java
   branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-ejb/src/main/java/org/jboss/seam/example/booking/BookingListAction.java
   branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-ejb/src/main/java/org/jboss/seam/example/booking/ChangePassword.java
   branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-ejb/src/main/java/org/jboss/seam/example/booking/ChangePasswordAction.java
   branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-ejb/src/main/java/org/jboss/seam/example/booking/Hotel.java
   branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-ejb/src/main/java/org/jboss/seam/example/booking/HotelBooking.java
   branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-ejb/src/main/java/org/jboss/seam/example/booking/HotelBookingAction.java
   branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-ejb/src/main/java/org/jboss/seam/example/booking/HotelSearching.java
   branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-ejb/src/main/java/org/jboss/seam/example/booking/HotelSearchingAction.java
   branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-ejb/src/main/java/org/jboss/seam/example/booking/Register.java
   branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-ejb/src/main/java/org/jboss/seam/example/booking/RegisterAction.java
   branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-ejb/src/main/java/org/jboss/seam/example/booking/User.java
   branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-ejb/src/main/resources/
   branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-ejb/src/main/resources/META-INF/
   branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-ejb/src/main/resources/META-INF/ejb-jar.xml
   branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-ejb/src/main/resources/META-INF/persistence.xml
   branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-ejb/src/main/resources/import.sql
   branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-ejb/src/main/resources/seam.properties
   branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-tests/
   branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-tests/pom.xml
   branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-tests/src/
   branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-tests/src/test/
   branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-tests/src/test/java/
   branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-tests/src/test/java/org/
   branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-tests/src/test/java/org/jboss/
   branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-tests/src/test/java/org/jboss/seam/
   branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-tests/src/test/java/org/jboss/seam/example/
   branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-tests/src/test/java/org/jboss/seam/example/booking/
   branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-tests/src/test/java/org/jboss/seam/example/booking/test/
   branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-tests/src/test/java/org/jboss/seam/example/booking/test/BookingTest.java
   branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-tests/src/test/java/org/jboss/seam/example/booking/test/ChangePasswordTest.java
   branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-tests/src/test/java/org/jboss/seam/example/booking/test/Deployments.java
   branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-tests/src/test/java/org/jboss/seam/example/booking/test/LoginTest.java
   branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-tests/src/test/resources-ftest/
   branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-tests/src/test/resources-ftest/testng-jboss4.xml
   branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-tests/src/test/resources-ftest/testng-jboss5.xml
   branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-tests/src/test/resources-integration/
   branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-tests/src/test/resources-integration/arquillian.xml
   branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-tests/src/test/resources-integration/testng.xml
   branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-tests/src/test/resources/
   branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-tests/src/test/resources/WEB-INF/
   branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-tests/src/test/resources/WEB-INF/components.xml
   branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-tests/src/test/resources/icefaces.properties
   branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-tests/src/test/resources/seam.properties
   branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-web/
   branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-web/pom.xml
   branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-web/src/
   branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-web/src/main/
   branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-web/src/main/resources/
   branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-web/src/main/resources/messages.properties
   branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-web/src/main/resources/messages_en.properties
   branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-web/src/main/webapp/
   branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-web/src/main/webapp/WEB-INF/
   branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-web/src/main/webapp/WEB-INF/components.xml
   branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-web/src/main/webapp/WEB-INF/faces-config.xml
   branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-web/src/main/webapp/WEB-INF/pages.xml
   branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-web/src/main/webapp/WEB-INF/web.xml
   branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-web/src/main/webapp/book.xhtml
   branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-web/src/main/webapp/confirm.xhtml
   branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-web/src/main/webapp/conversations.xhtml
   branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-web/src/main/webapp/css/
   branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-web/src/main/webapp/css/screen.css
   branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-web/src/main/webapp/css/trailblazer_main.css
   branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-web/src/main/webapp/display.xhtml
   branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-web/src/main/webapp/edit.xhtml
   branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-web/src/main/webapp/exp/
   branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-web/src/main/webapp/exp/bookingExp.html
   branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-web/src/main/webapp/exp/confirmExp.html
   branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-web/src/main/webapp/exp/introExp.html
   branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-web/src/main/webapp/exp/loginExp.html
   branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-web/src/main/webapp/exp/mainExp.html
   branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-web/src/main/webapp/exp/registerExp.html
   branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-web/src/main/webapp/exp/workspaceExp.html
   branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-web/src/main/webapp/home.xhtml
   branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-web/src/main/webapp/hotel.xhtml
   branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-web/src/main/webapp/hotelview.xhtml
   branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-web/src/main/webapp/img/
   branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-web/src/main/webapp/img/bg.gif
   branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-web/src/main/webapp/img/btn.bg.gif
   branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-web/src/main/webapp/img/cal-next.png
   branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-web/src/main/webapp/img/cal-prev.png
   branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-web/src/main/webapp/img/cnt.bg.gif
   branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-web/src/main/webapp/img/dtpick.gif
   branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-web/src/main/webapp/img/hdr.ad.jpg
   branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-web/src/main/webapp/img/hdr.bar.jpg
   branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-web/src/main/webapp/img/hdr.bg.gif
   branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-web/src/main/webapp/img/hdr.title.gif
   branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-web/src/main/webapp/img/header_line.gif
   branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-web/src/main/webapp/img/input.bg.gif
   branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-web/src/main/webapp/img/sdb.bg.gif
   branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-web/src/main/webapp/img/spinner.gif
   branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-web/src/main/webapp/img/th.bg.gif
   branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-web/src/main/webapp/index.html
   branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-web/src/main/webapp/main.xhtml
   branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-web/src/main/webapp/password.xhtml
   branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-web/src/main/webapp/register.xhtml
   branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-web/src/main/webapp/template.xhtml
   branches/community/Seam_2_3/examples-ee6/icefaces/pom.xml
   branches/community/Seam_2_3/examples-ee6/icefaces/readme.txt
Modified:
   branches/community/Seam_2_3/examples-ee6/contactlist/contactlist-tests/src/test/java/org/jboss/seam/example/contactlist/test/ContactListTest.java
   branches/community/Seam_2_3/examples-ee6/guice/guice-tests/pom.xml
   branches/community/Seam_2_3/examples-ee6/update_process.txt
Log:
added icefaces

Modified: branches/community/Seam_2_3/examples-ee6/contactlist/contactlist-tests/src/test/java/org/jboss/seam/example/contactlist/test/ContactListTest.java
===================================================================
--- branches/community/Seam_2_3/examples-ee6/contactlist/contactlist-tests/src/test/java/org/jboss/seam/example/contactlist/test/ContactListTest.java	2012-04-12 18:27:40 UTC (rev 14565)
+++ branches/community/Seam_2_3/examples-ee6/contactlist/contactlist-tests/src/test/java/org/jboss/seam/example/contactlist/test/ContactListTest.java	2012-04-13 04:53:48 UTC (rev 14566)
@@ -17,7 +17,7 @@
 public class ContactListTest extends JUnitSeamTest
 {
 
-   @Deployment(name="<project>Test")
+   @Deployment(name="ContactListTest")
    @OverProtocol("Servlet 3.0")
    public static Archive<?> createDeployment()
    {

Modified: branches/community/Seam_2_3/examples-ee6/guice/guice-tests/pom.xml
===================================================================
--- branches/community/Seam_2_3/examples-ee6/guice/guice-tests/pom.xml	2012-04-12 18:27:40 UTC (rev 14565)
+++ branches/community/Seam_2_3/examples-ee6/guice/guice-tests/pom.xml	2012-04-13 04:53:48 UTC (rev 14566)
@@ -17,11 +17,6 @@
 
    <dependencies>
       <dependency>
-         <groupId>org.testng</groupId>
-         <artifactId>testng</artifactId>
-         <classifier>jdk15</classifier>
-      </dependency>
-      <dependency>
          <groupId>org.jboss.seam.examples-ee6</groupId>
          <artifactId>guice-ejb</artifactId>
          <type>ejb</type>

Added: branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-ear/pom.xml
===================================================================
--- branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-ear/pom.xml	                        (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-ear/pom.xml	2012-04-13 04:53:48 UTC (rev 14566)
@@ -0,0 +1,138 @@
+<?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>icefaces</artifactId>
+        <groupId>org.jboss.seam.examples-ee6</groupId>
+        <version>2.3.0.Beta2-SNAPSHOT</version>
+        <relativePath>../pom.xml</relativePath>
+    </parent>
+    
+    <groupId>org.jboss.seam.examples-ee6</groupId>
+    <artifactId>icefaces-ear</artifactId>
+    <packaging>ear</packaging>
+    <name>Icefaces EAR Module (EE6)</name>
+    
+    <properties>
+        <jboss.home>${env.JBOSS_HOME}</jboss.home>
+        <jboss.domain>default</jboss.domain>
+    </properties>
+    
+    <dependencies>
+        <dependency>
+            <groupId>org.jboss.seam.examples-ee6</groupId>
+            <artifactId>icefaces-web</artifactId>
+            <version>${project.version}</version>
+            <type>war</type>
+        </dependency>
+        <dependency>
+            <groupId>org.jboss.seam.examples-ee6</groupId>
+            <artifactId>icefaces-ejb</artifactId>
+            <version>${project.version}</version>
+            <type>ejb</type>
+        </dependency>
+        <dependency>
+            <groupId>org.jboss.seam</groupId>
+            <artifactId>jboss-seam</artifactId>
+            <type>ejb</type>
+            <scope>compile</scope>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <finalName>seam-icefaces</finalName>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-ear-plugin</artifactId>
+                <version>2.3.2</version>
+                <configuration>
+                    <defaultLibBundleDir>lib</defaultLibBundleDir>
+                    <!-- Exclude eclipse generated application.xml and manually modified jboss-app.xml during mvn build  -->
+                    <earSourceExcludes>**/application.xml, **/jboss-app.xml</earSourceExcludes>
+                    <!-- use maven generated application.xml instead -->
+                    <generateApplicationXml>true</generateApplicationXml>
+                    <filtering>true</filtering>
+                    <modules>
+                        <webModule>
+                            <groupId>org.jboss.seam.examples-ee6</groupId>
+                            <artifactId>icefaces-web</artifactId>
+                            <contextRoot>/seam-icefaces</contextRoot>
+                            <bundleFileName>icefaces-web.war</bundleFileName>
+                        </webModule>
+                        <ejbModule>
+                            <groupId>org.jboss.seam.examples-ee6</groupId>
+                            <artifactId>icefaces-ejb</artifactId>
+                            <bundleFileName>icefaces-ejb.jar</bundleFileName>
+                        </ejbModule>
+                       <ejbModule>
+                          <groupId>org.jboss.seam</groupId>
+                          <artifactId>jboss-seam</artifactId>
+                          <bundleFileName>jboss-seam.jar</bundleFileName>
+                       </ejbModule>
+                    </modules>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+
+    <profiles>
+        <profile>
+            <id>exploded</id>
+            <build>
+                <plugins>
+                    <plugin>
+                        <groupId>org.apache.maven.plugins</groupId>
+                        <artifactId>maven-dependency-plugin</artifactId>
+                        <executions>
+                            <execution>
+                                <id>unpack</id>
+                                <phase>package</phase>
+                                <goals>
+                                    <goal>unpack</goal>
+                                </goals>
+                                <configuration>
+                                    <artifactItems>
+                                        <artifactItem>
+                                            <groupId>org.jboss.seam.examples-ee6</groupId>
+                                            <artifactId>icefaces-ear</artifactId>
+                                            <type>ear</type>
+                                            <overWrite>true</overWrite>
+                                            <outputDirectory>${project.build.directory}/${project.build.finalName}-exploded/${project.build.finalName}.ear</outputDirectory>
+                                        </artifactItem>
+                                        <artifactItem>
+                                            <groupId>org.jboss.seam.examples-ee6</groupId>
+                                            <artifactId>icefaces-web</artifactId>
+                                            <type>war</type>
+                                            <overWrite>true</overWrite>
+                                            <outputDirectory>${project.build.directory}/${project.build.finalName}-exploded/${project.build.finalName}.ear/${example.name}-web.war</outputDirectory>
+                                        </artifactItem>
+                                        <artifactItem>
+                                            <groupId>org.jboss.seam.examples-ee6</groupId>
+                                            <artifactId>icefaces-ejb</artifactId>
+                                            <type>jar</type>
+                                            <overWrite>true</overWrite>
+                                            <outputDirectory>${project.build.directory}/${project.build.finalName}-exploded/${project.build.finalName}.ear/${example.name}-ejb.jar</outputDirectory>
+                                        </artifactItem>
+                                    </artifactItems>
+                                </configuration>
+                            </execution>
+                        </executions>
+                    </plugin>
+                    <plugin>
+                        <groupId>org.codehaus.mojo</groupId>
+                        <artifactId>jboss-maven-plugin</artifactId>
+                        <configuration>
+                            <jbossHome>${jboss.home}</jbossHome>
+                            <serverName>${jboss.domain}</serverName>
+                            <fileNames>
+                                <param>${basedir}/src/main/resources/seam-icefaces-ds.xml</param>
+                                <directory>${project.build.directory}/${project.build.finalName}-exploded/${project.build.finalName}.ear</directory>
+                            </fileNames>
+                        </configuration>
+                    </plugin>
+                </plugins>
+            </build>
+        </profile>
+    </profiles>
+</project>

Copied: branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-ear/src/main/application/META-INF/jboss-deployment-structure.xml (from rev 14552, branches/community/Seam_2_3/examples-ee6/dvdstore/dvdstore-ear/src/main/application/META-INF/jboss-deployment-structure.xml)
===================================================================
--- branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-ear/src/main/application/META-INF/jboss-deployment-structure.xml	                        (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-ear/src/main/application/META-INF/jboss-deployment-structure.xml	2012-04-13 04:53:48 UTC (rev 14566)
@@ -0,0 +1,15 @@
+<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="org.slf4j" export="true"/>
+          <module name="org.hibernate" export="true"/>
+          <module name="org.hibernate.validator" 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/icefaces/icefaces-ear/src/main/resources/seam-icefaces-ds.xml
===================================================================
--- branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-ear/src/main/resources/seam-icefaces-ds.xml	                        (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-ear/src/main/resources/seam-icefaces-ds.xml	2012-04-13 04:53:48 UTC (rev 14566)
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!DOCTYPE datasources
+    PUBLIC "-//JBoss//DTD JBOSS JCA Config 1.5//EN"
+    "http://www.jboss.org/j2ee/dtd/jboss-ds_1_5.dtd">
+
+<datasources>
+    <local-tx-datasource>
+        <jndi-name>icefaces-bookingDatasource</jndi-name>
+        <connection-url>jdbc:hsqldb:.</connection-url>
+        <driver-class>org.hsqldb.jdbcDriver</driver-class>
+        <user-name>sa</user-name>
+        <password></password>
+    </local-tx-datasource>
+</datasources>

Added: branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-ejb/pom.xml
===================================================================
--- branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-ejb/pom.xml	                        (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-ejb/pom.xml	2012-04-13 04:53:48 UTC (rev 14566)
@@ -0,0 +1,49 @@
+<?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>icefaces</artifactId>
+        <groupId>org.jboss.seam.examples-ee6</groupId>
+        <version>2.3.0.Beta2-SNAPSHOT</version>
+        <relativePath>../pom.xml</relativePath>
+    </parent>
+    
+    <groupId>org.jboss.seam.examples-ee6</groupId>
+    <artifactId>icefaces-ejb</artifactId>
+    <packaging>ejb</packaging>
+    <name>Icefaces EJB Module (EE6)</name>
+    
+    <dependencies>
+       <dependency>
+          <groupId>org.jboss.seam</groupId>
+          <artifactId>jboss-seam</artifactId>
+          <type>ejb</type>
+          <scope>provided</scope>
+       </dependency>
+       <dependency>
+          <groupId>org.hibernate</groupId>
+          <artifactId>hibernate-validator</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.spec.javax.faces</groupId>
+          <artifactId>jboss-jsf-api_2.0_spec</artifactId>
+          <scope>provided</scope>
+       </dependency>
+       <dependency>
+          <groupId>org.hibernate.javax.persistence</groupId>
+          <artifactId>hibernate-jpa-2.0-api</artifactId>
+          <scope>provided</scope>
+       </dependency>
+    </dependencies>
+</project>

Added: branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-ejb/src/main/java/org/jboss/seam/example/booking/Authenticator.java
===================================================================
--- branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-ejb/src/main/java/org/jboss/seam/example/booking/Authenticator.java	                        (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-ejb/src/main/java/org/jboss/seam/example/booking/Authenticator.java	2012-04-13 04:53:48 UTC (rev 14566)
@@ -0,0 +1,9 @@
+package org.jboss.seam.example.booking;
+
+import javax.ejb.Local;
+
+ at Local
+public interface Authenticator
+{
+   boolean authenticate();
+}

Added: branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-ejb/src/main/java/org/jboss/seam/example/booking/AuthenticatorAction.java
===================================================================
--- branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-ejb/src/main/java/org/jboss/seam/example/booking/AuthenticatorAction.java	                        (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-ejb/src/main/java/org/jboss/seam/example/booking/AuthenticatorAction.java	2012-04-13 04:53:48 UTC (rev 14566)
@@ -0,0 +1,40 @@
+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.Name;
+import org.jboss.seam.annotations.Out;
+
+ at Stateless
+ at Name("authenticator")
+public class AuthenticatorAction implements Authenticator
+{
+   @PersistenceContext 
+   private 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;
+      }
+   }
+
+}

Added: branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-ejb/src/main/java/org/jboss/seam/example/booking/Booking.java
===================================================================
--- branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-ejb/src/main/java/org/jboss/seam/example/booking/Booking.java	                        (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-ejb/src/main/java/org/jboss/seam/example/booking/Booking.java	2012-04-13 04:53:48 UTC (rev 14566)
@@ -0,0 +1,190 @@
+//$Id: Booking.java,v 1.15 2007/06/27 00:06:49 gavin Exp $
+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.NotNull;
+import javax.validation.constraints.Pattern;
+import javax.validation.constraints.Size;
+
+import org.jboss.seam.annotations.Name;
+
+ at Entity
+ at Name("booking")
+public class Booking implements Serializable
+{
+   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/icefaces/icefaces-ejb/src/main/java/org/jboss/seam/example/booking/BookingList.java
===================================================================
--- branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-ejb/src/main/java/org/jboss/seam/example/booking/BookingList.java	                        (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-ejb/src/main/java/org/jboss/seam/example/booking/BookingList.java	2012-04-13 04:53:48 UTC (rev 14566)
@@ -0,0 +1,13 @@
+//$Id: BookingList.java,v 1.7 2007/06/27 00:06:49 gavin Exp $
+package org.jboss.seam.example.booking;
+
+import javax.ejb.Local;
+
+ at Local
+public interface BookingList
+{
+   public void getBookings();
+   public Booking getBooking();
+   public void cancel();
+   public void destroy();
+}
\ No newline at end of file

Added: branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-ejb/src/main/java/org/jboss/seam/example/booking/BookingListAction.java
===================================================================
--- branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-ejb/src/main/java/org/jboss/seam/example/booking/BookingListAction.java	                        (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-ejb/src/main/java/org/jboss/seam/example/booking/BookingListAction.java	2012-04-13 04:53:48 UTC (rev 14566)
@@ -0,0 +1,76 @@
+//$Id: BookingListAction.java,v 1.23 2007/06/27 00:06:49 gavin Exp $
+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 BookingList, 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/icefaces/icefaces-ejb/src/main/java/org/jboss/seam/example/booking/ChangePassword.java
===================================================================
--- branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-ejb/src/main/java/org/jboss/seam/example/booking/ChangePassword.java	                        (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-ejb/src/main/java/org/jboss/seam/example/booking/ChangePassword.java	2012-04-13 04:53:48 UTC (rev 14566)
@@ -0,0 +1,16 @@
+//$Id: ChangePassword.java,v 1.5 2007/06/27 00:06:49 gavin Exp $
+package org.jboss.seam.example.booking;
+
+import javax.ejb.Local;
+
+ at Local
+public interface ChangePassword
+{
+   public void changePassword();
+   public boolean isChanged();
+   
+   public String getVerify();
+   public void setVerify(String verify);
+   
+   public void destroy();
+}
\ No newline at end of file

Added: branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-ejb/src/main/java/org/jboss/seam/example/booking/ChangePasswordAction.java
===================================================================
--- branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-ejb/src/main/java/org/jboss/seam/example/booking/ChangePasswordAction.java	                        (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-ejb/src/main/java/org/jboss/seam/example/booking/ChangePasswordAction.java	2012-04-13 04:53:48 UTC (rev 14566)
@@ -0,0 +1,73 @@
+//$Id: ChangePasswordAction.java,v 1.22 2007/06/27 00:06:49 gavin Exp $
+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 implements ChangePassword
+{
+   @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/icefaces/icefaces-ejb/src/main/java/org/jboss/seam/example/booking/Hotel.java
===================================================================
--- branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-ejb/src/main/java/org/jboss/seam/example/booking/Hotel.java	                        (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-ejb/src/main/java/org/jboss/seam/example/booking/Hotel.java	2012-04-13 04:53:48 UTC (rev 14566)
@@ -0,0 +1,110 @@
+//$Id: Hotel.java,v 1.13 2007/06/27 00:06:49 gavin Exp $
+package org.jboss.seam.example.booking;
+
+import org.jboss.seam.annotations.Name;
+
+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 java.io.Serializable;
+import java.math.BigDecimal;
+
+ at Entity
+ at Name("hotel")
+public class Hotel implements Serializable {
+   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/icefaces/icefaces-ejb/src/main/java/org/jboss/seam/example/booking/HotelBooking.java
===================================================================
--- branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-ejb/src/main/java/org/jboss/seam/example/booking/HotelBooking.java	                        (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-ejb/src/main/java/org/jboss/seam/example/booking/HotelBooking.java	2012-04-13 04:53:48 UTC (rev 14566)
@@ -0,0 +1,22 @@
+//$Id: HotelBooking.java,v 1.14 2007/06/27 00:06:49 gavin Exp $
+package org.jboss.seam.example.booking;
+
+import javax.ejb.Local;
+
+ at Local
+public interface HotelBooking
+{
+   public void selectHotel(Hotel selectedHotel);
+   
+   public void bookHotel();
+   
+   public void setBookingDetails();
+   public boolean isBookingValid();
+   
+   public void confirm();
+
+   public void cancel();
+   
+   public void destroy();
+   
+}
\ No newline at end of file

Added: branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-ejb/src/main/java/org/jboss/seam/example/booking/HotelBookingAction.java
===================================================================
--- branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-ejb/src/main/java/org/jboss/seam/example/booking/HotelBookingAction.java	                        (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-ejb/src/main/java/org/jboss/seam/example/booking/HotelBookingAction.java	2012-04-13 04:53:48 UTC (rev 14566)
@@ -0,0 +1,108 @@
+//$Id: HotelBookingAction.java,v 1.53 2007/06/27 00:06:49 gavin Exp $
+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 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
+   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()
+   {      
+      System.out.println("bookHotel for hotel="+hotel.getName()+" and user="+user.toString());
+      booking = new Booking(hotel, user);
+      Calendar c1 = Calendar.getInstance();
+      booking.setCheckinDate( c1.getTime() );
+      c1.add(Calendar.DAY_OF_MONTH, 1);
+      booking.setCheckoutDate( c1.getTime() );
+   }
+   public void setBookingDetails()
+   {
+      Calendar c2 = Calendar.getInstance();
+      c2.add(Calendar.DAY_OF_MONTH, -1);
+      if ( booking.getCheckinDate().before( c2.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/icefaces/icefaces-ejb/src/main/java/org/jboss/seam/example/booking/HotelSearching.java
===================================================================
--- branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-ejb/src/main/java/org/jboss/seam/example/booking/HotelSearching.java	                        (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-ejb/src/main/java/org/jboss/seam/example/booking/HotelSearching.java	2012-04-13 04:53:48 UTC (rev 14566)
@@ -0,0 +1,28 @@
+//$Id: HotelSearching.java,v 1.12 2007/06/27 00:06:49 gavin Exp $
+package org.jboss.seam.example.booking;
+
+import java.util.List;
+
+import javax.ejb.Local;
+import javax.faces.event.ValueChangeEvent;
+import javax.faces.model.SelectItem;
+
+ at Local
+public interface HotelSearching
+{
+   public int getPageSize();
+   public void setPageSize(int pageSize);
+   
+   public String getSearchString();
+   public void setSearchString(String searchString);
+   public void handleSearchStringChange(ValueChangeEvent e);
+   public void handlePageSizeChange(ValueChangeEvent e);
+   public List<SelectItem> getCities();
+   
+   public void find();
+   public void nextPage();
+   public boolean isNextPageAvailable();
+
+   public void destroy();
+   
+}
\ No newline at end of file

Added: branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-ejb/src/main/java/org/jboss/seam/example/booking/HotelSearchingAction.java
===================================================================
--- branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-ejb/src/main/java/org/jboss/seam/example/booking/HotelSearchingAction.java	                        (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-ejb/src/main/java/org/jboss/seam/example/booking/HotelSearchingAction.java	2012-04-13 04:53:48 UTC (rev 14566)
@@ -0,0 +1,106 @@
+//$Id: HotelSearchingAction.java,v 1.20 2007/06/27 00:06:49 gavin Exp $
+package org.jboss.seam.example.booking;
+
+import java.util.List;
+
+import javax.ejb.Remove;
+import javax.ejb.Stateful;
+import javax.faces.event.ValueChangeEvent;
+import javax.faces.model.SelectItem;
+import javax.persistence.EntityManager;
+import javax.persistence.PersistenceContext;
+
+import org.jboss.seam.ScopeType;
+import org.jboss.seam.annotations.Destroy;
+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 implements HotelSearching
+{
+   
+   @PersistenceContext
+   private EntityManager em;
+   
+   private String searchString;
+   private int pageSize = 10;
+   private int page=0;
+   
+   @DataModel
+   private List<Hotel> 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 :search or lower(h.city) like :search or lower(h.zip) like :search or lower(h.address) like :search")
+            .setParameter( "search", getSearchPattern() )
+            .setMaxResults(pageSize)
+            .setFirstResult( page * pageSize )
+            .getResultList();
+   }
+
+   private String getSearchPattern()
+   {
+      return searchString==null ? "%" : searchString.toLowerCase().replace('*', '%') + '%';
+   }
+   
+   public boolean isNextPageAvailable()
+   {
+      return hotels!=null && hotels.size()==pageSize;
+   }
+   
+   public int getPageSize() {
+      return pageSize;
+   }
+
+   public void setPageSize(int pageSize) {
+      this.pageSize = pageSize;
+   }
+
+   public String getSearchString()
+   {
+      return searchString;
+   }
+   
+   public void setSearchString(String searchString)
+   {
+      this.searchString = searchString;
+   }
+
+   public void handleSearchStringChange(ValueChangeEvent e) {
+      page = 0;
+      setSearchString( (String) e.getNewValue() );
+      queryHotels();
+   }
+   
+   public List<SelectItem> getCities() {
+      return em.createQuery("select distinct new javax.faces.model.SelectItem(h.city) from Hotel h where lower(h.city) like :search order by h.city")
+            .setParameter("search", getSearchPattern())
+            .getResultList();
+   }
+   
+   public void handlePageSizeChange(ValueChangeEvent e)  {
+      page=0;
+      setPageSize( (Integer) e.getNewValue() );
+      queryHotels();
+   }
+   
+   @Remove
+   public void destroy() {}
+}
\ No newline at end of file

Added: branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-ejb/src/main/java/org/jboss/seam/example/booking/Register.java
===================================================================
--- branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-ejb/src/main/java/org/jboss/seam/example/booking/Register.java	                        (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-ejb/src/main/java/org/jboss/seam/example/booking/Register.java	2012-04-13 04:53:48 UTC (rev 14566)
@@ -0,0 +1,16 @@
+//$Id: Register.java,v 1.5 2007/06/27 00:06:49 gavin Exp $
+package org.jboss.seam.example.booking;
+
+import javax.ejb.Local;
+
+ at Local
+public interface Register
+{
+   public void register();
+   public void invalid();
+   public String getVerify();
+   public void setVerify(String verify);
+   public boolean isRegistered();
+   
+   public void destroy();
+}
\ No newline at end of file

Added: branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-ejb/src/main/java/org/jboss/seam/example/booking/RegisterAction.java
===================================================================
--- branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-ejb/src/main/java/org/jboss/seam/example/booking/RegisterAction.java	                        (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-ejb/src/main/java/org/jboss/seam/example/booking/RegisterAction.java	2012-04-13 04:53:48 UTC (rev 14566)
@@ -0,0 +1,80 @@
+//$Id: RegisterAction.java,v 1.23 2007/06/27 00:06:49 gavin Exp $
+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 implements Register
+{
+   @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/icefaces/icefaces-ejb/src/main/java/org/jboss/seam/example/booking/User.java
===================================================================
--- branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-ejb/src/main/java/org/jboss/seam/example/booking/User.java	                        (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-ejb/src/main/java/org/jboss/seam/example/booking/User.java	2012-04-13 04:53:48 UTC (rev 14566)
@@ -0,0 +1,70 @@
+//$Id: User.java,v 1.8 2007/06/27 00:06:49 gavin Exp $
+package org.jboss.seam.example.booking;
+
+import org.jboss.seam.annotations.Name;
+import org.jboss.seam.annotations.Scope;
+
+import javax.persistence.Entity;
+import javax.persistence.Id;
+import javax.persistence.Table;
+import javax.validation.constraints.NotNull;
+import javax.validation.constraints.Pattern;
+import javax.validation.constraints.Size;
+import java.io.Serializable;
+
+import static org.jboss.seam.ScopeType.SESSION;
+
+ at Entity
+ at Name("user")
+ at Scope(SESSION)
+ at Table(name = "Customer")
+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
+   @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/icefaces/icefaces-ejb/src/main/resources/META-INF/ejb-jar.xml
===================================================================
--- branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-ejb/src/main/resources/META-INF/ejb-jar.xml	                        (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-ejb/src/main/resources/META-INF/ejb-jar.xml	2012-04-13 04:53:48 UTC (rev 14566)
@@ -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/icefaces/icefaces-ejb/src/main/resources/META-INF/persistence.xml
===================================================================
--- branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-ejb/src/main/resources/META-INF/persistence.xml	                        (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-ejb/src/main/resources/META-INF/persistence.xml	2012-04-13 04:53:48 UTC (rev 14566)
@@ -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="icefaces-bookingDatabase">
+      <provider>org.hibernate.ejb.HibernatePersistence</provider>
+      <non-jta-data-source>java:jboss/datasources/ExampleDS</non-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/icefaces/icefaces-ejb/src/main/resources/import.sql
===================================================================
--- branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-ejb/src/main/resources/import.sql	                        (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-ejb/src/main/resources/import.sql	2012-04-13 04:53:48 UTC (rev 14566)
@@ -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, 'MarriottDowntown', '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')
\ No newline at end of file

Added: branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-ejb/src/main/resources/seam.properties
===================================================================
--- branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-ejb/src/main/resources/seam.properties	                        (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-ejb/src/main/resources/seam.properties	2012-04-13 04:53:48 UTC (rev 14566)
@@ -0,0 +1 @@
+

Added: branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-tests/pom.xml
===================================================================
--- branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-tests/pom.xml	                        (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-tests/pom.xml	2012-04-13 04:53:48 UTC (rev 14566)
@@ -0,0 +1,239 @@
+<?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>icefaces</artifactId>
+        <groupId>org.jboss.seam.examples-ee6</groupId>
+        <version>2.3.0.Beta2-SNAPSHOT</version>
+        <relativePath>../pom.xml</relativePath>
+    </parent>
+    
+    <groupId>org.jboss.seam.examples-ee6</groupId>
+    <artifactId>icefaces-tests</artifactId>
+    <name>Icefaces Integration Tests Module (EE6)</name>
+    
+    <dependencies>
+       <dependency>
+          <groupId>org.jboss.seam.examples-ee6</groupId>
+          <artifactId>icefaces-ejb</artifactId>
+          <version>${project.version}</version>
+          <type>ejb</type>
+          <scope>test</scope>
+       </dependency>
+       <dependency>
+          <groupId>org.jboss.seam</groupId>
+          <artifactId>jboss-seam</artifactId>
+          <version>${project.version}</version>
+          <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>
+       </dependency>
+       <dependency>
+          <groupId>org.hibernate</groupId>
+          <artifactId>hibernate-core</artifactId>
+          <scope>provided</scope>
+       </dependency>
+       <dependency>
+          <groupId>org.jboss.spec.javax.faces</groupId>
+          <artifactId>jboss-jsf-api_2.0_spec</artifactId>
+       </dependency>
+       <dependency>
+          <groupId>javax.mail</groupId>
+          <artifactId>mail</artifactId>
+       </dependency>
+       <dependency>
+          <groupId>org.seleniumhq.selenium.server</groupId>
+          <artifactId>selenium-server</artifactId>
+          <classifier>standalone</classifier>
+       </dependency>
+       <dependency>
+          <groupId>org.seleniumhq.selenium.client-drivers</groupId>
+          <artifactId>selenium-java-client-driver</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>
+       <dependency>
+          <groupId>dom4j</groupId>
+          <artifactId>dom4j</artifactId>
+       </dependency>
+       <dependency>
+          <groupId>javassist</groupId>
+          <artifactId>javassist</artifactId>
+       </dependency>
+
+       <dependency>
+          <groupId>org.hibernate</groupId>
+          <artifactId>hibernate-validator</artifactId>
+          <scope>provided</scope>
+       </dependency>
+    </dependencies>
+
+   <build>
+      <testResources>
+         <testResource>
+            <directory>src/test/resources</directory>
+            <filtering>true</filtering>
+         </testResource>
+         <testResource> <!-- this takes datasource booking-ds.xml -->
+            <directory>${basedir}/src/main/resources</directory>
+            <filtering>true</filtering>
+         </testResource>
+         <testResource> <!-- this takes themes aka *.properties -->
+            <directory>${basedir}/../booking-web/src/main/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>
+      </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>seam-booking</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>seam-booking</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-tomcat</id>
+         <properties>
+            <example.context.path>jboss-seam-booking</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/icefaces/icefaces-tests/src/test/java/org/jboss/seam/example/booking/test/BookingTest.java
===================================================================
--- branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-tests/src/test/java/org/jboss/seam/example/booking/test/BookingTest.java	                        (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-tests/src/test/java/org/jboss/seam/example/booking/test/BookingTest.java	2012-04-13 04:53:48 UTC (rev 14566)
@@ -0,0 +1,307 @@
+//$Id: BookingTest.java,v 1.46 2007/07/16 06:45:47 gavin Exp $
+package org.jboss.seam.example.booking.test;
+
+import java.util.Calendar;
+import java.util.Date;
+import java.util.Iterator;
+
+import javax.faces.application.FacesMessage;
+import javax.faces.context.FacesContext;
+import javax.faces.model.DataModel;
+import javax.faces.model.ListDataModel;
+
+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.contexts.Contexts;
+import org.jboss.seam.core.Manager;
+import org.jboss.seam.example.booking.Booking;
+import org.jboss.seam.example.booking.Hotel;
+import org.jboss.seam.example.booking.HotelBooking;
+import org.jboss.seam.example.booking.User;
+import org.jboss.seam.mock.JUnitSeamTest;
+import org.jboss.shrinkwrap.api.Archive;
+import org.jboss.shrinkwrap.api.spec.EnterpriseArchive;
+import org.jboss.shrinkwrap.api.spec.WebArchive;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+
+ at RunWith(Arquillian.class)
+public class BookingTest extends JUnitSeamTest
+{
+
+   @Deployment(name="BookingTest")
+   @OverProtocol("Servlet 3.0")
+   public static Archive<?> createDeployment()
+   {
+      EnterpriseArchive er = Deployments.iceFacesDeployment();
+      WebArchive web = er.getAsType(WebArchive.class, "icefaces-web.war");
+      web.addClasses(BookingTest.class);
+      return er;
+   }
+
+   @Test
+   public void testBookHotel() throws Exception
+   {
+      
+      new FacesRequest() {
+         
+         @Override
+         protected void invokeApplication() throws Exception
+         {
+            Contexts.getSessionContext().set("user", new User("Gavin King", "foobar", "gavin"));
+            setValue("#{identity.username}", "gavin");
+            setValue("#{identity.password}", "foobar");            
+            invokeAction("#{identity.login}");
+         }
+         
+      }.run();
+      
+      new FacesRequest("/main.xhtml") {
+
+         @Override
+         protected void updateModelValues() throws Exception
+         {
+            setValue("#{hotelSearch.searchString}", "Union Square");
+         }
+
+         @Override
+         protected void invokeApplication()
+         {
+            assert invokeAction("#{hotelSearch.find}")==null;
+         }
+
+         @Override
+         protected void renderResponse()
+         {
+            DataModel hotels = (DataModel) Contexts.getSessionContext().get("hotels");
+            assert hotels.getRowCount()==1;
+            assert ( (Hotel) hotels.getRowData() ).getCity().equals("NY");
+            assert getValue("#{hotelSearch.searchString}").equals("Union Square");
+            assert !Manager.instance().isLongRunningConversation();
+         }
+         
+      }.run();
+      
+      String id = new FacesRequest("/main.xhtml") {
+         
+         @Override
+         protected void invokeApplication() throws Exception {
+            HotelBooking hotelBooking = (HotelBooking) getInstance("hotelBooking");
+            DataModel hotels = (DataModel) Contexts.getSessionContext().get("hotels");
+            assert hotels.getRowCount()==1;
+            hotelBooking.selectHotel( (Hotel) hotels.getRowData() );
+         }
+
+         @Override
+         protected void renderResponse()
+         {
+            Hotel hotel = (Hotel) Contexts.getConversationContext().get("hotel");
+            assert hotel.getCity().equals("NY");
+            assert hotel.getZip().equals("10011");
+            assert Manager.instance().isLongRunningConversation();
+         }
+         
+      }.run();
+      
+      id = new FacesRequest("/hotel.xhtml", id) {
+
+         @Override
+         protected void invokeApplication()
+         {
+            invokeAction("#{hotelBooking.bookHotel}");
+         }
+
+         @Override
+         protected void renderResponse()
+         {
+            assert getValue("#{booking.user}")!=null;
+            assert getValue("#{booking.hotel}")!=null;
+            assert getValue("#{booking.creditCard}")==null;
+            assert getValue("#{booking.creditCardName}")==null;
+            Booking booking = (Booking) Contexts.getConversationContext().get("booking");
+            assert booking.getHotel()==Contexts.getConversationContext().get("hotel");
+            assert booking.getUser()==Contexts.getSessionContext().get("user");
+            assert Manager.instance().isLongRunningConversation();
+         }
+         
+      }.run();
+      
+      new FacesRequest("/book.xhtml", id) {
+
+         @Override
+         protected void processValidations() throws Exception
+         {
+            validateValue("#{booking.creditCard}", "123");
+            assert isValidationFailure();
+         }
+
+         @Override
+         protected void renderResponse()
+         {
+            Iterator messages = FacesContext.getCurrentInstance().getMessages();
+            assert messages.hasNext();
+            assert ( (FacesMessage) messages.next() ).getSummary().equals("Credit card number must 16 digits long");
+            assert !messages.hasNext();
+            assert Manager.instance().isLongRunningConversation();
+         }
+         
+         @Override
+         protected void afterRequest()
+         {
+            assert !isInvokeApplicationBegun();
+         }
+         
+      }.run();
+      
+      new FacesRequest("/book.xhtml", id) {
+
+         @Override
+         protected void processValidations() throws Exception
+         {
+            validateValue("#{booking.creditCardName}", "");
+            assert isValidationFailure();
+         }
+
+         @Override
+         protected void renderResponse()
+         {
+            Iterator messages = FacesContext.getCurrentInstance().getMessages();
+            assert messages.hasNext();
+            assert ( (FacesMessage) messages.next() ).getSummary().equals("Credit card name is required");
+            assert !messages.hasNext();
+            assert Manager.instance().isLongRunningConversation();
+         }
+         
+         @Override
+         protected void afterRequest()
+         {
+            assert !isInvokeApplicationBegun();
+         }
+         
+      }.run();
+      
+      new FacesRequest("/book.xhtml", id) {
+         
+         @Override @SuppressWarnings("deprecation")
+         protected void updateModelValues() throws Exception
+         {  
+            setValue("#{booking.creditCard}", "1234567891021234");
+            setValue("#{booking.creditCardName}", "GAVIN KING");
+            setValue("#{booking.beds}", 2);
+            Date now = new Date();
+            setValue("#{booking.checkinDate}", now);
+            setValue("#{booking.checkoutDate}", now);
+         }
+
+         @Override
+         protected void invokeApplication()
+         {
+            assert invokeAction("#{hotelBooking.setBookingDetails}")==null;
+         }
+
+         @Override
+         protected void renderResponse()
+         {
+            Iterator messages = FacesContext.getCurrentInstance().getMessages();
+            assert messages.hasNext();
+            FacesMessage message = (FacesMessage) messages.next();
+            assert message.getSummary().equals("Check out date must be later than check in date");
+            assert !messages.hasNext();
+            assert Manager.instance().isLongRunningConversation();
+         }
+         
+         @Override
+         protected void afterRequest()
+         {
+            assert isInvokeApplicationComplete();
+         }
+         
+      }.run();
+      
+      new FacesRequest("/book.xhtml", id) {
+         
+         @Override @SuppressWarnings("deprecation")
+         protected void updateModelValues() throws Exception
+         {
+            Calendar cal = Calendar.getInstance();
+            cal.add(Calendar.DAY_OF_MONTH, 2);
+            setValue("#{booking.checkoutDate}", cal.getTime() );
+         }
+
+         @Override
+         protected void invokeApplication()
+         {
+            invokeAction("#{hotelBooking.setBookingDetails}");
+         }
+
+         @Override
+         protected void renderResponse()
+         {
+            assert Manager.instance().isLongRunningConversation();
+         }
+         
+         @Override
+         protected void afterRequest()
+         {
+            assert isInvokeApplicationComplete();
+         }
+         
+      }.run();
+      
+      new FacesRequest("/confirm.xhtml", id) {
+
+         @Override
+         protected void invokeApplication()
+         {
+            invokeAction("#{hotelBooking.confirm}");
+         }
+         
+         @Override
+         protected void afterRequest()
+         {
+            assert isInvokeApplicationComplete();
+         }
+         
+      }.run();
+      
+      new NonFacesRequest("/main.xhtml") {
+
+         @Override
+         protected void renderResponse()
+         {
+            ListDataModel bookings = (ListDataModel) getInstance("bookings");
+            assert bookings.getRowCount()==1;
+            bookings.setRowIndex(0);
+            Booking booking = (Booking) bookings.getRowData();
+            assert booking.getHotel().getCity().equals("NY");
+            assert booking.getUser().getUsername().equals("gavin");
+            assert !Manager.instance().isLongRunningConversation();
+         }
+         
+      }.run();
+      
+      new FacesRequest("/main.xhtml") {
+         
+         @Override
+         protected void invokeApplication()
+         {
+            ListDataModel bookings = (ListDataModel) Contexts.getSessionContext().get("bookings");
+            bookings.setRowIndex(0);
+            invokeAction("#{bookingList.cancel}");
+         }
+
+         @Override
+         protected void renderResponse()
+         {
+            ListDataModel bookings = (ListDataModel) Contexts.getSessionContext().get("bookings");
+            assert bookings.getRowCount()==0;
+            assert !Manager.instance().isLongRunningConversation();
+         }
+         
+      }.run();
+      
+   }
+   
+}

Added: branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-tests/src/test/java/org/jboss/seam/example/booking/test/ChangePasswordTest.java
===================================================================
--- branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-tests/src/test/java/org/jboss/seam/example/booking/test/ChangePasswordTest.java	                        (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-tests/src/test/java/org/jboss/seam/example/booking/test/ChangePasswordTest.java	2012-04-13 04:53:48 UTC (rev 14566)
@@ -0,0 +1,159 @@
+//$Id: ChangePasswordTest.java,v 1.17 2007/07/16 06:45:47 gavin Exp $
+package org.jboss.seam.example.booking.test;
+
+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.contexts.Contexts;
+import org.jboss.seam.core.Manager;
+import org.jboss.seam.example.booking.User;
+import org.jboss.seam.mock.JUnitSeamTest;
+import org.jboss.seam.mock.SeamTest;
+import org.jboss.shrinkwrap.api.Archive;
+import org.jboss.shrinkwrap.api.spec.EnterpriseArchive;
+import org.jboss.shrinkwrap.api.spec.WebArchive;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+ at RunWith(Arquillian.class)
+public class ChangePasswordTest extends JUnitSeamTest
+{
+
+   @Deployment(name="ChangePasswordTest")
+   @OverProtocol("Servlet 3.0")
+   public static Archive<?> createDeployment()
+   {
+      EnterpriseArchive er = Deployments.iceFacesDeployment();
+      WebArchive web = er.getAsType(WebArchive.class, "icefaces-web.war");
+
+      web.addClasses(ChangePasswordTest.class);
+
+      return er;
+   }
+
+   @Test
+   public void testChangePassword() throws Exception
+   {
+      
+      new FacesRequest() {
+         
+         @Override
+         protected void invokeApplication() throws Exception
+         {
+            Contexts.getSessionContext().set("user", new User("Gavin King", "foobar", "gavin"));
+            setValue("#{identity.username}", "gavin");
+            setValue("#{identity.password}", "foobar");
+            invokeMethod("#{identity.login}");
+         }
+         
+      }.run();
+      
+      new FacesRequest() {
+         
+         @Override
+         protected void processValidations() throws Exception
+         {
+            validateValue("#{user.password}", "xxx");
+            assert isValidationFailure();
+         }
+
+         @Override
+         protected void renderResponse()
+         {
+            assert getValue("#{user.name}").equals("Gavin King");
+            assert getValue("#{user.username}").equals("gavin");
+            assert getValue("#{user.password}").equals("foobar");
+            assert !Manager.instance().isLongRunningConversation();
+            assert getValue("#{identity.loggedIn}").equals(true);
+
+         }
+         
+      }.run();
+      
+      new FacesRequest() {
+
+         @Override
+         protected void updateModelValues() throws Exception
+         {
+            setValue("#{user.password}", "xxxyyy");
+            setValue("#{changePassword.verify}", "xxyyyx");
+         }
+
+         @Override
+         protected void invokeApplication()
+         {
+            assert invokeAction("#{changePassword.changePassword}")==null;
+         }
+
+         @Override
+         protected void renderResponse()
+         {
+            assert getValue("#{user.name}").equals("Gavin King");
+            assert getValue("#{user.username}").equals("gavin");
+            assert getValue("#{user.password}").equals("foobar");
+            assert !Manager.instance().isLongRunningConversation();
+            assert getValue("#{identity.loggedIn}").equals(true);
+         }
+         
+      }.run();
+      
+      new FacesRequest() {
+
+         @Override
+         protected void updateModelValues() throws Exception
+         {
+            setValue("#{user.password}", "xxxyyy");
+            setValue("#{changePassword.verify}", "xxxyyy");
+         }
+
+         @Override
+         protected void invokeApplication()
+         {
+            invokeMethod("#{changePassword.changePassword}");
+         }
+
+         @Override
+         protected void renderResponse()
+         {
+            assert getValue("#{user.name}").equals("Gavin King");
+            assert getValue("#{user.username}").equals("gavin");
+            assert getValue("#{user.password}").equals("xxxyyy");
+            assert !Manager.instance().isLongRunningConversation();
+            assert getValue("#{identity.loggedIn}").equals(true);
+
+         }
+         
+      }.run();
+      
+      new FacesRequest() {
+
+         @Override
+         protected void updateModelValues() throws Exception
+         {
+            assert getValue("#{user.password}").equals("xxxyyy");
+            setValue("#{user.password}", "foobar");
+            setValue("#{changePassword.verify}", "foobar");
+         }
+
+         @Override
+         protected void invokeApplication()
+         {
+            invokeMethod("#{changePassword.changePassword}");
+         }
+
+         @Override
+         protected void renderResponse()
+         {
+            assert getValue("#{user.name}").equals("Gavin King");
+            assert getValue("#{user.username}").equals("gavin");
+            assert getValue("#{user.password}").equals("foobar");
+            assert !Manager.instance().isLongRunningConversation();
+            assert getValue("#{identity.loggedIn}").equals(true);
+
+         }
+         
+      }.run();
+      
+   }
+
+}

Added: branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-tests/src/test/java/org/jboss/seam/example/booking/test/Deployments.java
===================================================================
--- branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-tests/src/test/java/org/jboss/seam/example/booking/test/Deployments.java	                        (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-tests/src/test/java/org/jboss/seam/example/booking/test/Deployments.java	2012-04-13 04:53:48 UTC (rev 14566)
@@ -0,0 +1,14 @@
+package org.jboss.seam.example.booking.test;
+
+import org.jboss.shrinkwrap.api.ShrinkWrap;
+import org.jboss.shrinkwrap.api.importer.ZipImporter;
+import org.jboss.shrinkwrap.api.spec.EnterpriseArchive;
+
+import java.io.File;
+
+public class Deployments {
+   public static EnterpriseArchive iceFacesDeployment() {
+      return ShrinkWrap.create(ZipImporter.class, "seam-icefaces.ear").importFrom(new File("../icefaces-ear/target/seam-icefaces.ear"))
+              .as(EnterpriseArchive.class);
+   }
+}

Added: branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-tests/src/test/java/org/jboss/seam/example/booking/test/LoginTest.java
===================================================================
--- branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-tests/src/test/java/org/jboss/seam/example/booking/test/LoginTest.java	                        (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-tests/src/test/java/org/jboss/seam/example/booking/test/LoginTest.java	2012-04-13 04:53:48 UTC (rev 14566)
@@ -0,0 +1,123 @@
+//$Id: LoginTest.java,v 1.29 2007/07/16 06:45:47 gavin Exp $
+package org.jboss.seam.example.booking.test;
+
+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.core.Manager;
+import org.jboss.seam.mock.JUnitSeamTest;
+import org.jboss.seam.web.Session;
+import org.jboss.shrinkwrap.api.Archive;
+import org.jboss.shrinkwrap.api.spec.EnterpriseArchive;
+import org.jboss.shrinkwrap.api.spec.WebArchive;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+ at RunWith(Arquillian.class)
+public class LoginTest extends JUnitSeamTest {
+
+   @Deployment(name = "LoginTest")
+   @OverProtocol("Servlet 3.0")
+   public static Archive<?> createDeployment() {
+      EnterpriseArchive er = Deployments.iceFacesDeployment();
+      WebArchive web = er.getAsType(WebArchive.class, "icefaces-web.war");
+
+      web.addClasses(LoginTest.class);
+
+      return er;
+   }
+
+   @Test
+   public void testLoginComponent() throws Exception {
+      new ComponentTest() {
+
+         @Override
+         protected void testComponents() throws Exception {
+            assert getValue("#{identity.loggedIn}").equals(false);
+            setValue("#{identity.username}", "gavin");
+            setValue("#{identity.password}", "foobar");
+            invokeMethod("#{identity.login}");
+            assert getValue("#{user.name}").equals("Gavin King");
+            assert getValue("#{user.username}").equals("gavin");
+            assert getValue("#{user.password}").equals("foobar");
+            assert getValue("#{identity.loggedIn}").equals(true);
+            invokeMethod("#{identity.logout}");
+            assert getValue("#{identity.loggedIn}").equals(false);
+            setValue("#{identity.username}", "gavin");
+            setValue("#{identity.password}", "tiger");
+            invokeMethod("#{identity.login}");
+            assert getValue("#{identity.loggedIn}").equals(false);
+         }
+
+      }.run();
+   }
+
+   @Test
+   public void testLogin() throws Exception {
+
+      new FacesRequest() {
+
+         @Override
+         protected void invokeApplication() {
+            assert !isSessionInvalid();
+            assert getValue("#{identity.loggedIn}").equals(false);
+         }
+
+      }.run();
+
+      new FacesRequest() {
+
+         @Override
+         protected void updateModelValues() throws Exception {
+            assert !isSessionInvalid();
+            setValue("#{identity.username}", "gavin");
+            setValue("#{identity.password}", "foobar");
+         }
+
+         @Override
+         protected void invokeApplication() {
+            invokeAction("#{identity.login}");
+         }
+
+         @Override
+         protected void renderResponse() {
+            assert getValue("#{user.name}").equals("Gavin King");
+            assert getValue("#{user.username}").equals("gavin");
+            assert getValue("#{user.password}").equals("foobar");
+            assert !Manager.instance().isLongRunningConversation();
+            assert getValue("#{identity.loggedIn}").equals(true);
+         }
+
+      }.run();
+
+      new FacesRequest() {
+
+         @Override
+         protected void invokeApplication() {
+            assert !isSessionInvalid();
+            assert getValue("#{identity.loggedIn}").equals(true);
+         }
+
+      }.run();
+
+      new FacesRequest() {
+
+         @Override
+         protected void invokeApplication() {
+            assert !Manager.instance().isLongRunningConversation();
+            assert !isSessionInvalid();
+            invokeMethod("#{identity.logout}");
+            assert Session.instance().isInvalid();
+         }
+
+         @Override
+         protected void renderResponse() {
+            assert getValue("#{identity.loggedIn}").equals(false);
+            assert Session.instance().isInvalid();
+         }
+
+      }.run();
+
+   }
+
+}

Added: branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-tests/src/test/resources/WEB-INF/components.xml
===================================================================
--- branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-tests/src/test/resources/WEB-INF/components.xml	                        (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-tests/src/test/resources/WEB-INF/components.xml	2012-04-13 04:53:48 UTC (rev 14566)
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<components xmlns="http://jboss.com/products/seam/components"
+            xmlns:core="http://jboss.com/products/seam/core"
+            xmlns:security="http://jboss.com/products/seam/security"
+            xmlns:transaction="http://jboss.com/products/seam/transaction"
+            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+            xsi:schemaLocation=
+                "http://jboss.com/products/seam/core http://jboss.com/products/seam/core-2.3.xsd
+                 http://jboss.com/products/seam/transaction http://jboss.com/products/seam/transaction-2.3.xsd
+                 http://jboss.com/products/seam/security http://jboss.com/products/seam/security-2.3.xsd
+                 http://jboss.com/products/seam/components http://jboss.com/products/seam/components-2.3.xsd">
+
+    <core:init jndi-pattern="#{ejbName}/local" debug="true"/>
+
+    <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/icefaces/icefaces-tests/src/test/resources/icefaces.properties
===================================================================
--- branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-tests/src/test/resources/icefaces.properties	                        (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-tests/src/test/resources/icefaces.properties	2012-04-13 04:53:48 UTC (rev 14566)
@@ -0,0 +1,89 @@
+ #
+ # 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 //*[contains(@id, 'Decorate:message')]
+PASSWORD_LENGTH_MESSAGE length 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=searchResults:NoHotelsFoundMessage
+SEARCH_RESULT_TABLE xpath=//table[@id = 'searchResults:hotels']/tbody
+SEARCH_RESULT_TABLE_FIRST_ROW_LINK id=searchResults: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:checkinDate
+HOTEL_CHECKIN_DATE_MESSAGE id=booking:checkinDateDecorate:message
+HOTEL_CHECKOUT_DATE_FIELD id=booking:checkoutDateDecorate:checkoutDate
+HOTEL_CHECKOUT_DATE_MESSAGE id=booking:checkoutDateDecorate:message
+HOTEL_SMOKING_1 id=booking:smokingDecorate:smoking:_1
+HOTEL_SMOKING_2 id=booking:smokingDecorate:smoking:_2
+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_CANCEL id=registration:cancel
+REGISTRATION_REENTER_MESSAGE Re-enter your password
+REGISTRATION_LENGTH_MESSAGE length 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]/span/text()) \= "{0}"][normalize-space(td[1]/span/text()) \= "{1}"]
+BOOKING_TABLE_ITEM_LINK xpath\=//table[@id\="bookings\:bookings"]/tbody/tr[normalize-space(td[6]/span/text()) \= "{0}"][normalize-space(td[1]/span/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
+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\:Spinner\:connection-working
+FOOTER id=footer
+
+USE_ICEFACES_FORMS TRUE
+


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

Added: branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-tests/src/test/resources/seam.properties
===================================================================
--- branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-tests/src/test/resources/seam.properties	                        (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-tests/src/test/resources/seam.properties	2012-04-13 04:53:48 UTC (rev 14566)
@@ -0,0 +1,3 @@
+#debug is explicitly disabled in test to avoid JBIDE-3623
+#Thu Dec 31 16:24:37 CET 2009
+org.jboss.seam.core.init.debug=false

Added: branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-tests/src/test/resources-ftest/testng-jboss4.xml
===================================================================
--- branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-tests/src/test/resources-ftest/testng-jboss4.xml	                        (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-tests/src/test/resources-ftest/testng-jboss4.xml	2012-04-13 04:53:48 UTC (rev 14566)
@@ -0,0 +1,40 @@
+
+	<!--
+		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="Icefaces example" verbose="2" parallel="false">
+	<test name="icefaces_tests_jboss4">
+		<parameter name="PROPERTY_FILE"
+			value="/icefaces.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">
+				<methods>
+					<include name="backbuttoningAfterLogoutTest"></include>
+				</methods>
+			</class>
+			<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>


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

Added: branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-tests/src/test/resources-ftest/testng-jboss5.xml
===================================================================
--- branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-tests/src/test/resources-ftest/testng-jboss5.xml	                        (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-tests/src/test/resources-ftest/testng-jboss5.xml	2012-04-13 04:53:48 UTC (rev 14566)
@@ -0,0 +1,40 @@
+
+	<!--
+		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="Icefaces example" verbose="2" parallel="false">
+	<test name="icefaces_tests_jboss56">
+		<parameter name="PROPERTY_FILE"
+			value="/icefaces.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">
+				<methods>
+					<include name="backbuttoningAfterLogoutTest"></include>
+				</methods>
+			</class>
+			<class
+				name="org.jboss.seam.example.common.test.booking.selenium.SimpleBookingTest" />
+			<!-- this test is executed by web driver  -->
+			<class name="org.jboss.seam.example.common.test.booking.webdriver.ConversationTest" />
+		</classes>
+	</test>
+</suite>


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

Added: branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-tests/src/test/resources-integration/arquillian.xml
===================================================================
--- branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-tests/src/test/resources-integration/arquillian.xml	                        (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-tests/src/test/resources-integration/arquillian.xml	2012-04-13 04:53:48 UTC (rev 14566)
@@ -0,0 +1,16 @@
+<?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>
\ No newline at end of file

Added: branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-tests/src/test/resources-integration/testng.xml
===================================================================
--- branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-tests/src/test/resources-integration/testng.xml	                        (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-tests/src/test/resources-integration/testng.xml	2012-04-13 04:53:48 UTC (rev 14566)
@@ -0,0 +1,30 @@
+<!DOCTYPE suite SYSTEM "http://beust.com/testng/testng-1.0.dtd" >
+
+<suite name="Hotel Booking" verbose="2" parallel="false">
+
+
+
+   <test name="Hotel Booking Login">
+
+     <classes>
+       <class name="org.jboss.seam.example.booking.test.LoginTest"/>
+     </classes>
+   </test>
+	
+
+   <test name="Hotel Booking Book Hotel">
+
+     <classes>
+       <class name="org.jboss.seam.example.booking.test.BookingTest"/>
+     </classes>
+   </test>
+	
+
+   <test name="Hotel Booking Change Password">
+
+     <classes>
+       <class name="org.jboss.seam.example.booking.test.ChangePasswordTest"/>
+     </classes>
+   </test>
+	
+</suite>

Added: branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-web/pom.xml
===================================================================
--- branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-web/pom.xml	                        (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-web/pom.xml	2012-04-13 04:53:48 UTC (rev 14566)
@@ -0,0 +1,190 @@
+<?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>icefaces</artifactId>
+      <groupId>org.jboss.seam.examples-ee6</groupId>
+      <version>2.3.0.Beta2-SNAPSHOT</version>
+      <relativePath>../pom.xml</relativePath>
+   </parent>
+
+   <groupId>org.jboss.seam.examples-ee6</groupId>
+   <artifactId>icefaces-web</artifactId>
+   <packaging>war</packaging>
+   <name>Icefaces Web Module</name>
+
+   <properties>
+      <!-- filtering property for components.xml -->
+      <jndiPattern>java:app/seam-icefaces/#{ejbName}</jndiPattern>
+   </properties>
+
+   <repositories>
+      <repository>
+         <id>iceFacesStable</id>
+         <name>Ice Faces Stable Repository</name>
+         <url>http://anonsvn.icesoft.org/repo/maven2/releases/</url>
+      </repository>
+   </repositories>
+
+   <dependencies>
+      <dependency>
+         <groupId>org.jboss.seam.examples-ee6</groupId>
+         <artifactId>icefaces-ejb</artifactId>
+         <version>${project.version}</version>
+         <type>ejb</type>
+         <scope>provided</scope>
+      </dependency>
+      <dependency>
+         <groupId>org.jboss.seam</groupId>
+         <artifactId>jboss-seam</artifactId>
+         <type>ejb</type>
+      </dependency>
+      <dependency>
+         <groupId>commons-logging</groupId>
+         <artifactId>commons-logging</artifactId>
+      </dependency>
+      <dependency>
+         <groupId>org.jboss.el</groupId>
+         <artifactId>jboss-el</artifactId>
+      </dependency>
+      <dependency>
+         <groupId>org.hibernate</groupId>
+         <artifactId>hibernate-validator</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.icefaces</groupId>
+         <artifactId>icefaces</artifactId>
+         <version>3.0.0</version>
+      </dependency>
+      <dependency>
+         <groupId>org.icefaces</groupId>
+         <artifactId>icefaces-ace</artifactId>
+         <version>3.0.0</version>
+      </dependency>
+      <dependency>
+         <groupId>org.icepush</groupId>
+         <artifactId>icepush</artifactId>
+         <version>3.0.0</version>
+      </dependency>
+   </dependencies>
+
+   <build>
+      <plugins>
+         <plugin>
+            <groupId>org.apache.maven.plugins</groupId>
+            <artifactId>maven-war-plugin</artifactId>
+            <configuration>
+               <nonFilteredFileExtensions>
+                  <!-- default value contains jpg,jpeg,gif,bmp,png -->
+                  <nonFilteredFileExtension>pdf</nonFilteredFileExtension>
+               </nonFilteredFileExtensions>
+               <webResources>
+                  <resource>
+                     <directory>src/main/webapp</directory>
+                     <filtering>true</filtering>
+                  </resource>
+               </webResources>
+            </configuration>
+         </plugin>
+      </plugins>
+   </build>
+
+   <profiles>
+      <profile>
+         <id>tomcat</id>
+         <properties>
+            <!-- filtering property for components.xml -->
+            <jndiPattern>#{ejbName}/local</jndiPattern>
+         </properties>
+         <dependencies>
+            <dependency>
+               <groupId>org.jboss.seam.examples</groupId>
+               <artifactId>icefaces-ejb</artifactId>
+               <type>ejb</type>
+               <scope>compile</scope>
+            </dependency>
+            <dependency>
+               <groupId>org.jboss.seam</groupId>
+               <artifactId>jboss-seam</artifactId>
+               <type>ejb</type>
+               <scope>compile</scope>
+               <exclusions>
+                  <exclusion>
+                     <groupId>com.thoughtworks.xstream</groupId>
+                     <artifactId>xstream</artifactId>
+                  </exclusion>
+                  <exclusion>
+                     <groupId>xpp3</groupId>
+                     <artifactId>xpp3_min</artifactId>
+                  </exclusion>
+               </exclusions>
+            </dependency>
+            <dependency>
+               <groupId>javax.faces</groupId>
+               <artifactId>jsf-api</artifactId>
+               <scope>compile</scope>
+            </dependency>
+            <dependency>
+               <groupId>javax.faces</groupId>
+               <artifactId>jsf-impl</artifactId>
+               <scope>compile</scope>
+            </dependency>
+            <dependency>
+               <groupId>javax.servlet</groupId>
+               <artifactId>jstl</artifactId>
+            </dependency>
+            <dependency>
+               <groupId>commons-beanutils</groupId>
+               <artifactId>commons-beanutils</artifactId>
+               <exclusions>
+                  <exclusion>
+                     <groupId>commons-collections</groupId>
+                     <artifactId>commons-collections</artifactId>
+                  </exclusion>
+                  <exclusion>
+                     <groupId>commons-logging</groupId>
+                     <artifactId>commons-logging</artifactId>
+                  </exclusion>
+               </exclusions>
+            </dependency>
+            <dependency>
+               <groupId>commons-digester</groupId>
+               <artifactId>commons-digester</artifactId>
+            </dependency>
+            <dependency>
+               <groupId>com.lowagie</groupId>
+               <artifactId>icefaces-rtf</artifactId>
+            </dependency>
+            <dependency>
+               <groupId>com.lowagie</groupId>
+               <artifactId>icefaces</artifactId>
+            </dependency>
+            <dependency>
+               <groupId>jfree</groupId>
+               <artifactId>jfreechart</artifactId>
+            </dependency>
+            <dependency>
+               <groupId>org.richfaces.framework</groupId>
+               <artifactId>richfaces-api</artifactId>
+               <exclusions>
+                  <exclusion>
+                     <groupId>commons-collections</groupId>
+                     <artifactId>commons-collections</artifactId>
+                  </exclusion>
+               </exclusions>
+            </dependency>
+         </dependencies>
+         <build>
+            <finalName>jboss-seam-icefaces</finalName>
+         </build>
+      </profile>
+   </profiles>
+
+</project>

Added: branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-web/src/main/resources/messages.properties
===================================================================
--- branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-web/src/main/resources/messages.properties	                        (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-web/src/main/resources/messages.properties	2012-04-13 04:53:48 UTC (rev 14566)
@@ -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/icefaces/icefaces-web/src/main/resources/messages_en.properties
===================================================================
--- branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-web/src/main/resources/messages_en.properties	                        (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-web/src/main/resources/messages_en.properties	2012-04-13 04:53:48 UTC (rev 14566)
@@ -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/icefaces/icefaces-web/src/main/webapp/WEB-INF/components.xml
===================================================================
--- branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-web/src/main/webapp/WEB-INF/components.xml	                        (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-web/src/main/webapp/WEB-INF/components.xml	2012-04-13 04:53:48 UTC (rev 14566)
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<components xmlns="http://jboss.com/products/seam/components"
+            xmlns:core="http://jboss.com/products/seam/core"
+            xmlns:security="http://jboss.com/products/seam/security"
+            xmlns:transaction="http://jboss.com/products/seam/transaction"
+            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+            xsi:schemaLocation=
+                "http://jboss.com/products/seam/core http://jboss.com/products/seam/core-2.3.xsd
+                 http://jboss.com/products/seam/transaction http://jboss.com/products/seam/transaction-2.3.xsd
+                 http://jboss.com/products/seam/security http://jboss.com/products/seam/security-2.3.xsd
+                 http://jboss.com/products/seam/components http://jboss.com/products/seam/components-2.3.xsd">
+
+    <core:init jndi-pattern="@jndiPattern@" debug="true"/>
+
+    <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/icefaces/icefaces-web/src/main/webapp/WEB-INF/faces-config.xml
===================================================================
--- branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-web/src/main/webapp/WEB-INF/faces-config.xml	                        (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-web/src/main/webapp/WEB-INF/faces-config.xml	2012-04-13 04:53:48 UTC (rev 14566)
@@ -0,0 +1,21 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<faces-config 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"
+              version="2.1">
+   ...
+</faces-config>
+   <!--<application>-->
+      <!--<message-bundle>messages</message-bundle>-->
+      <!--<view-handler>com.icesoft.faces.facelets.D2DSeamFaceletViewHandler</view-handler>-->
+   <!--</application>-->
+
+   <!--<managed-bean>-->
+
+      <!--<managed-bean-name>highlight</managed-bean-name>-->
+
+      <!--<managed-bean-class>com.icesoft.faces.context.effects.Highlight</managed-bean-class>-->
+
+      <!--<managed-bean-scope>application</managed-bean-scope>-->
+
+   <!--</managed-bean>-->

Added: branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-web/src/main/webapp/WEB-INF/pages.xml
===================================================================
--- branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-web/src/main/webapp/WEB-INF/pages.xml	                        (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-web/src/main/webapp/WEB-INF/pages.xml	2012-04-13 04:53:48 UTC (rev 14566)
@@ -0,0 +1,124 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<pages xmlns="http://jboss.com/products/seam/pages"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="http://jboss.com/products/seam/pages http://jboss.com/products/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>
+        </navigation>
+    
+        <navigation>
+            <rule if="#{identity.loggedIn}">
+                <redirect view-id="/main.xhtml"/>
+            </rule>
+        </navigation>
+        
+    </page>
+    
+    <page view-id="/password.xhtml"
+          login-required="true">
+    
+        <navigation>
+            <rule if="#{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/icefaces/icefaces-web/src/main/webapp/WEB-INF/web.xml
===================================================================
--- branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-web/src/main/webapp/WEB-INF/web.xml	                        (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-web/src/main/webapp/WEB-INF/web.xml	2012-04-13 04:53:48 UTC (rev 14566)
@@ -0,0 +1,132 @@
+<?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">
+  
+    <!-- Seam (using Icefaces) generated project-->
+    
+    <!-- listeners required for this application --> 
+   <listener>
+      <listener-class>org.jboss.seam.servlet.SeamListener</listener-class>
+   </listener>
+    
+   <!--<listener>-->
+      <!--<listener-class>com.icesoft.faces.util.event.servlet.ContextEventRepeater</listener-class>-->
+   <!--</listener>-->
+     
+ <!-- filters -->
+    <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 -->
+     
+   
+   <!-- Facelets development mode (disable in production) -->
+   <context-param>
+      <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
+      <param-value>server</param-value>
+   </context-param>
+    
+   <context-param>
+      <param-name>facelets.DEVELOPMENT</param-name>
+      <param-value>true</param-value>
+   </context-param>
+    
+    <context-param>
+        <param-name>javax.faces.DEFAULT_SUFFIX</param-name>
+        <param-value>.xhtml</param-value>
+    </context-param>
+    
+    <!--<context-param>-->
+        <!--<param-name>com.icesoft.faces.actionURLSuffix</param-name>-->
+        <!--<param-value>.seam</param-value>-->
+    <!--</context-param>-->
+
+    <!--<context-param>-->
+        <!--<param-name>com.icesoft.faces.synchronousUpdate</param-name>-->
+        <!--<param-value>false</param-value>-->
+    <!--</context-param>-->
+
+    <!--<context-param> -->
+        <!--<param-name>com.icesoft.faces.doJSFStateManagement</param-name>-->
+	    <!--<param-value>true</param-value>-->
+    <!--</context-param> -->
+
+    <!--<context-param>-->
+        <!--<param-name>com.icesoft.faces.standardRequestScope</param-name>-->
+        <!--<param-value>true</param-value>-->
+    <!--</context-param>-->
+   <!---->
+   <!--<context-param>-->
+        <!--<param-name>com.icesoft.faces.concurrentDOMViews</param-name>-->
+        <!--<param-value>true</param-value>-->
+    <!--</context-param>-->
+
+   	<!--  this is only for JBoss AS 6 - it contains JSF RI 2.0.2 which has a bug 
+		Remove this if you have upgraded to 2.0.3	-->   
+    <context-param>
+      <param-name>org.jboss.jbossfaces.JSF_CONFIG_NAME</param-name>
+      <param-value>Mojarra-1.2</param-value>
+   </context-param>
+       
+  <!-- servlets -->
+   <servlet>
+        <servlet-name>Faces Servlet</servlet-name>
+        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+        <load-on-startup>1</load-on-startup>
+    </servlet>
+
+  <!--<servlet>-->
+        <!--<servlet-name>Persistent Faces Servlet</servlet-name>-->
+        <!--<servlet-class>com.icesoft.faces.webapp.xmlhttp.PersistentFacesServlet</servlet-class>-->
+        <!--<load-on-startup> 1 </load-on-startup>-->
+    <!--</servlet>-->
+    <!--<servlet>-->
+        <!--<servlet-name>Blocking Servlet</servlet-name>-->
+        <!--<servlet-class>com.icesoft.faces.webapp.xmlhttp.BlockingServlet</servlet-class>-->
+        <!--<load-on-startup> 1 </load-on-startup>-->
+    <!--</servlet>  -->
+    <!---->
+
+<!-- servlet mappings -->
+   <!--<servlet-mapping>-->
+        <!--<servlet-name>Persistent Faces Servlet</servlet-name>-->
+        <!--<url-pattern>*.seam</url-pattern>-->
+     <!--</servlet-mapping>-->
+
+     <!--<servlet-mapping>-->
+        <!--<servlet-name>Persistent Faces Servlet</servlet-name>-->
+        <!--<url-pattern>/xmlhttp/*</url-pattern>-->
+    <!--</servlet-mapping>-->
+    <!---->
+    <!--&lt;!&ndash; Blocking Servlet Mapping &ndash;&gt;-->
+    <!--<servlet-mapping>-->
+        <!--<servlet-name>Blocking Servlet</servlet-name>-->
+        <!--<url-pattern>/block/*</url-pattern>-->
+    <!--</servlet-mapping>-->
+             
+    <session-config>
+        <session-timeout>10</session-timeout> 
+    </session-config>    
+
+
+</web-app>
+

Added: branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-web/src/main/webapp/book.xhtml
===================================================================
--- branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-web/src/main/webapp/book.xhtml	                        (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-web/src/main/webapp/book.xhtml	2012-04-13 04:53:48 UTC (rev 14566)
@@ -0,0 +1,127 @@
+<!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.com/products/seam/taglib"
+                xmlns:ice="http://www.icesoft.com/icefaces/component" 
+				template="template.xhtml">
+
+<!-- content -->
+<ui:define name="content">
+<div class="section">
+	<h1>Book Hotel</h1>
+</div>
+<div class="section">
+	<div class="entry errors">
+		<h:messages globalOnly="true"/>
+	</div>
+
+	<ui:include src="hotelview.xhtml"/>
+	
+	<div style="clear:both"/>
+
+	<ice:form id="booking">
+	<fieldset>
+			
+		<s:decorate id="checkinDateDecorate" template="edit.xhtml">
+		   <ui:define name="label">Check In Date:</ui:define>
+	           <span class="calendar">
+                      <ice:selectInputDate id="checkinDate" value="#{booking.checkinDate}" 
+                             renderAsPopup="true" partialSubmit="true"/>
+                   </span>
+		</s:decorate>		
+                
+		<br/>
+		<s:decorate id="checkoutDateDecorate" template="edit.xhtml">
+		   <ui:define name="label">Check Out Date:</ui:define>
+		   <span class="calendar">
+                       <ice:selectInputDate id="checkoutDate" value="#{booking.checkoutDate}" 
+                                   renderAsPopup="true" partialSubmit="true"/>
+		   </span>
+		</s:decorate>
+				<br/>	
+		<s:decorate id="bedsDecorate" template="edit.xhtml">
+			<ui:define name="label">Room Preference:</ui:define>
+			<h:selectOneMenu id="beds" value="#{booking.beds}">
+				<f:selectItem itemLabel="One king-size bed" itemValue="1"/>
+				<f:selectItem itemLabel="Two double beds" itemValue="2"/>
+				<f:selectItem itemLabel="Three beds" itemValue="3"/>
+			</h:selectOneMenu>
+		</s:decorate>
+		
+		<s:decorate id="smokingDecorate" template="edit.xhtml">
+			<ui:define name="label">Smoking Preference:</ui:define>
+               <ice:selectOneRadio id="smoking" value="#{booking.smoking}" 
+                                 layout="pageDirection" styleClass="radio">
+				<f:selectItem itemLabel="Smoking" itemValue="true"/>
+				<f:selectItem itemLabel="Non Smoking" itemValue="false"/>
+              </ice:selectOneRadio>
+		</s:decorate>
+
+		<s:decorate id="creditCardDecorate" template="edit.xhtml">
+			<ui:define name="label">Credit Card #:</ui:define>
+                   <ice:inputText id="creditCard" value="#{booking.creditCard}" 
+                                           required="true" partialSubmit="true"/> 
+		</s:decorate>
+
+		<s:decorate id="creditCardNameDecorate" template="edit.xhtml">
+			<ui:define name="label">Credit Card Name:</ui:define>
+                  <ice:inputText id="creditCardName" value="#{booking.creditCardName}" 
+                             partialSubmit="true" required="true"/>           
+		</s:decorate>
+
+		<s:decorate id="creditCardExpiryDecorate" template="edit.xhtml">
+			<ui:define name="label">Credit Card Expiry:</ui:define>
+               <ice:selectOneMenu id="creditCardExpiryMonth" value="#{booking.creditCardExpiryMonth}">
+				<f:selectItem itemLabel="Jan" itemValue="1"/>
+				<f:selectItem itemLabel="Feb" itemValue="2"/>
+				<f:selectItem itemLabel="Mar" itemValue="3"/>
+				<f:selectItem itemLabel="Apr" itemValue="4"/>
+				<f:selectItem itemLabel="May" itemValue="5"/>
+				<f:selectItem itemLabel="Jun" itemValue="6"/>
+				<f:selectItem itemLabel="Jul" itemValue="7"/>
+				<f:selectItem itemLabel="Aug" itemValue="8"/>
+				<f:selectItem itemLabel="Sep" itemValue="9"/>
+				<f:selectItem itemLabel="Oct" itemValue="10"/>
+				<f:selectItem itemLabel="Nov" itemValue="11"/>
+				<f:selectItem itemLabel="Dec" itemValue="12"/>
+               </ice:selectOneMenu>
+               <ice:selectOneMenu id="creditCardExpiryYear" value="#{booking.creditCardExpiryYear}">
+                                <f:selectItem itemLabel="2011" itemValue="2011"/>
+                                <f:selectItem itemLabel="2012" itemValue="2012"/>
+                                <f:selectItem itemLabel="2013" itemValue="2013"/>
+                                <f:selectItem itemLabel="2014" itemValue="2014"/>
+                                <f:selectItem itemLabel="2015" itemValue="2015"/>
+                </ice: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>
+	</ice: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/icefaces/icefaces-web/src/main/webapp/confirm.xhtml
===================================================================
--- branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-web/src/main/webapp/confirm.xhtml	                        (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-web/src/main/webapp/confirm.xhtml	2012-04-13 04:53:48 UTC (rev 14566)
@@ -0,0 +1,75 @@
+<!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.com/products/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 template="display.xhtml">
+		<ui:define name="label">Total Payment:</ui:define>
+		<h:outputText value="#{booking.total}">
+			<f:convertNumber type="currency" currencySymbol="$"/>
+		</h:outputText>
+	</s:decorate>
+
+
+	<s:decorate template="display.xhtml">
+		<ui:define name="label">Check In Date:</ui:define>
+		<h:outputText value="#{booking.checkinDate}"/>
+	</s:decorate>
+
+	<s:decorate template="display.xhtml">
+		<ui:define name="label">Check Out Date:</ui:define>
+		<h:outputText value="#{booking.checkoutDate}"/>
+	</s:decorate>
+
+	<s:decorate 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/icefaces/icefaces-web/src/main/webapp/conversations.xhtml
===================================================================
--- branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-web/src/main/webapp/conversations.xhtml	                        (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-web/src/main/webapp/conversations.xhtml	2012-04-13 04:53:48 UTC (rev 14566)
@@ -0,0 +1,36 @@
+<!DOCTYPE div 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.com/products/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="hh:mm"/>
+	                </h:outputText>
+	                -
+	                <h:outputText id="EntryLastDateTime" value="#{entry.lastDatetime}">
+	                    <s:convertDateTime type="time" pattern="hh:mm"/>
+	                </h:outputText>
+	            </h:column>
+	        </h:dataTable>
+	    </h:form>
+	</div>
+	
+	</div>
+</ui:composition>
\ No newline at end of file

Added: branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-web/src/main/webapp/css/screen.css
===================================================================
--- branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-web/src/main/webapp/css/screen.css	                        (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-web/src/main/webapp/css/screen.css	2012-04-13 04:53:48 UTC (rev 14566)
@@ -0,0 +1,309 @@
+/* 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: none;
+	width: 360px;
+	text-align: left;
+}
+.entry .valueInput{
+       width:150px;  
+}
+/* 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 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;
+}
+#content
+/* ice date selector css */
+.iceSelInpDate {
+    width: 90px;
+    background-color: #ffffff;
+}
+.calendar .iceSelInpDateInput {
+	padding: 4px;
+	border: 1px solid #C3BBB6;
+	margin: 0;
+}
+.calendar input{
+	padding: 0;
+	border:0;
+	margin: 0 0 2px 0;
+}
+.button, .iceCmdBtn{
+	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;
+}
+
+.iceCmdLnk, .iceOutLnk{
+    color: #0000f8;
+}

Added: branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-web/src/main/webapp/css/trailblazer_main.css
===================================================================
--- branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-web/src/main/webapp/css/trailblazer_main.css	                        (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-web/src/main/webapp/css/trailblazer_main.css	2012-04-13 04:53:48 UTC (rev 14566)
@@ -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/icefaces/icefaces-web/src/main/webapp/display.xhtml
===================================================================
--- branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-web/src/main/webapp/display.xhtml	                        (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-web/src/main/webapp/display.xhtml	2012-04-13 04:53:48 UTC (rev 14566)
@@ -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.com/products/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/icefaces/icefaces-web/src/main/webapp/edit.xhtml
===================================================================
--- branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-web/src/main/webapp/edit.xhtml	                        (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-web/src/main/webapp/edit.xhtml	2012-04-13 04:53:48 UTC (rev 14566)
@@ -0,0 +1,20 @@
+<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.com/products/seam/taglib">
+                 
+    <div class="entry">
+        <s:label styleClass="label #{invalid?'errors':''}">
+            <ui:insert name="label"/>
+            <s:span styleClass="required" rendered="#{required}">*</s:span>
+        </s:label>
+        <span class="input #{invalid?'errors':''}">
+            <s:validateAll>
+                <ui:insert/>
+            </s:validateAll>
+        </span>
+        <s:message id="message" styleClass="error errors"/>
+    </div>
+    
+</ui:composition>
\ No newline at end of file

Added: branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-web/src/main/webapp/exp/bookingExp.html
===================================================================
--- branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-web/src/main/webapp/exp/bookingExp.html	                        (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-web/src/main/webapp/exp/bookingExp.html	2012-04-13 04:53:48 UTC (rev 14566)
@@ -0,0 +1,162 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+          "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<h:html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
+<h: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" />
+</h:head>
+
+<h: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>
+
+</h:body>
+</h:html>

Added: branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-web/src/main/webapp/exp/confirmExp.html
===================================================================
--- branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-web/src/main/webapp/exp/confirmExp.html	                        (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-web/src/main/webapp/exp/confirmExp.html	2012-04-13 04:53:48 UTC (rev 14566)
@@ -0,0 +1,104 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+          "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<h:html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
+<h: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" />
+</h:head>
+
+<h: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>
+
+</h:body>
+</h:html>
\ No newline at end of file

Added: branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-web/src/main/webapp/exp/introExp.html
===================================================================
--- branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-web/src/main/webapp/exp/introExp.html	                        (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-web/src/main/webapp/exp/introExp.html	2012-04-13 04:53:48 UTC (rev 14566)
@@ -0,0 +1,58 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+          "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<h:html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
+<h: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" />
+</h:head>
+
+<h:body>
+
+<div id="main">
+  <div class="trail">
+    <div class="numbox">1</div>
+    <h2>What is JBoss Seam with ICEfaces</h2>
+    <img src="../img/header_line.gif" />
+    
+    <p>
+       <center>
+       <form>
+          <INPUT type="button" value="Close Window" onclick="window.close()">
+       </form>
+       </center>
+    </p>
+    
+    <p>
+       This application is very similar to the examples/booking application with the exception
+       of using ICEfaces for the web presentation environment.  This application looks and
+       feels simliar to the booking example and showcases how ICEfaces integrates well with Seam.
+    </p>
+	
+    <p>
+       ICEfaces provides a rich web presentation environment for JavaServer Faces (JSF) 
+       applications with AJAX-based interactive features.  It replaces the standard HTML-based 
+       JSF renderers with Direct-to-DOM (D2D) renderers, and may be added with little modification
+       to Seam applications
+    </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/icefaces</code> directory of the 
+       <a href="http://www.jboss.com/products/list/downloads#seam">Seam distribution</a>. 
+    </p>
+    <p>
+       For further information and examples using ICEfaces with Seam please visit
+       <a href="http://icefaces.org">ICEfaces.org</a>
+    </p>
+   <p>
+       <center>
+       <form>
+          <INPUT type="button" value="Close Window" onclick="window.close()">
+       </form>
+       </center>
+    </p>
+ </div>
+</div>
+
+</h:body>
+</h:html>

Added: branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-web/src/main/webapp/exp/loginExp.html
===================================================================
--- branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-web/src/main/webapp/exp/loginExp.html	                        (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-web/src/main/webapp/exp/loginExp.html	2012-04-13 04:53:48 UTC (rev 14566)
@@ -0,0 +1,160 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+          "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<h:html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
+<h: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" />
+</h:head>
+
+<h: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>
+
+</h:body>
+</h:html>

Added: branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-web/src/main/webapp/exp/mainExp.html
===================================================================
--- branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-web/src/main/webapp/exp/mainExp.html	                        (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-web/src/main/webapp/exp/mainExp.html	2012-04-13 04:53:48 UTC (rev 14566)
@@ -0,0 +1,196 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+          "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<h:html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
+<h: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" />
+</h:head>
+
+<h: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 value="#{hotelSearch.searchString}" /&gt;
+&lt;h:commandButton value="Find Hotels" 
+    action="#{hotelBooking.find}" 
+    styleClass="button" /&gt;
+&lt;h:outputLabel for="pageSize"&gt;Maximum results:&lt;/h:outputLabel&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.
+    </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 = 0;
+   
+   @DataModel
+   private List&lt;Hotel&gt; hotels;
+   @DataModelSelection
+   private Hotel selectedHotel;
+   
+   public String find()
+   {
+      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;
+   }
+
+   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>
+
+</h:body>
+</h:html>

Added: branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-web/src/main/webapp/exp/registerExp.html
===================================================================
--- branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-web/src/main/webapp/exp/registerExp.html	                        (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-web/src/main/webapp/exp/registerExp.html	2012-04-13 04:53:48 UTC (rev 14566)
@@ -0,0 +1,229 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+          "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<h:html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
+<h: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" />
+</h:head>
+
+<h: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>
+
+</h:body>
+</h:html>

Added: branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-web/src/main/webapp/exp/workspaceExp.html
===================================================================
--- branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-web/src/main/webapp/exp/workspaceExp.html	                        (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-web/src/main/webapp/exp/workspaceExp.html	2012-04-13 04:53:48 UTC (rev 14566)
@@ -0,0 +1,92 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+          "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<h:html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
+<h: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" />
+</h:head>
+
+<h: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>
+
+</h:body>
+</h:html>

Added: branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-web/src/main/webapp/home.xhtml
===================================================================
--- branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-web/src/main/webapp/home.xhtml	                        (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-web/src/main/webapp/home.xhtml	2012-04-13 04:53:48 UTC (rev 14566)
@@ -0,0 +1,83 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<h: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:ice="http://www.icesoft.com/icefaces/component"	  
+      xmlns:s="http://jboss.com/products/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>
+<h: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 for="username">Login Name</h:outputLabel>
+					<h:inputText id="username" value="#{identity.username}" style="width: 165px;"/>
+					<div class="errors"><h:message for="username"/></div>
+				</div>
+				<div>
+					<h:outputLabel for="password">Password</h:outputLabel>
+					<h:inputSecret id="password" value="#{identity.password}" style="width: 165px;"/>
+				</div>
+				<div class="errors"><h:messages globalOnly="true"/></div>
+				<div class="buttonBox"><ice:commandButton id="login" action="#{identity.login}" value="Account Login"
+				    styleClass="button"/></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 and <a href="http://icefaces.org">ICEfaces</a>. 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 with ICEfaces?
+			       </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, ICEFaces, and Facelets</div>
+</div>
+</f:view>
+</h:body>
+</h:html>

Added: branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-web/src/main/webapp/hotel.xhtml
===================================================================
--- branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-web/src/main/webapp/hotel.xhtml	                        (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-web/src/main/webapp/hotel.xhtml	2012-04-13 04:53:48 UTC (rev 14566)
@@ -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.com/products/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/icefaces/icefaces-web/src/main/webapp/hotelview.xhtml
===================================================================
--- branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-web/src/main/webapp/hotelview.xhtml	                        (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-web/src/main/webapp/hotelview.xhtml	2012-04-13 04:53:48 UTC (rev 14566)
@@ -0,0 +1,44 @@
+<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.com/products/seam/taglib">
+    
+    <s:decorate template="display.xhtml">             
+		<ui:define name="label">Name:</ui:define>
+		#{hotel.name}
+	</s:decorate>
+	
+    <s:decorate template="display.xhtml">             
+		<ui:define name="label">Address:</ui:define>
+		#{hotel.address}
+	</s:decorate>
+	
+    <s:decorate template="display.xhtml">             
+		<ui:define name="label">City:</ui:define>
+		#{hotel.city}
+	</s:decorate>
+	
+    <s:decorate template="display.xhtml">             
+		<ui:define name="label">State:</ui:define>
+		#{hotel.state}
+	</s:decorate>
+	
+    <s:decorate template="display.xhtml">             
+		<ui:define name="label">Zip:</ui:define>
+		#{hotel.zip}
+	</s:decorate>
+	
+    <s:decorate template="display.xhtml">             
+		<ui:define name="label">Country:</ui:define>
+		#{hotel.country}
+	</s:decorate>
+	
+    <s:decorate template="display.xhtml">             
+		<ui:define name="label">Nightly rate:</ui:define>
+		<h:outputText value="#{hotel.price}">
+			<f:convertNumber type="currency" currencySymbol="$"/>
+		</h:outputText>
+	</s:decorate>
+	  
+</ui:composition>

Added: branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-web/src/main/webapp/img/bg.gif
===================================================================
(Binary files differ)


Property changes on: branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-web/src/main/webapp/img/bg.gif
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Added: branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-web/src/main/webapp/img/btn.bg.gif
===================================================================
(Binary files differ)


Property changes on: branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-web/src/main/webapp/img/btn.bg.gif
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Added: branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-web/src/main/webapp/img/cal-next.png
===================================================================
(Binary files differ)


Property changes on: branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-web/src/main/webapp/img/cal-next.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Added: branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-web/src/main/webapp/img/cal-prev.png
===================================================================
(Binary files differ)


Property changes on: branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-web/src/main/webapp/img/cal-prev.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Added: branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-web/src/main/webapp/img/cnt.bg.gif
===================================================================
(Binary files differ)


Property changes on: branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-web/src/main/webapp/img/cnt.bg.gif
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Added: branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-web/src/main/webapp/img/dtpick.gif
===================================================================
(Binary files differ)


Property changes on: branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-web/src/main/webapp/img/dtpick.gif
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Added: branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-web/src/main/webapp/img/hdr.ad.jpg
===================================================================
(Binary files differ)


Property changes on: branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-web/src/main/webapp/img/hdr.ad.jpg
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Added: branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-web/src/main/webapp/img/hdr.bar.jpg
===================================================================
(Binary files differ)


Property changes on: branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-web/src/main/webapp/img/hdr.bar.jpg
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Added: branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-web/src/main/webapp/img/hdr.bg.gif
===================================================================
(Binary files differ)


Property changes on: branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-web/src/main/webapp/img/hdr.bg.gif
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Added: branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-web/src/main/webapp/img/hdr.title.gif
===================================================================
(Binary files differ)


Property changes on: branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-web/src/main/webapp/img/hdr.title.gif
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Added: branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-web/src/main/webapp/img/header_line.gif
===================================================================
(Binary files differ)


Property changes on: branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-web/src/main/webapp/img/header_line.gif
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Added: branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-web/src/main/webapp/img/input.bg.gif
===================================================================
(Binary files differ)


Property changes on: branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-web/src/main/webapp/img/input.bg.gif
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Added: branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-web/src/main/webapp/img/sdb.bg.gif
===================================================================
(Binary files differ)


Property changes on: branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-web/src/main/webapp/img/sdb.bg.gif
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Added: branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-web/src/main/webapp/img/spinner.gif
===================================================================
(Binary files differ)


Property changes on: branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-web/src/main/webapp/img/spinner.gif
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Added: branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-web/src/main/webapp/img/th.bg.gif
===================================================================
(Binary files differ)


Property changes on: branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-web/src/main/webapp/img/th.bg.gif
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Added: branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-web/src/main/webapp/index.html
===================================================================
--- branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-web/src/main/webapp/index.html	                        (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-web/src/main/webapp/index.html	2012-04-13 04:53:48 UTC (rev 14566)
@@ -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/icefaces/icefaces-web/src/main/webapp/main.xhtml
===================================================================
--- branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-web/src/main/webapp/main.xhtml	                        (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-web/src/main/webapp/main.xhtml	2012-04-13 04:53:48 UTC (rev 14566)
@@ -0,0 +1,140 @@
+<!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.com/products/seam/taglib"
+                xmlns:ice="http://www.icesoft.com/icefaces/component" 
+				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> 
+            <ice:selectInputText id="searchString" 
+                 valueChangeListener="#{hotelSearch.handleSearchStringChange}" 
+                 value="#{hotelSearch.searchString}"/>
+                 &#160;
+                 <ice:commandButton id="findHotels" value="Find Hotels" action="#{hotelSearch.find}" />
+                 &#160;
+            <ice:outputConnectionStatus id="Spinner" activeLabel="requesting..." styleClass="connectionStatus"/>
+	        <br/>
+ 
+            <h:outputLabel for="pageSize">Maximum results:</h:outputLabel>&#160;
+            <ice:selectOneMenu id="pageSize" 
+                 value="#{hotelSearch.pageSize}" 
+                 valueChangeListener="#{hotelSearch.handlePageSizeChange}"
+                 partialSubmit="true">
+                    <f:selectItem itemLabel="5" itemValue="5"/>
+                    <f:selectItem itemLabel="10" itemValue="10"/>
+                    <f:selectItem itemLabel="20" itemValue="20"/>
+            </ice:selectOneMenu>
+    </fieldset>
+    </h:form>
+    
+</div>
+<ice:form id="searchResults">
+    <ice:panelGroup id="searchResults">
+  <div class="section" style="overflow:auto">
+	<h:outputText id="NoHotelsFoundMessage" value="No Hotels Found" rendered="#{hotels != null and hotels.rowCount==0}"/>
+            <ice:outputText value="Search Results"/>
+            <ice:dataTable id="hotels" value="#{hotels}" var="hot" rendered="#{hotels.rowCount>0}">
+                <ice:column>
+                    <f:facet name="header">Name</f:facet>
+                    <ice:outputText id="name" value="#{hot.name}" onmouseovereffect="#{highlight}"/>
+                </ice:column>
+                <ice:column>
+                    <f:facet name="header">Address</f:facet>
+                    <ice:outputText id="address" value="#{hot.address}" onmouseovereffect="#{highlight}"/>
+                </ice:column>
+                <ice:column>
+                    <f:facet name="header">City, State</f:facet>
+                    <ice:outputText id="city" value="#{hot.city}, #{hot.state}, #{hot.country}" onmouseovereffect="#{highlight}"/>
+                </ice:column> 
+                <ice:column>
+                    <f:facet name="header">Zip</f:facet>
+                    <ice:outputText id="zip" value="#{hot.zip}" onmouseovereffect="#{highlight}"/>
+                </ice:column>
+                <ice:column>
+                    <f:facet name="header">Action</f:facet>
+                    <s:link id="viewHotel" value="View Hotel" action="#{hotelBooking.selectHotel(hot)}"/>
+                </ice:column>
+            </ice:dataTable>
+            <s:link id="moreResults" value="More results" action="#{hotelSearch.nextPage}" rendered="#{hotelSearch.nextPageAvailable}"/>
+        </div>
+    </ice:panelGroup>
+</ice:form>
+
+<div class="section">
+	<h1>Current Hotel Bookings</h1>
+
+  <ice:form id="bookings">
+	<h:outputText value="No Bookings Found" rendered="#{bookings.rowCount==0}"/>
+	<ice:dataTable id="bookings" value="#{bookings}" var="book" rendered="#{bookings.rowCount>0}">
+		<ice:column>
+			<f:facet name="header">Name</f:facet>
+			<ice:outputText id="name" value="#{book.hotel.name}" onmouseovereffect="#{highlight}"/>
+		</ice:column>
+		<ice:column>
+			<f:facet name="header">Address</f:facet>
+			<ice:outputText id="address" value="#{book.hotel.address}" onmouseovereffect="#{highlight}"/>
+		</ice:column>
+		<ice:column>
+			<f:facet name="header">City, State</f:facet>
+			<ice:outputText id="city" value="#{book.hotel.city}, #{book.hotel.state}" onmouseovereffect="#{highlight}"/>
+		</ice:column>
+        <ice:column>
+            <f:facet name="header">Check in date</f:facet>
+            <h:outputText id="checkIn" value="#{book.checkinDate}" onmouseovereffect="#{highlight}"/>
+        </ice:column>
+        <ice:column>
+            <f:facet name="header">Check out date</f:facet>
+            <h:outputText id="checkOut" value="#{book.checkoutDate}" onmouseovereffect="#{highlight}"/>
+        </ice:column>
+		<ice:column>
+			<f:facet name="header">Confirmation number</f:facet>
+			<ice:outputText id="confirmation" value="#{book.id}" onmouseovereffect="#{highlight}"/>
+		</ice:column>
+		<ice:column>
+			<f:facet name="header">Action</f:facet>
+			<ice:commandLink id="cancel" value="Cancel" action="#{bookingList.cancel}"/>
+		</ice:column>
+	</ice:dataTable>
+  </ice: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/icefaces/icefaces-web/src/main/webapp/password.xhtml
===================================================================
--- branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-web/src/main/webapp/password.xhtml	                        (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-web/src/main/webapp/password.xhtml	2012-04-13 04:53:48 UTC (rev 14566)
@@ -0,0 +1,106 @@
+<!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.com/products/seam/taglib"
+                xmlns:ice="http://www.icesoft.com/icefaces/component" 
+                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>
+
+                            <ice:inputSecret id="password" value="#{user.password}" 
+                            redisplay="true" required="true"/>
+			</s:decorate>
+
+			
+
+			<s:decorate id="VerifyDecorate" template="edit.xhtml">
+				<ui:define name="label">Verify:</ui:define>
+                            <ice:inputSecret id="verify" value="#{changePassword.verify}" 
+                            redisplay="true" 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>

Added: branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-web/src/main/webapp/register.xhtml
===================================================================
--- branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-web/src/main/webapp/register.xhtml	                        (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-web/src/main/webapp/register.xhtml	2012-04-13 04:53:48 UTC (rev 14566)
@@ -0,0 +1,102 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<h:html xmlns="http://www.w3.org/1999/xhtml"
+	  xmlns:ui="http://java.sun.com/jsf/facelets"
+	  xmlns:h="http://java.sun.com/jsf/html"
+	  xmlns:f="http://java.sun.com/jsf/core"
+	  xmlns:s="http://jboss.com/products/seam/taglib"
+      xmlns:ice="http://www.icesoft.com/icefaces/component" >
+
+<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" />
+</h:head>
+
+<h:body id="pgHome">
+
+<ice:panelGroup id="document">
+
+	<div id="header">
+		<ice:panelGroup id="title"><img src="img/hdr.title.gif" alt="JBoss Suites: ICEfaces-seam framework demo"/></ice:panelGroup>
+	</div>
+	
+	<ice:panelGroup 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>
+		
+		<ice:panelGroup id="content">
+		
+			<div class="section">
+				<h1>Register</h1>
+			</div>
+			
+			<div class="section" style="overflow:auto">
+				<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>
+                                                 <ice:inputText id="username" value="#{user.username}" 
+                                                          required="true"  partialSubmit="true"/>
+					</s:decorate>
+					
+					<s:decorate id="nameDecorate" template="edit.xhtml">
+						<ui:define name="label">Real Name:</ui:define>
+                                                  <ice:inputText id="name" value="#{user.name}" 
+                                                           required="true" partialSubmit="true"/>                                                
+					</s:decorate>
+					
+					<s:decorate id="passwordDecorate" template="edit.xhtml">
+					       <ui:define name="label">Password:</ui:define>
+                                                   <ice:inputSecret id="password" value="#{user.password}" 
+                                                                     redisplay="true" partialSubmit="true" required="true"/>
+					</s:decorate>
+					
+					<s:decorate id="verifyDecorate" template="edit.xhtml">
+						<ui:define name="label">Verify Password:</ui:define>
+                                                  <ice:inputSecret id="verify" value="#{register.verify}" 
+                                                            redisplay="true" partialSubmit="true" required="true"/>
+					</s:decorate>
+					
+					<div class="buttonBox">
+						<ice:commandButton id="register" value="Register" action="#{register.register}"/>
+						&#160;
+						<s:button id="cancel" value="Cancel" view="/home.xhtml"/>
+					</div>
+									
+				</fieldset>
+                </h:form>
+                
+			</div>
+			
+		</ice:panelGroup>
+		
+	</ice:panelGroup>
+	
+	<div id="footer">Created with JBoss EJB 3.0, Seam, JSF (Mojarra), and Facelets</div>
+	
+</ice:panelGroup>
+
+</h:body>
+
+</h:html>

Added: branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-web/src/main/webapp/template.xhtml
===================================================================
--- branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-web/src/main/webapp/template.xhtml	                        (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/icefaces/icefaces-web/src/main/webapp/template.xhtml	2012-04-13 04:53:48 UTC (rev 14566)
@@ -0,0 +1,40 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<h: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:s="http://jboss.com/products/seam/taglib"
+      xmlns:ice="http://www.icesoft.com/icefaces/component">
+<h:head>
+     <ice:outputDeclaration doctypeRoot="HTML"
+        doctypePublic="-//W3C//DTD XHTML 1.0 Transitional//EN"
+        doctypeSystem="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"/>  
+	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+	<title>JBoss Suites: Seam Framework</title>
+        <link rel='stylesheet' type='text/css' href='./xmlhttp/css/xp/xp.css'/>
+	<link href="css/screen.css" rel="stylesheet" type="text/css" />
+</h:head>
+<h: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 EJB 3.0, Seam, JSF (Mojarra), ICEfaces and Facelets</div>
+</div>
+</h:body>
+</h:html>

Added: branches/community/Seam_2_3/examples-ee6/icefaces/pom.xml
===================================================================
--- branches/community/Seam_2_3/examples-ee6/icefaces/pom.xml	                        (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/icefaces/pom.xml	2012-04-13 04:53:48 UTC (rev 14566)
@@ -0,0 +1,48 @@
+<?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">
+    <parent>
+        <artifactId>examples-ee6</artifactId>
+        <groupId>org.jboss.seam</groupId>
+        <version>2.3.0.Beta2-SNAPSHOT</version>
+    </parent>
+    
+    <modelVersion>4.0.0</modelVersion>
+    <groupId>org.jboss.seam.examples-ee6</groupId>
+    <artifactId>icefaces</artifactId>
+    <packaging>pom</packaging>
+    <name>Icefaces Example (EE6)</name>
+  
+    <modules>
+        <module>icefaces-ejb</module>
+        <module>icefaces-web</module>
+        <module>icefaces-ear</module>
+        <module>icefaces-tests</module>
+    </modules>
+    
+    <properties>
+        <example.name>icefaces</example.name>
+    </properties>
+    
+    <dependencyManagement>
+        <dependencies>
+            <dependency>
+                <groupId>org.jboss.seam.examples-ee6</groupId>
+                <artifactId>icefaces-ejb</artifactId>
+                <version>${project.version}</version>
+                <type>ejb</type>
+            </dependency>
+            <dependency>
+                <groupId>org.jboss.seam.examples-ee6</groupId>
+                <artifactId>icefaces-web</artifactId>
+                <version>${project.version}</version>
+                <type>war</type>
+            </dependency>
+            <dependency>
+                <groupId>org.jboss.seam.examples-ee6</groupId>
+                <artifactId>icefaces-ear</artifactId>
+                <version>${project.version}</version>
+            </dependency>
+        </dependencies>
+    </dependencyManagement>
+    
+</project>

Added: branches/community/Seam_2_3/examples-ee6/icefaces/readme.txt
===================================================================
--- branches/community/Seam_2_3/examples-ee6/icefaces/readme.txt	                        (rev 0)
+++ branches/community/Seam_2_3/examples-ee6/icefaces/readme.txt	2012-04-13 04:53:48 UTC (rev 14566)
@@ -0,0 +1,27 @@
+Seam IceFaces Example
+=====================
+
+This example demonstrates integration with IceFaces. It runs on JBoss AS as an
+EAR.
+
+To deploy the example to JBoss AS, follow these steps:
+
+* In the example root directory run:
+
+    mvn clean package
+
+* Set JBOSS_HOME environment property.
+
+* In the icefaces-ear directory run:
+
+    mvn jboss:hard-deploy
+
+* Open this URL in a web browser: http://localhost:8080/seam-icefaces
+
+To run functional tests for the example on JBoss AS 5 or 6, run:
+
+    mvn verify -Pftest-jbossas
+
+To run functional tests for the example on JBoss AS 4, run:
+
+    mvn verify -Pftest-jbossas -Djbossas.version=4

Modified: branches/community/Seam_2_3/examples-ee6/update_process.txt
===================================================================
--- branches/community/Seam_2_3/examples-ee6/update_process.txt	2012-04-12 18:27:40 UTC (rev 14565)
+++ branches/community/Seam_2_3/examples-ee6/update_process.txt	2012-04-13 04:53:48 UTC (rev 14566)
@@ -213,3 +213,10 @@
 ===========
 All hibernate dependencies will need to be listed as 'provided'
 
+
+In src/main/resources/persistence.xml
+==================
+Change <jta-data-source>java:/icefaces-bookingDatasource</jta-data-source> to
+<non-jta-data-source>java:jboss/datasources/ExampleDS</non-jta-data-source>
+Run tests with:
+mvn -Darquillian=jbossas-managed-7 clean test integration-test



More information about the seam-commits mailing list