[seam-commits] Seam SVN: r13116 - in modules/documents/trunk: api and 37 other directories.
seam-commits at lists.jboss.org
seam-commits at lists.jboss.org
Thu Jun 10 14:03:57 EDT 2010
Author: lincolnthree
Date: 2010-06-10 14:03:55 -0400 (Thu, 10 Jun 2010)
New Revision: 13116
Added:
modules/documents/trunk/api/
modules/documents/trunk/api/pom.xml
modules/documents/trunk/api/src/
modules/documents/trunk/api/src/main/
modules/documents/trunk/api/src/main/java/
modules/documents/trunk/api/src/main/resources/
modules/documents/trunk/api/src/main/resources/META-INF/
modules/documents/trunk/api/src/main/resources/META-INF/beans.xml
modules/documents/trunk/api/src/test/
modules/documents/trunk/api/src/test/java/
modules/documents/trunk/api/src/test/java/org/
modules/documents/trunk/api/src/test/java/org/jboss/
modules/documents/trunk/api/src/test/java/org/jboss/seam/
modules/documents/trunk/api/src/test/java/org/jboss/seam/documents/
modules/documents/trunk/api/src/test/java/org/jboss/seam/documents/test/
modules/documents/trunk/api/src/test/resources/
modules/documents/trunk/dist/
modules/documents/trunk/dist/pom.xml
modules/documents/trunk/dist/src/
modules/documents/trunk/dist/src/main/
modules/documents/trunk/dist/src/main/assembly/
modules/documents/trunk/dist/src/main/assembly/assembly.xml
modules/documents/trunk/dist/src/main/assembly/lgpl.txt
modules/documents/trunk/dist/src/main/assembly/readme.txt
modules/documents/trunk/docs/
modules/documents/trunk/docs/reference/
modules/documents/trunk/docs/reference/pom.xml
modules/documents/trunk/docs/reference/src/
modules/documents/trunk/docs/reference/src/main/
modules/documents/trunk/docs/reference/src/main/assembly/
modules/documents/trunk/docs/reference/src/main/assembly/assembly.xml
modules/documents/trunk/docs/reference/src/main/docbook/
modules/documents/trunk/docs/reference/src/main/docbook/en-US/
modules/documents/trunk/docs/reference/src/main/docbook/en-US/artifacts.xml
modules/documents/trunk/docs/reference/src/main/docbook/en-US/author_group.xml
modules/documents/trunk/docs/reference/src/main/docbook/en-US/book_info.xml
modules/documents/trunk/docs/reference/src/main/docbook/en-US/components.xml
modules/documents/trunk/docs/reference/src/main/docbook/en-US/events.xml
modules/documents/trunk/docs/reference/src/main/docbook/en-US/installation.xml
modules/documents/trunk/docs/reference/src/main/docbook/en-US/master.xml
modules/documents/trunk/docs/reference/src/main/docbook/en-US/messages.xml
modules/documents/trunk/docs/reference/src/main/docbook/en-US/preface.xml
modules/documents/trunk/docs/reference/src/main/docbook/en-US/scopes.xml
modules/documents/trunk/impl/
modules/documents/trunk/impl/pom.xml
modules/documents/trunk/impl/src/
modules/documents/trunk/impl/src/main/
modules/documents/trunk/impl/src/main/java/
modules/documents/trunk/impl/src/main/java/org/
modules/documents/trunk/impl/src/main/java/org/jboss/
modules/documents/trunk/impl/src/main/java/org/jboss/seam/
modules/documents/trunk/impl/src/main/java/org/jboss/seam/documents/
modules/documents/trunk/impl/src/main/resources/
modules/documents/trunk/impl/src/main/resources/META-INF/
modules/documents/trunk/impl/src/main/resources/META-INF/beans.xml
modules/documents/trunk/impl/src/main/resources/META-INF/services/
modules/documents/trunk/impl/src/main/resources/META-INF/services/javax.enterprise.inject.spi.Extension
modules/documents/trunk/impl/src/test/
modules/documents/trunk/impl/src/test/java/
modules/documents/trunk/impl/src/test/java/org/
modules/documents/trunk/impl/src/test/java/org/jboss/
modules/documents/trunk/impl/src/test/java/org/jboss/seam/
modules/documents/trunk/impl/src/test/java/org/jboss/seam/documents/
modules/documents/trunk/impl/src/test/java/org/jboss/seam/documents/test/
modules/documents/trunk/impl/src/test/resources/
modules/documents/trunk/pom.xml
modules/documents/trunk/readme.txt
Modified:
modules/documents/trunk/
Log:
Initial skeleton import.
Property changes on: modules/documents/trunk
___________________________________________________________________
Name: svn:ignore
+ .settings
Added: modules/documents/trunk/api/pom.xml
===================================================================
--- modules/documents/trunk/api/pom.xml (rev 0)
+++ modules/documents/trunk/api/pom.xml 2010-06-10 18:03:55 UTC (rev 13116)
@@ -0,0 +1,75 @@
+<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>seam-documents-parent</artifactId>
+ <groupId>org.jboss.seam.documents</groupId>
+ <version>3.0.0-SNAPSHOT</version>
+ <relativePath>../pom.xml</relativePath>
+ </parent>
+
+ <artifactId>seam-documents-api</artifactId>
+ <version>3.0.0-SNAPSHOT</version>
+
+ <packaging>jar</packaging>
+ <name>Seam Documents Module API</name>
+
+ <dependencies>
+ <dependency>
+ <groupId>javax.mail</groupId>
+ <artifactId>mail</artifactId>
+ <scope>provided</scope>
+ </dependency>
+
+ <!-- Test Dependencies -->
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss.arquillian</groupId>
+ <artifactId>arquillian-junit</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss.arquillian.container</groupId>
+ <artifactId>arquillian-weld-embedded</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss.weld</groupId>
+ <artifactId>weld-core</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-simple</artifactId>
+ <scope>test</scope>
+ </dependency>
+ </dependencies>
+
+
+ <profiles>
+ <profile>
+ <id>code-coverage</id>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>emma-maven-plugin</artifactId>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-surefire-plugin</artifactId>
+ </plugin>
+ <plugin>
+ <groupId>org.sonatype.maven.plugin</groupId>
+ <artifactId>emma4it-maven-plugin</artifactId>
+ </plugin>
+ </plugins>
+ </build>
+ </profile>
+ </profiles>
+
+</project>
Added: modules/documents/trunk/api/src/main/resources/META-INF/beans.xml
===================================================================
--- modules/documents/trunk/api/src/main/resources/META-INF/beans.xml (rev 0)
+++ modules/documents/trunk/api/src/main/resources/META-INF/beans.xml 2010-06-10 18:03:55 UTC (rev 13116)
@@ -0,0 +1,27 @@
+<!--
+JBoss, Home of Professional Open Source
+Copyright 2010, Red Hat, Inc., 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.
+-->
+<beans 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/beans_1_0.xsd">
+
+</beans>
Added: modules/documents/trunk/dist/pom.xml
===================================================================
--- modules/documents/trunk/dist/pom.xml (rev 0)
+++ modules/documents/trunk/dist/pom.xml 2010-06-10 18:03:55 UTC (rev 13116)
@@ -0,0 +1,88 @@
+<?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>
+ <groupId>org.jboss.seam.documents</groupId>
+ <artifactId>seam-documents-parent</artifactId>
+ <version>3.0.0-SNAPSHOT</version>
+ <relativePath>../pom.xml</relativePath>
+ </parent>
+
+ <artifactId>seam-documents-distribution</artifactId>
+ <name>Seam Documents Distribution</name>
+ <description>Builds a Seam Documents release distribution</description>
+ <packaging>pom</packaging>
+
+ <properties>
+ <maven.deploy.skip>true</maven.deploy.skip>
+ </properties>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.jboss.seam.documents</groupId>
+ <artifactId>seam-documents-api</artifactId>
+ <version>3.0.0-SNAPSHOT</version>
+ <optional>true</optional>
+ </dependency>
+
+ <dependency>
+ <groupId>org.jboss.seam.documents</groupId>
+ <artifactId>seam-documents</artifactId>
+ <version>3.0.0-SNAPSHOT</version>
+ <optional>true</optional>
+ </dependency>
+
+ <dependency>
+ <groupId>org.jboss.seam.documents</groupId>
+ <artifactId>seam-documents-api</artifactId>
+ <version>${project.version}</version>
+ <classifier>sources</classifier>
+ <optional>true</optional>
+ </dependency>
+
+ <dependency>
+ <groupId>org.jboss.seam.documents</groupId>
+ <artifactId>seam-documents-api</artifactId>
+ <version>${project.version}</version>
+ <classifier>javadoc</classifier>
+ <optional>true</optional>
+ </dependency>
+
+
+ <dependency>
+ <groupId>org.jboss.seam.documents</groupId>
+ <artifactId>seam-documents</artifactId>
+ <version>${project.version}</version>
+ <classifier>sources</classifier>
+ </dependency>
+
+ <dependency>
+ <groupId>org.jboss.seam.documents</groupId>
+ <artifactId>seam-documents</artifactId>
+ <version>${project.version}</version>
+ <classifier>javadoc</classifier>
+ <optional>true</optional>
+ </dependency>
+
+ <dependency>
+ <groupId>org.jboss.seam.documents</groupId>
+ <artifactId>seam-documents-reference-guide</artifactId>
+ <version>${project.version}</version>
+ <type>war</type>
+ <optional>true</optional>
+ </dependency>
+
+ </dependencies>
+
+ <build>
+ <finalName>seam-documents</finalName>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-assembly-plugin</artifactId>
+ </plugin>
+ </plugins>
+ </build>
+</project>
Added: modules/documents/trunk/dist/src/main/assembly/assembly.xml
===================================================================
--- modules/documents/trunk/dist/src/main/assembly/assembly.xml (rev 0)
+++ modules/documents/trunk/dist/src/main/assembly/assembly.xml 2010-06-10 18:03:55 UTC (rev 13116)
@@ -0,0 +1,78 @@
+<assembly
+ xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0 http://maven.apache.org/xsd/assembly-1.1.0.xsd">
+
+ <formats>
+ <format>zip</format>
+ </formats>
+
+ <baseDirectory>${project.build.finalName}-${project.version}</baseDirectory>
+
+ <!-- Add distribution files -->
+ <fileSets>
+ <fileSet>
+ <directory>src/main/assembly</directory>
+ <outputDirectory>.</outputDirectory>
+ <includes>
+ <include>readme.txt</include>
+ <include>lgpl.txt</include>
+ </includes>
+ </fileSet>
+ </fileSets>
+
+ <dependencySets>
+ <!-- Add necessary binaries -->
+ <dependencySet>
+ <outputDirectory>artifacts</outputDirectory>
+ <useProjectArtifact>false</useProjectArtifact>
+ <includes>
+ <include>org.jboss.seam.faces:seam-faces-api</include>
+ <include>org.jboss.seam.faces:seam-faces</include>
+ </includes>
+ <outputFileNameMapping>${artifact.artifactId}${dashClassifier?}.${artifact.extension}</outputFileNameMapping>
+ </dependencySet>
+ <!-- Add necessary dependencies -->
+ <dependencySet>
+ <outputDirectory>lib</outputDirectory>
+ <useProjectArtifact>false</useProjectArtifact>
+ <useTransitiveDependencies>true</useTransitiveDependencies>
+ <excludes>
+ <exclude>org.jboss.seam.faces:*</exclude>
+ </excludes>
+ <outputFileNameMapping>${artifact.artifactId}${dashClassifier?}.${artifact.extension}</outputFileNameMapping>
+ </dependencySet>
+ <!-- Pull in javadoc for api -->
+ <dependencySet>
+ <outputDirectory>doc/apidocs</outputDirectory>
+ <unpack>true</unpack>
+ <useProjectArtifact>false</useProjectArtifact>
+ <includes>
+ <include>org.jboss.seam.faces:seam-faces-api:jar:javadoc</include>
+ </includes>
+ </dependencySet>
+ <!-- Pull in the example projects -->
+ <dependencySet>
+ <outputDirectory>examples</outputDirectory>
+ <unpack>true</unpack>
+ <useProjectArtifact>false</useProjectArtifact>
+ <includes>
+ <include>org.jboss.seam.faces:seam-faces-examples-short-ly</include>
+ </includes>
+ </dependencySet>
+ <!-- Pull in docbook artifacts -->
+ <dependencySet>
+ <outputDirectory>doc/reference</outputDirectory>
+ <unpack>true</unpack>
+ <useProjectArtifact>false</useProjectArtifact>
+ <includes>
+ <include>org.jboss.seam.faces:seam-faces-reference-guide</include>
+ </includes>
+ <unpackOptions>
+ <excludes>
+ <exclude>META-INF/</exclude>
+ </excludes>
+ </unpackOptions>
+ </dependencySet>
+ </dependencySets>
+</assembly>
Added: modules/documents/trunk/dist/src/main/assembly/lgpl.txt
===================================================================
--- modules/documents/trunk/dist/src/main/assembly/lgpl.txt (rev 0)
+++ modules/documents/trunk/dist/src/main/assembly/lgpl.txt 2010-06-10 18:03:55 UTC (rev 13116)
@@ -0,0 +1,502 @@
+ GNU LESSER GENERAL PUBLIC LICENSE
+ Version 2.1, February 1999
+
+ Copyright (C) 1991, 1999 Free Software Foundation, Inc.
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+[This is the first released version of the Lesser GPL. It also counts
+ as the successor of the GNU Library Public License, version 2, hence
+ the version number 2.1.]
+
+ Preamble
+
+ The licenses for most software are designed to take away your
+freedom to share and change it. By contrast, the GNU General Public
+Licenses are intended to guarantee your freedom to share and change
+free software--to make sure the software is free for all its users.
+
+ This license, the Lesser General Public License, applies to some
+specially designated software packages--typically libraries--of the
+Free Software Foundation and other authors who decide to use it. You
+can use it too, but we suggest you first think carefully about whether
+this license or the ordinary General Public License is the better
+strategy to use in any particular case, based on the explanations below.
+
+ When we speak of free software, we are referring to freedom of use,
+not price. Our General Public Licenses are designed to make sure that
+you have the freedom to distribute copies of free software (and charge
+for this service if you wish); that you receive source code or can get
+it if you want it; that you can change the software and use pieces of
+it in new free programs; and that you are informed that you can do
+these things.
+
+ To protect your rights, we need to make restrictions that forbid
+distributors to deny you these rights or to ask you to surrender these
+rights. These restrictions translate to certain responsibilities for
+you if you distribute copies of the library or if you modify it.
+
+ For example, if you distribute copies of the library, whether gratis
+or for a fee, you must give the recipients all the rights that we gave
+you. You must make sure that they, too, receive or can get the source
+code. If you link other code with the library, you must provide
+complete object files to the recipients, so that they can relink them
+with the library after making changes to the library and recompiling
+it. And you must show them these terms so they know their rights.
+
+ We protect your rights with a two-step method: (1) we copyright the
+library, and (2) we offer you this license, which gives you legal
+permission to copy, distribute and/or modify the library.
+
+ To protect each distributor, we want to make it very clear that
+there is no warranty for the free library. Also, if the library is
+modified by someone else and passed on, the recipients should know
+that what they have is not the original version, so that the original
+author's reputation will not be affected by problems that might be
+introduced by others.
+
+ Finally, software patents pose a constant threat to the existence of
+any free program. We wish to make sure that a company cannot
+effectively restrict the users of a free program by obtaining a
+restrictive license from a patent holder. Therefore, we insist that
+any patent license obtained for a version of the library must be
+consistent with the full freedom of use specified in this license.
+
+ Most GNU software, including some libraries, is covered by the
+ordinary GNU General Public License. This license, the GNU Lesser
+General Public License, applies to certain designated libraries, and
+is quite different from the ordinary General Public License. We use
+this license for certain libraries in order to permit linking those
+libraries into non-free programs.
+
+ When a program is linked with a library, whether statically or using
+a shared library, the combination of the two is legally speaking a
+combined work, a derivative of the original library. The ordinary
+General Public License therefore permits such linking only if the
+entire combination fits its criteria of freedom. The Lesser General
+Public License permits more lax criteria for linking other code with
+the library.
+
+ We call this license the "Lesser" General Public License because it
+does Less to protect the user's freedom than the ordinary General
+Public License. It also provides other free software developers Less
+of an advantage over competing non-free programs. These disadvantages
+are the reason we use the ordinary General Public License for many
+libraries. However, the Lesser license provides advantages in certain
+special circumstances.
+
+ For example, on rare occasions, there may be a special need to
+encourage the widest possible use of a certain library, so that it becomes
+a de-facto standard. To achieve this, non-free programs must be
+allowed to use the library. A more frequent case is that a free
+library does the same job as widely used non-free libraries. In this
+case, there is little to gain by limiting the free library to free
+software only, so we use the Lesser General Public License.
+
+ In other cases, permission to use a particular library in non-free
+programs enables a greater number of people to use a large body of
+free software. For example, permission to use the GNU C Library in
+non-free programs enables many more people to use the whole GNU
+operating system, as well as its variant, the GNU/Linux operating
+system.
+
+ Although the Lesser General Public License is Less protective of the
+users' freedom, it does ensure that the user of a program that is
+linked with the Library has the freedom and the wherewithal to run
+that program using a modified version of the Library.
+
+ The precise terms and conditions for copying, distribution and
+modification follow. Pay close attention to the difference between a
+"work based on the library" and a "work that uses the library". The
+former contains code derived from the library, whereas the latter must
+be combined with the library in order to run.
+
+ GNU LESSER GENERAL PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. This License Agreement applies to any software library or other
+program which contains a notice placed by the copyright holder or
+other authorized party saying it may be distributed under the terms of
+this Lesser General Public License (also called "this License").
+Each licensee is addressed as "you".
+
+ A "library" means a collection of software functions and/or data
+prepared so as to be conveniently linked with application programs
+(which use some of those functions and data) to form executables.
+
+ The "Library", below, refers to any such software library or work
+which has been distributed under these terms. A "work based on the
+Library" means either the Library or any derivative work under
+copyright law: that is to say, a work containing the Library or a
+portion of it, either verbatim or with modifications and/or translated
+straightforwardly into another language. (Hereinafter, translation is
+included without limitation in the term "modification".)
+
+ "Source code" for a work means the preferred form of the work for
+making modifications to it. For a library, complete source code means
+all the source code for all modules it contains, plus any associated
+interface definition files, plus the scripts used to control compilation
+and installation of the library.
+
+ Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope. The act of
+running a program using the Library is not restricted, and output from
+such a program is covered only if its contents constitute a work based
+on the Library (independent of the use of the Library in a tool for
+writing it). Whether that is true depends on what the Library does
+and what the program that uses the Library does.
+
+ 1. You may copy and distribute verbatim copies of the Library's
+complete source code as you receive it, in any medium, provided that
+you conspicuously and appropriately publish on each copy an
+appropriate copyright notice and disclaimer of warranty; keep intact
+all the notices that refer to this License and to the absence of any
+warranty; and distribute a copy of this License along with the
+Library.
+
+ You may charge a fee for the physical act of transferring a copy,
+and you may at your option offer warranty protection in exchange for a
+fee.
+
+ 2. You may modify your copy or copies of the Library or any portion
+of it, thus forming a work based on the Library, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+ a) The modified work must itself be a software library.
+
+ b) You must cause the files modified to carry prominent notices
+ stating that you changed the files and the date of any change.
+
+ c) You must cause the whole of the work to be licensed at no
+ charge to all third parties under the terms of this License.
+
+ d) If a facility in the modified Library refers to a function or a
+ table of data to be supplied by an application program that uses
+ the facility, other than as an argument passed when the facility
+ is invoked, then you must make a good faith effort to ensure that,
+ in the event an application does not supply such function or
+ table, the facility still operates, and performs whatever part of
+ its purpose remains meaningful.
+
+ (For example, a function in a library to compute square roots has
+ a purpose that is entirely well-defined independent of the
+ application. Therefore, Subsection 2d requires that any
+ application-supplied function or table used by this function must
+ be optional: if the application does not supply it, the square
+ root function must still compute square roots.)
+
+These requirements apply to the modified work as a whole. If
+identifiable sections of that work are not derived from the Library,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works. But when you
+distribute the same sections as part of a whole which is a work based
+on the Library, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote
+it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Library.
+
+In addition, mere aggregation of another work not based on the Library
+with the Library (or with a work based on the Library) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+ 3. You may opt to apply the terms of the ordinary GNU General Public
+License instead of this License to a given copy of the Library. To do
+this, you must alter all the notices that refer to this License, so
+that they refer to the ordinary GNU General Public License, version 2,
+instead of to this License. (If a newer version than version 2 of the
+ordinary GNU General Public License has appeared, then you can specify
+that version instead if you wish.) Do not make any other change in
+these notices.
+
+ Once this change is made in a given copy, it is irreversible for
+that copy, so the ordinary GNU General Public License applies to all
+subsequent copies and derivative works made from that copy.
+
+ This option is useful when you wish to copy part of the code of
+the Library into a program that is not a library.
+
+ 4. You may copy and distribute the Library (or a portion or
+derivative of it, under Section 2) in object code or executable form
+under the terms of Sections 1 and 2 above provided that you accompany
+it with the complete corresponding machine-readable source code, which
+must be distributed under the terms of Sections 1 and 2 above on a
+medium customarily used for software interchange.
+
+ If distribution of object code is made by offering access to copy
+from a designated place, then offering equivalent access to copy the
+source code from the same place satisfies the requirement to
+distribute the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+ 5. A program that contains no derivative of any portion of the
+Library, but is designed to work with the Library by being compiled or
+linked with it, is called a "work that uses the Library". Such a
+work, in isolation, is not a derivative work of the Library, and
+therefore falls outside the scope of this License.
+
+ However, linking a "work that uses the Library" with the Library
+creates an executable that is a derivative of the Library (because it
+contains portions of the Library), rather than a "work that uses the
+library". The executable is therefore covered by this License.
+Section 6 states terms for distribution of such executables.
+
+ When a "work that uses the Library" uses material from a header file
+that is part of the Library, the object code for the work may be a
+derivative work of the Library even though the source code is not.
+Whether this is true is especially significant if the work can be
+linked without the Library, or if the work is itself a library. The
+threshold for this to be true is not precisely defined by law.
+
+ If such an object file uses only numerical parameters, data
+structure layouts and accessors, and small macros and small inline
+functions (ten lines or less in length), then the use of the object
+file is unrestricted, regardless of whether it is legally a derivative
+work. (Executables containing this object code plus portions of the
+Library will still fall under Section 6.)
+
+ Otherwise, if the work is a derivative of the Library, you may
+distribute the object code for the work under the terms of Section 6.
+Any executables containing that work also fall under Section 6,
+whether or not they are linked directly with the Library itself.
+
+ 6. As an exception to the Sections above, you may also combine or
+link a "work that uses the Library" with the Library to produce a
+work containing portions of the Library, and distribute that work
+under terms of your choice, provided that the terms permit
+modification of the work for the customer's own use and reverse
+engineering for debugging such modifications.
+
+ You must give prominent notice with each copy of the work that the
+Library is used in it and that the Library and its use are covered by
+this License. You must supply a copy of this License. If the work
+during execution displays copyright notices, you must include the
+copyright notice for the Library among them, as well as a reference
+directing the user to the copy of this License. Also, you must do one
+of these things:
+
+ a) Accompany the work with the complete corresponding
+ machine-readable source code for the Library including whatever
+ changes were used in the work (which must be distributed under
+ Sections 1 and 2 above); and, if the work is an executable linked
+ with the Library, with the complete machine-readable "work that
+ uses the Library", as object code and/or source code, so that the
+ user can modify the Library and then relink to produce a modified
+ executable containing the modified Library. (It is understood
+ that the user who changes the contents of definitions files in the
+ Library will not necessarily be able to recompile the application
+ to use the modified definitions.)
+
+ b) Use a suitable shared library mechanism for linking with the
+ Library. A suitable mechanism is one that (1) uses at run time a
+ copy of the library already present on the user's computer system,
+ rather than copying library functions into the executable, and (2)
+ will operate properly with a modified version of the library, if
+ the user installs one, as long as the modified version is
+ interface-compatible with the version that the work was made with.
+
+ c) Accompany the work with a written offer, valid for at
+ least three years, to give the same user the materials
+ specified in Subsection 6a, above, for a charge no more
+ than the cost of performing this distribution.
+
+ d) If distribution of the work is made by offering access to copy
+ from a designated place, offer equivalent access to copy the above
+ specified materials from the same place.
+
+ e) Verify that the user has already received a copy of these
+ materials or that you have already sent this user a copy.
+
+ For an executable, the required form of the "work that uses the
+Library" must include any data and utility programs needed for
+reproducing the executable from it. However, as a special exception,
+the materials to be distributed need not include anything that is
+normally distributed (in either source or binary form) with the major
+components (compiler, kernel, and so on) of the operating system on
+which the executable runs, unless that component itself accompanies
+the executable.
+
+ It may happen that this requirement contradicts the license
+restrictions of other proprietary libraries that do not normally
+accompany the operating system. Such a contradiction means you cannot
+use both them and the Library together in an executable that you
+distribute.
+
+ 7. You may place library facilities that are a work based on the
+Library side-by-side in a single library together with other library
+facilities not covered by this License, and distribute such a combined
+library, provided that the separate distribution of the work based on
+the Library and of the other library facilities is otherwise
+permitted, and provided that you do these two things:
+
+ a) Accompany the combined library with a copy of the same work
+ based on the Library, uncombined with any other library
+ facilities. This must be distributed under the terms of the
+ Sections above.
+
+ b) Give prominent notice with the combined library of the fact
+ that part of it is a work based on the Library, and explaining
+ where to find the accompanying uncombined form of the same work.
+
+ 8. You may not copy, modify, sublicense, link with, or distribute
+the Library except as expressly provided under this License. Any
+attempt otherwise to copy, modify, sublicense, link with, or
+distribute the Library is void, and will automatically terminate your
+rights under this License. However, parties who have received copies,
+or rights, from you under this License will not have their licenses
+terminated so long as such parties remain in full compliance.
+
+ 9. You are not required to accept this License, since you have not
+signed it. However, nothing else grants you permission to modify or
+distribute the Library or its derivative works. These actions are
+prohibited by law if you do not accept this License. Therefore, by
+modifying or distributing the Library (or any work based on the
+Library), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Library or works based on it.
+
+ 10. Each time you redistribute the Library (or any work based on the
+Library), the recipient automatically receives a license from the
+original licensor to copy, distribute, link with or modify the Library
+subject to these terms and conditions. You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties with
+this License.
+
+ 11. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Library at all. For example, if a patent
+license would not permit royalty-free redistribution of the Library by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Library.
+
+If any portion of this section is held invalid or unenforceable under any
+particular circumstance, the balance of the section is intended to apply,
+and the section as a whole is intended to apply in other circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system which is
+implemented by public license practices. Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+ 12. If the distribution and/or use of the Library is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Library under this License may add
+an explicit geographical distribution limitation excluding those countries,
+so that distribution is permitted only in or among countries not thus
+excluded. In such case, this License incorporates the limitation as if
+written in the body of this License.
+
+ 13. The Free Software Foundation may publish revised and/or new
+versions of the Lesser General Public License from time to time.
+Such new versions will be similar in spirit to the present version,
+but may differ in detail to address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Library
+specifies a version number of this License which applies to it and
+"any later version", you have the option of following the terms and
+conditions either of that version or of any later version published by
+the Free Software Foundation. If the Library does not specify a
+license version number, you may choose any version ever published by
+the Free Software Foundation.
+
+ 14. If you wish to incorporate parts of the Library into other free
+programs whose distribution conditions are incompatible with these,
+write to the author to ask for permission. For software which is
+copyrighted by the Free Software Foundation, write to the Free
+Software Foundation; we sometimes make exceptions for this. Our
+decision will be guided by the two goals of preserving the free status
+of all derivatives of our free software and of promoting the sharing
+and reuse of software generally.
+
+ NO WARRANTY
+
+ 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
+WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
+EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
+OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
+KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
+LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
+THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+ 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
+WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
+AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
+FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
+CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
+LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
+RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
+FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
+SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGES.
+
+ END OF TERMS AND CONDITIONS
+
+ How to Apply These Terms to Your New Libraries
+
+ If you develop a new library, and you want it to be of the greatest
+possible use to the public, we recommend making it free software that
+everyone can redistribute and change. You can do so by permitting
+redistribution under these terms (or, alternatively, under the terms of the
+ordinary General Public License).
+
+ To apply these terms, attach the following notices to the library. It is
+safest to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least the
+"copyright" line and a pointer to where the full notice is found.
+
+ <one line to give the library's name and a brief idea of what it does.>
+ Copyright (C) <year> <name of author>
+
+ This library 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 library 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 library; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+Also add information on how to contact you by electronic and paper mail.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the library, if
+necessary. Here is a sample; alter the names:
+
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the
+ library `Frob' (a library for tweaking knobs) written by James Random Hacker.
+
+ <signature of Ty Coon>, 1 April 1990
+ Ty Coon, President of Vice
+
+That's all there is to it!
Added: modules/documents/trunk/dist/src/main/assembly/readme.txt
===================================================================
--- modules/documents/trunk/dist/src/main/assembly/readme.txt (rev 0)
+++ modules/documents/trunk/dist/src/main/assembly/readme.txt 2010-06-10 18:03:55 UTC (rev 13116)
@@ -0,0 +1,50 @@
+
+ Seam Faces Module
+ 3.0.0 SNAPSHOT
+
+ What is it?
+ ===========
+
+ The Seam 3 Faces Module is focused on enhancements for the JavaServer Faces
+ (JSF) web framework, extended integration between JSF and CDI, and integration
+ between JSF and other Seam 3 modules.
+
+ Contents of distribution
+ ========================
+
+ docs/
+
+ API Docs and reference guide.
+
+ examples/
+
+ Seam Faces examples
+
+ ...
+
+ Licensing
+ =========
+
+ This distribution, as a whole, is licensed under the terms of the Apache
+ License, Version 2.0 (see apl.txt).
+
+ Seam Faces URLs
+ ===============
+
+ Seam 3 Faces Module: http://www.sfwk.org/Seam3/FacesModule
+ Seam 3 Home Page: http://www.sfwk.org/Seam3
+ Downloads: http://www.sfwk.org/Seam3/DistributionDownloads
+ Forums: http://www.sfwk.org/Community/Seam3Users
+ Source Code: http://anonsvn.jboss.org/repos/seam/modules/faces
+ Issue Tracking: http://jira.jboss.org/jira/browse/SEAMFACES
+
+ Release Notes
+ =============
+
+ * View actions
+ * javax.faces.bean.*Scoped aliases
+ * @FlashScoped and @ViewScoped
+ * CDI / Faces Phase & System Event bridge
+ * JSF API producers (FacesContext, ExternalContext, NavigationHandler, etc...)
+ * Simplified EL name to conversation: #{conversation.transient}
+
Added: modules/documents/trunk/docs/reference/pom.xml
===================================================================
--- modules/documents/trunk/docs/reference/pom.xml (rev 0)
+++ modules/documents/trunk/docs/reference/pom.xml 2010-06-10 18:03:55 UTC (rev 13116)
@@ -0,0 +1,73 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+
+ <modelVersion>4.0.0</modelVersion>
+
+ <groupId>org.jboss.seam.documents</groupId>
+ <artifactId>seam-documents-reference-guide</artifactId>
+ <version>3.0.0-SNAPSHOT</version>
+ <packaging>jdocbook</packaging>
+ <name>Seam Documents Module Reference Guide</name>
+
+ <parent>
+ <groupId>org.jboss.seam.documents</groupId>
+ <artifactId>seam-documents-parent</artifactId>
+ <version>3.0.0-SNAPSHOT</version>
+ <relativePath>../../pom.xml</relativePath>
+ </parent>
+
+ <properties>
+ <pdf.name>${project.artifactId}.pdf</pdf.name>
+ </properties>
+
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.jboss.maven.plugins</groupId>
+ <artifactId>maven-jdocbook-plugin</artifactId>
+ </plugin>
+ <!-- Attach docs as a war so dist can retrieve them -->
+ <plugin>
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>build-helper-maven-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>attach-zip</id>
+ <phase>package</phase>
+ <goals>
+ <goal>attach-artifact</goal>
+ </goals>
+ <configuration>
+ <artifacts>
+ <artifact>
+ <file>${project.build.outputDirectory}/${project.artifactId}-${project.version}.war</file>
+ <type>war</type>
+ </artifact>
+ </artifacts>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+
+ <profiles>
+ <profile>
+ <id>distribution</id>
+ <activation>
+ <property>
+ <name>release</name>
+ </property>
+ </activation>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-assembly-plugin</artifactId>
+ </plugin>
+ </plugins>
+ </build>
+ </profile>
+ </profiles>
+
+</project>
Added: modules/documents/trunk/docs/reference/src/main/assembly/assembly.xml
===================================================================
--- modules/documents/trunk/docs/reference/src/main/assembly/assembly.xml (rev 0)
+++ modules/documents/trunk/docs/reference/src/main/assembly/assembly.xml 2010-06-10 18:03:55 UTC (rev 13116)
@@ -0,0 +1,17 @@
+<assembly
+ xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0 http://maven.apache.org/xsd/assembly-1.1.0.xsd">
+ <id>sources</id>
+ <formats>
+ <format>zip</format>
+ </formats>
+ <baseDirectory>${project.artifactId}</baseDirectory>
+ <fileSets>
+ <fileSet>
+ <outputDirectory>.</outputDirectory>
+ <directory>${project.basedir}/src/main/docbook/en-US</directory>
+ <useDefaultExcludes>true</useDefaultExcludes>
+ </fileSet>
+ </fileSets>
+</assembly>
Added: modules/documents/trunk/docs/reference/src/main/docbook/en-US/artifacts.xml
===================================================================
--- modules/documents/trunk/docs/reference/src/main/docbook/en-US/artifacts.xml (rev 0)
+++ modules/documents/trunk/docs/reference/src/main/docbook/en-US/artifacts.xml 2010-06-10 18:03:55 UTC (rev 13116)
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
+ "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" []>
+<chapter id="artifacts">
+ <title>Faces Artifact Injection</title>
+ <para>
+ When creating CDI managed beans for use in the Web/UI layer, it is often necessary to access the FacesContext, NavigationHandler, and other
+ artifacts of the JSF environment. Seam Faces provides producers to allow injection of these artifacts in the proper scopes, enabling mock-testing
+ and other situations where the artifact may be difficult or tedious to resolve.
+ </para>
+ <para>
+ This is the full list of inject-able artifacts provided through Seam Faces.
+ <informaltable>
+ <tgroup cols="2">
+ <colspec colnum="1" colwidth="2*" />
+ <colspec colnum="2" colwidth="3*" />
+ <thead>
+ <row>
+ <entry>Artifact Class</entry>
+ <entry>Example</entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry>javax.faces.context.FacesContext</entry>
+ <entry><programlisting>public class Bean {
+ @Inject FacesContext context;
+}</programlisting></entry>
+ </row>
+ <row>
+ <entry>javax.faces.context.ExternalContext</entry>
+ <entry><programlisting>public class Bean {
+ @Inject ExternalContext context;
+}</programlisting></entry>
+ </row>
+ <row>
+ <entry>javax.faces.application.NavigationHandler</entry>
+ <entry><programlisting>public class Bean {
+ @Inject NavigationHandler handler;
+}</programlisting></entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </informaltable>
+ </para>
+</chapter>
\ No newline at end of file
Added: modules/documents/trunk/docs/reference/src/main/docbook/en-US/author_group.xml
===================================================================
--- modules/documents/trunk/docs/reference/src/main/docbook/en-US/author_group.xml (rev 0)
+++ modules/documents/trunk/docs/reference/src/main/docbook/en-US/author_group.xml 2010-06-10 18:03:55 UTC (rev 13116)
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE authorgroup PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
+ "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" []>
+<authorgroup>
+ <author>
+ <firstname>Dan</firstname>
+ <surname>Allen</surname>
+ </author>
+ <author>
+ <firstname>Lincoln</firstname>
+ <surname>Baxter III</surname>
+ </author>
+ <author>
+ <firstname>Nicklas</firstname>
+ <surname>Karlsson</surname>
+ </author>
+
+ <!--
+vim:et:ts=3:sw=3:tw=120
+-->
+</authorgroup>
Added: modules/documents/trunk/docs/reference/src/main/docbook/en-US/book_info.xml
===================================================================
--- modules/documents/trunk/docs/reference/src/main/docbook/en-US/book_info.xml (rev 0)
+++ modules/documents/trunk/docs/reference/src/main/docbook/en-US/book_info.xml 2010-06-10 18:03:55 UTC (rev 13116)
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE bookinfo PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
+ "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" []>
+
+<bookinfo>
+ <title>Seam Faces Module</title>
+ <subtitle>Reference Guide</subtitle>
+ <releaseinfo>3.0.0-SNAPSHOT</releaseinfo>
+
+ <xi:include href="author_group.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+
+<!--
+vim:et:ts=3:sw=3:tw=120
+-->
+</bookinfo>
Added: modules/documents/trunk/docs/reference/src/main/docbook/en-US/components.xml
===================================================================
--- modules/documents/trunk/docs/reference/src/main/docbook/en-US/components.xml (rev 0)
+++ modules/documents/trunk/docs/reference/src/main/docbook/en-US/components.xml 2010-06-10 18:03:55 UTC (rev 13116)
@@ -0,0 +1,374 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
+ "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" []>
+<chapter id="components">
+ <title>Seam Faces Components</title>
+ <para>
+ While Seam Faces does not provide layout components or other UI-design related features, it does provide
+ functional components designed to make developing JSF applications easier, more functional, more
+ scalable, and more practical.
+ </para>
+
+ <para>
+ For layout and design components, take a look at <ulink
+ url="http://jboss.org/richfaces">RichFaces</ulink>, a UI component library specifically tailored for
+ easy, rich web-interfaces.
+ </para>
+
+ <section id="basicUsage">
+ <title>Introduction</title>
+ <para>
+ In order to use the Seam Faces components, you must first add the namespace to your view file,
+ just like the standard JSF component libraries.
+ </para>
+
+ <programlisting role="XML"><![CDATA[<html xmlns="http://www.w3.org/1999/xhtml"
+ xmlns:f="http://java.sun.com/jsf/core"
+ xmlns:h="http://java.sun.com/jsf/html"
+ xmlns:s="http://jboss.org/seam/faces"
+ xmlns:ui="http://java.sun.com/jsf/facelets">
+
+ <h1>Welcome to Seam Faces!</h1>
+ <p>
+ This view imports the Seam Faces component library.
+ Read on to discover what components it provides.
+ </p>
+
+</html>]]></programlisting>
+ <tip>
+ <para>
+ All Seam Faces components use the following namespace:
+ <literal>http://jboss.org/seam/faces</literal>
+ </para>
+ </tip>
+
+ </section>
+
+ <section id="validateForm">
+ <title><s:validateForm></title>
+ <para>
+ On many occasions you might find yourself needing to compare the values of multiple input fields
+ on a given page submit: confirming a password; re-enter password; address lookups; and so on.
+
+ Performing cross-field form validation is simple - just place the <s:validateForm> component
+ in the form you wish to validate, then attach your custom Validator.
+ </para>
+
+ <programlisting role="XML"><![CDATA[<h:form id="locationForm">
+ <h:inputText id="city" value="#{bean.city}" />
+ <h:inputText id="state" value="#{bean.state}" />
+ <h:inputText id="zip" value="#{bean.zip}" />
+ <h:commandButton id="submit" value="Submit" action="#{bean.submitPost}" />
+
+ <s:validateForm validatorId="locationValidator" />
+</h:form>]]></programlisting>
+
+ <para>
+ The corresponding Validator for the example above would look something like this:
+ </para>
+
+ <programlisting role="JAVA"><![CDATA[@FacesValidator("locationValidator")
+public class LocationValidator implements Validator
+{
+ @Inject
+ Directory directory;
+
+ @Inject
+ @InputField
+ private Object city;
+
+ @Inject
+ @InputField
+ private Object state;
+
+ @Inject
+ @InputField
+ private ZipCode zip;
+
+ @Override
+ public void validate(final FacesContext context, final UIComponent comp, final Object values)
+ throws ValidatorException
+ {
+ if(!directory.exists(city, state, zip))
+ {
+ throw new ValidatorException(
+ new FacesMessage("Sorry, that location is not in our database. Please try again."));
+ }
+ }
+}]]></programlisting>
+
+ <tip>
+ <para>
+ You may inject the correct type directly.
+ <programlisting><![CDATA[@Inject
+ at InputField
+private ZipCode zip;]]></programlisting>
+ </para>
+ </tip>
+
+ <para>
+ Notice that the IDs of the inputText components match the IDs of your Validator
+ @InputFields; each @Inject @InputField member will be injected with the value of the form input field
+ who's ID matches the name of the variable.
+ </para>
+
+ <para>
+ In other words - the name of the @InputField annotated member variable will automatically
+ be matched to the ID of the input component, unless overridden by using a field
+ ID alias (see below.)
+ </para>
+
+ <programlisting role="XML"><![CDATA[<h:form id="locationForm">
+ <h:inputText id="cityId" value="#{bean.city}" />
+ <h:inputText id="stateId" value="#{bean.state}" />
+ <h:inputText id="zip" value="#{bean.zip}" />
+ <h:commandButton id="submit" value="Submit" action="#{bean.submitPost}" />
+
+ <s:validateForm fields="city=cityId state=stateId" validatorId="locationValidator" />
+</h:form>]]></programlisting>
+
+ <para>
+ Notice that "zip" will still be referenced normally; you need only
+ specify aliases for fields that differ in name from the Validator @InputFields.
+ </para>
+
+ <tip>
+ <para>
+ <literal>Using @InputField("customID")</literal> with an ID override can also be used to specify a
+ custom ID, instead of using the default: the name of the field. This gives you the ability to
+ change the name of the private field, without worrying about changing the name of input fields in
+ the View itself.
+ <programlisting><![CDATA[@Inject
+ at InputField("state")
+private String sectorTwo;]]></programlisting>
+ </para>
+ </tip>
+
+ </section>
+
+ <section id="viewaction">
+ <title><s:viewAction></title>
+
+ <para>
+ The view action component (<literal>UIViewAction</literal>) is an <literal>ActionSource2</literal>
+ <literal>UIComponent</literal> that specifies an application-specific command (or action), using
+ using an EL method expression, to be invoked during one of the JSF lifecycle phases proceeding Render
+ Response (i.e., view rendering).
+ </para>
+
+ <para>
+ View actions provide a lightweight front-controller for JSF, allowing the application to accommodate
+ scenarios such as registration confirmation links, security and sanity checking a request (e.g.,
+ ensuring the resource can be loaded). They also allow JSF to work alongside action-oriented
+ frameworks, and existing applications that use them.
+ </para>
+
+ <section>
+ <title>Motivation</title>
+
+ <para>
+ JSF employs an event-oriented architecture. Listeners are invoked in response to user-interface
+ events, such as the user clicking on a button or changing the value of a form input. Unfortunately,
+ the most important event on the web, a URL request (initiated by the user clicking on a link,
+ entering a URL into the browser's location bar or selecting a bookmark), has long been overlooked in
+ JSF. Historically, listeners have exclusively been activated on postback, which has led to the common
+ complaint that in JSF, "everything is a POST."
+ </para>
+
+ <para>
+ <emphasis>We want to change that perception.</emphasis>
+ </para>
+
+ <para>
+ Processing a URL request event is commonly referred to as bookmarkable or GET support. Some GET
+ support was added to JSF 2.0 with the introduction of view parameters and the pre-render view event.
+ View parameters are used to bind query string parameters to model properties. The pre-render view
+ event gives the developer a window to invoke a listener immediately prior to the view being rendered.
+ </para>
+
+ <para>
+ <emphasis>That's a start.</emphasis>
+ </para>
+
+ <para>
+ Seam brings the GET support full circle by introducing the view action component. A view action is
+ the compliment of a <literal>UICommand</literal> for an initial (non-faces) request. Like its
+ cohort, it gets executed by default during the Invoke Application phase (now used on both faces
+ and non-faces requests). A view action can optionally be invoked on postback as well.
+ </para>
+
+ <para>
+ View actions (<literal>UIViewAction</literal>) are closely tied to view parameters
+ (<literal>UIViewParameter</literal>). Most of the time, the view parameter is used to populate the
+ model with data that is consumed by the method being invoked by a <literal>UIViewAction</literal>
+ component, much like form inputs populate the model with data to support the method being invoked
+ by a <literal>UICommand</literal> component.
+ </para>
+
+ </section>
+
+ <section>
+ <title>Usage</title>
+
+ <para>
+ Let's consider a typical scenario in web applications. You want to display the contents of a blog
+ entry that matches the identifier specified in the URL. We'll assume the URL is:
+ </para>
+
+ <programlisting>http://localhost:8080/blog/entry.jsf?id=10</programlisting>
+
+ <para>
+ We'll use a view parameter to capture the identifier of the entry from the query string and a view
+ action to fetch the entry from the database.
+ </para>
+
+ <programlisting role="XML"><![CDATA[<f:metadata>
+ <f:viewParam name="id" value="#{blogManager.entryId}"/>
+ <s:viewAction action="#{blogManager.loadEntry}"/>
+</f:metadata>]]></programlisting>
+
+ <tip>
+ <para>
+ The view action component must be declared as a child of the view metadata facet (i.e.,
+ <literal><f:metadata></literal>) so that it gets incorporated into the JSF lifecycle on both
+ non-faces (initial) requests and faces (postback) requests. If you put it anywhere else in the
+ page, the behavior is undefined.
+ </para>
+ </tip>
+
+ <warning>
+ <para>
+ In JSF 2.0, there must be at least one view parameter for the view metadata facet to be processed.
+ This requirement was introduced into the JSF specification accidentally, but it's not so
+ unfortunate since view parameters are typically needed to capture input needed by the view action.
+ </para>
+ </warning>
+
+ <para>
+ What do we do if the entry can't be found? View actions support declarative navigation just like
+ <literal>UICommand</literal> components. So you can write a navigation rule that will be consulted
+ before the page is rendered. If the rule matches, navigation occurs just as though this were a
+ postback.
+ </para>
+
+ <programlisting role="XML"><![CDATA[<navigation-rule>
+ <from-view-id>/entry.xhtml</from-view-id>
+ <navigation-case>
+ <from-action>#{blogManager.loadEntry}</from-action>
+ <if>#{empty entry}</if>
+ <to-view-id>/home.xhtml</to-view-id>
+ <redirect/>
+ </navigation-case>
+ </navigation-rule>]]></programlisting>
+
+ <para>
+ After each view action is invoked, the navigation handler looks for a navigation case that matches
+ the action's EL method signature and outcome. If a navigation case is matched, or the response is
+ marked complete by the action, subsequent view actions are short-circuited. The lifecycle then
+ advances appropriately.
+ </para>
+
+ <para>
+ By default, a view action is not executed on postback, since the primary intention of a view
+ action is to support a non-faces request. If your application (or use case) is decidedly stateless,
+ you may need the view action to execute on any type of request. You can enable the view action
+ on postback using the <literal>onPostback</literal> attribute:
+ </para>
+
+ <programlisting role="XML"><![CDATA[<s:viewAction action="#{blogManager.loadEntry}" onPostback="true"/>]]></programlisting>
+
+ <para>
+ You may only want the view action to be invoked under certain conditions. For instance, you may only
+ need it to be invoked if the conversation is transient. For that, you can use the
+ <literal>if</literal> attribute, which accepts an EL value expression:
+ </para>
+
+ <programlisting role="XML"><![CDATA[<s:viewAction action="#{blogEditor.loadEntry}" if="#{conversation.transient}"/>]]></programlisting>
+
+ <para>
+ There are two ways to control the phase in which the view action is invoked. You can set the
+ <literal>immediate</literal> attribute to true, which moves the invocation to the Apply Request Values phase
+ instead of the default, the Invoke Application phase.
+ </para>
+
+ <programlisting role="XML"><![CDATA[<s:viewAction action="#{sessionManager.validateSession}" immediate="true"/>]]></programlisting>
+
+ <para>
+ You can also just specify the phase directly, using the name of the phase constant in the
+ <literal>PhaseId</literal> class (the case does not matter).
+ </para>
+
+ <programlisting role="XML"><![CDATA[<s:viewAction action="#{sessionManager.validateSession}" phase="APPLY_REQUEST_VALUES"/>]]></programlisting>
+
+ <tip>
+ <para>
+ The valid phases for a view action are:
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para><literal>APPLY_REQUEST_VALUES</literal> (default if <literal>immediate="true"</literal>)</para>
+ </listitem>
+ <listitem>
+ <para><literal>UPDATE_MODEL_VALUES</literal></para>
+ </listitem>
+ <listitem>
+ <para><literal>PROCESS_VALIDATIONS</literal></para>
+ </listitem>
+ <listitem>
+ <para><literal>INVOKE_APPLICATION</literal> (default)</para>
+ </listitem>
+ </itemizedlist>
+ </tip>
+
+ <para>
+ If the phase is set, it takes precedence over the immediate flag.
+ </para>
+ </section>
+
+ <section>
+ <title>View actions vs the PreRenderViewEvent</title>
+ <para>
+ The purpose of the view action is similar to use of the PreRenderViewEvent. In fact, the code to
+ load a blog entry before the page is rendered could be written as:
+ </para>
+
+ <programlisting role="XML"><![CDATA[<f:metadata>
+ <f:viewParam name="id" value="#{blogManager.entryId}"/>
+ <f:event type="preRenderView" listener="#{blogManager.loadEntry}"/>
+</f:metadata>]]></programlisting>
+
+ <para>
+ However, the view action has several important advantages:
+ </para>
+
+ <itemizedlist>
+ <listitem>
+ <para>It's lightweight</para>
+ </listitem>
+ <listitem>
+ <para>It's timing can be controlled</para>
+ </listitem>
+ <listitem>
+ <para>It's contextual</para>
+ </listitem>
+ <listitem>
+ <para>It can trigger navigation</para>
+ </listitem>
+ </itemizedlist>
+
+ <para>
+ View actions are lightweight because they get processed on a non-faces (initial) request
+ <emphasis>before</emphasis> the full component tree is built. When the view actions are invoked,
+ the component tree only contains view metadata.
+ </para>
+
+ <para>
+ As demonstrated above, you can specify a prerequisite condition for invoking the view action,
+ control whether it's invoked on postback, specify the phase in which it's invoked and tie the
+ invocation into the declarative navigation system. The PreRenderViewEvent is quite basic in
+ comparison.
+ </para>
+
+ </section>
+ </section>
+</chapter>
Added: modules/documents/trunk/docs/reference/src/main/docbook/en-US/events.xml
===================================================================
--- modules/documents/trunk/docs/reference/src/main/docbook/en-US/events.xml (rev 0)
+++ modules/documents/trunk/docs/reference/src/main/docbook/en-US/events.xml 2010-06-10 18:03:55 UTC (rev 13116)
@@ -0,0 +1,315 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
+ "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" []>
+<chapter id="events">
+ <title>Faces Events Propagation</title>
+ <para>
+ When the seam-faces module is installed in a web application, JSF events will automatically be propagated
+ via the CDI event-bridge, enabling managed beans to easily observe all Faces events.
+ </para>
+ <para>
+ There are two categories of events: JSF phase events, and JSF system events. Phase events are triggered
+ as JSF processes each lifecycle phase, while system events are raised at more specific, fine-grained events during
+ request processing.
+ </para>
+ <section id="events.phases">
+ <title>JSF Phase events</title>
+
+ <para>
+ A JSF phase listener is a class that implements <literal>javax.faces.event.PhaseListener</literal> and
+ is registered in the web application's <literal>faces-config.xml</literal> file. By implementing the methods of the
+ interfaces, the user can observe events fired before or after any of the six lifecycle phases of a JSF request:
+ <literal>restore view</literal>, <literal>apply request values</literal>, <literal>process validations</literal>,
+ <literal>update model values</literal>, <literal>invoke application</literal> or <literal>render view</literal>.
+ </para>
+
+ <section id="events.phases.seam">
+ <title>Seam Faces Phase events</title>
+ <para>
+ What Seam provides is propagation of these Phase events to the CDI event bus; therefore, you can observe events
+ using normal CDI <literal>@Observes</literal> methods. Bringing the events to CDI beans removes the need to
+ register phase listener classes via XML, and gives the added benefit of injection, alternatives, interceptors
+ and access to all other features of CDI.
+ </para>
+ <para>
+ Creating an observer method in CDI is simple; just provide a method in a managed bean that is annotated with
+ <literal>@Observes</literal>. Each observer method must accept one method parameter: the event object;
+ the type of this object determines the type of event being observed.
+ </para>
+ <para>
+ In this case, the event object passed along from the phase listener is a
+ <literal>javax.faces.event.PhaseEvent</literal>. The following example observes all Phase events.
+
+ <programlisting role="Java">
+public void observeAll(@Observes PhaseEvent e)
+{
+ // Do something with the event object
+} </programlisting>
+ </para>
+ <para>
+ Events can be further filtered by adding Qualifiers. The name of the method itself is not significant.
+ (See the CDI Reference Guide for more information on events and observing.)
+ </para>
+ <para>
+ Since the example above simply processes all events, however, it might be appropriate to filter out some events
+ that we aren't interested in. As stated earlier, there are six phases in the JSF lifecycle, and an event is
+ fired before and after each, for a total of 12 events. The <literal>@Before</literal> and
+ <literal>@After</literal> "temporal" qualifiers can be used to observe events occurring only before or only after
+ a Phase event. For example:
+ <programlisting role="Java">
+public void observeBefore(@Observes @Before PhaseEvent e)
+{
+ // Do something with the "before" event object
+}
+
+public void observeAfter(@Observes @After PhaseEvent e)
+{
+ // Do something with the "after" event object
+} </programlisting>
+ </para>
+ <para>
+ If we are interested in both the "before" and "after" event of a particular phase, we can limit them
+ by adding a "lifecycle" qualifier that corresponds to the phase:
+ <programlisting role="Java">
+public void observeRenderResponse(@Observes @RenderResponse PhaseEvent e)
+{
+ // Do something with the "render response" event object
+} </programlisting>
+ </para>
+ <para>
+ By combining a temporal and lifecycle qualifier, we can achieve the most specific qualification:
+ <programlisting role="Java">
+public void observeBeforeRenderResponse(@Observes @Before @RenderResponse PhaseEvent e)
+{
+ // Do something with the "before render response" event object
+} </programlisting>
+ </para>
+ </section>
+
+
+ <section id="events.phases.seam.table">
+ <title>Phase events listing</title>
+ <para>
+ This is the full list of temporal and lifecycle qualifiers
+ <informaltable>
+ <tgroup cols="3">
+ <colspec colnum="1" colwidth="1*" />
+ <colspec colnum="2" colwidth="1*" />
+ <colspec colnum="3" colwidth="3*" />
+ <thead>
+ <row>
+ <entry>Qualifier</entry>
+ <entry>Type</entry>
+ <entry>Description</entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry>@Before</entry>
+ <entry>temporal</entry>
+ <entry>Qualifies events before lifecycle phases</entry>
+ </row>
+ <row>
+ <entry>@After</entry>
+ <entry>temporal</entry>
+ <entry>Qualifies events after lifecycle phases</entry>
+ </row>
+ <row>
+ <entry>@RestoreView</entry>
+ <entry>lifecycle</entry>
+ <entry>Qualifies events from the "restore view" phase</entry>
+ </row>
+ <row>
+ <entry>@ApplyRequestValues</entry>
+ <entry>lifecycle</entry>
+ <entry>Qualifies events from the "apply request values" phase</entry>
+ </row>
+ <row>
+ <entry>@ProcessValidations</entry>
+ <entry>lifecycle</entry>
+ <entry>Qualifies events from the "process validations" phase</entry>
+ </row>
+ <row>
+ <entry>@UpdateModelValues</entry>
+ <entry>lifecycle</entry>
+ <entry>Qualifies events from the "update model values" phase</entry>
+ </row>
+ <row>
+ <entry>@InvokeApplication</entry>
+ <entry>lifecycle</entry>
+ <entry>Qualifies events from the "invoke application" phase</entry>
+ </row>
+ <row>
+ <entry>@RenderResponse</entry>
+ <entry>lifecycle</entry>
+ <entry>Qualifies events from the "render response" phase</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </informaltable>
+ The event object is always a <literal>javax.faces.event.PhaseEvent</literal> and according to the general
+ CDI principle, filtering is tightened by adding qualifiers and loosened by omitting them.
+ </para>
+ </section>
+ </section>
+
+
+
+ <section id="events.system">
+ <title>JSF system events</title>
+ <para>
+ Similar to JSF Phase Events, System Events take place when specific events occur within the JSF life-cycle. Seam
+ Faces provides a bridge for all JSF System Events, and propagates these events to CDI.
+ </para>
+
+
+
+
+
+ <section id="events.system.seam">
+ <title>Seam Faces System events</title>
+ <para>
+ This is an example of observing a Faces system event:
+ </para>
+ <para>
+ <programlisting role="Java">
+public void observesThisEvent(@Observes ExceptionQueuedEvent e)
+{
+ // Do something with the event object
+} </programlisting>
+ </para>
+ </section>
+
+
+
+
+ <section id="events.system.seam.listing">
+ <title>System events listing</title>
+ <para>
+ Since all JSF system event objects are distinct, no qualifiers are needed to observe them. The following events
+ may be observed:
+ <informaltable>
+ <tgroup cols="3">
+ <colspec colnum="1" colwidth="3*" />
+ <colspec colnum="2" colwidth="1*" />
+ <colspec colnum="3" colwidth="4*" />
+ <thead>
+ <row>
+ <entry>Event object</entry>
+ <entry>Context</entry>
+ <entry>Description</entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry>SystemEvent</entry>
+ <entry>all</entry>
+ <entry>All events</entry>
+ </row>
+ <row>
+ <entry>ComponentSystemEvent</entry>
+ <entry>component</entry>
+ <entry>All component events</entry>
+ </row>
+ <row>
+ <entry>PostAddToViewEvent</entry>
+ <entry>component</entry>
+ <entry>After a component was added to the view</entry>
+ </row>
+ <row>
+ <entry>PostConstructViewMapEvent</entry>
+ <entry>component</entry>
+ <entry>After a view map was created</entry>
+ </row>
+ <row>
+ <entry>PostRestoreStateEvent</entry>
+ <entry>component</entry>
+ <entry>After a component has its state restored</entry>
+ </row>
+ <row>
+ <entry>PostValidateEvent</entry>
+ <entry>component</entry>
+ <entry>After a component has been validated</entry>
+ </row>
+ <row>
+ <entry>PreDestroyViewMapEvent</entry>
+ <entry>component</entry>
+ <entry>Before a view map has been restored</entry>
+ </row>
+ <row>
+ <entry>PreRemoveFromViewEvent</entry>
+ <entry>component</entry>
+ <entry>Before a component has been removed from the view</entry>
+ </row>
+ <row>
+ <entry>PreRenderComponentEvent</entry>
+ <entry>component</entry>
+ <entry>After a component has been rendered</entry>
+ </row>
+ <row>
+ <entry>PreRenderViewEvent</entry>
+ <entry>component</entry>
+ <entry>Before a view has been rendered</entry>
+ </row>
+ <row>
+ <entry>PreValidateEvent</entry>
+ <entry>component</entry>
+ <entry>Before a component has been validated</entry>
+ </row>
+ <row>
+ <entry>ExceptionQueuedEvent</entry>
+ <entry>system</entry>
+ <entry>When an exception has been queued</entry>
+ </row>
+ <row>
+ <entry>PostConstructApplicationEvent</entry>
+ <entry>system</entry>
+ <entry>After the application has been constructed</entry>
+ </row>
+ <row>
+ <entry>PostConstructCustomScopeEvent</entry>
+ <entry>system</entry>
+ <entry>After a custom scope has been constructed</entry>
+ </row>
+ <row>
+ <entry>PreDestroyApplicationEvent</entry>
+ <entry>system</entry>
+ <entry>Before the application is destroyed</entry>
+ </row>
+ <row>
+ <entry>PreDestroyCustomScopeEvent</entry>
+ <entry>system</entry>
+ <entry>Before a custom scope is destroyed</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </informaltable>
+ </para>
+ </section>
+
+
+
+ <section id="events.system.component">
+ <title>Component system events</title>
+ <para>
+ There is one qualifier, <literal>@Component</literal> that can be used with component events by specifying the component ID. Note that
+ view-centric component events <literal>PreRenderViewEvent</literal>, <literal>PostConstructViewMapEvent</literal> and
+ <literal>PreDestroyViewMapEvent</literal> do not fire with the <literal>@Component</literal> qualifier.
+ <programlisting role="Java">
+public void observePrePasswordValidation(@Observes @Component("form:password") PreValidateEvent e)
+{
+// Do something with the "before password is validated" event object
+} </programlisting>
+ Global system events are observer without the component qualifier
+ <programlisting role="Java">
+public void observeApplicationConstructed(@Observes PostConstructApplicationEvent e)
+{
+// Do something with the "after application is constructed" event object
+} </programlisting>
+ The name of the observing method is not relevant; observers are defined solely via annotations.
+ </para>
+ </section>
+
+
+ </section>
+</chapter>
\ No newline at end of file
Added: modules/documents/trunk/docs/reference/src/main/docbook/en-US/installation.xml
===================================================================
--- modules/documents/trunk/docs/reference/src/main/docbook/en-US/installation.xml (rev 0)
+++ modules/documents/trunk/docs/reference/src/main/docbook/en-US/installation.xml 2010-06-10 18:03:55 UTC (rev 13116)
@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
+ "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" []>
+<chapter id="faces.installation">
+ <title>Installation</title>
+ <para>
+ Most features of Seam Faces are installed automatically by including the seam-faces.jar and seam-faces-api.jar
+ in the web application library folder. If you are using <ulink url="http://maven.apache.org/">Maven</ulink> as your build tool, you can add the
+ following dependency to your pom.xml file:
+ </para>
+ <programlisting role="XML"><![CDATA[<dependency>
+ <groupId>org.jboss.seam.faces</groupId>
+ <artifactId>seam-faces</artifactId>
+ <version>${seam-faces-version}</version>
+</dependency>]]></programlisting>
+ <tip>
+ <para>Replace ${seam-faces-version} with the most recent or appropriate version of Seam Faces.</para>
+ </tip>
+ <para>
+ In a Servlet 3.0 or Java EE 6 environment, your configuration is now complete; however, if you are still using Servlet 2.5 or Java EE 5, then you
+ need to add the following code to your application's web.xml file:
+ </para>
+ <programlisting><![CDATA[<web-app>
+ <listener>
+ <listener-class>org.jboss.seam.faces.beanManager.BeanManagerServletContextListener</listener-class>
+ </listener>
+</web-app>]]></programlisting>
+
+<!--
+ <section id="configuration">
+ <title>Configuration</title>
+ <para>
+ Some features of Seam Faces are not automatically configured, such as enhanced conversation support through annotations.
+ These features must be enabled in your web-application's WEB-INF/beans.xml file. There are two types of features:
+ Interceptors and Decorators. The process described here will be similar for other Seam Modules as well.
+ </para>
+ <programlisting role="XML"><![CDATA[<beans>
+ <interceptors>
+ <class>org.jboss.seam.faces.{package}.{Interceptor}</class>
+ </interceptors>
+ <decorators>
+ <class>org.jboss.seam.faces.{package}.{Decorator}</class>
+ </decorators>
+</beans>]]></programlisting>
+ <para>
+ Use the table below to configure
+ </para>
+ <para>
+ <informaltable>
+ <tgroup cols="3">
+ <colspec colnum="1" colwidth="1*" />
+ <colspec colnum="2" colwidth="1*" />
+ <colspec colnum="3" colwidth="3*" />
+ <thead>
+ <row>
+ <entry>Feature</entry>
+ <entry>Type</entry>
+ <entry>Class</entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry>Conversation Support</entry>
+ <entry>interceptor</entry>
+ <entry>org.jboss.seam.faces.context.conversation.ConversationBoundaryInterceptor</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </informaltable>
+ </para>
+ </section>
+ -->
+</chapter>
\ No newline at end of file
Added: modules/documents/trunk/docs/reference/src/main/docbook/en-US/master.xml
===================================================================
--- modules/documents/trunk/docs/reference/src/main/docbook/en-US/master.xml (rev 0)
+++ modules/documents/trunk/docs/reference/src/main/docbook/en-US/master.xml 2010-06-10 18:03:55 UTC (rev 13116)
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
+ "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" []>
+<book lang="en">
+
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="book_info.xml" />
+
+ <toc />
+
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="preface.xml" />
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="installation.xml" />
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="events.xml" />
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="scopes.xml" />
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="messages.xml" />
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="artifacts.xml" />
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="components.xml" />
+
+ <!--
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="chapterXX.xml" />
+ -->
+
+<!--
+vim:et:ts=3:sw=3:tw=120
+-->
+</book>
Added: modules/documents/trunk/docs/reference/src/main/docbook/en-US/messages.xml
===================================================================
--- modules/documents/trunk/docs/reference/src/main/docbook/en-US/messages.xml (rev 0)
+++ modules/documents/trunk/docs/reference/src/main/docbook/en-US/messages.xml 2010-06-10 18:03:55 UTC (rev 13116)
@@ -0,0 +1,78 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
+ "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" []>
+<chapter id="faces.messages">
+ <title>Messages API</title>
+ <para>
+ While JSF already has the concept of adding <literal>FacesMessage</literal> objects to the FacesContext in order for those messages to be
+ displayed to the user when the view is rendered, Seam Faces takes this concept one step farther with the Messages API provided by the
+ Seam International module. Messages are template-based, and can be added directly via the code, or templates can be loaded from resource
+ bundles using a <literal>BundleKey</literal>.
+ </para>
+ <section id="adding">
+ <title>Adding Messages</title>
+ <para>
+ Consistent with the CDI programming model, the Messages API is provided via bean injection. To add a new message to be displayed to the user,
+ inject <literal>org.jboss.seam.international.display.Messages</literal> and call one of the Message factory methods. As mentioned earlier,
+ factory methods accept either a plain-text template, or a <literal>BundleKey</literal>, specifying the name of the resource bundle to use, and
+ the name of the key to use as a message template.
+<programlisting>
+ at Named
+public class Example
+{
+ @Inject
+ Messages messages;
+
+ public String action()
+ {
+ messages.info("This is an {0} message, and will be displayed to {1}.", "INFO", "the user");
+ return null;
+ }
+}</programlisting>
+ Adds the message: "This is an INFO message, and will be displayed to the user."
+ </para>
+ <para>
+ Notice how {0}, {1} ... {N} are replaced with the given parameters, and may be used more than once in a given template. In the case where a
+ <literal>BundleKey</literal> is used to look up a message template, default text may be provided in case the resource cannot be loaded; default
+ text uses the same parameters supplied for the bundle template. If no default text is supplied, a String representation of the
+ <literal>BundleKey</literal> and its parameters will be displayed instead.
+<programlisting>
+ public String action()
+ {
+ messages.warn(new BundleKey("org.jboss.seam.faces.exampleBundle", "messageKey"), "unique");
+ return null;
+ }</programlisting>
+ </para>
+ <para>
+classpath:/org/jboss/seam/faces/exampleBundle.properties
+<programlisting>messageKey=This {0} parameter is not so {0}, see?</programlisting>
+ Adds the message: "This unique parameter is not so unique, see?"
+ </para>
+ </section>
+ <section id="displaying">
+ <title>Displaying pending messages</title>
+ <para>
+ It's great when messages are added to the internal buffer, but it doesn't do much good unless the user actually sees them. In order to display
+ messages, simply use the <literal><h:messages /></literal> tag from JSF. Any pending messages will be displayed on the page just like normal
+ <literal>FacesMessages</literal>.
+ </para>
+ <programlisting role="XML"><![CDATA[<html xmlns="http://www.w3.org/1999/xhtml"
+ xmlns:f="http://java.sun.com/jsf/core"
+ xmlns:h="http://java.sun.com/jsf/html"
+ xmlns:s="http://jboss.org/seam/faces"
+ xmlns:ui="http://java.sun.com/jsf/facelets">
+
+ <h1>Welcome to Seam Faces!</h1>
+ <p>All Messages and FacesMessages will be displayed below:</p>
+
+ <h:messages />
+
+</html>]]></programlisting>
+ <para>
+ Messages added to the internal buffer via the Messages API are stored in a central location during each request, and may be displayed
+ by any view-technology that supports the Messages API. Seam Faces provides an integration that makes all of this automatic for you as a developer,
+ and in addition, messages will automatically survive JSF navigation and redirects, as long as the redirect URL was encoded using
+ <literal>ExternalContext.encodeRedirectURL(...)</literal>. If you are using JSF-compliant navigation, all of this is handled for you.
+ </para>
+ </section>
+</chapter>
\ No newline at end of file
Added: modules/documents/trunk/docs/reference/src/main/docbook/en-US/preface.xml
===================================================================
--- modules/documents/trunk/docs/reference/src/main/docbook/en-US/preface.xml (rev 0)
+++ modules/documents/trunk/docs/reference/src/main/docbook/en-US/preface.xml 2010-06-10 18:03:55 UTC (rev 13116)
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE preface PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
+ "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" []>
+<preface>
+ <title>Introduction</title>
+ <para>
+ The goal of Seam Faces is to provide a fully integrated CDI programming model to the JavaServer Faces (JSF) 2.0
+ web-framework. With features such as observing Events, providing injection support for life-cycle artifacts
+ (FacesContext, NavigationHandler,) and more.
+ </para>
+
+<!--
+vim:et:ts=3:sw=3:tw=120
+-->
+</preface>
Added: modules/documents/trunk/docs/reference/src/main/docbook/en-US/scopes.xml
===================================================================
--- modules/documents/trunk/docs/reference/src/main/docbook/en-US/scopes.xml (rev 0)
+++ modules/documents/trunk/docs/reference/src/main/docbook/en-US/scopes.xml 2010-06-10 18:03:55 UTC (rev 13116)
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
+ "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" []>
+<chapter id="scopes">
+ <title>Faces Scoping Support</title>
+ <para>
+ JSF 2.0 introduced the concept of the @FlashScope and the @ViewScope; however, JSF 2.0 did not provide annotations for accessing the FlashScope,
+ and CDI does not support the non-standard ViewScope by default. The Seam Faces module does both. Beans stored in the FlashScope will survive
+ until the next page is rendered, and for the most part, beans stored in the ViewScope will survive as long as a user remains on the
+ same page.
+ </para>
+ <section id="flashscoped">
+ <title>@FlashScoped</title>
+ <para>
+ You should think about using the Flash scope if you want to store information that will be relevant to the user even after an action
+ sends them to another view. For instance, when a user submits a form, you may want to invoke JSF navigation and redirect
+ the user to another page in the site; if you needed to store a message to be displayed when the next page is rendered -but no longer-
+ you would store that message in the FlashContext. Fortunately, Seam provides FlashScoped messages by default, via the
+ <link linkend="messages">Seam Messages API</link>.
+ </para>
+ <para>
+ To scope a bean to the Flash, use the <literal>@javax.faces.bean.FlashScoped</literal> annotation. This means that your bean will be stored in the
+ <literal>org.jboss.seam.context.FlashContext</literal> until the next page is rendered, at which point the FlashScope will be cleared.
+
+<programlisting>@FlashScoped
+public class Bean {
+ // ...
+}</programlisting>
+
+ <caution>
+ <para>
+ @FlashScoped beans are destroyed when the Flash is cleared. This means that the life-span of @FlashScoped beans last only until
+ the next Render Response phase is executed.
+ </para>
+ <para>
+ If you want to use the Flash Scope with custom navigation in your application,
+ be sure to call <literal>ExternalContext.encodeRedirectURL(String url, Map<String, List<String>> queryParams)</literal>
+ on any URL before using it to issue a redirect. This will ensure that the FlashContext ID is properly appended to the URL, enabling
+ the FlashContext to be restored on the subsequent request. This is only necessary if issuing a Servlet Redirect.
+ </para>
+ </caution>
+ </para>
+ </section>
+ <section id="viewscoped">
+ <title>@ViewScoped</title>
+ <para>
+ To scope a bean to the View, use the <literal>@javax.faces.bean.ViewScoped</literal> annotation. This means that your bean will be stored in the
+ <literal>javax.faces.component.UIViewRoot</literal> object associated with the view in which it was accessed. Each JSF view (faces-page) will store
+ its own instance of the bean, just like each HttpServletRequest has its own instance of a @RequestScoped bean.
+ <programlisting>@ViewScoped
+public class Bean {
+ // ...
+}</programlisting>
+ <caution>
+ <para>
+ @ViewScoped beans are destroyed when the JSF UIViewRoot object is destroyed. This means that the
+ life-span of @ViewScoped beans is dependent on the <literal>javax.faces.STATE_SAVING_METHOD</literal> employed by the application itself,
+ but in general one can assume that the bean will live as long as the user remains on the same page.
+ </para>
+ </caution>
+ </para>
+ </section>
+</chapter>
\ No newline at end of file
Added: modules/documents/trunk/impl/pom.xml
===================================================================
--- modules/documents/trunk/impl/pom.xml (rev 0)
+++ modules/documents/trunk/impl/pom.xml 2010-06-10 18:03:55 UTC (rev 13116)
@@ -0,0 +1,57 @@
+<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>seam-documents-parent</artifactId>
+ <groupId>org.jboss.seam.documents</groupId>
+ <version>3.0.0-SNAPSHOT</version>
+ <relativePath>../pom.xml</relativePath>
+ </parent>
+
+ <artifactId>seam-documents</artifactId>
+ <version>3.0.0-SNAPSHOT</version>
+
+ <packaging>jar</packaging>
+ <name>Seam Documents Module Core Implementation</name>
+
+ <dependencies>
+ <dependency>
+ <artifactId>seam-documents-api</artifactId>
+ <groupId>org.jboss.seam.documents</groupId>
+ <version>${project.version}</version>
+ <scope>compile</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss.weld</groupId>
+ <artifactId>weld-extensions</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-api</artifactId>
+ <scope>provided</scope>
+ </dependency>
+ </dependencies>
+
+ <profiles>
+ <profile>
+ <id>code-coverage</id>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>emma-maven-plugin</artifactId>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-surefire-plugin</artifactId>
+ </plugin>
+ <plugin>
+ <groupId>org.sonatype.maven.plugin</groupId>
+ <artifactId>emma4it-maven-plugin</artifactId>
+ </plugin>
+ </plugins>
+ </build>
+ </profile>
+ </profiles>
+
+</project>
Added: modules/documents/trunk/impl/src/main/resources/META-INF/beans.xml
===================================================================
--- modules/documents/trunk/impl/src/main/resources/META-INF/beans.xml (rev 0)
+++ modules/documents/trunk/impl/src/main/resources/META-INF/beans.xml 2010-06-10 18:03:55 UTC (rev 13116)
@@ -0,0 +1,27 @@
+<!--
+JBoss, Home of Professional Open Source
+Copyright 2010, Red Hat, Inc., 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.
+-->
+<beans 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/beans_1_0.xsd">
+
+</beans>
Added: modules/documents/trunk/impl/src/main/resources/META-INF/services/javax.enterprise.inject.spi.Extension
===================================================================
Added: modules/documents/trunk/pom.xml
===================================================================
--- modules/documents/trunk/pom.xml (rev 0)
+++ modules/documents/trunk/pom.xml 2010-06-10 18:03:55 UTC (rev 13116)
@@ -0,0 +1,101 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <groupId>org.jboss.seam</groupId>
+ <artifactId>seam-parent</artifactId>
+ <version>1</version>
+ </parent>
+
+ <artifactId>seam-documents-parent</artifactId>
+ <groupId>org.jboss.seam.documents</groupId>
+ <version>3.0.0-SNAPSHOT</version>
+
+ <packaging>pom</packaging>
+ <name>Seam Documents Module Parent POM</name>
+
+ <prerequisites>
+ <maven>3.0</maven>
+ </prerequisites>
+
+ <description>
+ The Parent for Seam Documents Modules
+ </description>
+
+ <url>http://www.seamframework.org</url>
+
+ <modules>
+ <module>api</module>
+ <module>impl</module>
+ </modules>
+
+ <properties>
+ <seam.version>3.0.0.b01</seam.version>
+ <seam.i18n.version>3.0.0.Alpha1</seam.i18n.version>
+ </properties>
+
+ <dependencyManagement>
+ <dependencies>
+
+ <dependency>
+ <groupId>org.jboss.seam</groupId>
+ <artifactId>seam</artifactId>
+ <version>${seam.version}</version>
+ <scope>import</scope>
+ <type>pom</type>
+ </dependency>
+
+ <dependency>
+ <groupId>org.jboss.seam.international</groupId>
+ <artifactId>seam-international-api</artifactId>
+ <version>${seam.i18n.version}</version>
+ </dependency>
+
+ </dependencies>
+ </dependencyManagement>
+
+ <profiles>
+ <profile>
+ <id>distribution</id>
+ <activation>
+ <property>
+ <name>release</name>
+ </property>
+ </activation>
+ <modules>
+ <module>dist</module>
+ <module>docs/reference</module>
+ </modules>
+ </profile>
+ <profile>
+ <id>arquillian-glassfish-embedded-30</id>
+ <dependencies>
+ <dependency>
+ <groupId>org.jboss.arquillian.container</groupId>
+ <artifactId>arquillian-glassfish-embedded-30</artifactId>
+ </dependency>
+ </dependencies>
+ </profile>
+ </profiles>
+
+ <developers>
+ <developer>
+ <name>Lincoln Baxter, III</name>
+ <email>lincolnbaxter at gmail.com</email>
+ <url>http://ocpsoft.com</url>
+ <organization>JBoss, by Red Hat</organization>
+ <organizationUrl>http://jboss.org</organizationUrl>
+ <timezone>EST</timezone>
+ <roles>
+ <role>Project Lead</role>
+ </roles>
+ </developer>
+ </developers>
+
+ <scm>
+ <connection>scm:svn:http://anonsvn.jboss.org/repos/seam/modules/faces/trunk </connection>
+ <developerConnection>scm:svn:https://svn.jboss.org/repos/seam/modules/faces/trunk </developerConnection>
+ <url>http://fisheye.jboss.org/browse/Seam/modules/faces/trunk</url>
+ </scm>
+</project>
+
Added: modules/documents/trunk/readme.txt
===================================================================
--- modules/documents/trunk/readme.txt (rev 0)
+++ modules/documents/trunk/readme.txt 2010-06-10 18:03:55 UTC (rev 13116)
@@ -0,0 +1,6 @@
+Building
+--------
+
+* Run mvn clean install
+* To create the zip distribution, run mvn clean install -Pdistribution - the resulting zip is located in dist/target/seam-face-${version}.zip
+* The readme.txt placed in the distribution is not this one, see dist/src/main/assembly/readme.txt
More information about the seam-commits
mailing list